2016-11-21 59 views
-3

哈希我在他們一系列的隨機A的,G的,C和T的一個文件,該文件是這樣的:如何閱讀串入在Perl

>Mary 
ACGTACGTACGTAC 
>Jane 
CCCGGCCCCTA 
>Arthur 
AAAAAAAAAAT 

我把這些字母和串連他們以ACGTACGTACGTACCCCGGCCCCTAAAAAAAAAAT結束。我現在在這個連接序列中有一系列對我感興趣的位置,我想找到與這些位置(座標)相匹配的關聯名稱。我使用Perl函數長度來計算每個序列的長度,然後將計算長度與哈希中的名稱相關聯。 到目前爲止,我有:

#! /usr/bin/perl -w 
use strict; 

my $seq_input = $ARGV[0]; 
my $coord_input = $ARGV[1]; 
my %idSeq; #Stores sequence and associated ID's. 

open (my $INPUT, "<$seq_input") or die "unable to open $seq_input"; 
open (my $COORD, "<$coord_input") or die "unable to open $fcoord_input"; 

while (<$INPUT>) { 
    if ($_ = /^[AGCT/) { 
    $idSeq{$_ 

my $id = (/^[>]/) 

#put information into a hash 
#loop through hash looking for coordinates that are lower than the culmulative length 

foreach $id 
$totallength = $totallength + length($seq) 
$lengthId{$totalLength} = $id 
foreach $position 
foreach $length 
    if ($length >= $position) { print; last } 

close $fasta_input; 
close $coord_input; 
print "Done!\n"; 

到目前爲止,我無法讀取該文件到一個哈希。我也需要一個數組來打印哈希?

+7

我想將其粘貼到這個問題時,你失去了你的代碼的很大一部分。請修改它。這甚至不接近編譯。 – simbabque

+0

@simbabque鑑於提問者的歷史,我不認爲我們會得到更多的信息。他只接受了十幾個答案中的一個,並且對評論沒有迴應。 – PerlDuck

+0

@PerlDuck我知道。但我們無法對此做任何事情。你可能當時並沒有回來,但我記得有一段時間它在某個地方(可能是個人資料)顯示了接受答案比率的問題,並且我們提醒人們在提出新問題之前請先接受答案。 – simbabque

回答

2

不完全清楚你想要什麼;也許這:

my $seq; 
my %idSeq; 
while (my $line = <$INPUT>) { 
    if (my ($name) = $line =~ /^>(.*)/) { 
     $idSeq{$name} = length $seq || 0; 
    } 
    else { 
     chomp $line; 
     $seq .= $line; 
    } 
} 

主要生產:

$seq = 'ACGTACGTACGTACCCCGGCCCCTAAAAAAAAAAAT'; 
%idSeq = (
     'Mary' => 0, 
     'Jane' => 14, 
     'Arthur' => 25, 
);