Я пытаюсь демультиплексировать чтения ДНК, которые были подготовлены с использованием нового подхода секвенирования. Сценарий Python, предназначенный для выполнения этой задачи, выдает ошибку, которую я не знаю, как решить:
File "demultiplex3.1.py", line 693, in <module>
bc_dict = parse_bc(opts.barcode, Flowcell, Lane)
File "demultiplex3.1.py", line 315, in parse_bc
bc_dict[bc_instance.get_seq()] = bc_instance
File "demultiplex3.1.py", line 266, in get_seq
R1_start = (self.Wobble_R1, self.Barcode_R1 + 'Y' + self.enz_remnant_R1)
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'
Я попытался запустить это с помощью PyCharm 2016.1.4, а также в исследовательском кластере моего университета и получил одинаковую ошибку на обеих платформах.
Вот строки кода, из которых происходят ошибки:
Линии 693-697
bc_dict = parse_bc(opts.barcode, Flowcell, Lane)
if not os.path.exists(opts.outputdir):
os.mkdir(opts.outputdir)
opts.output = tempfile.mkdtemp(prefix='seq', dir=opts.outputdir)
if os.path.exists(opts.output):
Линии 314-316
if bc_instance.Flowcell == fc and bc_instance.Lane == ln:
bc_dict[bc_instance.get_seq()] = bc_instance
return bc_dict
Линии 262-269
def get_seq(self):
"""Return sequence to search on left and right read"""
# design of Read_1 is NNN|BARCODE|CONTROL-NT|ENZ-REMNANT
# CONTROL-NT for R1 is either C or T, put Y as control nucleotide
R1_start = (self.Wobble_R1, self.Barcode_R1 + 'Y' + self.enz_remnant_R1)
# CONTROL-NT for R2 is either G or A, put R as control nucleotide
R2_start = (self.Wobble_R2, self.Barcode_R2 + 'Y' + self.enz_remnant_R2)
return (R1_start, R2_start)
Я не являюсь автором кода, и я довольно зелен, когда дело доходит до устранения ошибок в кодировании Python. Сценарий демультиплексирования предназначен для прикрепления имен образцов к фрагментам на основе штрихкодированных адаптеров, которые были прикреплены во время лабораторной подготовки образцов, а затем для удаления последовательностей штрихкодированных адаптеров, так что в файлах fastq остаются только тег образца и фрагменты.