Mercurial > repos > cpt > cpt_psm_plotter
comparison cpt_genbank2circosk.pl @ 1:8691c1c61a8e draft default tip
planemo upload commit 94b0cd1fff0826c6db3e7dc0c91c0c5a8be8bb0c
author | cpt |
---|---|
date | Mon, 05 Jun 2023 02:48:47 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
0:54c7a3ea81e2 | 1:8691c1c61a8e |
---|---|
1 #!/usr/bin/perl | |
2 # | |
3 # Code written by Eric Rasche | |
4 # mailto:rasche.eric@yandex.ru | |
5 # tel:404.692.2048 | |
6 # http://eric.rasche.co.uk | |
7 # for | |
8 # Center for Phage Technology | |
9 # | |
10 | |
11 use strict; | |
12 use warnings; | |
13 | |
14 use CPT::GalaxyGetOpt; | |
15 use Data::Dumper; | |
16 | |
17 my $ggo = CPT::GalaxyGetOpt->new(); | |
18 my %colors = map { $_ => $_ } qw(red orange yellow green blue gray black white); | |
19 my %intensity = map { $_ => $_ } qw (vvvvl vvvl vvl vl vd vvd vvvd vvvvd); | |
20 | |
21 my $options = $ggo->getOptions( | |
22 'options' => [ | |
23 [ | |
24 'file', | |
25 'Input file', | |
26 { | |
27 required => 1, | |
28 validate => 'File/Input', | |
29 file_format => ['genbank', 'embl', 'txt'], | |
30 } | |
31 ], | |
32 [ | |
33 'chromosome' => 'Name for the | |
34 chromosome inside Circos', | |
35 { | |
36 required => 1, | |
37 validate => 'String' | |
38 } | |
39 ], | |
40 [ | |
41 'color' => 'Color to use for Circos plot', | |
42 { | |
43 required => 1, | |
44 validate => 'Option', | |
45 options => \%colors, | |
46 } | |
47 ], | |
48 [ | |
49 'intensity' => 'Circos color intensity. ', | |
50 { | |
51 validate => 'Option', | |
52 options => \%intensity, | |
53 } | |
54 ], | |
55 ], | |
56 'outputs' => [ | |
57 [ | |
58 'circosk', | |
59 'Circos Karyotype File', | |
60 { | |
61 validate => 'File/Output', | |
62 required => 1, | |
63 default => 'karyotype', | |
64 data_format => 'text/plain', | |
65 default_format => 'TXT' | |
66 } | |
67 ], | |
68 ], | |
69 'defaults' => [ | |
70 'appname' => 'Genbank2CircosK', | |
71 'appid' => 'Genbank2CircosK', | |
72 'appvers' => '1.94', | |
73 'appdesc' => | |
74 'Convert genbank files to Circos Karyotype configuration files', | |
75 ], | |
76 'tests' => [ | |
77 { | |
78 test_name => "Default", | |
79 params => { | |
80 'file' => 'test-data/inputs/multi.gbk', | |
81 'chromosome' => 'test', | |
82 'color' => 'red', | |
83 'intensity' => 'vvvl', | |
84 }, | |
85 outputs => { | |
86 'circosk' => ['karyotype.txt', 'test-data/outputs/circosk.conf'], | |
87 } | |
88 }, | |
89 ], | |
90 ); | |
91 | |
92 use CPT::Bio; | |
93 my $bio = CPT::Bio->new(); | |
94 | |
95 my @results; | |
96 my $c = 0; | |
97 my $seqio = $bio->requestCopyIO( file => $options->{file} ); | |
98 | |
99 while(my $seqobj = $seqio->next_seq()){ | |
100 foreach my $feat ( $seqobj->get_SeqFeatures () ) { | |
101 | |
102 #band test 12 CDS__test_1gbk 5715 6335 red] | |
103 next if ( $feat->primary_tag ne 'CDS' ); | |
104 my $id = $bio->_getIdentifier($feat); | |
105 $id =~ s/\s+/_/g; | |
106 push( | |
107 @results, | |
108 join( | |
109 ' ', | |
110 ( | |
111 'band', | |
112 $options->{'chromosome'}, | |
113 $c++, | |
114 $id, | |
115 $feat->start, | |
116 $feat->end, | |
117 (defined $options->{'intensity'} ? $options->{'intensity'} : '') . $options->{'color'} | |
118 ) | |
119 ) | |
120 ); | |
121 } | |
122 } | |
123 | |
124 my $z = join( "\n", @results ); | |
125 | |
126 use CPT::OutputFiles; | |
127 my $output = CPT::OutputFiles->new( | |
128 name => 'circosk', | |
129 GGO => $ggo, | |
130 ); | |
131 $output->CRR(data => $z); |