annotate DrawMapOfOccurences.pl @ 0:58111b3965b2 draft default tip

Uploaded
author dereeper
date Thu, 01 Nov 2012 09:35:05 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
1 #!/usr/bin/perl
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
2
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
3 use strict;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
4 use Switch;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
5 use Getopt::Long;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
6 use lib ".";
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
7
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
8 my $usage = qq~Usage:$0 <args>
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
9 where <args> are:
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
10 -c, --count <SNP count SNiPloid output>
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
11 -a, --annotation <annotation file in GFF3>
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
12 -o, --output_png <output PNG file>
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
13 -s, --scale <scale. Default:100000>
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
14 -t, --type_analysis <type of analysis: polyploid_diploid or polyploid_polyploid. Default:polyploid_diploid>
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
15 -m, --max_nb_chrom <maximum number of chromomsome to display. Default:20>
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
16 -n, --nb_min_snp <minimal number of SNP to calculate ratio. Default:10>
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
17 -d, --display_cat <display ratio for each category instead of intra-polyploid and inter-diploid (yes/no). Default:no>
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
18 ~;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
19 $usage .= "\n";
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
20
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
21 my ($snp_count,$annotation,$output_png,$global_scale,$max_nb_chrom,$type_analysis);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
22
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
23 my $global_scale = 10000;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
24 my $max_nb_chrom = 20;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
25 my $nb_min_snp = 10;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
26 my $display_cat = "no";
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
27
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
28
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
29 GetOptions(
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
30 "count=s" => \$snp_count,
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
31 "annotation=s" => \$annotation,
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
32 "output_png=s" => \$output_png,
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
33 "scale=s" => \$global_scale,
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
34 "max_nb_chrom=s" => \$max_nb_chrom,
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
35 "type_analysis=s" => \$type_analysis,
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
36 "nb_min_snp=s" => \$nb_min_snp,
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
37 "display_cat=s" => \$display_cat
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
38 );
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
39
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
40
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
41 die $usage
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
42 if ( !$snp_count || !$annotation || !$output_png || !$type_analysis);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
43
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
44 my %proportions_categories;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
45 my %ratios;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
46 my %ratios_poly_diploid;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
47 my %nb_snps;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
48 open(my $COUNT,$snp_count);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
49 <$COUNT>;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
50 while(<$COUNT>)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
51 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
52 my $line =$_;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
53 chomp($line);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
54 my @infos = split(/\t/,$line);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
55
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
56
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
57 if ($type_analysis eq "polyploid_diploid")
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
58 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
59 my $gene = $infos[0];
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
60 my $nb_snp = $infos[2];
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
61 my $nb_1 = $infos[3];
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
62 my $nb_2 = $infos[4];
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
63 my $nb_3or4 = $infos[5];
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
64 my $nb_3 = $infos[6];
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
65 my $nb_4 = $infos[7];
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
66 my $nb_5 = $infos[8];
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
67 my $nb_other = $infos[9];
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
68 my $nb_heterozygot_diploid = $infos[10];
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
69 my $nb_snp_diploid = $infos[11];
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
70 my $nb_snp_polyploid = $infos[12];
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
71
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
72 $nb_snps{$gene} = $nb_snp;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
73 my $sum = $nb_1 + $nb_2 + $nb_3or4 + $nb_5 + $nb_3 + $nb_4 + $nb_other + $nb_heterozygot_diploid;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
74
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
75 if ($nb_snp >= $nb_min_snp)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
76 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
77 if ($nb_1)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
78 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
79 $proportions_categories{$gene}{"1"} = $nb_1/$nb_snp;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
80 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
81 if ($nb_2)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
82 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
83 $proportions_categories{$gene}{"2"} = $nb_2/$nb_snp;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
84 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
85 if ($nb_5)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
86 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
87 $proportions_categories{$gene}{"5"} = $nb_5/$nb_snp;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
88 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
89 if ($nb_3or4)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
90 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
91 $proportions_categories{$gene}{"3or4"} = $nb_3or4/$nb_snp;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
92 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
93 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
94
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
95 my $ratio_g1 = $infos[13];
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
96 my $ratio_g2 = $infos[14];
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
97
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
98 if ($ratio_g1)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
99 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
100 $ratios{$gene} = $ratio_g1;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
101 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
102 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
103
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
104 if ($type_analysis eq "polyploid_polyploid")
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
105 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
106 my $gene = $infos[0];
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
107 my $nb_snp = $infos[2];
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
108 my $nb_equal = $infos[3] + $infos[4];
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
109 my $nb_diff = $infos[7];
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
110 $nb_snps{$gene} = $nb_snp;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
111 if ($nb_snp >= $nb_min_snp)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
112 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
113 if ($nb_equal)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
114 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
115 $proportions_categories{$gene}{"equal"} = $nb_equal/$nb_snp;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
116 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
117 if ($nb_diff)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
118 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
119 $proportions_categories{$gene}{"difference"} = $nb_diff/$nb_snp;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
120 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
121 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
122 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
123
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
124 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
125 close($COUNT);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
126
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
127
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
128
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
129
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
130 my $max_pos = 0;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
131 my %chrom_sizes;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
132 my $chrom_particule;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
133 my %genes;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
134 my %gene_positions;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
135
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
136 open(my $ANNOT,$annotation);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
137 while(<$ANNOT>)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
138 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
139 my $line =$_;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
140 chomp($line);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
141 if (!/^#/ && /gene/)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
142 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
143 my @infos = split(/\t/,$line);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
144 my $chrom = $infos[0];
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
145 if ($chrom =~/^(\w+_)(\d+)$/)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
146 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
147 $chrom_particule = $1;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
148 $chrom = $2;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
149 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
150
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
151 my $attributes = $infos[8];
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
152 my $gene_name;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
153 if ($attributes =~/ID=([^;]+);/)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
154 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
155 $gene_name = $1;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
156 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
157 if ($gene_name =~/(.*)_G1/)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
158 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
159 $gene_name = $1;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
160 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
161 else
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
162 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
163 next;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
164 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
165 if (not defined $nb_snps{$gene_name})
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
166 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
167 next;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
168 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
169
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
170 my $start = $infos[3];
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
171 my $end = $infos[4];
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
172 my $pos = sprintf("%.0f", ($start + (($end - $start) / 2)));
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
173
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
174 $end = $end / $global_scale;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
175 if ($chrom_sizes{$chrom})
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
176 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
177 if ($end > $chrom_sizes{$chrom})
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
178 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
179 $chrom_sizes{$chrom} = $end;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
180 if ($end > $max_pos)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
181 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
182 $max_pos = $end;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
183 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
184 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
185 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
186 else
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
187 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
188 $chrom_sizes{$chrom} = $end;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
189 if ($end > $max_pos)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
190 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
191 $max_pos = $end;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
192 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
193 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
194 $genes{$gene_name} = "$chrom:$pos";
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
195 $gene_positions{$chrom}{$pos}= $gene_name;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
196 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
197 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
198 close($ANNOT);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
199
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
200
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
201
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
202 use GD;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
203 use GD::Simple;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
204 use GD::Image;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
205
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
206
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
207
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
208
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
209 ####################
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
210 # drawing
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
211 ####################
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
212
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
213 my $scale = 800 / $max_pos;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
214
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
215 my $margin_left = 80;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
216 my $margin_right = 50;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
217 my $margin_top = 50;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
218 my $margin_legend = 100;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
219 my $margin_bottom = 10;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
220 my $margin_between_chromosomes = 25;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
221 my $margin_between_section = 50;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
222 my $chrom_width = 10;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
223 my $gene_width = 1;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
224
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
225 my $nb_group = 1;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
226
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
227 my $width_of_picture = scalar keys(%gene_positions);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
228 if (scalar keys(%gene_positions) > $max_nb_chrom)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
229 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
230 $width_of_picture = $max_nb_chrom;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
231 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
232
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
233 my $diagram_img = GD::Simple->new(($margin_left + $margin_right + ($max_pos*$scale)),
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
234 ($margin_top + ((($chrom_width * $nb_group) + ($margin_between_chromosomes * ($nb_group-1))) * $width_of_picture) + ($margin_between_section * $width_of_picture) + $margin_bottom + $margin_legend)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
235 );
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
236
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
237 my $yellow = $diagram_img->colorAllocate(247,254,46);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
238 my $orange_light = $diagram_img->colorAllocate(250,204,46);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
239 my $red_light = $diagram_img->colorAllocate(254,100,46);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
240 my $red = $diagram_img->colorAllocate(254,46,46);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
241 my $orange = $diagram_img->colorAllocate(254,154,46);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
242
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
243
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
244 # draw chromosomes
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
245 my $num_chrom = 0;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
246 my @sorted_chrom = sort {$a <=> $b} keys(%gene_positions);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
247
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
248 my $nombre_genes = 0;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
249 my $y_end;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
250 foreach my $chrom(@sorted_chrom)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
251 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
252 if (!$chrom)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
253 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
254 next;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
255 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
256
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
257 if ($num_chrom > ($max_nb_chrom - 1))
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
258 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
259 last;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
260 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
261 my $ref_hash = $gene_positions{$chrom};
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
262 my %hash = %$ref_hash;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
263
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
264 my $section_size = $chrom_width + (($margin_between_chromosomes + $chrom_width) * ($nb_group - 1));
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
265
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
266 # draw chromosome (X number of groups)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
267
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
268 $diagram_img->fgcolor('black');
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
269 $diagram_img->bgcolor('white');
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
270 $diagram_img->setThickness(1);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
271 my $chrom_chain = $chrom_particule . $chrom;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
272
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
273 $diagram_img->rectangle( $margin_left,
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
274 $margin_top + (($section_size + $margin_between_section) * $num_chrom),
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
275 $margin_left + ($chrom_sizes{$chrom}*$scale),
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
276 $margin_top + $chrom_width + (($section_size + $margin_between_section) * $num_chrom)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
277 );
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
278
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
279 $diagram_img->fgcolor('black');
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
280 $diagram_img->moveTo(5,$margin_top + $chrom_width + (($section_size + $margin_between_section) * $num_chrom) - 1);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
281 $y_end = $margin_top + $chrom_width + (($section_size + $margin_between_section) * ($num_chrom+1)) - 1;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
282 $diagram_img->fontsize(12);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
283 $diagram_img->font('Times');
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
284 $diagram_img->string($chrom_particule . $chrom);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
285
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
286
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
287 my $previous_x_5;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
288 my $previous_x_1;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
289 my $previous_x_2;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
290 my $previous_x_3or4;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
291 my $previous_y_5;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
292 my $previous_y_1;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
293 my $previous_y_2;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
294 my $previous_y_3or4;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
295
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
296 my $previous_x_equal;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
297 my $previous_x_diff;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
298 my $previous_y_equal;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
299 my $previous_y_diff;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
300
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
301 my $previous_x_snp_diplo;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
302 my $previous_x_snp_poly;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
303 my $previous_y_snp_diplo;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
304 my $previous_y_snp_poly;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
305
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
306 my $previous_x_ratio_diplo_poly;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
307 my $previous_y_ratio_diplo_poly;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
308
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
309 # draw genes
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
310 foreach my $pos(sort{$a <=> $b}keys(%hash))
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
311 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
312 my $gene = $gene_positions{$chrom}{$pos};
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
313 if (not defined $nb_snps{$gene} or $nb_snps{$gene} < $nb_min_snp)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
314 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
315 next;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
316 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
317
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
318 if ($type_analysis eq "polyploid_diploid")
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
319 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
320 #####################################################
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
321 # draw ratio (subgenomic contribution)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
322 #####################################################
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
323 my $color = "gray";
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
324 if ($ratios{$gene})
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
325 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
326 my $ratio_g1 = $ratios{$gene};
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
327 if ($ratio_g1 <= 30)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
328 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
329 $color = $red;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
330 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
331 elsif ($ratio_g1 > 30 && $ratio_g1 <= 40)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
332 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
333 $color = $red_light;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
334 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
335 elsif ($ratio_g1 > 40 && $ratio_g1 <= 60)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
336 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
337 $color = $orange;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
338 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
339 elsif ($ratio_g1 > 60 && $ratio_g1 <= 70)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
340 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
341 $color = $orange_light;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
342 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
343 elsif ($ratio_g1 > 70)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
344 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
345 $color = $yellow;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
346 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
347 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
348
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
349 $pos = $pos / $global_scale;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
350
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
351 $diagram_img->fgcolor($color);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
352 $diagram_img->bgcolor($color);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
353 $diagram_img->rectangle( $margin_left + ($pos*$scale) - ($gene_width / 2),
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
354 $margin_top + (($section_size + $margin_between_section) * $num_chrom) + 1,
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
355 $margin_left + ($pos*$scale) + ($gene_width / 2),
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
356 $margin_top + $chrom_width + (($section_size + $margin_between_section) * $num_chrom) - 1
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
357 );
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
358
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
359
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
360
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
361 #####################################################
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
362 # draw SNP categories
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
363 #####################################################
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
364
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
365 my $proportion_5 = $proportions_categories{$gene}{"5"};
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
366 my $proportion_1 = $proportions_categories{$gene}{"1"};
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
367 my $proportion_2 = $proportions_categories{$gene}{"2"};
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
368 my $proportion_3or4 = $proportions_categories{$gene}{"3or4"};
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
369 my $ratio_poly_diplo = $ratios_poly_diploid{$gene};
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
370
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
371 my $draw = 0;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
372 if (defined $previous_x_5)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
373 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
374 $draw = 1;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
375 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
376
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
377
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
378 #######################
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
379 # SNP category 5
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
380 #######################
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
381 if ($draw)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
382 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
383 $diagram_img->moveTo($previous_x_5,$previous_y_5);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
384 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
385 $previous_x_5 = $margin_left + ($pos*$scale) - 1;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
386 $diagram_img->setThickness(2);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
387 $diagram_img->fgcolor("red");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
388 $diagram_img->bgcolor("red");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
389 $previous_y_5 = $margin_top + (($section_size + $margin_between_section) * $num_chrom) + 1 - ($proportion_5 * 20) - 7;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
390 if ($draw)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
391 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
392 $diagram_img->lineTo($previous_x_5,$previous_y_5);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
393 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
394
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
395 if ($display_cat eq "yes")
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
396 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
397 #######################
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
398 # SNP category 1
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
399 #######################
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
400 if ($draw)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
401 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
402 $diagram_img->moveTo($previous_x_1,$previous_y_1);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
403 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
404 $previous_x_1 = $margin_left + ($pos*$scale) - 1;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
405 $diagram_img->fgcolor("orange");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
406 $diagram_img->bgcolor("orange");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
407 $previous_y_1 = $margin_top + (($section_size + $margin_between_section) * $num_chrom) + 1 - ($proportion_1 * 20) - 7;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
408 if ($draw)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
409 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
410 $diagram_img->lineTo($previous_x_1,$previous_y_1);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
411 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
412
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
413
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
414 #######################
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
415 # SNP category 2
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
416 #######################
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
417 if ($draw)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
418 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
419 $diagram_img->moveTo($previous_x_2,$previous_y_2);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
420 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
421 $previous_x_2 = $margin_left + ($pos*$scale) - 1;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
422 $diagram_img->fgcolor("purple");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
423 $diagram_img->bgcolor("purple");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
424 $previous_y_2 = $margin_top + (($section_size + $margin_between_section) * $num_chrom) + 1 - ($proportion_2 * 20) - 7;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
425 if ($draw)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
426 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
427 $diagram_img->lineTo($previous_x_2,$previous_y_2);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
428 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
429
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
430
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
431 #######################
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
432 # SNP category 3 or 4
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
433 #######################
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
434 if ($draw)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
435 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
436 $diagram_img->moveTo($previous_x_3or4,$previous_y_3or4);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
437 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
438 $previous_x_3or4 = $margin_left + ($pos*$scale) - 1;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
439 $diagram_img->fgcolor("green");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
440 $diagram_img->bgcolor("green");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
441 $previous_y_3or4 = $margin_top + (($section_size + $margin_between_section) * $num_chrom) + 1 - ($proportion_3or4 * 20) - 7;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
442 if ($draw)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
443 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
444 $diagram_img->lineTo($previous_x_3or4,$previous_y_3or4);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
445 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
446 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
447
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
448 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
449
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
450 if ($type_analysis eq "polyploid_polyploid")
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
451 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
452 my $color = "gray";
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
453 $pos = $pos / $global_scale;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
454
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
455 $diagram_img->fgcolor($color);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
456 $diagram_img->bgcolor($color);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
457 $diagram_img->rectangle( $margin_left + ($pos*$scale) - ($gene_width / 2),
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
458 $margin_top + (($section_size + $margin_between_section) * $num_chrom) + 1,
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
459 $margin_left + ($pos*$scale) + ($gene_width / 2),
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
460 $margin_top + $chrom_width + (($section_size + $margin_between_section) * $num_chrom) - 1
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
461 );
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
462
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
463
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
464
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
465 my $proportion_equal = $proportions_categories{$gene}{"equal"};
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
466 my $proportion_diff = $proportions_categories{$gene}{"difference"};
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
467
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
468 my $draw = 0;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
469 if (defined $previous_x_equal)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
470 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
471 $draw = 1;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
472 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
473
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
474
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
475 ##################################################
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
476 # SNP category : equality between 2 polyploids
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
477 ##################################################
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
478 if ($draw)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
479 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
480 $diagram_img->moveTo($previous_x_equal,$previous_y_equal);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
481 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
482 $previous_x_equal = $margin_left + ($pos*$scale) - 1;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
483 $diagram_img->setThickness(2);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
484 $diagram_img->fgcolor("red");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
485 $diagram_img->bgcolor("red");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
486 $previous_y_equal = $margin_top + (($section_size + $margin_between_section) * $num_chrom) + 1 - ($proportion_equal * 20) - 7;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
487 if ($draw)
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
488 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
489 $diagram_img->lineTo($previous_x_equal,$previous_y_equal);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
490 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
491 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
492
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
493 $nombre_genes++;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
494 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
495
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
496 $num_chrom++;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
497 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
498
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
499 if ($type_analysis eq "polyploid_polyploid")
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
500 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
501 $diagram_img->moveTo(5,$y_end);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
502 $diagram_img->setThickness(2);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
503 $diagram_img->fgcolor("red");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
504 $diagram_img->bgcolor("red");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
505 $diagram_img->lineTo(25,$y_end);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
506 $diagram_img->fgcolor("black");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
507 $diagram_img->moveTo(30,$y_end + 5);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
508 $diagram_img->fontsize(12);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
509 $diagram_img->font('Times');
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
510 $diagram_img->string("% SNP where P1 = P2");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
511 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
512 elsif ($type_analysis eq "polyploid_diploid")
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
513 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
514 if ($display_cat eq "yes")
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
515 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
516 $diagram_img->moveTo(5,$y_end);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
517 $diagram_img->setThickness(2);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
518 $diagram_img->fgcolor("orange");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
519 $diagram_img->bgcolor("orange");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
520 $diagram_img->lineTo(25,$y_end);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
521 $diagram_img->fgcolor("black");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
522 $diagram_img->moveTo(30,$y_end + 5);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
523 $diagram_img->fontsize(12);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
524 $diagram_img->font('Times');
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
525 $diagram_img->string("% SNP type 1");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
526
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
527 $diagram_img->moveTo(5,$y_end + 20);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
528 $diagram_img->setThickness(2);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
529 $diagram_img->fgcolor("purple");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
530 $diagram_img->bgcolor("purple");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
531 $diagram_img->lineTo(25,$y_end + 20);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
532 $diagram_img->fgcolor("black");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
533 $diagram_img->moveTo(30,$y_end + 25);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
534 $diagram_img->fontsize(12);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
535 $diagram_img->font('Times');
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
536 $diagram_img->string("% SNP type 2");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
537
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
538 $diagram_img->moveTo(5,$y_end + 40);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
539 $diagram_img->setThickness(2);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
540 $diagram_img->fgcolor("green");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
541 $diagram_img->bgcolor("green");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
542 $diagram_img->lineTo(25,$y_end + 40);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
543 $diagram_img->fgcolor("black");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
544 $diagram_img->moveTo(30,$y_end + 45);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
545 $diagram_img->fontsize(12);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
546 $diagram_img->font('Times');
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
547 $diagram_img->string("% SNP type 3 or 4");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
548
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
549 $diagram_img->moveTo(5,$y_end + 60);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
550 $diagram_img->setThickness(2);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
551 $diagram_img->fgcolor("red");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
552 $diagram_img->bgcolor("red");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
553 $diagram_img->lineTo(25,$y_end + 60);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
554 $diagram_img->fgcolor("black");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
555 $diagram_img->moveTo(30,$y_end + 65);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
556 $diagram_img->fontsize(12);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
557 $diagram_img->font('Times');
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
558 $diagram_img->string("% SNP type 5");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
559 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
560 else
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
561 {
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
562 $diagram_img->moveTo(5,$y_end);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
563 $diagram_img->setThickness(2);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
564 $diagram_img->fgcolor("red");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
565 $diagram_img->bgcolor("red");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
566 $diagram_img->lineTo(25,$y_end);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
567 $diagram_img->fgcolor("black");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
568 $diagram_img->moveTo(30,$y_end + 5);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
569 $diagram_img->fontsize(12);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
570 $diagram_img->font('Times');
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
571 $diagram_img->string("% SNP Class 5 per gene (SNP Intra-Diploids = SNP Intra-Polyploid)");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
572 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
573
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
574 $diagram_img->moveTo(5,$y_end + 30);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
575 $diagram_img->fontsize(12);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
576 $diagram_img->font('Times');
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
577 $diagram_img->string("Estimate of subgenomic contribution to the transcriptome for each gene (%G2)");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
578
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
579
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
580 $diagram_img->moveTo(25,$y_end + 45);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
581 $diagram_img->setThickness(10);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
582 $diagram_img->fgcolor($red);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
583 $diagram_img->bgcolor($red);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
584 $diagram_img->lineTo(30,$y_end + 45);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
585 $diagram_img->fgcolor("black");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
586 $diagram_img->moveTo(35,$y_end + 50);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
587 $diagram_img->fontsize(12);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
588 $diagram_img->font('Times');
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
589 $diagram_img->string("0-30%");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
590
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
591 $diagram_img->moveTo(95,$y_end + 45);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
592 $diagram_img->setThickness(10);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
593 $diagram_img->fgcolor($red_light);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
594 $diagram_img->bgcolor($red_light);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
595 $diagram_img->lineTo(100,$y_end + 45);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
596 $diagram_img->fgcolor("black");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
597 $diagram_img->moveTo(105,$y_end + 50);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
598 $diagram_img->fontsize(12);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
599 $diagram_img->font('Times');
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
600 $diagram_img->string("30-40%");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
601
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
602 $diagram_img->moveTo(165,$y_end + 45);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
603 $diagram_img->setThickness(10);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
604 $diagram_img->fgcolor($orange);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
605 $diagram_img->bgcolor($orange);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
606 $diagram_img->lineTo(170,$y_end + 45);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
607 $diagram_img->fgcolor("black");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
608 $diagram_img->moveTo(175,$y_end + 50);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
609 $diagram_img->fontsize(12);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
610 $diagram_img->font('Times');
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
611 $diagram_img->string("40-60%");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
612
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
613 $diagram_img->moveTo(235,$y_end + 45);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
614 $diagram_img->setThickness(10);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
615 $diagram_img->fgcolor($orange_light);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
616 $diagram_img->bgcolor($orange_light);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
617 $diagram_img->lineTo(240,$y_end + 45);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
618 $diagram_img->fgcolor("black");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
619 $diagram_img->moveTo(245,$y_end + 50);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
620 $diagram_img->fontsize(12);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
621 $diagram_img->font('Times');
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
622 $diagram_img->string("60-70%");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
623
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
624 $diagram_img->moveTo(305,$y_end + 45);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
625 $diagram_img->setThickness(10);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
626 $diagram_img->fgcolor($yellow);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
627 $diagram_img->bgcolor($yellow);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
628 $diagram_img->lineTo(310,$y_end + 45);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
629 $diagram_img->fgcolor("black");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
630 $diagram_img->moveTo(315,$y_end + 50);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
631 $diagram_img->fontsize(12);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
632 $diagram_img->font('Times');
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
633 $diagram_img->string("70-100%");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
634
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
635 $diagram_img->moveTo(25,$y_end + 60);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
636 $diagram_img->setThickness(10);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
637 $diagram_img->fgcolor("gray");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
638 $diagram_img->bgcolor("gray");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
639 $diagram_img->lineTo(30,$y_end + 60);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
640 $diagram_img->fgcolor("black");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
641 $diagram_img->moveTo(35,$y_end + 65);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
642 $diagram_img->fontsize(12);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
643 $diagram_img->font('Times');
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
644 $diagram_img->string("No ratio information, no SNP class 5 in this gene");
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
645
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
646 }
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
647
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
648
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
649 open( DIAGRAM_PICT, ">$output_png" );
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
650 binmode(DIAGRAM_PICT);
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
651 print DIAGRAM_PICT $diagram_img->png;
58111b3965b2 Uploaded
dereeper
parents:
diff changeset
652 close DIAGRAM_PICT;