biopython FeatureLocation 比较
biopython FeatureLocation comparison
我正在使用biopython完成一个简单的任务:从一个特定的genebank fill中,提取一个基因ID和相关信息到一个table中。
当我尝试比较来自不同 SeqFeature
的 Seq.SeqFeature.SeqFeature.location
时,它每次都会给我 False
。即使在下面的情况下:
from Bio.SeqFeature import FeatureLocation
location1 = FeatureLocation(0,0,strand = 1)
location2 = FeatureLocation(0,0,strand = 1)
print(location1 == location2) # will print False
只有这样才能得到我想要的结果:
print(location1.start == location2.start and location1.end == location2.end and location1.strand == location2.strand) # will print True.
问题就这样解决了,但我还在犹豫这是出于某种原因设计的还是比较方法还没有内置。
下面是我遇到这个问题的过程:
- 首先我只从genbank文件中提取了
feat.type == 'CDS'
信息,发现
所有伪基因都丢失了。
然后我想到了把信息记录在
feat.type == 'gene'
然后寻找 'CDS'
或
'misc_feature'
记录该基因的更多信息。
这就需要确认 'CDS'
或 'misc_feature'
在同一位置标注以防有多个
'misc_feature'
注释同一基因的某些域。
I am still wandering whether this is by design for some reason or the
comparison method just haven't been built in yet.
答案似乎是后者。据我所知,FeatureLocation
的 __eq__
方法应该在 2011 年添加,但没有加入。甚至其他 Biopython 对象也注意到缺乏比较 [=11= 的能力] 源代码注释中的对象。
但是,它在source code for the in progress, not yet released Biopython 1.70
即将实施的与您的实施之间的唯一区别是 ref
和 ref_db
字段的比较,默认为 None
,因此如果您不使用它们,没问题.
有关更多背景信息,请参阅 pull request 1309。
我正在使用biopython完成一个简单的任务:从一个特定的genebank fill中,提取一个基因ID和相关信息到一个table中。
当我尝试比较来自不同 SeqFeature
的 Seq.SeqFeature.SeqFeature.location
时,它每次都会给我 False
。即使在下面的情况下:
from Bio.SeqFeature import FeatureLocation
location1 = FeatureLocation(0,0,strand = 1)
location2 = FeatureLocation(0,0,strand = 1)
print(location1 == location2) # will print False
只有这样才能得到我想要的结果:
print(location1.start == location2.start and location1.end == location2.end and location1.strand == location2.strand) # will print True.
问题就这样解决了,但我还在犹豫这是出于某种原因设计的还是比较方法还没有内置。
下面是我遇到这个问题的过程:
- 首先我只从genbank文件中提取了
feat.type == 'CDS'
信息,发现 所有伪基因都丢失了。 然后我想到了把信息记录在
feat.type == 'gene'
然后寻找'CDS'
或'misc_feature'
记录该基因的更多信息。这就需要确认
'CDS'
或'misc_feature'
在同一位置标注以防有多个'misc_feature'
注释同一基因的某些域。
I am still wandering whether this is by design for some reason or the comparison method just haven't been built in yet.
答案似乎是后者。据我所知,FeatureLocation
的 __eq__
方法应该在 2011 年添加,但没有加入。甚至其他 Biopython 对象也注意到缺乏比较 [=11= 的能力] 源代码注释中的对象。
但是,它在source code for the in progress, not yet released Biopython 1.70
即将实施的与您的实施之间的唯一区别是 ref
和 ref_db
字段的比较,默认为 None
,因此如果您不使用它们,没问题.
有关更多背景信息,请参阅 pull request 1309。