내가 파일 1에서 값이 출력 파일을 생성하고 파일을 1에서 2인쇄
라인을 제기 할 다른 파일에서 값을 해시 :
chr1 커프스 엑손 708,356 708,487 1,000 -.
gene_id "CUFF.3"; transcript_id "CUFF.3.1"; exon_number "5"; FPKM "3.1300591420"; frac "1.000000"; conf_lo "2.502470"; conf_hi "3.757648"; cov "7.589085"; chr1 커프스 단추 엑손 708356 708487. -. gene_id "XLOC_001284"; transcript_id "TCONS_00007667"; exon_number "7"; gene_name "LOC100288069"; o"CUFF.15.2"; nearest_ref "NR_033908"; class_code "j"; tss_id "TSS2981";
파일 (2)로부터 라인 :
CUFF.48557
CHR4 : 160253850-160259462 : 160259621-160260265 : 160260507-160262715가
이 파일에서 두 번째 열이 고유 id (uniq_id). transcript_id (CUFF_id) uniq_id gene_id 내 스크립트가 첫 번째 파일에서 XLOC_ID 및 FPKM 값을 사용하고, 두 번째에서 두 개의 열이와 함께 인쇄
(XLOC_ID) FPKM :
나는 다음과 같은 형식의 출력 파일을 얻으려면 파일.
#!/usr/bin/perl -w
use strict;
my $v_merge_gtf = shift @ARGV or die $!;
my $unique_gtf = shift @ARGV or die $!;
my %fpkm_hash;
my %xloc_hash;
open (FILE, "$v_merge_gtf") or die $!;
while (<FILE>) {
my $line = $_;
chomp $line;
if ($line =~ /[a-z]/) {
my @array = split("\t", $line);
if ($array[2] eq 'exon') {
my $id = $array[8];
if ($id =~ /transcript_id \"(CUFF\S+)/) {
$id = $1;
$id =~ s/\"//g;
$id =~ s/;//;
}
my $fpkm = $array[8];
if ($fpkm =~ /FPKM \"(\S+)/) {
$fpkm = $1;
$fpkm =~ s/\"//g;
$fpkm =~ s/;//;
}
my $xloc = $array[17];
if ($xloc =~ /gene_id \"(XLOC\S+)/) {
$xloc = $1;
$xloc =~ s/\"//g;
$xloc =~ s/;//;
}
$fpkm_hash{$id} = $fpkm;
$xloc_hash{$id} = $xloc;
}
}
}
close FILE;
open (FILE, "$unique_gtf") or die $!;
while (<FILE>) {
my $line = $_;
chomp $line;
if ($line =~ /[a-z]/) {
my @array = split("\t", $line);
my $id = $array[0];
my $uniq = $array[1];
print $id . "\t" . $uniq . "\t" . $xloc_hash{$id} . "\t" . $fpkm_hash{$id} . "\n";
}
}
close FILE;
나는 파일의 외부 해시를 초기화하지만 각 커프 값에 대해 다음과 같은 오류가 발생합니다 :
CUFF.24093
chr17 : 3533641-3539345 : 3527526-3533498 : 3526786-3527341을 (.) ex_1.pl 라인 55 라인 9343.사용에 연결하거나 문자열의 초기화되지 않은 값의 3524707-3526632
사용 ex_1.pl 라인 (55)에 연결 (.) 또는 문자열의 초기화되지 않은 값, 라인의 9343.
어떻게이 문제를 해결할 수 있습니까?
감사합니다.
어디까지입니까? – simbabque
혼란을 드려 죄송합니다. 오류는 인쇄 문의 행을 참조합니다. print $ id. "\ t". $ uniq. "\ t". $ xloc_hash {$ id}. "\ t". $ fpkm_hash {$ id}. "\엔"; –
음, 값 중 하나가 초기화되지 않았습니다. 어떤거야? 어쩌면 입력 데이터가 일치하지 않을 수도 있습니다. – simbabque