我刚开始使用perl,我有一个问题.我有PHYLIP文件,我需要将其转换为FASTA.我开始写一个脚本.首先,我删除了行中的scpaces,现在我需要对齐每行中应该是60个氨基酸的所有行,并且应该在新行中打印sequances识别符.也许有人可以给我一些建议?
解决方法
BioPerl
Bio::AlignIO模块可能有所帮助.它支持
PHYLIP序列格式:
phylip2fasta.pl
use strict; use warnings; use Bio::AlignIO; # http://doc.bioperl.org/bioperl-live/Bio/AlignIO.html # http://doc.bioperl.org/bioperl-live/Bio/AlignIO/phylip.html # http://www.bioperl.org/wiki/PHYLIP_multiple_alignment_format my ($inputfilename) = @ARGV; die "must provide phylip file as 1st parameter...\n" unless $inputfilename; my $in = Bio::AlignIO->new(-file => $inputfilename,-format => 'phylip',-interleaved => 1); my $out = Bio::AlignIO->new(-fh => \*STDOUT,-format => 'fasta'); while ( my $aln = $in->next_aln() ) { $out->write_aln($aln); }
$perl phylip2fasta.pl test.phylip
>Turkey/1-42 AAGCTNGGGCATTTCAGGGTGAGCCCGGGCAATACAGGGTAT >Salmo_gair/1-42 AAGCCTTGGCAGTGCAGGGTGAGCCGTGGCCGGGCACGGTAT >H._Sapiens/1-42 ACCGGTTGGCCGTTCAGGGTACAGGTTGGCCGTTCAGGGTAA >Chimp/1-42 AAACCCTTGCCGTTACGCTTAAACCGAGGCCGGGACACTCAT >Gorilla/1-42 AAACCCTTGCCGGTACGCTTAAACCATTGCCGGTACGCTTAA
test.phylip http://evolution.genetics.washington.edu/phylip/doc/sequence.html
5 42 Turkey AAGCTNGGGC ATTTCAGGGT Salmo gairAAGCCTTGGC AGTGCAGGGT H. SapiensACCGGTTGGC CGTTCAGGGT Chimp AAACCCTTGC CGTTACGCTT Gorilla AAACCCTTGC CGGTACGCTT GAGCCCGGGC AATACAGGGT AT GAGCCGTGGC CGGGCACGGT AT ACAGGTTGGC CGTTCAGGGT AA AAACCGAGGC CGGGACACTC AT AAACCATTGC CGGTACGCTT AA