annotate cpt_psm_recombine/lib/CPT/Writer/Genomic.pm @ 0:b18e8268bf4e draft

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