[Bio] / FigKernelScripts / gff2ncbitab.pl Repository:
ViewVC logotype

Annotation of /FigKernelScripts/gff2ncbitab.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.3 - (view) (download) (as text)

1 : olson 1.1 use FIG_Config;
2 :     use FIG;
3 :     use Data::Dumper;
4 :    
5 :     use strict;
6 :    
7 :     my $usage = "$0 gff-file > tab-sep-data";
8 :     @ARGV == 1 or die $usage;
9 :    
10 : olson 1.2 my $ffs = new FFs("$FIG_Config::data/FigfamsData");
11 :     $ffs or die "bad ffs\n";
12 :    
13 :     my @desired_dbxref = qw(RefSeq_Prot
14 :     IMG
15 :     TIGR
16 :     SP
17 :     UniProtKB
18 :     KEGG
19 :     InterPro
20 :     PFAM
21 :     SMART
22 : olson 1.3 Swiss-Prot
23 : olson 1.2 );
24 :     my %desired_dbxref = map { $_ => 1} @desired_dbxref;
25 :    
26 : olson 1.1 my $gff = shift;
27 :    
28 :     open(GFF, "<", $gff) or die "cannot open gff file $gff: $!\n";
29 :    
30 :     my %dat;
31 :     my $contig;
32 :     while (<GFF>)
33 :     {
34 :     last if /^##FASTA/;
35 :     next if /^\s*\#/;
36 :    
37 :     chomp;
38 :    
39 :     my($contig_id, undef, $what, $start, $end, undef, $strand, undef, $dat) = split(/\t/);
40 :    
41 :     my @parts = split(/;/, $dat);
42 :     my %attr;
43 :     for my $p (@parts)
44 :     {
45 :     if ($p =~ /^([^=]+)=(.*)/)
46 :     {
47 :     $attr{$1} = [split(/,/, $2)];
48 :     }
49 :     }
50 :    
51 :     my @dbxref = map { [ split(/:/) ] } @{$attr{Dbxref}};
52 :    
53 : olson 1.3 print STDERR "$_\n" for map { $_->[0] } @dbxref;
54 :    
55 : olson 1.1 my $id = $attr{ID}->[0];
56 :    
57 :     if ($what eq 'contig')
58 :     {
59 :     $contig = $attr{Name}->[0];
60 :     $contig =~ s/^Contig\s+//;
61 :     }
62 :     elsif ($what eq 'cds')
63 :     {
64 :     #
65 :     # generate lines with
66 :     # id contig coords refseq-prot evcode gene-sym descr dbxref kegg subsys weblink struct-desc proteinseq
67 :     #
68 :     my $fig_id = (map { $_->[1] } grep { $_->[0] eq 'FIG_ID' } @dbxref)[0];
69 :     my $coords = $strand eq '+' ? "${start}_$end" : "${end}_$start";
70 :     my $refseq = (map { $_->[1] } grep { $_->[0] eq 'RefSeq_Prot' } @dbxref)[0];
71 : olson 1.2 my $figfam = $ffs->family_containing_peg($fig_id);
72 : olson 1.1
73 :     my $evcode = join(",", @{$attr{evidence_code}}) if $attr{evidence_code};
74 :    
75 :     my $gene_sym = $attr{gene_symbol}->[0] if $attr{gene_symbol};
76 :     my $descr = $attr{description}->[0] if $attr{description};
77 : olson 1.2 my $dbxref = join(",", map { join(":", @$_) } grep { $desired_dbxref{$_->[0]} } @dbxref);
78 : olson 1.1 my $kegg = join(",", map { join(":", @$_) } grep { $_->[0] =~ /^KEGG/} @dbxref);
79 :     my $weblink;
80 :     if ($attr{web_id})
81 :     {
82 :     $weblink = "http://www.nmpdr.org/linkin.cgi?id=$attr{web_id}->[0]";
83 :     }
84 : olson 1.2 $dat{$id} = [$fig_id, $contig, $coords, $refseq, $evcode, $gene_sym, $descr, $dbxref, $kegg, '', $weblink, $figfam];
85 : olson 1.1 }
86 :     }
87 :    
88 :     my $cur_id;
89 :     my $cur_seq;
90 :     while (<GFF>)
91 :     {
92 :     chomp;
93 :     if (/^>(\S+)/)
94 :     {
95 :     if ($cur_id and $dat{$cur_id})
96 :     {
97 :     print join("\t", @{$dat{$cur_id}}, $cur_seq), "\n";
98 :     }
99 :     $cur_seq = '';
100 :     $cur_id = $1;
101 :     }
102 :     else
103 :     {
104 :     s/\s+//g;
105 :     $cur_seq .= $_;
106 :     }
107 :     }
108 :     if ($cur_id and $dat{$cur_id})
109 :     {
110 :     print join("\t", @{$dat{$cur_id}}, $cur_seq), "\n";
111 :     }
112 :    
113 :    
114 :    
115 :    

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3