2017-03-31 65 views
0

当我运行一个软件的源代码文件,引发错误。当我使用for循环:IndexError:列表索引超出范围

Traceback (most recent call last): 
    File "gwava_annotate.py", line 297, in <module> 
    df = annotate(vf) 
    File "gwava_annotate.py", line 255, in annotate 
    encode_feats(vf, ENCODE_FEATS), 
    File "gwava_annotate.py", line 41, in encode_feats 
    for entry in annots: 
    File "pybedtools/cbedtools.pyx", line 787, in pybedtools.cbedtools.IntervalIterator.__next__ (pybedtools/cbedtools.cxx:11123) 
    File "pybedtools/cbedtools.pyx", line 652, in pybedtools.cbedtools.create_interval_from_list (pybedtools/cbedtools.cxx:9208) 
IndexError: list index out of range 

所以我一个接一个地运行源代码,直到错误再次发生。

>>> for entry in annots: 
... fs = entry[4].strip(',').split(',') 

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "pybedtools/cbedtools.pyx", line 787, in pybedtools.cbedtools.IntervalIterator.__next__ (pybedtools/cbedtools.cxx:11123) 
    File "pybedtools/cbedtools.pyx", line 652, in pybedtools.cbedtools.create_interval_from_list (pybedtools/cbedtools.cxx:9208) 
IndexError: list index out of range 

annots是一个例子,你可以看到

>>> type(annots) 
<class 'pybedtools.bedtool.BedTool'> 

我试图打印

>>> print(annots) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/local/lib/python2.7/dist-packages/pybedtools/bedtool.py", line 1072, in __str__ 
    for i in iter(self): 
    File "pybedtools/cbedtools.pyx", line 787, in pybedtools.cbedtools.IntervalIterator.__next__ (pybedtools/cbedtools.cxx:11123) 
    File "pybedtools/cbedtools.pyx", line 652, in pybedtools.cbedtools.create_interval_from_list (pybedtools/cbedtools.cxx:9208) 
IndexError: list index out of range 

而且

>>> len(annots) 

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/local/lib/python2.7/dist-packages/pybedtools/bedtool.py", line 1080, in __len__ 
    return self.count() 
    File "/usr/local/lib/python2.7/dist-packages/pybedtools/bedtool.py", line 2283, in count 
    return sum(1 for _ in iter(self)) 
    File "/usr/local/lib/python2.7/dist-packages/pybedtools/bedtool.py", line 2283, in <genexpr> 
    return sum(1 for _ in iter(self)) 
    File "pybedtools/cbedtools.pyx", line 787, in pybedtools.cbedtools.IntervalIterator.__next__ (pybedtools/cbedtools.cxx:11123) 
    File "pybedtools/cbedtools.pyx", line 652, in pybedtools.cbedtools.create_interval_from_list (pybedtools/cbedtools.cxx:9208) 
IndexError: list index out of range 

所以我检查其属性

