当前位置: 新豪天地登录网址 > 科学研究 > 正文

python3生信入门新豪天地登录网址

时间:2019-08-25 14:23来源:科学研究
python3生信入门-提取fastq文件中的体系并转为fasta格式 测量试验数据及示范脚本已上传至百度盘: python3生信入门-依照钦点碱基长度,合併或分割fasta文件中的每条体系并按行排列输出

python3生信入门-提取fastq文件中的体系并转为fasta格式

测量试验数据及示范脚本已上传至百度盘:


python3生信入门-依照钦点碱基长度,合併或分割fasta文件中的每条体系并按行排列输出

测试fasta文件:

示范脚本:


python3生信入门-总计fasta文件中,每条种类的长度和GC含量

测试fasta文件:

演示脚本:


python3生信入门-依据基因地点信息在基因组fasta文件中收获相应的基因体系

测试fasta文件:

演示脚本:


说明


网盘中提供的测量试验数据“test.fastq”为四个fastq文件,其剧情如下:

新豪天地登录网址 1

今昔大家供给使用python3,对该fastq文件进行管理,需要:

将该fastq文件中的碱基类别提收取来,并以fasta格式存款和储蓄;

而且将fastq中每条体系的id中的“@”替换为“>”后,作为新fasta文件中每条类别的id。

预期所得结果“test.fasta”内容如下:

新豪天地登录网址 2

请依照须要编辑三个简练的py脚本。


说明


网盘中提供的测验fasta文件“Bacillus_subtilis/4-assembly/Bacillus_subtilis.scaffolds.fasta”,为某细菌的基因组组装草图(组装到scaffolds水平,每条类别为一条scaffold,scaffold命名为scaffold_1、scaffold_2、scaffold_3……)。该公文中,对于每条类别,其碱基连串按伍十六个碱基为一行排列,如下所示。

新豪天地登录网址 3

当今咱们须要使用python3,对该基因组fasta文件中的体系排列方式开展转变,分别获得2个新的fasta文件,需求:

新fasta文件中的碱基类别不再按伍14个碱基为一行排列,而是对于每段种类,将装有碱基呈现为一行,比方:

新豪天地登录网址 4

新fasta文件中的碱基类别不再按57个碱基为一行排列,而是能够按自定义长度为一行排列,举例:

新豪天地登录网址 5

请根据供给编辑一个轻便的py脚本。


说明


网盘中提供的测验fasta文件“Bacillus_subtilis/4-assembly/Bacillus_subtilis.scaffolds.fasta”,为某细菌的基因组组装草图(组装到scaffolds水平,每条类别为一条scaffold,scaffold命名叫scaffold_1、scaffold_2、scaffold_3……)。

方今大家须要接纳python3,总括该fasta文件中:

每条种类的长短,即总碱基个数;

每条类别的GC含量百分比。

并最后赢得一个列表,记录每条系列“id/长度/GC含量百分比”消息,内容如下:

新豪天地登录网址 6

请依据供给编辑三个简易的py脚本。


说明


在基因组解析中,大家平日会有诸有此类三个须要,就是在一个fasta文件中领取部分队列出来。不常那一个种类是一段完整的种类,而临时只是为原fasta文件中某段系列的一有的。特别是当数据量非常多时,使用肉眼去选用序列会很伤脑筋,那么此时大家就能够透过轻松的编制程序去实现了。

比方此处在网盘附属类小部件中给定了某物种的全基因组种类(0-refer/ Bacillus_subtilis.str168.fasta),及其基因组gff注释文件(0-refer/ Bacillus_subtilis.str168.gff)。借使在此间我们对该物种进行研商,通过gff注释文件中的基因功用描述字段,加上对有关资料的查阅等,定位到了部分一定的基因。接下来大家盼望基于gff文件中对这个基因地方的陈说,在全基因组连串fasta文件元帅这个基因找到并提抽取来,得到三个新的fasta文件,新文件中只含有指标基因体系。

请使用python3编辑四个方可兑现该意义的剧本。


示例


贰个示范脚本如下(可参见网盘附属类小部件“fq_fa.1.py”)。

#!/usr/bin/envpython3#-*-coding:utf-8-*-fasta=open('test.fasta','w')withopen('test.fastq','r')asfastq:forlineinfastq:ifline[0]=='@':line=line.stripprint('>' line,file=fasta)print(fastq.readline,file=fasta)fastq.close()fasta.close()

率先新建一个文件“test.fasta”,待写入内容。

附带伸开“test.fastq”,使用循环逐行读取其情节并对每一行进行判别,若首先个字符为“@”,则将该行早先的“@”删除并在初始处参预“>”后,写入到文件“'test.fasta”中;同期,将其下一行的碱基类别也一并出口到文件“'test.fasta”中(写在类别id的下一行)。

管理完了后,关闭张开的文本,此时的“test.fasta”即为所得结果。

新豪天地登录网址 7

网盘附属类小部件“fq_fa.py”为增多了指令传递行的python3脚本,可在shell中央政府机关接实行指标文件的I/O管理。其采纳方法如下:

