本文介绍了生成合成的DNA序列与托换率的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

由于这些输入:

 我的$ init_seq =AAAAAAAAAA#length 10基点
我的$ sub_rate = 0.003;
我的$ nof_tags = 1000;
我@dna = QW(A C G T);
 

我要生成:

  1. 千长度为10个标签

  2. 替代率在标签每个位置为0.003

像高产输出:

  AAAAAAAAAA
AATAACAAAA
.....
AAGGAAAAGA#第1000个标签
 

有没有一种简洁的方式来做到这一点在Perl?

我坚持这个脚本为核心的逻辑:

 #!的/ usr / bin中/ perl的

我的$ init_seq =AAAAAAAAAA#length 10基点
我的$ sub_rate = 0.003;
我的$ nof_tags = 1000;
我@dna = QW(A C G T);

    $ i = 0;
    而($ I<长度($ init_seq)){
        $卷= INT(RAND 4)+ 1; #$卷现在是1和4之间的整数

        如果($辊== 1){$基地= A;}
        ELSIF($卷== 2){$基地= T;}
        ELSIF($辊== 3){$基地= C;}
        ELSIF($辊== 4){$基地= G;};

        打印$基地;
    }
    继续 {
        $ I ++;
    }
 

解决方案

作为一个小的优化,替代:

  $卷= INT(RAND 4)+ 1; #$卷现在是1和4之间的整数

    如果($辊== 1){$基地= A;}
    ELSIF($卷== 2){$基地= T;}
    ELSIF($辊== 3){$基地= C;}
    ELSIF($辊== 4){$基地= G;};
 

  $基地= $ DNA [INT(RAND 4)];
 

Given these inputs:

my $init_seq = "AAAAAAAAAA" #length 10 bp
my $sub_rate = 0.003;
my $nof_tags = 1000;
my @dna = qw( A C G T );

I want to generate:

  1. One thousand length-10 tags

  2. Substitution rate for each position in a tag is 0.003

Yielding output like:

AAAAAAAAAA
AATAACAAAA
.....
AAGGAAAAGA # 1000th tags

Is there a compact way to do it in Perl?

I am stuck with the logic of this script as core:

#!/usr/bin/perl

my $init_seq = "AAAAAAAAAA" #length 10 bp
my $sub_rate = 0.003;
my $nof_tags = 1000;
my @dna = qw( A C G T );

    $i = 0;
    while ($i < length($init_seq)) {
        $roll = int(rand 4) + 1;       # $roll is now an integer between 1 and 4

        if ($roll == 1) {$base = A;}
        elsif ($roll == 2) {$base = T;}
        elsif ($roll == 3) {$base = C;}
        elsif ($roll == 4) {$base = G;};

        print $base;
    }
    continue {
        $i++;
    }
解决方案

As a small optimisation, replace:

    $roll = int(rand 4) + 1;       # $roll is now an integer between 1 and 4

    if ($roll == 1) {$base = A;}
    elsif ($roll == 2) {$base = T;}
    elsif ($roll == 3) {$base = C;}
    elsif ($roll == 4) {$base = G;};

with

    $base = $dna[int(rand 4)];

这篇关于生成合成的DNA序列与托换率的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-26 09:47