Найти нуклеотиды в последовательности ДНК с помощью perl - PullRequest
3 голосов
/ 17 августа 2011

У меня есть последовательность ДНК, и я хочу найти нуклеотид последовательности в положении, которое выбрали люди. Ниже приведен пример:

Введите последовательность ДНК: ACTAAAAATACAAAAATTAGCCAGGCGTGGTGGCAC (длина последовательности составляет 33) Введите позицию: (12)

Надеюсь, результатом будет позиция № 12, нуклеотиды ААА.

У меня нет проблем с поиском аминокислоты положения. Ниже приведен текущий код, который у меня есть.

print "ENTER THE FILENAME OF THE DNA SEQUENCE:= ";
$DNAfilename = <STDIN>;
chomp $DNAfilename;
unless ( open(DNAFILE, $DNAfilename) ) {
  print "Cannot open file \"$DNAfilename\"\n\n";
}
@DNA = <DNAFILE>;
close DNAFILE;
$DNA = join( '', @DNA);
print " \nThe original DNA file is:\n$DNA \n";
$DNA =~ s/\s//g;

print" enter the number ";
$po=<STDIN>;

@pos=$DNA;
if ($po>length($DNA)) 
{
  print" no data";
}

else 
{
  print " @pos\n\n";
}

Пожалуйста, посоветуйте, как мне найти положение в последовательности ДНК.

Ответы [ 2 ]

2 голосов
/ 17 августа 2011
my $nucleotide = substr $DNA, $po, 3;

Это возьмет 3 нуклеотида из позиций $po до $po+2 и присвоит их $nucleotide.

1 голос
/ 17 августа 2011

Это будет примерно так:

use strict;
use warnings;

print 'ENTER THE FILENAME OF THE DNA SEQUENCE:= ';
my $DNA_filename = <STDIN>;
chomp $DNA_filename;
unless (open(DNAFILE, $DNA_filename))
{
    die 'Cannot open file "' . $DNA_filename . '"' . "\n\n";
}

my @DNA = <DNAFILE>;
close DNAFILE;

my $DNA_string = join('', @DNA);
print "\n" . 'The original DNA file is:' . "\n" . $DNA_string . "\n";
$DNA_string =~ s/\s//g;

print ' enter the number ';
my $pos = <STDIN>;

if ($pos > length($DNA_string)) 
{
    print ' no data';
}
else
{
    print ' ' . substr($DNA_string, $pos, 3) . "\n\n";
}

Некоторые комментарии:

  1. Всегда use strict и use warnings - это поможет вам написать лучший и без ошибок код.
  2. Мне лично не нравится использовать интерполяцию в строках с двойными кавычками, отсюда и эти объединения.
  3. Позиция результата начинается с 0 - при желании вы можете изменить последнее условие if и др.

Редактировать : Я неправильно прочитал часть вопроса о нуклеотидах, как писал @hexcoder, вы хотите substr($DNA_string, $pos, 3).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...