【问题标题】:Find nucleotides in DNA sequence with perl用 perl 查找 DNA 序列中的核苷酸
【发布时间】:2011-10-28 18:08:20
【问题描述】:

我有序列 DNA,我想在人们选择的位置找到序列的核苷酸。下面是例子:

输入序列 DNA: ACTAAAAATACAAAAATTAGCCAGGCGTGGTGGCAC(序列长度为33) 输入位置:(12)

我希望结果是第 12 位核苷酸是 AAA。

我没有问题找到该位置的氨基酸。以下是我拥有的当前代码。

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

请告诉我如何找到 DNA 序列的位置。

【问题讨论】:

    标签: perl bioinformatics


    【解决方案1】:
    my $nucleotide = substr $DNA, $po, 3;
    

    这将从位置 $po$po+2 的 3 个核苷酸分配给 $nucleotide

    【讨论】:

    • 非常感谢。当我输入高数字位置(14488)时,我必须找到氨基酸但序列很长(3272733 bp),这个程序没有运行。请告诉我这个程序中的问题。
    • 请试试下面Xaerxess的提议。它应该提取您想要的数据。否则给我们你得到的输出和/或错误信息。
    【解决方案2】:

    会是这样的:

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

    一些cmets:

    1. 始终使用use strictuse warnings - 它会帮助您编写更好且无错误的代码。
    2. 我个人不喜欢在双引号字符串中使用插值,因此使用了这些连接。
    3. 结果的位置从 0 开始 - 如果需要,您可以更改最后一个 if 的条件和 else。

    编辑:我误读了关于核苷酸的部分问题,正如@hexcoder 所写,你想要substr($DNA_string, $pos, 3)

    【讨论】:

      猜你喜欢
      • 2018-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-01
      • 2014-03-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多