#python3fq_fa.py-hpython3fq_fa.py-itest.fastq-otest.fasta

新豪天地登录网址 8

示例


二个示范脚本如下(可参见网盘附件“seq_split.1.py”)。

打开fasta文件“Bacillus_subtilis.scaffolds.fasta”,使用循环逐行读取个中的体系id及碱基种类,并将每条系列的具有碱基合併为三个字符串;将类别id及该系列合併后的碱基类别以字典的样式储存(字典样式{'id':'base'})。

打开新fasta文件“Bacillus_subtilis.scaffolds.split80.fasta”,依据钦赐的碱基长度(比方这里安装为76个碱基),将每条体系的碱基字符串举办剪切后,按行输出在新文件中。最后所得新fasta文件“Bacillus_subtilis.scaffolds.split80.fasta”中的碱基连串即按捌13个碱基为一行排列。

#!/usr/bin/envpython3#-*-coding:utf-8-*-#初叶传递命令input='Bacillus_subtilis.scaffolds.fasta'output='Bacillus_subtilis.scaffolds.split80.fasta'length=80#透过这里预设所想要出示的每行碱基长度,举例这里为柒十几个碱基为一行;若想将fasta文件中每条类别的富有碱基体现为一行,只需将该值设置的大学一年级点就可以(至少超过文件中最长体系的尺寸)#读取fasta文件seq_file={}withopen(input,'r')asold_fas:forlineinold_fas:line=line.strip()ifline[0]=='>':seq_id=lineseq_file[seq_id]=''else:seq_file[seq_id] =lineold_fas.close()#按自然种类长度分割系列,并按行排列后输出新fasta文件new_fas=open(output,'w')forkey,valueinseq_file.items():print(key,file=new_fas)whilelen>length:print(value[0:length],file=new_fas)value=value[length:len]print(value,file=new_fas)new_fas.close()

出口结果文件“fasta.stat.txt”其内容如下。

新豪天地登录网址 9

一模二样地,若想将 fasta 文件中每条种类的持有碱基浮现为一行,只需将该值设置的大学一年级点就能够(至少抢先文件中最长类别的尺寸)。比如我们将上述参数“length = 80”修改为“length = 10000000”,就可以直达该目标。

#修改初阶传递命令这一局地input='Bacillus_subtilis.scaffolds.fasta'output='Bacillus_subtilis.scaffolds.all.fasta'length=10000000

新豪天地登录网址 10

新fasta文件“Bacillus_subtilis.scaffolds.all.fasta”的从头到尾的经过如下。

新豪天地登录网址 11

新豪天地登录网址 12

网盘附属类小部件“seq_split.py”为增多了指令传递行的python3脚本,可在shell中央机关单位接进行目的文件的I/O处理。钦定读取的fasta文件,输出fasta文件路线和名称,以及输出fasta中每行所需出示的碱基个数(未钦赐是暗中认可按五十六个碱基为一行输出)就能够。

选取其联合或瓜分上文测量检验fasta文件中的种类,举例重新按79个碱基为一行展示类别组成信息,如下所示。

#python3seq_split.py-hpython3seq_split.py-iBacillus_subtilis.scaffolds.fasta-oBacillus_subtilis.scaffolds.split80.fasta-l80

新豪天地登录网址 13

平等地,若想将fasta文件中每条种类的全部碱基浮现为一行,只需将“-l”或“--length”参数设置的大学一年级点(至少抢先文件中最长系列的长短)就能够。

示例


多少个示范脚本如下(可参见网盘附属类小部件“seq_len_gc.1.py”,请使用python3.6及以上版本测量试验)。

打开fasta文件“Bacillus_subtilis.scaffolds.fasta”,使用循环逐行读取在那之中的队列id及碱基组成音信,并分别总计各类别的富有碱基总个数以及GC碱基总个数(GC字符可使用正则表明式识别,re模块的re.findall命令),将体系id及总结结果存款和储蓄在字典中(字典样式{'id':['length', 'GC']});同不经常候总括该fasta文件中的总碱基数及GC碱基总的数量。

开采新文件“stat.txt”,将字典中每条体系id及计算的长短和GC含量百分比消息写入当中。其余,额外在荧屏输出该fasta文件中总碱基个数及GC碱基百分比音信。

#!/usr/bin/envpython3.6#-*-coding:utf-8-*-##导入模块,初阶变量importreinput='Bacillus_subtilis.scaffolds.fasta'output='stat.txt'##读取并拍卖文件#读取fasta文件并总结seq_sum={}length_sum=0;GC_sum=0withopen(input,'r')asseq_file:forlineinseq_file:line=line.strip()ifline[0]=='>':seq_id=line[1:len]seq_sum[seq_id]=[0,0]else:line_base=lenline_GC=len(re.findall('[GCgc]',line))seq_sum[seq_id][0] =line_baselength_sum =line_baseseq_sum[seq_id][1] =line_GCGC_sum =line_GCseq_file.close()#输出每条连串的长短或GC含量结果new_file=open(output,'w')print('idtlengthtGC',file=new_file)forkey,valueinseq_sum.items():print(f'{key}t{value[0]}t{round(100*value[1]/value[0],2)}',file=new_file)new_file.close()#总司长总GCprint(f'总碱基数:{length_sum}')print(f'GC含量总百分比:{round(100*GC_sum/length_sum,2)}')

