【问题标题】:How to make exception to a missing attribute in <class, list>?如何对 <class, list> 中缺少的属性进行例外处理?
【发布时间】:2017-01-06 22:02:24
【问题描述】:

读取我的数据后,我使用以下脚本:

for sample in record.samples:
    print(type(sample))

我明白了:

<class 'vcf.model._Call'>

有了这个:

    print(sample)

我明白了:

Call(sample=MA605, CallData(GT=0/0, AD=[13, 0], DP=13, GQ=0, PB=None, PC=None, PG=0/0, PI=None, PL=[0, 0, 228], PW=0/0))
Call(sample=MA611, CallData(GT=0/0, AD=[57, 0], DP=57, GQ=0, PB=None, PC=None, PG=0/0, PI=None, PL=[0, 0, 1369], PW=0/0))
Call(sample=MA622, CallData(GT=0/1, AD=[67, 14], DP=81, GQ=99, PB=None, PC=None, PG=0/1, PI=None, PL=[229, 0, 2535], PW=0/1))
Call(sample=MA625, CallData(GT=0/0, AD=[58, 0], DP=58, GQ=0, PB=None, PC=None, PG=0/0, PI=None, PL=[0, 0, 590], PW=0/0))
Call(sample=MA629, CallData(GT=1|0, AD=[24, 5], DP=29, GQ=67, PB=.,., PC=1.0, PG=1|0, PI=5060, PL=[67, 0, 952], PW=1|0))
Call(sample=Ncm8, CallData(GT=0/0, AD=[7, 0], DP=7, GQ=0, PB=None, PC=None, PG=0/0, PI=None, PL=[0, 0, 147

我正在尝试使用以下方式将输出写入文件:

output.write("{}\t{}\t{}\t{}\t{}"
             .format(contig1, pos1, ref_allele1, all_alleles1, all_freq1))
    for sample in record.samples:
        output.write("\t{}\t{}".format(sample['GT'], sample['PI']))

一切运行良好,但我有一些行缺少 PI 字段 - 这意味着 PI 完全缺失并且不是 (PI = None)。当我的脚本出现该行时,我得到AttributeError:

Traceback (most recent call last): File "/home/everestial007/PycharmProjects/stitcher/pHASE-Stitcher-Markov/pHASE-Stitcher_stage01-4_nonInteractive-MarkovModel.py", line 221, in <module> phase_block_index = record.genotype('2ms02g')['PI'] File "/home/everestial007/anaconda3/lib/python3.5/site-packages/vcf/model.py", line 104, in __getitem__ return getattr(self.data, key) AttributeError: 'CallData' object has no attribute 'PI'

如果PI 不在我的数据中(record.sample),我如何将它设置为句点(.)?

我尝试了几种方法。我认为可行的一种方法是:

output.write("\t{}\t{}".format(sample['GT'] or None, sample['PI'] or None))

但是,还是失败了。

任何,建议。

谢谢,

【问题讨论】:

    标签: python if-statement for-loop null nonetype


    【解决方案1】:

    你可以试试sample.get('PI') or '.'

    在未定义键时默认返回None

    【讨论】:

      猜你喜欢
      • 2020-01-08
      • 1970-01-01
      • 1970-01-01
      • 2021-10-24
      • 1970-01-01
      • 2013-05-11
      • 2016-11-08
      • 2012-11-05
      • 1970-01-01
      相关资源
      最近更新 更多