使用Python脚本读取fasta文件

读取FASTA文件

使用pip下载biopython

pip.exe install biopython
import sys 
from Bio import SeqIO  
sys.path #检查模块安装路径

SeqIO是BIo包的子包,一般py结尾的为模块。
sys.path 检查模块安装路径

from Bio.SeqRecord import SeqRecord
from Bio.Seq import Seq

加载对应的包。

SeqIO 读取序列文件

方式一 使用parse读取然后使用for循环迭代

SeqIO.parse("基因课Python学习/Python20201122/data/fasta_example_data/small_ls_orchid.fasta", "fasta")
sri = SeqIO.parse("基因课Python学习/Python20201122/data/fasta_example_data/small_ls_orchid.fasta", "fasta")
type(sri)

中FastaIterator为迭代器

next(sri)

for sr in sri:
  print(sr.seq)  

#此方式相当于列表,不好抓取。

方式二:index 建议用index 信息为键 SeqRecord为值的字典。

fn = "基因课Python学习/Python20201122/data/fasta_example_data/small_ls_orchid.fasta"  
def get_acc(old_key):
  infos = old_key.split('|')
  new_key = infos[3]
  # 断言,鲁棒性
  assert len(infos)==5 and infos[0]=='gi' and infos[2] ='emb'
  return new_key
seq_index = SeqIO.index(fn,'fasta',key_function=get_acc)
list(seq_index.keys())
list(seq_index.values())

SeqRecord

seq_index['Z78533.1']

Seq

my_str = 'AATCCGGAGGACCGGTGTACTCAGCTCA'

my_str.upper()
my_str.lower()
my_str[1:20:2]
my_str[::2]
my_str[::-1] #反向

my_seq =Seq( 'AATCCGGAGGACCGGTGTACTCAGCTCA')
my_seq.count('G') #记数
my_seq.upper()  #全体大写

my_seq.complement() # 互补
my_seq.reverse_complement() #反向互补

#Seq对象里面存的是序列,Seqrecord不仅存了序列还存了序列的id等信息

coding_dna =Seq("AATCCGGAGGACCGGTGTACTCAGCTC")
coding_dna.transcribe() #转录
coding_dna.translate() #翻译
coding_dna.translate(to_stop=True)

coding_dna.translate(table=2) #挑选密码子表。


str(seq_index['id'].seq) 

#提取碱基序列,并转换为字符串模式。其中name,id,seq,都可提取。

小结

此篇文章针对上一篇计算测序文件N50,来解决实际问题,我们得到的数据一般是fasta文件,往往需要进行初步处理,才能得到之前博文里面的准备数据,即染色体长度数据,所以对fasta文件提取工作显得十分重要,本文主要采用了Biopython来进行一系列操作,通常使用的是seq_index = SeqIO.index(fn,‘fasta’,key_function=get_acc),因为其抓取出来是字典模式,方便后面切片筛选,同时seq函数能够对序列进行大小写转换,计数序列里面的碱基,进行互补,反向互补,翻译,转录,等操作,大大提高了序列的可操作性。最近事情挺多的能坚持下来感觉自己还是挺厉害,虽然自己感觉还是没有学透,但是自己慢慢在积累,我觉得就已经很不错了。加油!

最后再来点鸡汤,不然文字过少,系统给我认定文章内容不佳,真是太难了。世上没有不平的事,只有不平的心。不去怨,不去恨,淡然一切,往事如烟。有多少残酷,你就该有多少坚强;有多少努力,你就会有多少光芒。没有太晚的开始,不如就从今天行动。总有一天,那个一点一点可见的未来,会在你心里,也在你的脚下慢慢清透。生活,从不亏待每一个努力向上的人。

你可能感兴趣的:(Python,python,开发语言,爬虫)