免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 5708 | 回复: 22
打印 上一主题 下一主题

求程序:用Perl计算一个序列六联体的频数及频率,请大神帮忙 [复制链接]

论坛徽章:
1
青铜圣斗士
日期:2015-12-05 20:21:44
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-11-30 11:32 |只看该作者 |倒序浏览
本帖最后由 咏咏672418539 于 2015-12-01 11:46 编辑

我有一批量(很多不同)的序列,里面是由ATCGN构成的.我想要计算其中每个序列的6联体(连续6个碱基,如:AAAAAA,AAAAAT,AAAAAC,AAAAAG,AAAATA......最多共有4的6次方种类型)出现的每种类型的个数。其中会有N,遇到N,按ATCG四种碱基都有可能来看,即各加四分之一如,AAAAA N.它有可能是AAAAA A,AAAAA T,AAAAA C,AAAAA G这四种,每种的为四分之一,如果之前出现过AAAAA A为1,则现在AAAAA A的频数为1+四分之一。再算每种的频率各是多少。我学Perl的时间较短,老师催的太紧了。先谢谢各位啦

论坛徽章:
1
青铜圣斗士
日期:2015-12-05 20:21:44
2 [报告]
发表于 2015-11-30 16:52 |只看该作者
回复 1# 咏咏672418539


    例如,序列:〉1        ATGTCTAAAGTTCCTACTATTTTGAACCCTACTGAAGAAGACCTTCAACTCTTATTGGCTGCTCAAGCCCACCTTGGC


2〉      GCCAAGAACCTCAACACCCGCATGGCTCCCTATGTCTTTAAGCGTCGAGCTGATGGTGTTCACTTGATTAACCTTGG


〉3           CAAGACGTGGGAAAAGCTCATCTTTGCTGCTCGTGTGATTGCAGCGATCGAGAACCCTGCGGACATTGTGGTTGTC


〉4        TCTGCTCGTCCCTACGGCCACCGTGCCGCCTTGAAGTTTGCTCGCTACATTGGCGCCGAAGCGGTCGTGGGTCG


〉5            CTTCACGCCAGGTACGTTTACCAATTACATCACCCGTTCCTTCCGTGAACCTCGCTTGGTCATCTGTACCGATCCT

计算每个序列中连续6个的个数,如〉1中,计算 ATGTCT ,TGTCTA,GTCTAA……的个数

论坛徽章:
26
2015亚冠之胡齐斯坦钢铁
日期:2015-06-25 21:40:202015亚冠之柏斯波利斯
日期:2015-08-31 17:03:192015亚冠之柏斯波利斯
日期:2015-11-07 13:10:00程序设计版块每日发帖之星
日期:2015-11-10 06:20:00每日论坛发贴之星
日期:2015-11-10 06:20:00程序设计版块每日发帖之星
日期:2015-11-26 06:20:00程序设计版块每日发帖之星
日期:2015-12-02 06:20:00黄金圣斗士
日期:2015-12-07 17:57:4615-16赛季CBA联赛之天津
日期:2015-12-23 18:34:14程序设计版块每日发帖之星
日期:2016-01-02 06:20:00程序设计版块每日发帖之星
日期:2016-01-06 06:20:00每日论坛发贴之星
日期:2016-01-06 06:20:00
3 [报告]
发表于 2015-11-30 20:22 |只看该作者
你好,新手求教
序列由ATCGN构成

频率如何计算呀

  • NNNNNN
  • ANNNNN
  • ANNCNN
  • ANCNTN
  • ....

大神,谢谢啦

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
4 [报告]
发表于 2015-11-30 23:18 |只看该作者
回复 2# 咏咏672418539


    举个例子,针对序列1,如何计算?应该计算出啥?

论坛徽章:
1
青铜圣斗士
日期:2015-12-05 20:21:44
5 [报告]
发表于 2015-12-01 09:24 |只看该作者
回复 4# MMMIX


    连续六个的种类统计,并求出个数,如序列1如果是AAAAA AAACG CGTTC,1-6个是一种AAAAA A,再往后数一位即2-7位,是AAAAA A,要加1,3-8位也是AAAAA A,要加1.4-9位是AAAAA C,和上一种不同,就又是一种……也就是每次移动一个来看连续6个的类型,和之前某种一样的,要加上,不一样的,要自己构成一类。

论坛徽章:
1
青铜圣斗士
日期:2015-12-05 20:21:44
6 [报告]
发表于 2015-12-01 09:26 |只看该作者
回复 3# substr函数


    也在等大神

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
7 [报告]
发表于 2015-12-01 12:03 |只看该作者
本帖最后由 MMMIX 于 2015-12-01 20:51 编辑

回复 5# 咏咏672418539


    数子串呀:

sub count_Nseq {
    my ($seq, $n) = @_;

    my %count_of;
    for my $start (0 .. length($seq) - $n) {
        ++$count_of{substr $seq, $start, $n};
    }

    wantarray ? %count_of : \%count_of;
}

至于 N 的处理,一个变四个,循环一下就有了。

论坛徽章:
1
青铜圣斗士
日期:2015-12-05 20:21:44
8 [报告]
发表于 2015-12-01 15:19 |只看该作者
回复 7# MMMIX


    大神可以说明一下吗,不是很懂这个程序,而且,对N的处理不明白

论坛徽章:
1
青铜圣斗士
日期:2015-12-05 20:21:44
9 [报告]
发表于 2015-12-01 15:23 |只看该作者
回复 3# substr函数


    你会用Perl程序来计算频数吗?

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
10 [报告]
发表于 2015-12-01 16:42 |只看该作者
回复 8# 咏咏672418539


    扩展 N:

sub expand_pattern {
    my @pending = @_;
    my @sequences;

    while (@pending) {
        my $pat = shift @pending;
        if ((my $idx = index($pat, 'N')) < 0) {
            push @sequences, $pat;
        } else {
            push @pending, map {substr $pat, $idx, 1, $_; $pat}
                               ('A', 'T', 'C', 'G');
        }
    }

    wantarray ? @sequences : \@sequences;
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP