-3
我是小白,所以我需要一些幫助。例如,我有文件中的氨基酸序列。這個sequance是在一行中。所以我需要在一行中應該有60個氨基酸。我如何使用Perl來做到這一點?如何將單行文字格式轉換成多行文字?
我是小白,所以我需要一些幫助。例如,我有文件中的氨基酸序列。這個sequance是在一行中。所以我需要在一行中應該有60個氨基酸。我如何使用Perl來做到這一點?如何將單行文字格式轉換成多行文字?
open my $infile, '<', "/path/to/sequencefile" or die $!;
open my $outfile, '>', "/path/to/newfile" or die $!;
while(my $line = <$infile>) {
print $outfile join("\n", split(/\s/, $line)) . "\n";
}
close $infile;
close $outfile;
這是一個小程序,設置結果的寬度 - 但它應該給你的想法。
#!/usr/bin/perl
use strict;
use warnings;
use Bio::SeqIO;
my $in = Bio::SeqIO->new(-file => "fasta_junk.fasta" ,
-format => 'fasta');
my $out = Bio::SeqIO->new(-file => '>test.dat',
-format => 'fasta');
my $lookup = 'GTGCCAGCAGCCGC';
$out->width(20);
while (my $seq = $in->next_seq()) {
my $pos = index $seq->seq, $lookup;
# if $pos != -1, ($lookup not found),
# or $pos != 0, (found $lookup at first position, thus
# no preceding characters).
if ($pos > 0) {
my $trunc = $seq->trunc(1,$pos);
$out->write_seq($trunc);
}
}
它產生的這種輸出(帶有20的寬度),
>LM1
AAGTCTGACGGAGCAACGCC
GCGTGTATGAAGAAGGTTTT
CGGATCGTAAAGTACTGTCC
GTTAGAGAAGAACAAGGATA
AGAGTAACTGCTTGTCCCTT
GACGGTATCTAACCAGAAAG
CCACGGCTAACTAC
的fasta_junk.fasta文件
>LM1
AAGTCTGACGGAGCAACGCCGCGTGTATGAAGAAGGTTTTCGGATCGTAA
AGTACTGTCCGTTAGAGAAGAACAAGGATAAGAGTAACTGCTTGTCCCTT
GACGGTATCTAACCAGAAAGCCACGGCTAACTACGTGCCAGCAGCCGCGG
TAATACGTAGGTGGCAAGCGTTGTCCGGATTTATTGGGCGTAAAGCGCGC
GCAGGCGGTCTTTTAAGTCTGATGTGAAAGCCCCCGGCTTAACCGGGGAG
GGTCATTGGAAACTGGAAGACTGGAGTGCAGAAGAGGAGAGTGGAATTCC
ACGTGTAGCGGTGAAATGCGTAGATATGTGGAGGAACACCAGTGGCGAAG
GCGACTCTCTGGTCTGTAACTGACGCTGAGGCGCGAAAGCGTGGGGAGCA
AACAGGATTAGATACCCTGGTAGTCCACGCCGT
你可以用各種寬度爲自己玩玩看的結果。
你將不得不變得更具體。什麼是氨基酸的分隔符? – kjprice 2013-03-26 22:56:51