annotate variant_effect_predictor/Bio/EnsEMBL/Utils/IO/GFFSerializer.pm @ 3:d30fa12e4cc5 default tip

Merge heads 2:a5976b2dce6f and 1:09613ce8151e which were created as a result of a recently fixed bug.
author devteam <devteam@galaxyproject.org>
date Mon, 13 Jan 2014 10:38:30 -0500
parents 1f6dce3d34e0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 =pod
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 =head1 LICENSE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 Copyright (c) 1999-2012 The European Bioinformatics Institute and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 Genome Research Limited. All rights reserved.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8 This software is distributed under a modified Apache license.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 For license details, please see
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 http://www.ensembl.org/info/about/code_licence.html
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15 GFFSerializer - Feature to GFF converter
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 =head1 AUTHOR
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 Kieron Taylor, 2011 - ktaylor@ebi.ac.uk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 use Bio::EnsEMBL::Utils::IO::GFFSerializer;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 use Bio::EnsEMBL::Utils::BiotypeMapper;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 my $ontology_adaptor = $registry->get_adaptor( 'Multi', 'Ontology', 'OntologyTerm' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 my $biotype_mapper = new BiotypeMapper($ontology_adaptor);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28 my $serializer = new GFFSerializer($biotype_mapper,$output_fh);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 my $variation_feature_adaptor = $registry->get_adaptor( $config{'species'}, 'variation', 'variationfeature' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 $serializer->print_metadata("Variation Features:");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 my $iterator = $variation_feature_adaptor->fetch_Iterator_by_Slice($slice,undef,60000);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 $serializer->print_feature_Iterator($iterator);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 Subclass of Serializer that can turn a feature into a line for the GFF3 format. Requires
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 a BiotypeMapper in order to translate biotypes to SO terms.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 package Bio::EnsEMBL::Utils::IO::GFFSerializer;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 use warnings;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 use Bio::EnsEMBL::Utils::Exception;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 use Bio::EnsEMBL::Utils::BiotypeMapper;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 use URI::Escape;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 use Bio::EnsEMBL::Utils::IO::FeatureSerializer;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 use base qw(Bio::EnsEMBL::Utils::IO::FeatureSerializer);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 my %strand_conversion = ( '1' => '+', '0' => '?', '-1' => '-');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 =head2 new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 Constructor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 Arg [1] : Ontology Adaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 Arg [2] : Optional File handle
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 Returntype : Bio::EnsEMBL::Utils::IO::GFFSerializer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 my $class = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 my $self = {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 ontology_adaptor => shift,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 filehandle => shift,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 bless $self, $class;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 if ( ref($self->{'ontology_adaptor'}) ne "Bio::EnsEMBL::DBSQL::OntologyTermAdaptor" ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 throw("GFF format requires an instance of Bio::EnsEMBL::DBSQL::OntologyTermAdaptor to function. See also Bio::EnsEMBL::Utils::BiotypeMapper");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 $self->{'mapper'} = new Bio::EnsEMBL::Utils::BiotypeMapper($self->{'ontology_adaptor'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 if (!defined ($self->{'filehandle'})) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 # no file handle, let the handle point to a copy of STDOUT instead
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 open $self->{'filehandle'}, ">&STDOUT";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 $self->{'stdout'} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 =head2 print_feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 Arg [1] : Bio::EnsEMBL::Feature, subclass or related pseudo-feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 Example : $reporter->print_feature($feature,$slice_start_coordinate,"X")
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 Description: Asks a feature for its summary, and generates a GFF3
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 compliant entry to hand back again
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 Additional attributes are handed through to column 9 of the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 output using exact spelling and capitalisation of the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 feature-supplied hash.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 sub print_feature {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 my $feature = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 my $biotype_mapper = $self->{'mapper'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 my $text_buffer = "";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 if ($feature->can('summary_as_hash') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 my %summary = %{$feature->summary_as_hash};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 my $row = "";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 # Column 1 - seqname, the name of the sequence/chromosome the feature is on. Landmark for start below
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 if (!defined($summary{'seq_region_name'})) {$summary{'seq_region_name'} = "?";}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 $row .= $summary{'seq_region_name'}."\t";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 # Column 2 - source, complicated with Ensembl not being the originator of all data
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 $row .= "EnsEMBL\t";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 # Column 3 - feature, the ontology term for the kind of feature this row is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 my $so_term = $biotype_mapper->translate_feature_to_SO_term($feature);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 $row .= $so_term."\t";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 # Column 4 - start, the start coordinate of the feature, here shifted to chromosomal coordinates
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 # Start and end must be in ascending order for GFF. Circular genomes require the length of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 # the circuit to be added on.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 if ($summary{'start'} > $summary{'end'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 #assumes this is not a Compara circular sequence and can treat is as a Feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 if ($feature->slice() && $feature->slice()->is_circular() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 $summary{'end'} = $summary{'end'} + $feature->seq_region_length;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 # non-circular, but end still before start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 else {$summary{'end'} = $summary{'start'};}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 $row .= $summary{'start'} . "\t";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 # Column 5 - end, coordinates (absolute) for the end of this feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 $row .= $summary{'end'} . "\t";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 # Column 6 - score, for variations only.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 if (exists($summary{'score'})) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 $row .= $summary{'score'}."\t";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 $row .= ".\t";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 # Column 7 - strand, up or down
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 if (exists($summary{'strand'})) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 $row .= $strand_conversion{$summary{'strand'}}."\t";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 $row .= ".\t";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 # Column 8 - reading frame, necessary only for Exons
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 $row .= ".\t";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 # Column 9 - the 'other' section for all GFF and GVF compliant attributes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 # We include Stable ID and biotype where possible to supplement the information in the other columns
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 delete $summary{'seq_region_start'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 delete $summary{'seq_region_name'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 delete $summary{'start'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 delete $summary{'end'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 delete $summary{'strand'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 delete $summary{'score'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 # Slice the hash for specific keys in GFF-friendly order
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 my @ordered_keys = qw(ID Name Alias Parent Target Gap Derives_from Note Dbxref Ontology_term Is_circular);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 my @ordered_values = @summary{@ordered_keys};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 while (my $key = shift @ordered_keys) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 my $value = shift @ordered_values;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 if ($value) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 $row .= $key."=".uri_escape($value,'\t\n\r;=%&,').";";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 delete $summary{$key};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 # Catch the remaining keys, containing whatever else the Feature provided
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 foreach my $attribute ( keys(%summary)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 if (ref $summary{$attribute} eq "ARRAY") {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 $row .= $attribute."=".join (',',@{$summary{$attribute}}) . ";"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 if ($summary{$attribute}) { $row .= $attribute."=".uri_escape($summary{$attribute},'\t\n\r;=%&,') . ";"; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 # trim off any trailing commas left by the ordered keys stage above:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 $text_buffer .= $row."\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 warning("Feature failed to self-summarise");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 #filehandle is inherited
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 my $fh = $self->{'filehandle'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 print $fh $text_buffer;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 =head2 print_main_header
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 Arg [1] : Arrayref of slices going into the file.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 Description: Printing the header text or metadata required for GFF,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 using a list of slices to be written
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 Returntype : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 sub print_main_header {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 my $arrayref_of_slices = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 my $fh = $self->{'filehandle'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 print $fh "##gff-version 3\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 foreach my $slice (@{$arrayref_of_slices}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 if (not defined($slice)) { warning("Slice not defined.\n"); return;}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 print $fh "##sequence-region ",$slice->seq_region_name," ",$slice->start," ",$slice->end,"\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 sub print_metadata {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 my $text = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 my $fh = $self->{'filehandle'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 print $fh "\n#".$text."\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 1;