>>> dir('annots') 
['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_formatter_field_name_split', '_formatter_parser', 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill'] 

于是,我把annots内容为字符串

>>> a = ['DNase:26039,H3K4me3:13995,POLR2A:9215,H3K4me2:8024,H3K9ac:6869,H3K27ac:5904,H3K27me3:4816,H3K4me1:4622,FAIRE:4462,H2AFZ:3052,CTCF:2356,H3K36me3:1766,H3K79me2:1469,TAF1:1264,TBP:798,YY1:689,NFKB1:664,MYC:578,MAX:565,USF1:496,SP1:415,HEY1:409,SIN3A:405,ELF1:396,EP300:383,E2F1:377,H4K20me1:369,JUND:330,E2F6:315,EGR1:299,CEBPB:279,PAX5:251,CHD2:227,FOXA1:227,RAD21:218,TCF12:206,E2F4:205,STAT3:202,REST:200,GABPA:197,USF2:197,POU2F2:194,SLC22A2:194,TCF7L2:193,MXI1:183,NR3C1:180,HNF4A:177,GTF2F1:174,GATA1:169,EBF1:167,SPI1:167,HDAC2:163,TRIM28:154,CCNT2:149,HMGN3:141,GATA2:132,FOSL2:130,FOS:129,IRF4:116,ZNF263:116,TFAP2C:115,POLR2A_elongating:114,STAT1:109,RFX5:108,NRF1:107,H3K9me3:99,POLR3A:98,BCLAF1:97,FOXA2:97,IRF1:97,ELK4:87,HNF4G:87,SMC3:87,TFAP2A:87,ZBTB7A:75,TAF7:73,SRF:72,ZEB1:70,ETS1:69,JUN:66,BCL3:64,BRCA1:64,NR2C2:64,SMARCB1:64,BATF:60,GTF2B:58,MEF2A:57,SREBF1:56,TAL1:55,RXRA:54,NFYA:49,HSF1:47,BHLHE40:46,PBX3:44,NFYB:42,RDBP:42,SIX5:42,STAT2:39,ZNF143:38,ATF3:36,MAFK:34,IRF3:31,ZBTB33:29,SETDB1:24,CTCFL:23,SP2:23,SREBF2:21,CTBP2:16,GATA3:16,MEF2_complex:15,NFE2:15,SMARCC1:15,SUZ12:15,JUNB:14,SMARCA4:14,BDP1:13,ERALPHAA:10,FOSL1:10,H3K9me1:10,SIRT6:10,MAFF:9,NANOG:8,SMARCC2:8,BCL11A:4,BRF2:4,PPARGC1A:4,THAP1:4,Eralphaa:2,NR4A1:2,ESRRA:1,FAM48A:1,GTF3C2:1,POU5F1:1,PRDM1:1,ZNF274:1'] 

它的工作

>>> for test in a: 
... test1 = test[4].strip(',').split(',') 
... print(test1) 
['e'] 
>>> for test in a: 
... b = test.strip(',').split(',') 
... 
>>> b 
['DNase:26039', 'H3K4me3:13995', 'POLR2A:9215', 'H3K4me2:8024', 'H3K9ac:6869', 'H3K27ac:5904', 'H3K27me3:4816', 'H3K4me1:4622', 'FAIRE:4462', 'H2AFZ:3052', 'CTCF:2356', 'H3K36me3:1766', 'H3K79me2:1469', 'TAF1:1264', 'TBP:798', 'YY1:689', 'NFKB1:664', 'MYC:578', 'MAX:565', 'USF1:496', 'SP1:415', 'HEY1:409', 'SIN3A:405', 'ELF1:396', 'EP300:383', 'E2F1:377', 'H4K20me1:369', 'JUND:330', 'E2F6:315', 'EGR1:299', 'CEBPB:279', 'PAX5:251', 'CHD2:227', 'FOXA1:227', 'RAD21:218', 'TCF12:206', 'E2F4:205', 'STAT3:202', 'REST:200', 'GABPA:197', 'USF2:197', 'POU2F2:194', 'SLC22A2:194', 'TCF7L2:193', 'MXI1:183', 'NR3C1:180', 'HNF4A:177', 'GTF2F1:174', 'GATA1:169', 'EBF1:167', 'SPI1:167', 'HDAC2:163', 'TRIM28:154', 'CCNT2:149', 'HMGN3:141', 'GATA2:132', 'FOSL2:130', 'FOS:129', 'IRF4:116', 'ZNF263:116', 'TFAP2C:115', 'POLR2A_elongating:114', 'STAT1:109', 'RFX5:108', 'NRF1:107', 'H3K9me3:99', 'POLR3A:98', 'BCLAF1:97', 'FOXA2:97', 'IRF1:97', 'ELK4:87', 'HNF4G:87', 'SMC3:87', 'TFAP2A:87', 'ZBTB7A:75', 'TAF7:73', 'SRF:72', 'ZEB1:70', 'ETS1:69', 'JUN:66', 'BCL3:64', 'BRCA1:64', 'NR2C2:64', 'SMARCB1:64', 'BATF:60', 'GTF2B:58', 'MEF2A:57', 'SREBF1:56', 'TAL1:55', 'RXRA:54', 'NFYA:49', 'HSF1:47', 'BHLHE40:46', 'PBX3:44', 'NFYB:42', 'RDBP:42', 'SIX5:42', 'STAT2:39', 'ZNF143:38', 'ATF3:36', 'MAFK:34', 'IRF3:31', 'ZBTB33:29', 'SETDB1:24', 'CTCFL:23', 'SP2:23', 'SREBF2:21', 'CTBP2:16', 'GATA3:16', 'MEF2_complex:15', 'NFE2:15', 'SMARCC1:15', 'SUZ12:15', 'JUNB:14', 'SMARCA4:14', 'BDP1:13', 'ERALPHAA:10', 'FOSL1:10', 'H3K9me1:10', 'SIRT6:10', 'MAFF:9', 'NANOG:8', 'SMARCC2:8', 'BCL11A:4', 'BRF2:4', 'PPARGC1A:4', 'THAP1:4', 'Eralphaa:2', 'NR4A1:2', 'ESRRA:1', 'FAM48A:1', 'GTF3C2:1', 'POU5F1:1', 'PRDM1:1', 'ZNF274:1'] 

我怎样才能解决这个问题呢? 由自然方法论文引入的软件,我不会更改任何代码。有人使用它(我从论文的引用中知道),但是当我运行时它停在这里。

有很多问题aboud“列表索引超出范围”,但我无法获得有用的信息。

+0

如果错误在没有写入的代码中出现,应该向写入该错误的人报告。此软件是否有问题追踪器?如果是的话,你应该使用它,并等待问题解决(或尝试自己修复) –

+0

谢谢。我会尝试修复它并等待作者的安抚。 –

回答

0

我与某人联系维持pybedtools,他告诉我这是BedTools版本让这个错误发生。我应该将其更改为开发者版本。

相关问题