| 3 | 1 #!/usr/bin/perl | 
|  | 2 | 
|  | 3 use strict; | 
|  | 4 | 
|  | 5 my $file = $ARGV[0]; | 
|  | 6 my $out = $ARGV[1]; | 
|  | 7 | 
|  | 8 my %h; | 
|  | 9 open(F,$file); | 
|  | 10 while(<F>){ | 
|  | 11 	my @infos = split(/\t/,$_); | 
|  | 12 	if ($infos[2] eq 'CDS' && /Name=([^;]*);/){ | 
|  | 13 		my $id = $1; | 
|  | 14 		$h{$id}++; | 
|  | 15 	} | 
|  | 16 } | 
|  | 17 close(F); | 
|  | 18 | 
|  | 19 my %dup; | 
|  | 20 foreach my $id(keys(%h)){ | 
|  | 21 	my $n = $h{$id}; | 
|  | 22 	if ($n > 1){ | 
|  | 23 		$dup{$id} = 1; | 
|  | 24 	} | 
|  | 25 } | 
|  | 26 open(O,">$out"); | 
|  | 27 open(F,$file); | 
|  | 28 while(<F>){ | 
|  | 29         my @infos = split(/\t/,$_); | 
|  | 30         if ($infos[2] eq 'CDS' && /Name=([^;]*);/){ | 
|  | 31 		my $id = $1; | 
|  | 32 		if ($dup{$id}){next;} | 
|  | 33 	} | 
|  | 34 	if ($infos[2] eq 'mRNA' && /Parent=([^;]*);/){ | 
|  | 35                 my $id = $1; | 
|  | 36                 if ($dup{$id}){next;} | 
|  | 37         } | 
|  | 38 	if ($infos[2] eq 'gene' && /ID=([^;]*);/){ | 
|  | 39                 my $id = $1; | 
|  | 40                 if ($dup{$id}){next;} | 
|  | 41         } | 
|  | 42 	if ($infos[2] eq 'exon' && /Parent=([^;]*);/){ | 
|  | 43                 my ($id,$extension) = split(/\./,$1); | 
|  | 44                 if ($dup{$id}){next;} | 
|  | 45         } | 
|  | 46 	print O $_; | 
|  | 47 | 
|  | 48 } | 
|  | 49 close(F); | 
|  | 50 close(O); |