perl编程问题 FastA序列反向互补
就是TGACCTAG换成ACTGGATC谢谢了,我也写了一个,貌似也能成立。#!usr/bin/perl/-wforeach(<>){if(/^(A|G|C|T)/){i...
就是TGACCTAG
换成ACTGGATC
谢谢了,我也写了一个,貌似也能成立。
#! usr/bin/perl/ -w
foreach(<>){
if(/^(A|G|C|T)/){
if(s/T/1/g && s/A/2/g && s/G/3/g && s/C/4/g){}
if(s/1/A/g && s/2/T/g && s/3/C/g && s/4/G/g){print ;}
}
else{print;
next;}
}
如果我用的是个文件fastA
“>gi|187608668|ref|NM_001043364.2| Bombyx mori moricin (Mor), mRNA
AAACCGCGCAGTTATTTAAAATATGAATATTTTAAAACTTTTCTTTGTTTTTA
TTGTGGCAATGTCTCTGGTGTCATGTAGTACAGCCGCTCCAGCAAAAATACCT
ATCAAGGCCATTAAGACTGTAGGAAAGGCAGTCGGTAAAGGTCTAAGAGCCAT
CAATATCGCCAGTACAGCCAACGATGTTTTCAATTTCTTGAAACCGAAGAAAA
GAAAGCATTAAGAAAAGAAATTGAGTGAATGGTATTAGATATATTACTAAAGG
ATCGATCACAATGATATATAGATAGGTCATAGATGTCAACGTGAATTTATGGA
TTTTTGTTTTCCCCTTTGTAGTACTTACTTATAGTCAGTTCTTAAATTGATTG
CAACGACAACTGTGTACTATTTTTTATATTTGGTTCGAAAAGTTGCATTATTA
ACGATTTTAGAAAATAAAACTACTTTACTTTTACACG”我想将它反向互补了,该怎么做啊?
还有就是答复下面三楼“p表示5'端的那个磷酸,是标记方向用的。
也可写作5'-AGATTAAGCC-3',反向互补序列是3'-TCTAATTCGG-5',也可写作pGGCTTAATCT ” 展开
换成ACTGGATC
谢谢了,我也写了一个,貌似也能成立。
#! usr/bin/perl/ -w
foreach(<>){
if(/^(A|G|C|T)/){
if(s/T/1/g && s/A/2/g && s/G/3/g && s/C/4/g){}
if(s/1/A/g && s/2/T/g && s/3/C/g && s/4/G/g){print ;}
}
else{print;
next;}
}
如果我用的是个文件fastA
“>gi|187608668|ref|NM_001043364.2| Bombyx mori moricin (Mor), mRNA
AAACCGCGCAGTTATTTAAAATATGAATATTTTAAAACTTTTCTTTGTTTTTA
TTGTGGCAATGTCTCTGGTGTCATGTAGTACAGCCGCTCCAGCAAAAATACCT
ATCAAGGCCATTAAGACTGTAGGAAAGGCAGTCGGTAAAGGTCTAAGAGCCAT
CAATATCGCCAGTACAGCCAACGATGTTTTCAATTTCTTGAAACCGAAGAAAA
GAAAGCATTAAGAAAAGAAATTGAGTGAATGGTATTAGATATATTACTAAAGG
ATCGATCACAATGATATATAGATAGGTCATAGATGTCAACGTGAATTTATGGA
TTTTTGTTTTCCCCTTTGTAGTACTTACTTATAGTCAGTTCTTAAATTGATTG
CAACGACAACTGTGTACTATTTTTTATATTTGGTTCGAAAAGTTGCATTATTA
ACGATTTTAGAAAATAAAACTACTTTACTTTTACACG”我想将它反向互补了,该怎么做啊?
还有就是答复下面三楼“p表示5'端的那个磷酸,是标记方向用的。
也可写作5'-AGATTAAGCC-3',反向互补序列是3'-TCTAATTCGG-5',也可写作pGGCTTAATCT ” 展开
4个回答
展开全部
#!/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 (<IN>)
{
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格式文件
# 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 (<IN>)
{
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=<STDIN>;
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";}
}
这是我写的程序,算法比较笨。。。
#!usr/bin/perl/-w
print "put in";
$a=<STDIN>;
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就是了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询