Python bc_dict,TypeError:+的不支持的操作数类型:'NoneType'和'str'

问题描述 投票:1回答:1

我正在尝试解复用使用新型测序方法制备的DNA读数。旨在完成此任务的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文件中。

python dna-sequence
1个回答
1
投票
R1_start = (self.Wobble_R1, self.Barcode_R1 + 'Y' + self.enz_remnant_R1)

错误

+不支持的操作数类型:NoneTypestr

意味着代码试图做A + B,其中A是None而B是一个字符串,一个非法的操作。它不能是第二个+,因为它的左操作数(self.Barcode_R1 + 'Y'的结果)显然不是None。它必须是左+

因此,self.Barcode_R1必须是None。您需要回溯并找出该变量是什么以及它获取其值的位置。

© www.soinside.com 2019 - 2024. All rights reserved.