跳至内容
响水凹
欢迎来到 Guang-Wen Duan (Dennis Duan) 的个人 Wiki
用户工具
登录
站点工具
搜索
工具
显示页面
过去修订
反向链接
最近更改
媒体管理器
网站地图
登录
>
最近更改
媒体管理器
网站地图
您的足迹:
computer:perl:fasta_split
本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。
====== 分割序列矩阵fasta_split.pl ====== ===== 矩阵格式 ===== 要处理的FASTA序列矩阵格式如下(数据已处理过,非真实数据): <code> >CPBOL076-11|JF952978|LiujqAB08|Abies squamata|matK CGATCGTTGTCTCATGGATCTTTCCCTGATCAAACTCATTTTGATCGAAAGATCAAACATATTATCAGAAATTATCGTCG AAATTCACTGAAAAGTATCTGGTCGTTGAAGGATCCTAGAATTCACTATGTTAGATATGCAGAAAGATCTATTATAGCTA TAAAGGGTACTCATCTCCTAGTGAAAAAATGTAGATATCATCTTCCAATTTTTCGGCAATTTTATTTCCATCTTTGGTCC GAACCATATAGGGTATGTTCTCATCAATTATC >CPBOL121-11|JF953012|Yangqe0222|Aconitum angustius|matK GCCCCCTTTTTGCACTTATTGAGACTCTTTCTCTACGAGTATCATCATTGGAATATTCTTATTACTCAAAAAAATCAAAT GAATTTCTTTTTTTCAAAAGAGAATCAAAGATTTTTTCTGTTCCTATATAATTTTCATGTATATGAATCGGAATCCATAT TCGTTTTTCTCCGTAAACAATCTTCTCATTTACGATCAACATCCTCTAGAGCTTTTCTTGATCGAACAC ... </code> 矩阵由多条序列数据组成,每条序列又由一行注释(以>开头),和后续的一行或多行数据构成。 ===== 程序功能 ===== 程序要做的: - 将序列分割出来,每条序列单独生成一个文件; - 文件以注释行的第三项(用|分隔)加固定前缀命名,新文件格式依旧是FASTA; - 同时输出文件名与注释行第三项、第二项的对应关系。 ===== 代码简述 ===== 临时更换行结束符,滤掉第一条序列前的所有字符: <code perl> $/ = ">"; <>; $/ = "\n"; </code> 获取注释行中的信息: <code perl> while (<>) { my $sample_id = ""; my $genbank_no = ""; my $seq = ""; if (/^.+\|(.+)\|(.+)\|.+\|.+$/) { $sample_id = $2; $genbank_no = $1; } else { next; } </code> 获取序列数据,并去掉所有多余字符。因序列数据可能有多行,所以需要再次临时更换行结束符: <code perl> $/ = ">"; $seq = <>; $/ = "\n"; $seq =~ s/\r//g; $seq =~ s/\n//g; $seq =~ s/\s//g; $seq =~ s/-//g; $seq =~ s/~//g; $seq =~ s/>$//; </code> 生成目标文件: <code perl> my $new_sample_id = "CPBOL2010-" . $sample_id; my $filename = $new_sample_id . ".fasta"; open OUTFILE, ">", $filename; print OUTFILE ">" . $new_sample_id . "\r\n"; print OUTFILE $seq . "\r\n"; close OUTFILE; </code> 输出对应关系: <code perl> print "$filename\t\t\t$new_sample_id\t$genbank_no\r\n"; </code> 继续处理下一条序列,直到结束: <code perl> } exit 0; </code> 完毕。 {{tag>Perl}}
computer/perl/fasta_split.txt
· 最后更改: 2014/11/01 02:02 由
127.0.0.1
页面工具
显示页面
过去修订
反向链接
回到顶部