Python нуб здесь. Я ломал себе голову, пытаясь это сделать, пробовал несколько инструментов Unix и убежден, что python - это путь к go.
У меня есть два файла, File1 имеет заголовки и числа, подобные этому:
>id1
77
>id2
2
>id3
2
>id4
22
...
Обратите внимание, что идентификационный номер уникален, но присвоенный ему номер может повторяться. У меня есть несколько таких файлов с одинаковым количеством заголовков (~ 500).
File2 имеет все номера File1 и добавленную последовательность
1
ATCGTCATA
2
ATCGTCGTA
...
22
CCCGTCGTA
...
77
ATCGTCATA
...
Обратите внимание, что идентификатор последовательности уникален, как и все последовательности после него. У меня такое же количество файлов, что и у File1, но количество последовательностей в каждом File2 может варьироваться (~ 150).
Мой желаемый результат - File1 с последовательностью из File2, важно, чтобы File1 сохраняет исходный порядок.
>id1
ATCGTCATA
>id2
ATCGTCGTA
>id3
ATCGTCGTA
>id4
CCCGTCGTA
Мой подход состоит в том, чтобы извлекать числа из File1 и использовать их в качестве шаблона для сопоставления в File2. Сначала я пытаюсь заставить эту работу работать только с парой файлов. вот чего я добился:
#!/usr/bin/env python
import re
datafile = 'protein2683.fasta.txt.named'
schemaseqs = 'protein2683.fasta'
with open(datafile, 'r') as f:
datafile_lines = set([line.strip() for line in f]) #maybe I could use regex to get only lines with number as pattern?
print (datafile_lines)
outputlist = []
with open(schemaseqs, 'r') as f:
for line in f:
seqs = line.split(',')[0]
if seqs[1:-1] in datafile_lines:
outputlist.append(line)
print (outputlist)
Это выводит смесь шаблонов из File1 и последовательностей из File2. Любая помощь приветствуется.
Ps: Я открыт для изменений в структуре файлов, я попытался заменить \ n в File2 на "," безрезультатно.