输出结果文件“stat.txt”其剧情如下。

新豪天地登录网址 14

网盘附属类小部件“seq_len_gc.py”为加多了命令传递行的python3脚本,可在shell中一向开展指标文件的I/O处理。该脚本可钦命总结长度或GC含量,可钦赐文件输出也可显示器输出。

使用其总计上文测量检验fasta文件中各系列长度及GC含量的办法如下:

#注:请使用python3.6及以上版本测量检验#python3seq_len_gc.py-hpython3seq_len_gc.py-iBacillus_subtilis.scaffolds.fasta-ostat.txt-tlength,GC

新豪天地登录网址 15

示例


二个示范脚本如下(可参见网盘附属类小部件“seq_select1.py”)。

为了完成上述指标,大家率先须求积谷防饥七个txt文件(以下称其为list文件,示例list.txt可参见网盘附属类小部件),基于gff文件中所记录的基因地方消息,填入类似以下的开始和结果(列与列之间以tab分隔)。

新豪天地登录网址 16

第1列,给所要获取的新类别命个名称;

第2列,所要获取的行列所在原体系ID;

第3列,所要获取的行列在原种类中的起头地点;

第4列,所要获取的行列在原系列中的终止地点;

第5列,所要获取的行列位于原类别的正链。

尔后据他们说输入文件,即输入fasta文件及记录所要获取种类位置的list文件中的内容,编辑py脚本。

打开fasta文件“Bacillus_subtilis.scaffolds.fasta”,使用循环逐行读取在那之中的行列id及碱基类别,并将每条体系的装有碱基合并为二个字符串;将体系id及该体系合併后的碱基体系以字典的花样积攒(字典样式{'id':'base'})。

打开list文件“list.txt”,读取当中的内容,存储到字典中。字典的键为list文件中的第1列内容;字典的值为list文件中第2-5列的原委,并按tab分割获得三个列表,包蕴4个字符分别代表list文件中第2-5列的音讯)。

终极依照读取的list文件中系列地点音讯,在读取的基因组中截取目标基因类别。由于某些基因类别大概位于基因组负链中,需取其反向互补体系,故首先定义三个函数rev(),用于在三番五次调用赢得反向互补系列。在输出体系名称时,还可选是还是不是将该连串的地点音信一并出口(name_detail = True/False)。

#!/usr/bin/envpython3#-*-coding:utf-8-*-#开班传递命令input_file='Bacillus_subtilis.str168.fasta'list_file='list.txt'output_file='gene.fasta'name_detail=True##读取文件#读取基因组连串seq_file={}withopen(input_file,'r')asinput_fasta:forlineininput_fasta:line=line.strip()ifline[0]=='>':seq_id=line.split()[0]seq_file[seq_id]=''else:seq_file[seq_id] =lineinput_fasta.close()#读取列表文件list_dict={}withopen(list_file,'r')aslist_table:forlineinlist_table:ifline.strip():line=line.strip().splitlist_dict[line[0]]=[line[1],int-1,int,line[4]]list_table.close()##截取种类并出口#概念函数,用于截取反向互补defrev:base_trans={'A':'T','C':'G','T':'A','G':'C','N':'N','a':'t','c':'g','t':'a','g':'c','n':'n'}rev_seq=list(reversedrev_seq_list=[base_trans[k]forkinrev_seq]rev_seq=''.join(rev_seq_list)return#截取类别并输出output_fasta=open(output_file,'w')forkey,valueinlist_dict.items():ifname_detail:print('>' key,'[' value[0],value[1] 1,value[2],value[3] ']',file=output_fasta)else:print('>' key,file=output_fasta)seq=seq_file['>' value[0]][value[1]:value[2]]ifvalue[3]==' ':print(seq,file=output_fasta)elifvalue[3]=='-':seq=revprint(seq,file=output_fasta)output_fasta.close()

编辑该脚本后运营,输出新的fasta文件“gene.fasta”,在那之中的队列即为大家所想要收获的目的基因类别。

新豪天地登录网址 17

网盘附属类小部件“seq_select.py”为增加了指令传递行的python3脚本,可在shell中从来开展目的文件的I/O管理。该脚本可钦定输入fasta种类文件以及记录有所需提取类别地点的列表文件,输出的新fasta文件即为提抽出的行列。

适用上述示范中的测验文件,运转该脚本的主意如下。

#python3seq_select.py-hpython3seq_select.py-iBacillus_subtilis.str168.fasta-llist.txt-ogene.fasta--detail

新豪天地登录网址 18

编辑:科学研究 本文来源:python3生信入门新豪天地登录网址

关键词: