求助一下,帮写一段perl 脚本。
发布网友
发布时间:2022-04-25 15:50
我来回答
共3个回答
热心网友
时间:2023-10-14 16:48
这是我模拟的简单文件
# 统计每个位点每个碱基出现的频率
use strict;
use warnings;
use Data::Dumper;
@ARGV==2 or die;
my($inflie,$outfile)=@ARGV;
open my $in ,'<',$inflie or die;
open my $out ,'>',$outfile or die;
while(<$in>)
{
my ($num,$posd)=(split/\t/,$_)[0,1];
my $len=length($posd);
my $A = $posd=~s/A/A/g ;
my $T = $posd=~s/T/T/g ;
my $G = $posd=~s/G/G/g ;
my $C = $posd=~s/C/C/g ;
my $percentA= $A/$len;
my $percentT= $T/$len;
my $percentG= $G/$len;
my $percentC= $C/$len;
print "$A\t$T\t$G\t$C\n";
print $out "$num\tA:$percentA\tT:$percentT\tG:percentG\tC:percentC\n";
}
close $in;
close $out;
下面是输出结果,不知道是不是你想要的结果
追问你好!谢谢你的回答。但是貌似和我想的不太一样。按照你的模拟序列:
所有序列的第一位:A3,T0,C0,G1。
所有序列的第二位:A1,T2,C1,G0。
所有序列的第三位:A2,T1,G1,C0。
所有序列的第四位:A1,T2,C1,G0。
。
。
。
。
。
(如果序列长500bp,那就输出500个位点上每种核苷酸的组成)
我想得到的是每个位点上的碱基组成。
追答那就是我理解错了,我以为的位点是整个碱基排列记录,就是一个点的碱基信息,然后统计这条记录里每种碱基出现的比率。而你想统计,所有序列的每个位置出现四种碱基的次数的统计结果,是吧,我考虑一下,有办法解决了,我就写下来。
热心网友
时间:2023-10-14 16:49
涉及专业知识,热心的网友不大明白问题哦~~
统计出现的频率,应该不难。遍历一下,用HASH记录结果
热心网友
时间:2023-10-14 16:49
表示题目看不懂!追问 字数总是超出范围
能不能qq聊?
我的秋4 7 4 6 5 5 4 8 4