세계의 Perl 마스터에게!Perl 데이터 구문 분석 및 삽입 라인
나는 위치, 끝 위치와 방향을 시작, 첫 번째 열, ID, 엑손 정보부터 분석하고 만들고 싶어이 같은 파일 ......
있습니다. ID가 숫자를 만났을 때 ID가 1 씩 증가합니다. 이 같은
1 9239 712 8571 +
1 start_codon 712 714 +
1 stop_codon 8569 8571 +
2 3882 24137 24264 +
2 start_codon 24137 24139 +
3 3882 24322 24391 +
4 3882 24490 26064 +
4 stop_codon 26062 26064 +
5 4972 26704 26740 +
5 start_codon 26704 26706 +
6 4972 26814 27170 +
7 4972 27257 27978 +
7 stop_codon 27976 27978 +
8 10048 40161 41114 -
8 start_codon 41112 41114 -
8 stop_codon 40161 40163 -
9 272 43167 43629 -
9 stop_codon 43167 43169 -
10 272 43755 44059 -
10 start_codon 44057 44059 -
....
1 9239 *712* *8571* +
1 start_codon 712 714 +
1 stop_codon 8569 8571 +
*X 9239 712 8571 +*
2 3882 *24137* 24264 +
2 start_codon 24137 24139 +
3 3882 24322 24391 +
4 3882 24490 *26064* +
4 stop_codon 26062 26064 +
*X 3882 24173 26064 +*
5 4972 *26704* 26740 +
5 start_codon 26704 26706 +
6 4972 26814 27170 +
7 4972 27257 *27978* +
7 stop_codon 27976 27978 +
*X 4972 26704 27978 +*
8 10048 *40161* *41114* -
8 start_codon 41112 41114 -
8 stop_codon 40161 40163 -
*X 10048 40161 41114 -*
9 272 *43167* 43629 -
9 stop_codon 43167 43169 -
10 272 43755 *44059* -
10 start_codon 44057 44059 -
*X 272 43167 44059 -*
각 라인은 X로 시작 추가되어야하지만 난 할 수 없습니다 내 기술 ...와 :(
것은 모든 엑손입니다 "start_codon"과 "end_codon"을 무시한 두 번째 열의 숫자는 별표 사이의 최소 엑손 위치와 최대 엑손 위치를 가져와야합니다 *.
이것은 t를 구문 분석하는 기본 코드입니다 그는 데이터 ...하지만 처음부터 다시 코드 (줄 'X'를 삽입하는 방법을 전혀 모르겠다)
(미안 해요 코드를 그렇게 좋지 않아서 삭제했습니다. 혼란을 줄 수 있습니다 ...)
세계의 주인공, 저를 도와주세요. ???
감사합니다.
AS TLP aked 나는 코드를 다시 작성했다. 여기 하나의 방법, 바로 당신을 이해한다면 어떻게 내가 가장 큰 값과 가장 낮은 값을 비교할 수 있습니다
use strict;
if (@ARGV != 1) {
print "Invalid arguments\n";
print "Usage: perl min_max.pl [exon_output_file]\n";
exit(0);
}
my $FILENAME = $ARGV[0];
my $exonid = 0;
my $exon = "";
my $startpos = 0;
my $endpos = 0;
my $strand = "";
my $min_pos = 0;
my $max_pos = 0;
open (DATA, $FILENAME);
while (my $line = <DATA>) {
chomp $line;
if ($line ne "") {
if ($line =~ /^(.+)\t(.+)\t(.+)\t(.+)\t(.+)/) {
$exonid = $1;
$exon = $2;
$startpos = $3;
$endpos = $4;
$strand = $5;
}
if ($exon =~ /\d+/) {
print $exonid,"\t",$exon,"\t",$startpos,"\t",$endpos,"\t",$strand,"\n";
} else {
print $exonid,"\t",$exon,"\t",$startpos,"\t",$endpos,"\t",$strand,"\n";
}
}
}
close (DATA);
exit;
불구하고 그것의 당황 코드 ....
합니다. 그게 어떻게 가능할 수 있니? – TLP
정확하게, 나는 노력하고 있었다. 그러나 나는 시작할 수없는 가장 기본적인 코드를 넣었다. 그래서 나는 작동하지 않는 모든 부분을 삭제했다. 나는 아직도 일하고있다. 그 이유는 위의 코드가 너무 간단합니다. 고맙습니다. : – Karyo
왜'* X 10048 40161 41114 - *'not'* X 10048 41112 41114 - *'8? –