我正在試驗一些使用Bio.Restrictions
方法的問題,我不確定它是由於python,biopython還是我對Python的不理解。Biopython的列表和限制類型
當我嘗試箱子一個RestrictionBatch
繼cookbook,我想用酶我從一本字典(從文件中讀取),它說:
You can initiate a restriction batch by passing it a list of enzymes or enzymes name as argument.
在Python documentation爲dict.keys
說:
Return a copy of the dictionary’s list of keys
所以,我想這一點:
rb = RestrictionBatch(Enzymes.keys())
但我得到一個錯誤:ValueError: <type 'list'> is not a RestrictionType
測試,這些地方可能是我創造了這個代碼,要知道,如果它真的是一個列表中的錯誤或不
from Bio.Seq import Seq
Enzymes = {'XhoI': Seq('CTCGAG'), 'BsmBI': Seq('CGTCTC'), 'SceI': Seq('AGTTACGCTAGGGATAACAGGGTAATATAG'), 'BamHI': Seq('GGATCC'), 'BsaI': Seq('GGTCTC'), 'SacI': Seq('GAGCTC'), 'BbsI': Seq('GAAGAC'), 'AarI': Seq('CACCTGC'), 'EcoRI': Seq('GAATTC'), 'SpeI': Seq('ACTAGT'), 'CeuI': Seq('TTCGCTACCTTAGGACCGTTATAGTTACG')}
print Enzymes.keys() is list #prints False
print isinstance(Enzymes.keys(), list) #prints True
print type(Enzymes.keys()) #prints <type 'list'>
爲什麼這種行爲?我怎樣才能使用字典來運行RestrictionBatch
?
我使用:
Python 2.7.3 |EPD 7.3-2 (64-bit)| (default, Apr 11 2012, 17:52:16)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-44)] on linux2
import Bio
print(Bio.__version__)
1.59
次要問題: 我怎樣才能檢查它是否或者不限制的數據庫?有什麼方法可以將一種酶添加到此數據庫中(假設我有所需的信息)?
我不認爲'是list'可以用來做類型檢查,一般。例如,'[] is list'是False,即使一個空列表肯定是一個列表。 – Kevin
@Llopis,你已經定義的一些序列已經存在於Bio.Restriction – JRajan
是的我知道我後來發現了這個biopython包,實際上所有這些酶都在'Biol.Restriction'中,但我有其他一些不在此版本的biopython中。我不知道是否在REBASE的最新更新中,但是即使它們不是,如果能夠包含它們而不升級biopython的版本(如果包括它們...) – Llopis