Mercurial > repos > cpt > cpt_psm_plotter
comparison 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 |
comparison
equal
deleted
inserted
replaced
0:54c7a3ea81e2 | 1:8691c1c61a8e |
---|---|
1 package CPT::Writer::Genomic; | |
2 use Moose; | |
3 with 'CPT::Writer'; | |
4 | |
5 # Specific format of genomic writer | |
6 has 'format' => ( is => 'rw', isa => 'Str', default => 'Genbank'); | |
7 | |
8 sub process { | |
9 my ($self) = @_; | |
10 $self->processed_data( $self->data ); | |
11 $self->processing_complete(1); | |
12 return 1; | |
13 } | |
14 | |
15 sub write { | |
16 my ($self) = @_; | |
17 if ( $self->processing_complete ) { | |
18 $self->OutputFilesClass->extension( $self->suffix() ); | |
19 my $next_output_file = $self->OutputFilesClass->get_next_file(); | |
20 open( my $filehandle, '>', $next_output_file ); | |
21 | |
22 require Bio::SeqIO; | |
23 my $obj_type = ref $self->processed_data(); | |
24 if(substr($obj_type,0,10) eq 'Bio::Seq::'){ | |
25 my $outseq = Bio::SeqIO->new( | |
26 -fh => $filehandle, | |
27 -format => $self->format(), | |
28 ); | |
29 $outseq->write_seq( $self->processed_data ); | |
30 }elsif(substr($obj_type,0,10) eq 'Bio::SeqIO'){ | |
31 my $outseq = Bio::SeqIO->new( | |
32 -fh => $filehandle, | |
33 -format => $self->format(), | |
34 ); | |
35 while (my $inseq = $self->processed_data()->next_seq()) { | |
36 $outseq->write_seq($inseq); | |
37 } | |
38 }elsif(substr($obj_type,0,8) eq 'Bio::Seq'){ | |
39 my $outseq = Bio::SeqIO->new( | |
40 -fh => $filehandle, | |
41 -format => $self->format(), | |
42 ); | |
43 $outseq->write_seq( $self->processed_data ); | |
44 }elsif(ref $self->processed_data eq 'ARRAY'){ | |
45 # Assume array of genomes | |
46 my $outseq = Bio::SeqIO->new( | |
47 -fh => $filehandle, | |
48 -format => $self->format(), | |
49 ); | |
50 foreach my $inseq(@{$self->processed_data}){ | |
51 $outseq->write_seq($inseq); | |
52 } | |
53 }else{ | |
54 print $filehandle $self->processed_data(); | |
55 } | |
56 close($filehandle); | |
57 } | |
58 else { | |
59 warn | |
60 "Write called but processing was not marked as complete. Not writing"; | |
61 } | |
62 } | |
63 | |
64 sub suffix { | |
65 my ($self) = @_; | |
66 my %suffix_map = ( | |
67 'abi' => 'abi', | |
68 'ace' => 'ace', | |
69 'agave' => 'agave', | |
70 'alf' => 'alf', | |
71 'asciitree' => 'txt', | |
72 'bsml' => 'bsml', | |
73 'bsml_sax' => 'bsml', | |
74 'chadoxml' => 'xml', | |
75 'chaos' => 'chaos', | |
76 'chaosxml' => 'xml', | |
77 'ctf' => 'ctf', | |
78 'embl' => 'emb', | |
79 'entrezgene' => 'asn1', | |
80 'excel' => 'xls', | |
81 'exp' => 'exp', | |
82 'fasta' => 'fa', | |
83 'fastq' => 'fastq', | |
84 'game' => 'xml', | |
85 'gcg' => 'gcg', | |
86 'genbank' => 'gbk', | |
87 'interpro' => 'xml', | |
88 'kegg' => 'kegg', | |
89 'largefasta' => 'lfa', | |
90 'lasergene' => 'lasergene', | |
91 'locuslink' => 'll_tmpl', | |
92 'phd' => 'phred', | |
93 'pir' => 'pir', | |
94 'pln' => 'pln', | |
95 'qual' => 'phred', | |
96 'raw' => 'txt', | |
97 'scf' => 'scf', | |
98 'seqxml' => 'xml', | |
99 'strider' => 'strider', | |
100 'swiss' => 'sp', | |
101 'tab' => 'tsv', | |
102 'tigr' => 'xml', | |
103 'tigrxml' => 'xml', | |
104 'tinyseq' => 'xml', | |
105 'ztr' => 'ztr', | |
106 ); | |
107 | |
108 if($suffix_map{lc($self->format())}){ | |
109 return $suffix_map{lc($self->format())}; | |
110 }else{ | |
111 return 'unknown'; | |
112 } | |
113 } | |
114 | |
115 no Moose; | |
116 1; | |
117 | |
118 __END__ | |
119 | |
120 =pod | |
121 | |
122 =encoding UTF-8 | |
123 | |
124 =head1 NAME | |
125 | |
126 CPT::Writer::Genomic | |
127 | |
128 =head1 VERSION | |
129 | |
130 version 1.99.4 | |
131 | |
132 =head1 AUTHOR | |
133 | |
134 Eric Rasche <rasche.eric@yandex.ru> | |
135 | |
136 =head1 COPYRIGHT AND LICENSE | |
137 | |
138 This software is Copyright (c) 2014 by Eric Rasche. | |
139 | |
140 This is free software, licensed under: | |
141 | |
142 The GNU General Public License, Version 3, June 2007 | |
143 | |
144 =cut |