2017-07-07 51 views
1

我使用biopython來完成一個簡單的任務:從特定的基因庫填充,提取基因ID和相關信息到表中。biopython FeatureLocation比較

當我試圖比較來自不同SeqFeatureSeq.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'標註同一基因的某些域。

回答

2

我仍然徘徊是否這是由設計出於某種原因或 比較方法只是還沒有建在呢。

答案似乎是後者。據我所知,FeatureLocation__eq__方法應該在2011年添加,但沒有實現。甚至其他Biopython對象也注意到它們的源代碼註釋中缺少對比FeatureLocation對象的能力。

然而,它在source code for the in progress, not yet released Biopython 1.70

即將實施的唯一區別,而你是refref_db領域,其默認爲None的比較,所以如果你不使用它們,沒問題。

有關更多背景信息,請參見pull request 1309

+0

Biopython 1.70最近發佈,包含了來自Kai Blin的這項增強功能。在這個特殊的位置之前/之後,有一點模糊不清。 – peterjc