python编程,获取一段序列的反向互补序列,需要多种方法
获取序列CATGCATCGT的互补反向序列,互补规则是A与T互补,C与G互补,反向大家都知道。。。方法越多愈好,采纳方法最多的。最少10种,结果发到我邮箱51221335...
获取序列CATGCATCGT的互补反向序列,互补规则是A与T互补,C与G互补,反向大家都知道。。。方法越多愈好,采纳方法最多的。最少10种,结果发到我邮箱512213359@qq.com,谢谢。
不需要很复杂的程序,只针对CATGCATCGT这一小段序列,但是要有不同的编程方法,也就是不同的思路吧,方法多的可以加分 展开
不需要很复杂的程序,只针对CATGCATCGT这一小段序列,但是要有不同的编程方法,也就是不同的思路吧,方法多的可以加分 展开
5个回答
展开全部
lt='CATGCATCGT'
def func1(liststr):
t=list(liststr);d=[]
dct={'A':'T','T':'A','C':'G','G':'C'}
for x in range(len(t)):
d.append(dct[t.pop()])
return d
其他的都简单,1.直接字符串反向处理,再逐一翻译;2.用正负数来处理,这个对于大量的任务可以提高效率;3.两遍处理,True、False开关;4.列表内替换,然后反向;5.成对换位,不过效率低下; 6.还有就是直接的字符串替换,然后一个切片s[::-1]就OK了 ;
lt='CATGCATCGT'
lt=lt.replace('A','{A}').replace('T','{T}').replace('C','{C}').replace('G','{G}')
result=lt.format(A='T',T='A',C='G',G='C')[::-1]
def func1(liststr):
t=list(liststr);d=[]
dct={'A':'T','T':'A','C':'G','G':'C'}
for x in range(len(t)):
d.append(dct[t.pop()])
return d
其他的都简单,1.直接字符串反向处理,再逐一翻译;2.用正负数来处理,这个对于大量的任务可以提高效率;3.两遍处理,True、False开关;4.列表内替换,然后反向;5.成对换位,不过效率低下; 6.还有就是直接的字符串替换,然后一个切片s[::-1]就OK了 ;
lt='CATGCATCGT'
lt=lt.replace('A','{A}').replace('T','{T}').replace('C','{C}').replace('G','{G}')
result=lt.format(A='T',T='A',C='G',G='C')[::-1]
展开全部
RULE={'A':'T','T':'A','C':'G','G':'C'}
DNA_LIST='CATGCATCGT'
print "".join(map(lambda x:RULE[x],DNA_LIST))[::-1]
s = ""
for i in DNA_LIST:
if i == "A":
s = s+"T"
if i == "T":
s = s+"A"
if i == "C":
s = s+"C"
if i == "G":
s = s+"G"
print s
DNA_LIST='CATGCATCGT'
print "".join(map(lambda x:RULE[x],DNA_LIST))[::-1]
s = ""
for i in DNA_LIST:
if i == "A":
s = s+"T"
if i == "T":
s = s+"A"
if i == "C":
s = s+"C"
if i == "G":
s = s+"G"
print s
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#!/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格式文件
追问
不需要那么复杂的,就是简单点,不需要用fasta输入输出文件,就是这小段CATGCATCGT序列,直接获得结果,谢谢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
问题补充:如果希望通过点阵图方法发现一条序列中反向互补的序列片段,那么如何若出现反向重复序列,会在点阵图上出现一段和原描点方向相垂直的一系列点。
追问
没那么复杂,就是个python的编程,只不过要多种方法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
''.join([ 'TACG'['ATGC'.index(x)] for x in 'CATGCATCGT'[::-1]])
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询