perl编程问题 FastA序列反向互补

2025-03-04 18:00:11
推荐回答(4个)
回答1:

#!/usr/bin/perl -w
# Author: yqy_135
# Program name: fasta-re.pl 用于反转(反向互补)fasta格式序列

open (IN,"<$ARGV[0]") || die ("\nError: Couldn't open input file (*.txt) !\n\n");

my $filename = $ARGV[0];
$filename =~ s/\.txt//;
open (OUT,">$filename.fas");

$/= ">";

while ()
{
next unless (my ($id,$seq) = /(.*?)\n(.*)/s);
$seq =~ s/[\d\s>]//g;#remove digits, spaces, line breaks,...

# reverse $seq;

my @lxm=split(//,$seq);
@lxm = reverse @lxm;
$seq=join "", @lxm;

$seq=~ tr/AGCT/TCGA/;

print OUT ">"."$id\n$seq\n";

};

——————————————————————更新
上面的程序就是针对文件的,只要你是fasta格式就行,用法为
perl fasta-re.pl 你的fasta文件名

自动生成反向的fasta格式文件

回答2:

这是反向互补吗?这不只是互补而已吗?我觉得反向互补应该得到的序列是CTAGGTCA。
这是我写的程序,算法比较笨。。。

#!usr/bin/perl/-w
print "put in";
$a=;
chomp($a);
@q=split (//,$a);
@p=reverse @q;
foreach my $i (@p){
if ($i eq "A"){print "T";}
elsif ($i eq "T"){print "A";}
elsif ($i eq "G"){print "C";}
elsif ($i eq "C"){print "G";}
}

回答3:

好好研究一下tr和reverse的使用方法即可。

回答4:

reserve就是了