Mercurial > repos > cpt > cpt_psm_plotter
diff lib/CPT/Writer/Genomic.pm @ 1:8691c1c61a8e draft default tip
planemo upload commit 94b0cd1fff0826c6db3e7dc0c91c0c5a8be8bb0c
author | cpt |
---|---|
date | Mon, 05 Jun 2023 02:48:47 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/CPT/Writer/Genomic.pm Mon Jun 05 02:48:47 2023 +0000 @@ -0,0 +1,144 @@ +package CPT::Writer::Genomic; +use Moose; +with 'CPT::Writer'; + +# Specific format of genomic writer +has 'format' => ( is => 'rw', isa => 'Str', default => 'Genbank'); + +sub process { + my ($self) = @_; + $self->processed_data( $self->data ); + $self->processing_complete(1); + return 1; +} + +sub write { + my ($self) = @_; + if ( $self->processing_complete ) { + $self->OutputFilesClass->extension( $self->suffix() ); + my $next_output_file = $self->OutputFilesClass->get_next_file(); + open( my $filehandle, '>', $next_output_file ); + + require Bio::SeqIO; + my $obj_type = ref $self->processed_data(); + if(substr($obj_type,0,10) eq 'Bio::Seq::'){ + my $outseq = Bio::SeqIO->new( + -fh => $filehandle, + -format => $self->format(), + ); + $outseq->write_seq( $self->processed_data ); + }elsif(substr($obj_type,0,10) eq 'Bio::SeqIO'){ + my $outseq = Bio::SeqIO->new( + -fh => $filehandle, + -format => $self->format(), + ); + while (my $inseq = $self->processed_data()->next_seq()) { + $outseq->write_seq($inseq); + } + }elsif(substr($obj_type,0,8) eq 'Bio::Seq'){ + my $outseq = Bio::SeqIO->new( + -fh => $filehandle, + -format => $self->format(), + ); + $outseq->write_seq( $self->processed_data ); + }elsif(ref $self->processed_data eq 'ARRAY'){ + # Assume array of genomes + my $outseq = Bio::SeqIO->new( + -fh => $filehandle, + -format => $self->format(), + ); + foreach my $inseq(@{$self->processed_data}){ + $outseq->write_seq($inseq); + } + }else{ + print $filehandle $self->processed_data(); + } + close($filehandle); + } + else { + warn +"Write called but processing was not marked as complete. Not writing"; + } +} + +sub suffix { + my ($self) = @_; + my %suffix_map = ( + 'abi' => 'abi', + 'ace' => 'ace', + 'agave' => 'agave', + 'alf' => 'alf', + 'asciitree' => 'txt', + 'bsml' => 'bsml', + 'bsml_sax' => 'bsml', + 'chadoxml' => 'xml', + 'chaos' => 'chaos', + 'chaosxml' => 'xml', + 'ctf' => 'ctf', + 'embl' => 'emb', + 'entrezgene' => 'asn1', + 'excel' => 'xls', + 'exp' => 'exp', + 'fasta' => 'fa', + 'fastq' => 'fastq', + 'game' => 'xml', + 'gcg' => 'gcg', + 'genbank' => 'gbk', + 'interpro' => 'xml', + 'kegg' => 'kegg', + 'largefasta' => 'lfa', + 'lasergene' => 'lasergene', + 'locuslink' => 'll_tmpl', + 'phd' => 'phred', + 'pir' => 'pir', + 'pln' => 'pln', + 'qual' => 'phred', + 'raw' => 'txt', + 'scf' => 'scf', + 'seqxml' => 'xml', + 'strider' => 'strider', + 'swiss' => 'sp', + 'tab' => 'tsv', + 'tigr' => 'xml', + 'tigrxml' => 'xml', + 'tinyseq' => 'xml', + 'ztr' => 'ztr', + ); + + if($suffix_map{lc($self->format())}){ + return $suffix_map{lc($self->format())}; + }else{ + return 'unknown'; + } +} + +no Moose; +1; + +__END__ + +=pod + +=encoding UTF-8 + +=head1 NAME + +CPT::Writer::Genomic + +=head1 VERSION + +version 1.99.4 + +=head1 AUTHOR + +Eric Rasche <rasche.eric@yandex.ru> + +=head1 COPYRIGHT AND LICENSE + +This software is Copyright (c) 2014 by Eric Rasche. + +This is free software, licensed under: + + The GNU General Public License, Version 3, June 2007 + +=cut