Генерация синтетического продукта последовательность DNA с уровнем замены

Скорость и кукуруза - это один из вариантов добавления облачного наблюдения с помощью функции Lambda, но в соответствии с вашими требованиями вы можете сделать что-то вроде

Когда лямбда-один запускает и завершает выполнение, вы можете добавить код с конечной точкой другого лямбда. так как вы хотите запустить его через два часа, вы можете установить время, используя node-cron . Поэтому один лямбда-один будет запускаться после этого, он будет запускать функцию лямбда-два, используя конечную точку, где время в 2 часа управляется узел-крон .

Если вы используете Python, то вы можете использовать планировщик

import schedule
import time

def job():
    print("I'm working...Triggering another lambda end point")

schedule.every(10).minutes.do(job)
schedule.every().hour.do(job)
schedule.every().day.at("10:30").do(job)

while 1:
    schedule.run_pending()
    time.sleep(1)

6
задан Cœur 30 July 2018 в 01:39
поделиться

5 ответов

Как маленькая оптимизация, замена:

    $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;};

с

    $base = $dna[int(rand 4)];
5
ответ дан 9 December 2019 в 20:49
поделиться

Править: Принятие уровня замены находится в диапазоне 0.001 к 1 000:

А также $roll, генерируйте другое (псевдо) случайное число в диапазоне [1.. 1000], если это меньше чем или равно (1000 * $sub_rate) затем, выполняют замену, иначе ничего не сделайте (т.е. произведите).

Знайте, что можно представить тонкую предвзятость, если свойства генератора случайных чисел не известны.

3
ответ дан 9 December 2019 в 20:49
поделиться

Не точно, что Вы ищете, но я предлагаю, чтобы Вы смотрели на Био BioPerl:: SeqEvolution:: модуль DNAPoint. Это не берет уровень мутации в качестве параметра все же. Скорее это спрашивает, что нижнюю границу идентификационных данных последовательности с оригиналом Вы хотите.

use strict;
use warnings;
use Bio::Seq;
use Bio::SeqEvolution::Factory;

my $seq = Bio::Seq->new(-seq => 'AAAAAAAAAA', -alphabet => 'dna');

my $evolve = Bio::SeqEvolution::Factory->new (
   -rate     => 2,      # transition/transversion rate
   -seq      => $seq
   -identity => 50      # At least 50% identity with the original
);


my @mutated;
for (1..1000) { push @mutated, $evolve->next_seq }

Все 1 000 видоизмененных последовательностей будут сохранены в массиве @mutated, к их последовательностям можно получить доступ через seq метод.

2
ответ дан 9 December 2019 в 20:49
поделиться

В случае замены Вы хотите исключить текущую основу из возможностей:

my @other_bases = grep { $_ ne substr($init_seq, $i, 1) } @dna;
$base = @other_bases[int(rand 3)];

Также см. ответ Mitch Wheat для того, как реализовать уровень замены.

1
ответ дан 9 December 2019 в 20:49
поделиться

Я не знаю, понимаю ли я правильно, но я сделал бы что-то вроде этого (псевдокод):

digits = 'ATCG'
base = 'AAAAAAAAAA'
MAX = 1000
for i = 1 to len(base)
  # check if we have to mutate
  mutate = 1+rand(MAX) <= rate*MAX
  if mutate then
    # find current A:0 T:1 C:2 G:3
    current = digits.find(base[i])
    # get a new position 
    # but ensure that it is not current
    new = (j+1+rand(3)) mod 4        
    base[i] = digits[new]
  end if
end for
1
ответ дан 9 December 2019 в 20:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: