【发布时间】:2019-03-24 02:34:58
【问题描述】:
我有一个名为 %id2seq 的散列,其中包含由键 $id 引用的 DNA 序列字符串。我希望能够通过使用字符串中的位置作为参考来操纵 DNA 序列。例如,如果我的 DNA 序列是ACGTG,我的$id 就是Sequence 1,我的$id2seq{'Sequence 1'} 就是ACGTG,我的“理论”$id2seq{'Sequence 1'}[3] 就是G。
我正在尝试创建一个数组哈希来执行此操作,但我得到了一个奇怪的输出(见下面的输出)。我很确定这只是我的格式任何输入都是有帮助的,我提前感谢。
这是输入文件的sn-p:
>Sequence 1
TCAGAACCAGTTATAAATTTATCATTTCCTTCTCCACTCCT
>Sequence 2
CCCACGCAGCCGCCCTCCTCCCCGGTCACTGACTGGTCCTG
>Sequence 3
TCGACCCTCTGGAACCTATCAGGGACCACAGTCAGCCAGGCAAG
这是我目前尝试的一个sn-p。 (我有一个哈希表可以访问一个带有注释掉 DNA 序列的文件):
use strict;
use warnings;
print "Please enter the filename of the fasta sequence data: ";
my $filename1 = <STDIN>;
#Remove newline from file
chomp $filename1;
#Open the file and store each dna seq in hash
my %id2seq = ();
my $id = '';
open (FILE, '<', $filename1) or die "Cannot open $filename1.",$!;
my $dna;
while (<FILE>)
{
if($_ =~ /^>(.+)/)
{
$id = $1;
}
else
{
## $id2seq{$id} = $_; used to create hash table
@seqs = split '', $_;
$id2seq{$id} = [ @seqs ];
}
}
close FILE;
foreach $id (keys %id2seq)
{
print "$id2seq{$id}[@seqs]\n\n";
}
输出
Use of unitialized value in concatenation (.) or string at line 37.
T
G
A
T
T
【问题讨论】:
标签: arrays perl hash dna-sequence