Переименование чередованных заголовков fastq с помощью biopython - PullRequest
0 голосов
/ 10 октября 2018

Для простоты использования и совместимости с другим нисходящим конвейером я пытаюсь изменить имена идентификаторов последовательностей fastq с помощью biopython.Например ... переходя от заголовков, которые выглядят так:

@D00602:32:H3LN7BCXX:1:1101:1205:2112 OP:i:1
@D00602:32:H3LN7BCXX:1:1101:1205:2112 OP:i:2
@D00602:32:H3LN7BCXX:1:1101:1182:2184 OP:i:1
@D00602:32:H3LN7BCXX:1:1101:1182:2184 OP:i:2

К заголовкам, которые выглядят так:

@000000000000001  OP:i:1
@000000000000001  OP:i:2
@000000000000002  OP:i:1
@000000000000002  OP:i:2

У меня есть код, но я не могуполучить обратный отсчет (например, 1,1,2,2,3,3 и т. д.)

Любая помощь будет принята.Благодарю.

from Bio import SeqIO
import sys

FILE = sys.argv[1]

#Initialize numbering system at one
COUNT = 1

#Create a new dictionary for new sequence IDs
new_records=[]

for seq_record in SeqIO.parse(FILE, "fastq"):
        header = '{:0>15}'.format(COUNT)
        COUNT += 1
        print(header)
        seq_record.description = 
seq_record.description.replace(seq_record.id, "")
        seq_record.id = header
        new_records.append(seq_record)
SeqIO.write(new_records, FILE, "fastq")

* seq_record не содержит информацию "OP: i: 1"

1 Ответ

0 голосов
/ 10 октября 2018

Если вы хотите, чтобы все метки были продублированы, все, что вам нужно сделать, это разделить счетчик на дублированную сумму и вернуть значения, округленные в меньшую сторону, как показано ниже.

from Bio import SeqIO
import sys

FILE = sys.argv[1]

#Initialize numbering system at one
COUNT = 0

#Create a new dictionary for new sequence IDs
new_records=[]

for seq_record in SeqIO.parse(FILE, "fastq"):
        header = '{:0>15}'.format(COUNT//2+1)
        COUNT += 1
        print(header)
        seq_record.description = 
seq_record.description.replace(seq_record.id, "")
        seq_record.id = header
        new_records.append(seq_record)
SeqIO.write(new_records, FILE, "fastq")
...