#!/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格式文件
这是反向互补吗?这不只是互补而已吗?我觉得反向互补应该得到的序列是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";}
}
好好研究一下tr和reverse的使用方法即可。
reserve就是了