コード配列を見つける
cds_position = ''
cds_start = 0
cds_end = 0
cds_sequence = ''
for line in data:
cds_temp = ''
if re.findall(r' CDS ',line):
cds_temp = cds_temp + line.replace('\n','')
position = re.search(r'(\d+)\.\.(\d+)',cds_temp)
cds_start = cds_start + int(position.group(1))
cds_end = cds_end + int(position.group(2))
cds_position = str(cds_start)+':'+str(cds_end)
cds_sequence = cds_sequence + sequence[(cds_start-1):(cds_end-1)]
このエラーが発生します
Traceback (most recent call last):
File "Upstream_ORF.py", line 357, in <module>
GenBank_Reader(test_file)
File "Upstream_ORF.py", line 317, in GenBank_Reader
cds_start = cds_start + int(position.group(1))
AttributeError: 'NoneType' object has no attribute 'group'
わかりました。なぜこのエラーが発生するのか本当にわかりません。
特定の形式のファイルを1行ずつ処理するスクリプトを作成しました。特定の文字列に続いて10個のスペースが見つかると、それに続く数値が使用されます。
exon 1..1333
/gene="BRD2"
/gene_synonym="D6S113E; FSH; FSRG1; NAT; RING3; RNF3"
/inference="alignment:Splign:1.39.8"
/number=3
STS 350..463
/gene="BRD2"
/gene_synonym="D6S113E; FSH; FSRG1; NAT; RING3; RNF3"
/standard_name="CGCb278"
/db_xref="UniSTS:240930"
したがって、エクソンという単語の後に10個のスペースが続く場合は常に、「..」に隣接する数字が使用されます。5つの異なるファイルで機能しましたが、そのうちの1つでは機能せず、まったく同じ形式です。他のものと一緒に動作するので、なぜ今動作しているのかわかりません。ファイル内に「エクソン」と表示されているすべてのオカレンスが見つかりましたが、探していたもののように10個のスペースが隣接しているものはありませんでした。
同じ形式の他のファイルで機能する場合、なぜこのエラーが発生するのでしょうか。