2017-05-09 245 views
-3

我正在使用Jupyter筆記本:NameError:name'sequences'is not defined

Python 3.6.0 | Anaconda custom(64-bit)| (默認,2016年12月23日,12:22:00)
請輸入'copyright','credits'或'license'以獲取更多信息
IPython 6.0.0 - 增強型交互式Python。鍵入'?'求助。

任何幫助?

NameError  Traceback (most recent call last) 
<ipython-input-15-6934f5f7b183> in <module>() 
33 read_fasta(file_name) 
34 print("Start2") 
---> 35 write_cat_seq(sequences) 
36 print('Saved and Complete') 

NameError:名稱 '序列' 是沒有定義

my_file = 「chr1_abc_def.fasta」

>lcl|NC_000021 
ATGCGGCT... 
>lcl|NC_000022 
ATGCGGCt... 

這些功能應該採取my_file其中包含的每個DNA編碼區alterheader線。

閱讀DNA編碼區的.fasta文件,同時刪除標題並將它們拼接在一起。

# read fasta file of DNA coding regions while removing header and splicing them together. 
def read_fasta(file_name): 
    sequences = [] 
    seq = [] 
    with open(file_name) as fh: 
     while True: 
      if fh.readline().startswith(">"): 
       fh.readline() 
      else: 
       seq = fh.readline().rstrip() 
       if len(seq) == 0: 
        break 
     sequences.append(seq) 
    return sequences 

保存在所附序列作爲一個單一的長度DNA .fasta

def write_cat_seq(sequences): 
    output_seq = "chr21_coding_region_concat.fasta" 
    print(output_seq) 
    output = open(output_seq, 'w') 
    output.write(sequences) 
    output.close() 
    print("File %s saved" % output_seq) 

運行功能

file_name = "chr21_dna_sequence.fasta" 
read_fasta(file_name) 
write_cat_seq(file_name, sequences) 
print('Saved and Complete') 
+0

我看着在返回它在代碼正確的,但並沒有對這個問題,只是糾正它。 – oaxacamatt

+0

'return sequences'並不意味着調用者現在擁有'sequences'變量。您需要顯式保存返回值。 – user2357112

+0

最後一個「運行功能」的東西......是不是你的問題?它沒有定義「序列」,而是試圖使用它。 – tdelaney

回答

0

事實上,你忘了的read_fasta(file_name)將結果存儲在一個sequences列表中,所以它沒有被定義。

這裏是你的代碼的正確版本:

file_name = "chr21_dna_sequence.fasta" 
sequences = read_fasta(file_name) 
write_cat_seq(file_name, sequences) 
print('Saved and Complete')