廣告時間:如果覺得這篇文章對你有用盾剩,可以看下我的資料介紹,關注下替蔬。
代碼來源:《生物信息學》樊龍江告私,第二版,P414
作為Python小白承桥,本以為能直接從書上把代碼抄下來直接用驻粟,然而,并不能凶异。就有點無語蜀撑。
Python注重縮進格式,但給出的腳本并沒有剩彬,估計排版時給排亂了酷麦。
需要自己安裝biopython模塊
原書代碼抄過來直接用時存在的問題:
for 循環(huán)對齊問題,result_handle定義行報錯卡死喉恋。
第一次運行只能獲得一個文件沃饶,而且該文件只有第一條序列
NC_038972.1
再次運行時,序列
NC_038972.1
會再次追加到輸出文件中轻黑,造成結果文件只有多個序列NC_038972.1
1. 原書中代碼
2.修改后可用的代碼
2.1 test_id.txt文件內容糊肤。
NC_038972.1
NC_038973.1
NC_038974.1
NC_038975.1
2.2 代碼內容
大家使用的時候修改第5,6氓鄙,7行代碼即可馆揉。
大家使用的時候修改第5,6玖详,7行代碼即可把介。
大家使用的時候修改第5,6蟋座,7行代碼即可拗踢。
#!/usr/bin/env python
# -*-coding:UTF-8 -*-
import os
from Bio import SeqIO, Entrez
os.chdir("E:/workspace_pycharm/Python_learning") #設置工作路徑
file_in_name = "./test_id.txt" #存有序列下載ID的文件
file_out_name = "./result.fasta" #如果源文件已存在,則會被覆蓋向臀。open(file_out_name, 'w')
Entrez.email = 'zhengshimao007@163.com'
input_file = open(file_in_name, "r")
output_file = open(file_out_name, 'w')
for record_id in input_file:
result_handle = Entrez.efetch(db="nucleotide", rettype="gb", id=record_id)
seqRecord = SeqIO.read(result_handle, format='gb')
result_handle.close()
output_file.write(seqRecord.format("fasta")) # "fasta" "gb"
output_file.close()
input_file.close()
#應該是要有個空白行
需要修改的內容
- 第10行巢墅,將
'a'
改為'w'
,由'a'
可創(chuàng)建與追加,變?yōu)?code>'w' 可創(chuàng)建可覆蓋君纫。 - 第12行驯遇,要用空格,將其放入到for循環(huán)內蓄髓。最后
id
是取自for循環(huán)變量叉庐。 - 第16,17行会喝,取消空格陡叠,放入到循環(huán)之外
因為不懂Python,更不懂biopython肢执。自己更改的內容不多枉阵。