Скрипт Python для использования координат из одного файла и добавления значений из соответствующих координат в другом файле

У меня есть исходный набор геномных координат (хром, начало, конец) в файле кровати с разделителями табуляции. У меня также есть дополнительные файлы кровати с разделителями табуляции, которые содержат некоторые исходные геномные координаты плюс числовое значение, связанное с каждой из этих координат. Эти координаты могут появляться несколько раз в файле кровати с разными числовыми значениями каждый раз. Мне нужен окончательный файл кровати, который содержит все исходные геномные координаты с суммой всех значений, связанных с этой конкретной координатой. Ниже приведены примеры файлов, с которыми я работаю.

Исходный файл:

chr1    2100    2300

chr2    3300    3600

chr1    2560    2800

Другой файл Bed:

chr1    2100    2300    6

chr2    3300    3600    56

chr1    2100    2300    10

Необходимый выходной файл:

chr1    2100    2300    16

chr2    3300    3600    56

chr1    2560    2800    0

Для этого мне нужно написать скрипт на Python, но я не совсем уверен, как лучше всего это сделать.


person user3504464    schedule 06.04.2014    source источник
comment
Добро пожаловать так! -) Если один из приведенных ниже ответов решит вашу проблему, вы должны принять его (щелкните галочку рядом с соответствующим ответом). Это делает две вещи. Это позволяет всем узнать, что ваша проблема была решена, и дает человеку, который помогает вам, кредит на помощь. Полное объяснение см. здесь.   -  person Bruno Gelb    schedule 07.04.2014


Ответы (2)


Это одна из тех вещей, которые Pandas делает очень легко:

import pandas
coordnames = ['Name', 'x', 'y']
f1 = pandas.read_table('file1', delimiter=r' +', 
                       names=coordnames).dropna()
f2 = pandas.read_table('file2', delimiter=r' +', 
                       names=coordnames + ['n']).dropna()
result = (f1.merge(f2, on=coordnames, how='left')
          .groupby(coordnames).sum().fillna(0))
person chthonicdaemon    schedule 07.04.2014

person    schedule
comment
Я получаю KeyError: 'chr1 2100 2300' из строки data[' '.join(arr[:-1])] += int(arr[3]) - person user3504464; 07.04.2014