Mercurial > repos > cpt > cpt_psm_prep
diff cpt_genbank2circosk.pl @ 1:d724f34e671d draft default tip
planemo upload commit 94b0cd1fff0826c6db3e7dc0c91c0c5a8be8bb0c
author | cpt |
---|---|
date | Mon, 05 Jun 2023 02:50:07 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cpt_genbank2circosk.pl Mon Jun 05 02:50:07 2023 +0000 @@ -0,0 +1,131 @@ +#!/usr/bin/perl +# +# Code written by Eric Rasche +# mailto:rasche.eric@yandex.ru +# tel:404.692.2048 +# http://eric.rasche.co.uk +# for +# Center for Phage Technology +# + +use strict; +use warnings; + +use CPT::GalaxyGetOpt; +use Data::Dumper; + +my $ggo = CPT::GalaxyGetOpt->new(); +my %colors = map { $_ => $_ } qw(red orange yellow green blue gray black white); +my %intensity = map { $_ => $_ } qw (vvvvl vvvl vvl vl vd vvd vvvd vvvvd); + +my $options = $ggo->getOptions( + 'options' => [ + [ + 'file', + 'Input file', + { + required => 1, + validate => 'File/Input', + file_format => ['genbank', 'embl', 'txt'], + } + ], + [ + 'chromosome' => 'Name for the + chromosome inside Circos', + { + required => 1, + validate => 'String' + } + ], + [ + 'color' => 'Color to use for Circos plot', + { + required => 1, + validate => 'Option', + options => \%colors, + } + ], + [ + 'intensity' => 'Circos color intensity. ', + { + validate => 'Option', + options => \%intensity, + } + ], + ], + 'outputs' => [ + [ + 'circosk', + 'Circos Karyotype File', + { + validate => 'File/Output', + required => 1, + default => 'karyotype', + data_format => 'text/plain', + default_format => 'TXT' + } + ], + ], + 'defaults' => [ + 'appname' => 'Genbank2CircosK', + 'appid' => 'Genbank2CircosK', + 'appvers' => '1.94', + 'appdesc' => +'Convert genbank files to Circos Karyotype configuration files', + ], + 'tests' => [ + { + test_name => "Default", + params => { + 'file' => 'test-data/inputs/multi.gbk', + 'chromosome' => 'test', + 'color' => 'red', + 'intensity' => 'vvvl', + }, + outputs => { + 'circosk' => ['karyotype.txt', 'test-data/outputs/circosk.conf'], + } + }, + ], +); + +use CPT::Bio; +my $bio = CPT::Bio->new(); + +my @results; +my $c = 0; +my $seqio = $bio->requestCopyIO( file => $options->{file} ); + +while(my $seqobj = $seqio->next_seq()){ + foreach my $feat ( $seqobj->get_SeqFeatures () ) { + + #band test 12 CDS__test_1gbk 5715 6335 red] + next if ( $feat->primary_tag ne 'CDS' ); + my $id = $bio->_getIdentifier($feat); + $id =~ s/\s+/_/g; + push( + @results, + join( + ' ', + ( + 'band', + $options->{'chromosome'}, + $c++, + $id, + $feat->start, + $feat->end, + (defined $options->{'intensity'} ? $options->{'intensity'} : '') . $options->{'color'} + ) + ) + ); + } +} + +my $z = join( "\n", @results ); + +use CPT::OutputFiles; +my $output = CPT::OutputFiles->new( + name => 'circosk', + GGO => $ggo, +); +$output->CRR(data => $z);