diff SNiPloid.pl @ 0:e94de0ea3351 draft default tip

Uploaded
author dereeper
date Wed, 11 Sep 2013 09:08:15 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SNiPloid.pl	Wed Sep 11 09:08:15 2013 -0400
@@ -0,0 +1,2781 @@
+#!/usr/bin/perl
+
+use Getopt::Long;
+use Switch;
+use Tie::File;
+
+	   #####################################################
+	   #                                                   #
+	 #	    @@@@  @   @   @   @@@@   @         @      @      #
+	#	   @	  @@  @       @   @  @                @       #
+	# 	    @@@   @ @ @   @   @@@@   @   @@@   @   @@@@       #
+	#          @  @  @@   @   @      @  @   @  @  @   @       #
+	 #	   @@@@   @   @   @   @      @   @@@   @   @@@       #
+	   #                                                   #
+	   #####################################################
+
+###############################################################################################################
+#
+#		SNiPloid
+#		Author : Marine PERALTA
+#
+###############################################################################################################
+#
+#		Galaxy Version  
+#
+###############################################################################################################
+
+#___________________________________
+# Samples names
+#-----------------------------------
+$polyploidName = "" ;
+$polyploid2Name = "" ; #
+$genome1Name = "" ;
+$genome2Name = "" ;
+#___________________________________
+# VCF files
+#-----------------------------------
+$VCFpolyploid = "" ;
+$VCFpolyploid2 = "" ; #
+$VCFgenome1 = "" ;
+$VCFgenome2 = "" ;
+$merged_VCF = "" ; # Polyploid + Genome1 + Genome 2
+#___________________________________
+# Depth of Coverage File
+#-----------------------------------
+$DOCpolyploid = "" ;
+$DOCpolyploid2 = "" ; #
+$DOCgenome1 = "" ;
+$DOCgenome2 = "" ;
+$merged_DOC = "" ; # Polyploid + Genome1 + Genome 2
+#___________________________________
+# Depth for each sample
+#-----------------------------------
+$depthPolyploid = 0 ;
+$depthPolyploid2 = 0 ; #
+$depthGenome1 = 0 ;
+$depthGenome2 = 0 ;
+#___________________________________
+# Output Files
+#-----------------------------------
+$SNP_csv 		= "SNP_tab.txt";
+$SNP_html 		= "SNP_view.html";
+$SNP_count 		= "SNP_synthesis_tab.html";
+$SNP_count_csv 	= "SNP_synthesis_tab.txt";
+#___________________________________
+# Other parameters
+#-----------------------------------
+$enableLowQuality = 0 ;  #default value for enable quality SNP = only PASS SNP are considered
+$ref = 0 ; # default parameter = extern
+
+$filtre_ouPas = 0 ;
+$value_filter_p1 = 0 ;
+$value_filter_p2 = 0 ;
+
+$REPimages = "img_sniploid/";
+
+$poly_poly_analysis = 0 ;
+
+
+my $usage = qq~
+Basic usage
+
+For comparison between a polyploid and its parental diploid genomes:
+
+    $0 --vp <VCF_polyploid> --vg1 <VCF_diploid> --cpp <depth_polyploid> --cg1 <depth_diploid> --dp <min_depth_polyploid> --dg1 <min_depth_diploid> --ref 1
+    
+For comparison between 2 polyploids:
+
+    $0 --vp <VCF_polyploid1> --vp2 <VCF_polyploid2> --cpp <depth_polyploid1> --cpp2 <depth_polyploid2> --dp <min_depth_polyploid1> --dp2 <min_depth_polyploid2>
+  
+Usage:$0 <args>
+where <args> are:
+
+    --vp           <VCF file for polyploid>
+    --vp2          <VCF file for polyploid 2>
+    --vg1          <VCF file for diploid genome 1>
+    --vg2          <VCF file for diploid genome 2>
+    
+    --cpp          <Depth file for polyploid>
+    --cpp2         <Depth file for polyploid 2>
+    --cg1          <Depth file for diploid genome 1>
+    --cg2          <Depth file for diploid genome 2>
+    
+    --dp           <Minimum read depth at a position to make a call for polyploid>
+    --dp2          <Minimum read depth at a position to make a call for polyploid 2>
+    --dg1          <Minimum read depth at a position to make a call for diploid genome 1>
+    --dg2          <Minimum read depth at a position to make a call for diploid genome 2>
+    
+    --oc           <Output file name for SNP list in csv>
+    --oh           <Output file name for SNP list in HTML>
+    --ocs          <Output file name for SNP count per gene in csv>
+    --ohs          <Output file name for SNP count per gene in HTML>
+    
+    --vfp1         <Minimul allele frequency to consider as variant for polyploid 1 (in %). Default: 0>
+    --vfp2         <Minimul allele frequency to consider as variant for polyploid 2 (in %). Default: 0>
+    
+    --elq          <Enable low quality SNP tag. Default: 0>
+    --gn2          <Specify a name for diploid genome 2>
+    --ref          <The reference must be included in the analysis as diploid genome. Default: 0>
+~;
+$usage .= "\n";
+
+
+=pod
+Add option for "Heterozygosity"
+ Enable "heterozygosity" for genome 1 (reference intern) - not necessary...
+ Enable "heterozygosity" for genome 1 and genome 2 (reference extern)
+=cut
+
+GetOptions (
+	# "pn=s"	=>	\$polyploidName,
+	# "pn2=s" =>	\$polyploid2Name, #
+	# "gn1=s"	=>	\$genome1Name,  
+	"gn2=s"		=>	\$genome2Name,
+	"vp=s"		=>	\$VCFpolyploid,
+	"vp2=s"		=>	\$VCFpolyploid2, #
+	"vg1=s"		=>	\$VCFgenome1,
+	"vg2=s"		=>	\$VCFgenome2,
+	"vm=s"		=>	\$merged_VCF,
+	"cpp=s"		=>	\$DOCpolyploid,
+	"cpp2=s"	=>	\$DOCpolyploid2, #
+	"cg1=s"		=>	\$DOCgenome1,
+	"cg2=s"		=>	\$DOCgenome2,
+	"cm=s"		=>	\$merged_DOC,
+	"dp=i"		=>	\$depthPolyploid,
+	"dp2=i"		=>	\$depthPolyploid2, #
+	"dg1=i"		=>	\$depthGenome1,
+	"dg2=i"		=>	\$depthGenome2,
+	"oc=s"		=>	\$SNP_csv,
+	"oh=s"		=>	\$SNP_html,
+	"ohs=s"		=>	\$SNP_count,
+	"ocs=s"		=>	\$SNP_count_csv,
+	"elq=i"		=>	\$enableLowQuality,
+	"ref=i"		=>	\$ref,
+	#"fop=i" 	=>	\$filtre_ouPas,
+	"vfp1=i" 	=>	\$value_filter_p1,
+	"vfp2=i" 	=>	\$value_filter_p2,
+	"img=s" 	=>	\$REPimages
+# h = i	= >	\ $heterozygosity ,
+);
+
+
+# Validation - Samples names
+
+
+die $usage
+  if ( (!$VCFgenome1 || !$DOCgenome1 )  && (!$VCFpolyploid  || !$DOCpolyploid)   || (!$VCFpolyploid2 || !$DOCpolyploid2 )  && (!$VCFpolyploid  || !$DOCpolyploid));
+
+
+
+%intervalle1 ;
+%intervalle2 ;
+%snp = () ;
+my %snp_final ;
+my %five = () ;
+my %phased_regions = () ;
+
+$nbTotGenes = 0 ;
+$nbTotGenesVal = 0 ;
+$nbTotGenesAna = 0 ;
+
+
+if ($VCFpolyploid2 ne "") {
+	$poly_poly_analysis = 1 ;
+}
+
+# if ($polyploidName eq "") {
+	# print STDOUT "*** /!\\ ERROR: Missing name for polyploid - You have to specify a name for the polyploid species [--pn \"polyploid_name\"] $!" ;
+	# die ("*** /!\\ ERROR: Missing name for polyploid - You have to specify a name for the polyploid species [--pn \"polyploid_name\"] $!") ;
+# }
+
+if ($poly_poly_analysis == 1) {
+	print STDOUT "\nAnalysis Type: Polyploid vs Polyploid\n---------------------------------------";
+	# print STDOUT "\nPolyploid 1: ".$polyploidName ;
+	# print STDOUT "\nPolyploid 2:".$polyploid2Name ;
+	# if ($polyploid2Name eq "") {
+		# print STDOUT "*** /!\\ ERROR: Missing name for polyploid 2 - You have to specify a name for the polyploid species 2 [--pn2 \"polyploid_2_name\"] $!" ;
+		# die ("*** /!\\ ERROR: Missing name for polyploid - You have to specify a name for the polyploid species 2 [--pn \"polyploid_2_name\"] $!") ;
+	# }
+}
+else {
+	print STDOUT "\nAnalysis Type: Polyploid vs Parental Genomes\n---------------------------------------";
+	# print STDOUT "\nPolyploid: ".$polyploidName ;
+	# print STDOUT "\nGenome 1: ".$genome1Name ;
+	# print STDOUT "\nGenome 2: ".$genome2Name ;
+	# if ($genome1Name eq "") {
+		# die ("*** /!\\ ERROR: Missing name for genome 1 - You have to specify a name for the genome 1 species") ;
+	# }
+	# if ($genome2Name eq "") {
+		# die ("*** /!\\ ERROR: Missing name for genome 2 - You have to specify a name for the genome 2 species") ;
+	# }
+	# Validation - depth
+	if ($depthPolyploid == 0) {	
+		die ("*** /!\\ ERROR: Missing depth information for polyploid");
+	}
+	if ($depthGenome1 == 0) {
+		die ("*** /!\\ ERROR: Missing depth information for genome 1");
+	}
+	if ($ref == 0 && $depthGenome2 == 0) {
+		die ("*** /!\\ ERROR: Missing depth information for genome 2");
+	}
+}
+
+
+
+
+$time = time ;
+
+
+################################################################
+# 1) Polyploid vs Polyploid analysis
+################################################################
+if ($poly_poly_analysis == 1) {
+	#print STDOUT "\n PASS";
+	&Intervall_part1($DOCpolyploid) ;
+	&Intervall_part2($DOCpolyploid2,$depthPolyploid2) ;
+	
+	&VCF_Analysis($VCFpolyploid);
+	&VCF_Analysis($VCFpolyploid2);
+	# CSS, titles, img, etc.
+	&intro_output ;
+	&poly_poly_output ;
+}
+################################################################
+# 2) Polyploid vs Parental Diploid Genomes Analysis
+################################################################
+else {
+
+# PART 1 : CREATING COMMON INTERVALS 
+	
+	&Intervall_part1($DOCpolyploid) ;
+	&Intervall_part2($DOCgenome1,$depthGenome1) ;
+	if ($ref == 0) { # genome2 => no parental genome as reference
+		&Intervall_part2($DOCgenome2,$depthGenome2) ;
+	}
+
+# PART 2 and 3 : CREATING SNP TAB AND OUTPUTS
+
+# VCF_Analysis : Create SNP hash and phasing
+	
+	&VCF_Analysis($VCFpolyploid);
+	if ($ref == 1) { # Reference = one of two parental genomes
+		&VCF_Analysis($VCFgenome1);
+		# CSS, titles, img, etc.
+		&intro_output ;
+		# SNP Comparison and display
+		&int_output ;
+	}	
+	else { # Extern Reference
+		&VCF_Analysis($VCFgenome1);
+		&VCF_Analysis($VCFgenome2);
+		# CSS, titles, img, etc.
+		&intro_output ;
+		# SNP Comparison and display
+		&ext_output ;
+	}		
+}
+
+
+
+
+sub Intervall_part1 {
+	my(@args) = @_;
+	#print STDOUT "\nTEST ::: ".$args[0] ;
+	open (TABSNP, $args[0]) or die ("Pbm a l'ouverture du fichier : $args[0]");
+		@DOC = <TABSNP> ;
+	close TABSNP ;
+
+	$rec = 0 ;
+	$position_pre ;
+	$val_deb = "";
+	$val_fin = "";
+	$name_pre = "";
+	
+		
+	foreach $line(@DOC) {
+		if ($line ne $DOC[0]) {
+			@ligne = split(/\t/ , $line);
+			@position = split(/:/ , $ligne[0]);
+			$name_gene = $position[0] ;
+
+			if ($merged == 0) { # 1st File	 - Polyploid
+				$depthcov = $ligne[1] ;
+				if ($name_gene){
+					if ($name_gene ne $gene_pre)
+					{
+						if ($rec == 1) {
+							$position_fin = $position_pre ;
+							$val_fin = $val_deb.$position_fin ; # Intervalle end position
+							$intervalle1{$gene_pre}{$val_fin} = "ok" ;
+						}
+						$rec = 0;
+					}	
+					if ($depthcov >= $depthPolyploid){
+						if ($rec == 0) {
+							$position_deb = $position[1] ;
+							$val_deb = $position_deb."-"; # Intervalle start position
+						}
+						$rec = 1 ;
+					}
+					if ($depthcov < $depthPolyploid){
+						if ($rec == 1) {
+							$position_fin = $position_pre ;
+							$val_fin = $val_deb.$position_fin ; # Intervalle end position
+							$intervalle1{$gene_pre}{$val_fin} = "ok" ;
+						}
+						$rec = 0;
+					}
+					
+				}
+			}
+			else { # Merged files (2 or 3 species)
+				if ($ref == 0) { # 3 species
+					$depthcov1 = $ligne[$indiceGenome2] ;
+					$depthcov2 = $ligne[$indicePolyploid1] ;
+					$depthcov3 = $ligne[$indiceGenome1] ;				
+					if ($name_gene){
+						if (($depthcov1 >= $depthGenome2) && ($depthcov2 >= $depthPolyploid)&& ($depthcov3 >= $depthGenome1)){
+							if ($rec == 0) {
+								$position_deb = $position[1] ;
+								$val_deb = $position_deb."-";
+							}
+							$rec = 1 ;
+						}
+						if (($depthcov1 < $depthGenome2) || ($depthcov2 < $depthPolyploid) || ($depthcov3 < $depthGenome1)){
+							if ($rec == 1) {
+								$position_fin = $position_pre ;
+								$val_fin = $val_deb.$position_fin ;
+								$intervalle1{$gene_pre}{$val_fin} = "ok" ;
+							}
+							$rec = 0 ;
+						}
+					}
+				}
+				else { # 2 species
+					$depthcov1 = $ligne[$indicePolyploid1] ;
+					$depthcov2 = $ligne[$indiceGenome1] ;
+					if ($name_gene){
+						if (($depthcov1 >= $depthPolyploid) && ($depthcov2 >= $depthGenome1)){
+							if ($rec == 0) {
+								$position_deb = $position[1] ;
+								$val_deb = $position_deb."-";
+							}
+							$rec = 1 ;
+						}
+						if (($depthcov1 < $depthPolyploid) || ($depthcov2 < $depthGenome1)){
+							if ($rec == 1) {
+								$position_fin = $position_pre ;
+								$val_fin = $val_deb.$position_fin ;
+								$intervalle1{$gene_pre}{$val_fin} = "ok" ;
+							}
+							$rec = 0 ;
+						}
+					}
+				}
+			}	
+			$position_pre = $position[1] ;
+			$gene_pre = $name_gene ;
+		}		
+	}
+	return (%intervalle1) ;
+	
+}
+sub Intervall_part2 {
+	
+	my(@args) = @_;
+	#print "\nintervall part 2 : $args[1]";
+	
+	open (TABSNP, $args[0]) or die ("Pbm a l'ouverture du fichier : $args[0]");
+	#print STDOUT "\n$args[0]";
+	@DOC = <TABSNP> ;
+	my %tab ;
+	foreach $li(@DOC) {
+		if ($li =~ /^(.+):(.+)\t(.+)\t.+\t.+$/) {
+   			$tab{$1}{$2} = $3;
+		}
+	}
+	close TABSNP ;
+
+	
+	
+	$rec = 0 ;
+	$position_pre ;
+	$val_deb = "";
+	$val_fin = "";
+
+	foreach my $interval(sort (keys(%intervalle1))){ 
+		
+		my $ref = $intervalle1{$interval};
+		my %intervalls = %$ref;
+		$name_gene = $interval ;
+	
+		foreach my $intervall(sort (keys(%intervalls))){ 
+			$final = 2 ;
+			$rec = 0 ;
+			($debut,$fin) = split(/-/,$intervall);
+			for ($i=$debut; $i <=$fin; $i++) {
+				if ($tab{$interval}{$i} >= $args[1]){
+					if ($rec == 0) {
+						$position_deb = $i ;
+						$val_deb = $position_deb."-";
+					}
+					$rec = 1 ;
+					$final = 0 ;
+				}
+				if ($tab{$interval}{$i} < $args[1]){
+					$final = 1 ;
+					if ($rec == 1) {
+						$position_fin = $i-1 ;
+						$val_fin = $val_deb.$position_fin ;
+						$intervalle2{$name_gene}{$val_fin} = "ok" ;
+					}
+					$rec = 0 ;
+				}
+			}
+			if ($final == 0) {
+				$val_fin = $val_deb.$fin ;
+				$intervalle2{$name_gene}{$val_fin} = "ok" ;
+			}
+		}
+	}
+	if ($VCFgenome2 ne ""){
+		%intervalle1 = %intervalle2 ;
+	}
+	
+	foreach my $interval(sort (keys(%intervalle2))){
+		my $ref = $intervalle2{$interval};
+		my %intervalls = %$ref;
+		$name_gene = $interval ;
+	}	
+	return (%intervalle2) ;
+}
+
+sub VCF_Analysis {
+	%snp_final = () ;
+	$compt_phasing = 0 ;
+	$compt_five = 0 ;
+	my(@args) = @_;
+	
+	open (TABSNP, "$args[0]") or die ("ERROR : file $args[0] don't exists");
+		@VCF = <TABSNP> ;
+	close TABSNP ;
+	
+	###########################################
+	# test if VCF was filtered
+	###########################################
+	my $vcf_file = $args[0];
+	my $grep_pass = `grep -c 'PASS' $vcf_file`;
+	chomp($grep_pass);
+	my $pass = "PASS";
+	if (defined $grep_pass && $grep_pass == 0)
+	{
+		$pass = ".";
+	}
+	
+	#print "$pass $grep_pass $vcf_file\n";
+	
+	foreach $line(@VCF){
+		if ($line =~ /^#CHROM.+FORMAT\t(.+)$/) {
+			$name_record = $1 ;
+		}
+		if ($line !~ /^#/){
+			@infos_line = split(/\t/,$line) ;
+			$gene = $infos_line[0];
+			$position = $infos_line[1];
+			$ref_allele = $infos_line[3];
+			$alt_allele = $infos_line[4];
+			
+			if ($ref_allele =~/\w\w/ or $alt_allele =~/\w\w/)
+			{
+				next;
+			}
+			
+			$snp_code = "[$ref_allele/$alt_allele]";
+			$quality_of_snp = $infos_line[6];
+			$depth_recuperation = $infos_line[7];
+			$alleles = $infos_line[9];
+		
+			($GT,$AD,$FDP,$GQ,$PL) = split(":",$alleles);
+			
+			
+			# PHASING
+			
+			if (($GT =~ /\|/) && ($previous_GT =~ /\//)) { # initialisation région
+				$compt_phasing ++ ;
+				$phased_regions{$gene}{$compt_phasing}{$previous_position} = $previous_GT ;
+				$phased_regions{$gene}{$compt_phasing}{$position} = $GT ;
+			}
+			if (($GT =~ /\|/) && ($previous_GT =~ /\|/)) { # extension région
+				$phased_regions{$gene}{$compt_phasing}{$position} = $GT ;
+			}
+			
+			
+			# $FDP = Filtered Depth
+			# $DP = Total Depth
+			
+			my $DP;
+			my @tags = split(";",$depth_recuperation);
+			foreach my $tag(@tags)
+			{
+				if ($tag =~/DP=/)
+				{
+					$DP = $tag;
+				}
+			}
+
+			#($sub1,$sub2) = split(",",$AD);
+			#$somme = $sub1 + $sub2 ;
+			
+			$somme = 0;
+			my @depth_of_alleles = split(",",$AD);
+			my $sub1 = $depth_of_alleles[0];
+			foreach my $depth_of_allele(@depth_of_alleles)
+			{
+				$somme += $depth_of_allele;
+			}
+			
+			
+
+			if ($somme == 0 ) {
+				print STDOUT "ERROR : Cannot calculate ratio for ".$gene." [pos:".$position."]\n\"".$line."\"";
+				die ("ERROR : Cannot calculate ratio for ".$gene." [pos:".$position."]\n\"".$line."\"");
+			}
+			else {
+				$ratio = ($sub1/$somme)*100;
+				$ratio = sprintf("%.0f", $ratio);
+			}
+			
+			@DP = split ("=",$DP) ;
+
+			$test_inside_interval = 0 ;
+		
+			my $ref = $intervalle2{$gene};
+			my %hash = %$ref;
+			
+			foreach my $interval(keys(%hash)){
+				my @pos = split(/-/,$interval) ;
+				if ($position >= $pos[0] && $position <= $pos[1]) {
+					$test_inside_interval = 1 ;
+					last ;
+				}
+			}
+			# ENABLE LOW_QUALITY SNP
+			if ($enableLowQuality == 1) {
+				if ($test_inside_interval == 1 ){ #
+					if ($args[0] eq $VCFpolyploid) { # Polyploid
+						$polyploidName = $name_record ;
+						$snp{$gene}{$position} = $snp_code."\t".$AD."\t".$GT."\t".$DP[1]."-".$FDP ;
+					}
+					else { 
+						if ($args[0] eq $VCFgenome1)  { # genome1
+							$genome1Name = $name_record ;
+							if (exists $snp{$gene}{$position}) { # if polyploid SNP
+								$snp{$gene}{$position} = $snp{$gene}{$position}."\t".$snp_code."\t".$GT ;
+								
+								($code_snp,$ratio,$GT_poly,$DP_P,$code_G1,$GT_G1) = split(/\t/,$snp{$gene}{$position});
+								@recupAlleles = split(/\[/,$code_snp);
+								@recupAlleles = split(/\]/,$recupAlleles[1]);
+								($alRef,$alAltP) = split(/\//,$recupAlleles[0]);
+								@recupAlleles = split(/\[/,$code_G1);
+								@recupAlleles = split(/\]/,$recupAlleles[1]);
+								($alRef,$code_G1) = split(/\//,$recupAlleles[0]);
+								
+								#print "\nINFOS\n".$GT_poly."\t";
+								#print $GT_G1."\t";
+								#print $code_G1."\t";
+								#print $alAltP."\n";
+								if ((($GT_poly =~ /^0.1$/)||($GT_poly =~ /^1.0$/)) && (($GT_G1 =~ /^1.1$/)) && ($code_G1 eq  $alAltP)) {
+									$five{$gene}{$position} = $GT_poly ; 
+								}	
+							}
+							else { # if no polyploid SNP, key is empty
+								$snp{$gene}{$position} = $ref_allele."\t\t\t\t".$snp_code."\t".$GT ;
+							}
+						}
+						else { # genome2
+							if ($args[0] eq $VCFgenome2) {
+								$genome2Name = $name_record ;
+								if (exists $snp{$gene}{$position}) { # if polyploid SNP
+									$snp{$gene}{$position} = $snp{$gene}{$position}."\t".$snp_code."\t".$GT;
+								}
+								else { # if no polyploid SNP and no genome1, key is empty
+									$snp{$gene}{$position} = $ref_allele."\t\t\t\t".$ref_allele."\t\t".$snp_code."\t".$GT ;
+								}
+							}
+						}
+						if ($args[0] eq $VCFpolyploid2) { # polyploid2
+							$polyploid2Name = $name_record ;
+							if (exists $snp{$gene}{$position}) { # if polyploid SNP
+								$snp{$gene}{$position} = $snp{$gene}{$position}."\t".$snp_code."\t".$AD."\t".$GT."\t".$DP[1]."-".$FDP ;
+							}
+							else { # if no polyploid SNP, key is empty
+								$snp{$gene}{$position} = $ref_allele."\t\t\t\t".$snp_code."\t".$AD."\t".$GT."\t".$DP[1]."-".$FDP ;
+							}
+						}
+					}
+				}
+			}
+			# ONLY PASS SNP CONSIDERED
+			else {
+				if (($test_inside_interval == 1 ) && ($quality_of_snp eq $pass) && ($snp{$gene}{$position} ne "LQ")){ #
+					if ($args[0] eq $VCFpolyploid) { # Polyploid
+						$polyploidName = $name_record ;
+						$snp{$gene}{$position} = $snp_code."\t".$AD."\t".$GT."\t".$DP[1]."-".$FDP ;
+					}
+					else { 
+						if ($args[0] eq $VCFgenome1)  { # genome1
+							$genome1Name = $name_record ;
+							if (exists $snp{$gene}{$position}) { # if polyploid SNP
+								$snp{$gene}{$position} = $snp{$gene}{$position}."\t".$snp_code."\t".$GT ;
+								
+								($code_snp,$ratio,$GT_poly,$DP_P,$code_G1,$GT_G1) = split(/\t/,$snp{$gene}{$position});
+								@recupAlleles = split(/\[/,$code_snp);
+								@recupAlleles = split(/\]/,$recupAlleles[1]);
+								($alRef,$alAltP) = split(/\//,$recupAlleles[0]);
+								@recupAlleles = split(/\[/,$code_G1);
+								@recupAlleles = split(/\]/,$recupAlleles[1]);
+								($alRef,$code_G1) = split(/\//,$recupAlleles[0]);
+								
+								#print "\nINFOS\n".$GT_poly."\t";
+								#print $GT_G1."\t";
+								#print $code_G1."\t";
+								#print $alAltP."\n";
+								if ((($GT_poly =~ /^0.1$/)||($GT_poly =~ /^1.0$/)) && (($GT_G1 =~ /^1.1$/)) && ($code_G1 eq  $alAltP)) {
+									$five{$gene}{$position} = $GT_poly ; 
+								}	
+							}
+							else { # if no polyploid SNP, key is empty
+								$snp{$gene}{$position} = $ref_allele."\t\t\t\t".$snp_code."\t".$GT ;
+							}
+						}
+						else { # genome2
+							if ($args[0] eq $VCFgenome2) {
+								$genome2Name = $name_record ;
+								if (exists $snp{$gene}{$position}) { # if polyploid SNP
+									$snp{$gene}{$position} = $snp{$gene}{$position}."\t".$snp_code."\t".$GT;
+								}
+								else { # if no polyploid SNP and no genome1, key is empty
+									$snp{$gene}{$position} = $ref_allele."\t\t\t\t".$ref_allele."\t\t".$snp_code."\t".$GT ;
+								}
+							}
+						}
+						if ($args[0] eq $VCFpolyploid2) { # polyploid2
+							$polyploid2Name = $name_record ;
+							if (exists $snp{$gene}{$position}) { # if polyploid SNP
+								$snp{$gene}{$position} = $snp{$gene}{$position}."\t".$snp_code."\t".$AD."\t".$GT."\t".$DP[1]."-".$FDP ;
+							}
+							else { # if no polyploid SNP, key is empty
+								$snp{$gene}{$position} = $ref_allele."\t\t\t\t".$snp_code."\t".$AD."\t".$GT."\t".$DP[1]."-".$FDP ;
+							}
+						}
+					}
+				}
+				else {
+					if ($quality_of_snp ne $pass) {  
+						$snp{$gene}{$position} = "LQ";
+					}
+				}
+			}
+			################################################################################################################################	
+		}
+		$previous_GT = $GT ;
+		$previous_position = $position ;
+	}
+	foreach my $s(sort(keys(%snp))){
+		my $ref = $snp{$s};
+		my %hash = %$ref;
+		foreach my $snip(keys(%hash)){
+			if ($snp{$s}{$snip} ne "LQ"){
+				$snp_final{$s}{$snip} = $snp{$s}{$snip} ;
+			}
+		}
+	}		
+	return (%snp_final) ;
+}
+
+sub intro_output {
+
+###########################################################
+#			ANALYSE - CREATION FICHIERS DE SORTIE		  #
+###########################################################
+
+# Ouverture des fichiers
+open (HTMLSNP, ">$SNP_html");
+open (TABSNP, ">$SNP_csv");
+open (HTMLCOUNT, ">$SNP_count");
+open (TABCOUNT, ">$SNP_count_csv");
+
+print HMTL "<html>\n";
+print HTMLCOUNT "<html>\n";
+
+print HTMLSNP "<head>\n";
+print HTMLCOUNT "<head>\n";
+
+#####################################################
+#                       CSS                         #
+#####################################################
+print HTMLSNP "<style type=\"text/css\">\n";
+
+print HTMLSNP "th {\n";
+print HTMLSNP " border-color:black;\n";
+print HTMLSNP " border-style:solid; \n";
+print HTMLSNP " border-width:3px;\n";
+print HTMLSNP " font-family: calibri;\n";
+print HTMLSNP " }\n";
+
+print HTMLSNP "body {text-align:center;}\n";
+
+print HTMLSNP "table {\n";
+print HTMLSNP " border-color:black;\n";
+print HTMLSNP " margin:auto;\n";
+print HTMLSNP " border-collapse: collapse;\n";
+print HTMLSNP " border-width:3px; \n";
+print HTMLSNP " border-style:solid; \n";
+print HTMLSNP " }\n";
+
+print HTMLSNP ".bord1 { \n";
+
+print HTMLSNP " font-size: 11pt;\n";
+print HTMLSNP " font-family: calibri;\n";
+print HTMLSNP " border-width:1px;\n";
+print HTMLSNP " border-top:3px;\n";
+print HTMLSNP " border-left:3px;\n";
+print HTMLSNP " border-right:3px;\n";
+print HTMLSNP " border-style:solid; \n";
+print HTMLSNP " border-color:black;\n";
+print HTMLSNP " background-color : #c6c3bd; \n";
+print HTMLSNP " }\n";
+
+print HTMLSNP ".bord2 { \n";
+
+print HTMLSNP " font-size: 11pt;\n";
+print HTMLSNP " font-family: calibri;\n";
+print HTMLSNP " border-width:1px;\n";
+print HTMLSNP " border-top:3px;\n";
+print HTMLSNP " border-left:3px;\n";
+print HTMLSNP " border-right:3px;\n";
+print HTMLSNP " border-style:solid; \n";
+print HTMLSNP " border-color:black;\n";
+print HTMLSNP " background-color : #c6c3ee; \n";
+print HTMLSNP " }\n";
+
+
+print HTMLSNP "td { \n";
+print HTMLSNP " border-color:black;\n";
+print HTMLSNP " }\n";
+
+print HTMLSNP ".tdm { \n";
+print HTMLSNP " border-color:black;\n";
+print HTMLSNP " border-left:3px;\n";
+print HTMLSNP " }\n";
+
+
+print HTMLSNP ".td1 { \n";
+print HTMLSNP " border-color:black;\n";
+print HTMLSNP " font-size: 11pt;\n";
+print HTMLSNP " font-family: calibri;\n";
+print HTMLSNP " border-width:1px;\n";
+print HTMLSNP " border-left:3px;\n";
+print HTMLSNP " border-right:3px;\n";
+print HTMLSNP " border-style:solid; \n";
+print HTMLSNP " background-color : #c6c3bd; \n";
+print HTMLSNP " }\n";
+
+print HTMLSNP ".td2 { \n";
+print HTMLSNP " border-color:black;\n";
+print HTMLSNP " font-size: 11pt;\n";
+print HTMLSNP " font-family: calibri;\n";
+print HTMLSNP " border-width:1px;\n";
+print HTMLSNP " border-left:3px;\n";
+print HTMLSNP " border-right:3px;\n";
+print HTMLSNP " border-style:solid; \n";
+print HTMLSNP " background-color : #c6c3ee; \n";
+print HTMLSNP " }\n";
+
+print HTMLSNP ".ted { \n";
+print HTMLSNP " border-color:black;\n";
+print HTMLSNP " font-weight : bold;\n";
+print HTMLSNP " background-color : #A19EED; \n";
+print HTMLSNP " }\n";
+
+print HTMLSNP ".ted2 { \n";
+print HTMLSNP " border-color:black;\n";
+print HTMLSNP " font-weight : bold;\n";
+print HTMLSNP " background-color : #9A9D7C; \n";
+print HTMLSNP " }\n";
+
+print HTMLSNP ".tedG { \n";
+print HTMLSNP " border-left:3px;\n";
+print HTMLSNP " border-style:solid; \n";
+print HTMLSNP " border-color:black;\n";
+print HTMLSNP " font-weight : bold;\n";
+print HTMLSNP " background-color : #A19EED; \n";
+print HTMLSNP " }\n";
+
+print HTMLSNP ".tedG2 { \n";
+print HTMLSNP " border-left:3px;\n";
+print HTMLSNP " border-style:solid; \n";
+print HTMLSNP " border-color:black;\n";
+print HTMLSNP " font-weight : bold;\n";
+print HTMLSNP " background-color : #9A9D7C; \n";
+print HTMLSNP " }\n";
+
+print HTMLSNP ".final { \n";
+print HTMLSNP " border-left:3px;\n";
+print HTMLSNP " border-right:0px;\n";
+print HTMLSNP " border-top:0px;\n";
+print HTMLSNP " border-bottom:0px;\n";
+print HTMLSNP " border-style:solid; \n";
+print HTMLSNP " border-color:black;\n";
+print HTMLSNP " background-color : white; \n";
+print HTMLSNP " }\n";
+
+print HTMLSNP ".auto-style1 {";
+print HTMLSNP "	font-weight: normal;";
+print HTMLSNP "	font-size: x-small;";
+print HTMLSNP "}";
+
+
+print HTMLSNP "</style>\n";
+
+print HTMLCOUNT "<style type=\"text/css\">\n";
+
+print HTMLCOUNT "th {\n";
+print HTMLCOUNT " border-style:solid; \n";
+print HTMLCOUNT " border-color:black;\n";
+print HTMLCOUNT " border-width:3px;\n";
+print HTMLCOUNT " font-family:calibri;\n";
+print HTMLCOUNT " }\n";
+
+print HTMLCOUNT "table {\n";
+print HTMLCOUNT " margin:auto;\n";
+print HTMLCOUNT " border-collapse: collapse;\n";
+print HTMLCOUNT " border-width:3px; \n";
+print HTMLCOUNT " border-style:solid; \n";
+print HTMLCOUNT " border-color:black;\n";
+print HTMLCOUNT " }\n";
+
+print HTMLCOUNT ".th {\n";
+print HTMLCOUNT " font-weight : normal;\n";
+print HTMLCOUNT " border-style:solid; \n";
+print HTMLCOUNT " border-color:white;\n";
+print HTMLCOUNT " border-width:0px;\n";
+print HTMLCOUNT " font-family:consolas;\n";
+print HTMLCOUNT " }\n";
+
+print HTMLCOUNT ".tab2 {\n";
+print HTMLCOUNT " margin:auto;\n";
+print HTMLCOUNT " border-collapse: collapse;\n";
+print HTMLCOUNT " border-style:solid; \n";
+print HTMLCOUNT " border-width:3px; \n";
+print HTMLCOUNT " border-color:white;\n";
+print HTMLCOUNT " }\n";
+
+print HTMLCOUNT ".tab {\n";
+print HTMLCOUNT " margin:auto;\n";
+print HTMLCOUNT " border-collapse: collapse;\n";
+print HTMLCOUNT " border-width:3px;\n ";
+print HTMLCOUNT " border-style:solid;\n ";
+print HTMLCOUNT " border-color:black;\n";
+print HTMLCOUNT " }\n";
+
+print HTMLCOUNT ".td1 { \n";
+print HTMLCOUNT " border-color:black;\n";
+print HTMLCOUNT " font-size: 11pt;\n";
+print HTMLCOUNT " font-family: calibri;\n";
+print HTMLCOUNT " border-width:1px;\n";
+print HTMLCOUNT " border-left:3px;\n";
+print HTMLCOUNT " border-right:3px;\n";
+print HTMLCOUNT " border-style:solid; \n";
+print HTMLCOUNT " background-color : #c6c3bd; \n";
+print HTMLCOUNT " }\n";
+
+print HTMLCOUNT ".td2 { \n";
+print HTMLCOUNT " border-color:black;\n";
+print HTMLCOUNT " font-size: 11pt;\n";
+print HTMLCOUNT " font-family: calibri;\n";
+print HTMLCOUNT " border-width:1px;\n";
+print HTMLCOUNT " border-left:3px;\n";
+print HTMLCOUNT " border-right:3px;\n";
+print HTMLCOUNT " border-style:solid; \n";
+print HTMLCOUNT " background-color : #c6c3ee; \n";
+print HTMLCOUNT " }\n";
+
+print HTMLCOUNT ".td3 { \n";
+print HTMLCOUNT " border-color:black;\n";
+print HTMLCOUNT " font-size: 11pt;\n";
+print HTMLCOUNT " font-weight: bold;\n";
+print HTMLCOUNT " font-family: calibri;\n";
+print HTMLCOUNT " border-width:3px;\n";
+print HTMLCOUNT " border-left:3px;\n";
+print HTMLCOUNT " border-right:3px;\n";
+print HTMLCOUNT " border-style:solid; \n";
+print HTMLCOUNT " background-color : white; \n";
+print HTMLCOUNT " }\n";
+
+
+print HTMLCOUNT ".ted { \n";
+print HTMLCOUNT " border-color:black;\n";
+print HTMLCOUNT " font-weight : bold;\n";
+print HTMLCOUNT " background-color : #A19EED; \n";
+print HTMLCOUNT " }\n";
+
+print HTMLCOUNT ".ted2 { \n";
+print HTMLCOUNT " border-color:black;\n";
+print HTMLCOUNT " font-weight : bold;\n";
+print HTMLCOUNT " background-color : #9A9D7C; \n";
+print HTMLCOUNT " }\n";
+
+print HTMLCOUNT ".ted3 { \n";
+print HTMLCOUNT " border-color:black;\n";
+print HTMLCOUNT " font-family: calibri;\n";
+print HTMLCOUNT " color: white;\n";
+print HTMLCOUNT " background-color : #333333; \n";
+print HTMLCOUNT " }\n";
+
+print HTMLCOUNT ".auto-style1 {";
+print HTMLCOUNT "	font-weight: normal;";
+print HTMLCOUNT "	font-size: x-small;";
+print HTMLCOUNT "}";
+
+print HTMLCOUNT "</style>\n";
+
+###################################################################################################################################################################################
+
+print HTMLSNP "</head>\n";
+
+print HTMLSNP "<center><img src=\"".$REPimages."SNiPloid7.png\" WIDTH=250></center>";
+if ($poly_poly_analysis == 0) {
+	print HTMLSNP "<center><img src=\"".$REPimages."arbre.png\" WIDTH=400></center>";
+}
+print HTMLSNP "<p>\n";
+#----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+print HTMLCOUNT "</head>\n";
+print HTMLCOUNT "<table><tr><td class=\"tab2\"><img src=\"".$REPimages."SNiPloid7.png\" WIDTH=250>";
+
+print HTMLCOUNT "<h3><font face=\"calibri\">Synthesis of the analysis</font></h3></td>";
+if ($poly_poly_analysis == 0) {
+	
+	print HTMLCOUNT "<td class=\"tab2\" width=50></td>";
+	print HTMLCOUNT "<td class=\"tab2\"><table border=\"1\" border cellpadding=\"5\" style=\"text-align:center;\">";
+	print HTMLCOUNT "<tr><th>Diploids</th><th>Polyploid</th><th>Identity</th><th>Interpretation</th></tr>";
+	print HTMLCOUNT "<tr><td>[1/2]</td><td>[1]</td><td>!=</td><td><img src=\"".$REPimages."1.png\" height=30></td></tr>";
+	print HTMLCOUNT "<tr><td>[1/2]</td><td>[2]</td><td>!=</td><td><img src=\"".$REPimages."2.png\" height=30></td></tr>";
+	print HTMLCOUNT "<tr><td>[1]</td><td>[1/2]</td><td>!=</td><td><img src=\"".$REPimages."3.png\" height=30></td></tr>";
+	print HTMLCOUNT "<tr><td>[2]</td><td>[1/2]</td><td>!=</td><td><img src=\"".$REPimages."4.png\" height=30></td></tr>";
+	print HTMLCOUNT "<tr><td>[1/2]</td><td>[1/2]</td><td>=</td><td><img src=\"".$REPimages."5v.png\" height=30></td></tr>";
+	print HTMLCOUNT "<tr><td>[1]</td><td>[2]</td><td>!=</td><td><img src=\"".$REPimages."other.png\" height=30></td></tr>";
+	print HTMLCOUNT "<tr><td>[1]</td><td>[2/3]</td><td>!=</td><td><img src=\"".$REPimages."other.png\" height=30></td></tr>";
+	print HTMLCOUNT "<tr><td>[1/2]</td><td>[2/3]</td><td>!=</td><td><img src=\"".$REPimages."other.png\" height=30></td></tr>";
+	print HTMLCOUNT "<tr><td>[1/2]</td><td>[1/2]</td><td>!=</td><td><img src=\"".$REPimages."other.png\" height=30><img src=\"".$REPimages."HG1.png\" height=30></td></tr>";
+	print HTMLCOUNT "<tr><td>[1]</td><td>[1/2]</td><td>!=</td><td><img src=\"".$REPimages."other.png\" height=30><img src=\"".$REPimages."HG1.png\" height=30></td></tr>";
+	print HTMLCOUNT "</table></td>";
+	print HTMLCOUNT "<td class=\"tab2\" width=50></td>";
+	print HTMLCOUNT "<td class=\"tab2\"><center><img src=\"".$REPimages."arbre.png\" WIDTH=400></center></td>";
+	#print HTMLCOUNT "<td><table border=\"1\" border cellpadding=\"5\" style=\"text-align:center;\"><tr><th>Diploids</th><th>Polyploid</th><th>Identity</th><th>Interpretation</th></tr></table></td>";
+	print HTMLCOUNT "</tr></table>";
+}
+print HTMLCOUNT "<p>\n";
+#----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
+print HTMLSNP "<body>\n";
+
+if ($poly_poly_analysis == 1) {
+	print HTMLSNP "<center><h3><font face=\"calibri\">Result of SNP comparison of two Polyploids</font></h3></center>";
+}
+else {
+	print HTMLSNP "<center><h3><font face=\"calibri\">Result of SNP comparison of a Polyploid and its Parental Genomes (Genome 1 and Genome 2 as reference)</font></h3></center>";
+}
+
+print HTMLSNP "<p>\n";
+
+# COLUMNS - HTMLSNP SNP VIEW
+print HTMLSNP "<table border=\"1\" border cellpadding=\"5\" style=\"text-align:center;\"> \n";
+print HTMLSNP "<tr>\n";
+print HTMLSNP "<th>Gene</th>"; 																						# (1) Gene
+print HTMLSNP "<th>Position</th>"; 																					# (2) Position
+
+if ($poly_poly_analysis == 1) {
+	print HTMLSNP "<th>REF<br></th>";
+	print HTMLSNP "<th>Polyploid 1<br><span class=\"auto-style1\">".$polyploidName."</span></th>"; 											# (3) Polyploid
+	print HTMLSNP "<th>Polyploid 2<br><span class=\"auto-style1\">".$polyploid2Name."</span></th>"; 										# (4) Polyploid 2
+	
+	print HTMLSNP "<th>[Filtered/Total] Depth<br>Polyploid 1<br><span class=\"auto-style1\">".$polyploidName."</span></th>"; 			# (8) Filtered Depth
+	print HTMLSNP "<th>[Filtered/Total] Depth<br>Polyploid 2<br><span class=\"auto-style1\">".$polyploid2Name."</span></th>"; 			# (9) Total Depth
+	
+	# Entęte fichier SNP VIEW TAB
+	print TABSNP "Gene\t";																							# (1) Gene
+	print TABSNP "Position\t";																						# (2) Position
+	print TABSNP "REF\t";																						# (2) Position
+	print TABSNP "Polyploid 1: ".$polyploidName."\t";																	# (3) Polyploid
+	print TABSNP "Polyploid 2: ".$genome1Name."\t";																	# (4) Genome 1
+	print TABSNP "P1 Filtered Depth\t";																				# (9) Filtered Depth
+	print TABSNP "P1 Total Depth\t";																					# (10) Total Depth
+	print TABSNP "P2 Filtered Depth\t";																				# (9) Filtered Depth
+	print TABSNP "P2 Total Depth\n";																					# (10) Total Depth
+}
+else {
+	 																		# (3) Reference
+	print HTMLSNP "<th>Polyploid<br><span class=\"auto-style1\">".$polyploidName."</span></th>"; 					# (3) Polyploid
+	print HTMLSNP "<th>Genome 1<br><span class=\"auto-style1\">".$genome1Name."</span></th>"; 						# (4) Genome 1
+	print HTMLSNP "<th>Genome 2<br><span class=\"auto-style1\">".$genome2Name."</span></th>"; 						# (5) Genome 2
+	print HTMLSNP "<th>Validation</th>";
+	print HTMLSNP "<th>Ratio (%)<br><span class=\"auto-style1\">".$genome2Name." : ".$genome1Name."</span></th>";	# (7) Ratio
+	print HTMLSNP "<th>Filtered<br>Depth</th>"; 																	# (8) Filtered Depth
+	print HTMLSNP "<th>Total<br>Depth</th>"; 																		# (9) Total Depth
+	print HTMLSNP "<th>SNP Class</th>"; 																		# (9) Total Depth
+	
+	# Entęte fichier SNP VIEW TAB
+	print TABSNP "Gene\t";																							# (1) Gene
+	print TABSNP "Position\t";																						# (2) Position
+	print TABSNP "Polyploid: ".$polyploidName."\t";																	# (3) Polyploid
+	print TABSNP "Genome 1: ".$genome1Name."\t";																	# (4) Genome 1
+	print TABSNP "Genome 2: ".$genome2Name."\t";																	# (5) Genome 2
+	print TABSNP "Validation\t";																					# (6) Validation
+	print TABSNP "Ratio (%) ".$genome2Name."\t";																	# (7) Ratio Genome 1
+	print TABSNP "Ratio (%) ".$genome1Name."\t";																	# (8) Ratio Genome 2
+	print TABSNP "Filtered Depth\t";																				# (9) Filtered Depth
+	print TABSNP "Total Depth\t";																					# (10) Total Depth
+	print TABSNP "SNP Class\n";																					# (10) Total Depth
+}
+print HTMLSNP "</tr>\n";
+
+
+
+#----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+print HTMLCOUNT "<body>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n";
+print HTMLCOUNT "<p>\n";
+# COLUMNS - HTML SYNTHESIS
+print HTMLCOUNT "<table border=\"1\" border cellpadding=\"5\" style=\"text-align:center;\"> \n";
+print HTMLCOUNT "<tr>\n";
+print HTMLCOUNT "<th>Gene</th>";																								# (1) Gene
+print HTMLCOUNT "<th>Interval Size<br>Analysed (pb)</th>";																		# (2) Interval Size Analyzed
+print HTMLCOUNT "<th>nb Positions<br>with SNP</th>";	
+if ($poly_poly_analysis == 0) {																									# (3) nB Positions With SNP
+	print HTMLCOUNT "<th><img src=\"".$REPimages."1.png\" height=30></th>";														# (4) [1]
+	print HTMLCOUNT "<th><img src=\"".$REPimages."2.png\" height=30></th>";														# (5) [2]
+	print HTMLCOUNT "<th><img src=\"".$REPimages."3ou4.png\" height=30></th>";													# (6) [3 or 4]
+	print HTMLCOUNT "<th><img src=\"".$REPimages."3.png\" height=30></th>";													# (6) [3 or 4]
+	print HTMLCOUNT "<th><img src=\"".$REPimages."4.png\" height=30></th>";													# (6) [3 or 4]
+	print HTMLCOUNT "<th><img src=\"".$REPimages."5v.png\" height=30></th>";														# (11) [5]
+	print HTMLCOUNT "<th><img src=\"".$REPimages."other.png\" height=30></th>";																							# (7) [other]
+	print HTMLCOUNT "<th><img src=\"".$REPimages."HG1.png\" height=30><br><span class=\"auto-style1\">".$genome1Name."</span></th>";	# (8) Heterozygosity For Genome 1	
+	print HTMLCOUNT "<th>SNP Intra-Diploids <br><img src=\"".$REPimages."5v.png\" height=30> + <img src=\"".$REPimages."1.png\" height=30> + <img src=\"".$REPimages."2.png\" height=30> + <img src=\"".$REPimages."other.png\" height=30></th>";																					# (9) SNP Diploids
+	print HTMLCOUNT "<th>SNP Intra-Polyploid <br> <img src=\"".$REPimages."5v.png\" height=30> + <img src=\"".$REPimages."3ou4.png\" height=30> + <img src=\"".$REPimages."other.png\" height=30></th>";																					# (10) SNP Polyploid
+	print HTMLCOUNT "<th>Ratio (%)<br><span class=\"auto-style1\">".$genome2Name." : ".$genome1Name."</span></th>\n\n\n\n\n\n\n\n";				# (12) Ratio %
+	
+	print HTMLCOUNT "</tr>\n";
+# Entęte HTMLSNP Synthesis
+	print TABCOUNT "Gene\t";																									# (1) Gene
+	print TABCOUNT "Interval Size Analysed (pb)\t";																				# (2) Interval Size Analysed (pb)
+	print TABCOUNT "nb SNP positions\t";																						# (3) nb SNP positions
+	print TABCOUNT "1\t";																										# (4) [1]
+	print TABCOUNT "2\t";																										# (5) [2]
+	print TABCOUNT "3 or 4\t";																									# (6) [3 or 4]
+	print TABCOUNT "3\t";																										# (6) [3 or 4]
+	print TABCOUNT "4\t";																										# (6) [3 or 4]
+	print TABCOUNT "5\t";																										# (11) [5]
+	print TABCOUNT "other\t";																									# (7) [other]
+	print TABCOUNT "SNP Heterozygosity Genome 1\t";																				# (8) SNP Heterozygosity Genome 1
+	print TABCOUNT "SNP Diploids\t";																							# (9) SNP Diploids
+	print TABCOUNT "SNP Polyploid\t";																							# (10) SNP Polyploid
+	print TABCOUNT "Ratio (%) ".$genome2Name."\t";																				# (12) Ratio (%) Genome 2
+	print TABCOUNT "Ratio (%) ".$genome1Name."\n";	 																			# (13) Ratio (%) Genome 1
+}
+else {
+	print HTMLCOUNT "<th>P1 = P2<br><span style=\"font-weight: normal\"><span style=\"background:#DE8A8A\">[1/2]</span> vs <span style=\"background:#DE8A8A\">[1/2]</span></span></th>";					# (4) [1]
+	print HTMLCOUNT "<th>P1 = P2<br><span style=\"font-weight: normal\"><span style=\"background:#5CAAD2\">[1]</span> vs <span style=\"background:#5CAAD2\">[1]</span></span></th>";							# (4) [1]
+	print HTMLCOUNT "<th>SNP<br>interpolyploids<br>P1 &ne; P2<br><span style=\"auto-style1\"></span></th>";			# (4) [1] #DE8A8A
+	print HTMLCOUNT "<th>P1 &ne; P2<br>2 Alleles<br><span style=\"font-weight: normal\"><span style=\"background:#5CAAD2\">[1]</span> vs <span style=\"background:#5CAAD2\">[2]</span></span></th>";		# (4) [1]
+	print HTMLCOUNT "<th>P1 &ne; P2<br>2 Alleles<br><span style=\"font-weight: normal\"><span style=\"background:#DE8A8A\">[1/2]</span> vs <span style=\"background:#5CAAD2\">[1]</span> or <span style=\"background:#5CAAD2\">[2]</span></span></th>";		# (4) [1]
+	print HTMLCOUNT "<th>P1 &ne; P2<br>3 Alleles<br><span style=\"font-weight: normal\"><span style=\"background:#DE8A8A\">[1/2]</span> vs <span style=\"background:#5CAAD2\">[3]</span></span></th>";						# (4) [1]
+	print HTMLCOUNT "<th>P1 &ne; P2<br>3 Alleles<br><span style=\"font-weight: normal\"><span style=\"background:#DE8A8A\">[1/2]</span> vs <span style=\"background:#DE8A8A\">[1/3]</span></span></th>";				# (4) [1]
+	print HTMLCOUNT "<th>SNP<br>intra P1<br><span class=\"auto-style1\">".$polyploidName."</span></th>";						# (4) [1]
+	print HTMLCOUNT "<th>SNP<br>intra P2<br><span class=\"auto-style1\">".$polyploid2Name."</span></th>";						# (4) [1] 
+	
+	print HTMLCOUNT "</tr>\n";
+		# Entęte HTMLSNP Synthesis
+	print TABCOUNT "Gene\t";									# (1) Gene
+	print TABCOUNT "Interval Size Analysed (pb)\t";				# (2) Interval Size Analysed (pb)
+	print TABCOUNT "nb positions with SNP\t";					# (3) nb SNP positions
+	print TABCOUNT "P1 = P2 [1/2] vs [1/2]\t";					# (4) [1]
+	print TABCOUNT "P1 = P2 [1] vs [1]\t";						# (4) [1]
+	print TABCOUNT "SNP interpolyploids P1 diff P2\t";			# (4) [1] #DE8A8A
+	print TABCOUNT "P1 diff P2 2 Alleles [1] vs [2]\t";			# (4) [1]
+	print TABCOUNT "P1 diff P2 2 Alleles [1/2] vs [1] or [2]\t";	# (4) [1]
+	print TABCOUNT "P1 diff P2 3 Alleles [1/2] vs [3]\t";			# (4) [1]
+	print TABCOUNT "P1 diff P2 3 Alleles [1/2] vs [1/3]\t";		# (4) [1]
+	print TABCOUNT "SNP intra P1 ".$polyploidName."\t" ;				# (4) [1]
+	print TABCOUNT "SNP intra P2 ".$polyploid2Name."\n" ;			# (4) [1]
+
+}
+#----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+$ligneInter = 0 ;
+$totalSNP = 0 ;
+$totalSize = 0 ;
+
+$total11 = 0 ;
+$total22 = 0 ;
+$total3ou4 = 0 ;
+$total5 = 0 ;
+$total512 = 0 ;
+$total534 = 0 ;
+$totalOther = 0 ;
+$totalGenome2 = 0 ;
+
+$total3 = 0 ;
+$total4 = 0 ;
+
+$totalNbPolyploid1 = 0 ;				# SNP heterozygosity for P1
+$totalNbPolyploid2 = 0 ;				# SNP heterozygosity for P2
+$totalNbCommuns =  0 ;					# SNP heterozygosity [P1] = [P2]
+$totalNbCommunsHomo = 0 ;			# SNP homozygosity [P1] = [P2]
+$totalNbDifferent =  0 ;				# [P1] ne [P2]
+$totalNbHomoDiff =  0 ;		# Example : P1 = [A] ; P2 = [G]
+$totalNbAlleleCommun =  0 ;		# Example : P1 = [A/G] ; P2 = [A]
+$totalAlleleDifferent =  0 ;	# Example : P1 = [A/G] ; P2 = [C] or [T]
+$totalAlleleCommunH =  0 ;		# Example : P1 = [A/G] ; P2 = [A/C]
+		
+}
+
+sub int_output { # intern reference
+	
+	foreach my $s(sort(keys(%snp_final))){
+		#######################################
+		if ($ligneInter == 0) {
+			print HTMLSNP "<tr class=\"bord1\">\n";
+			print HTMLCOUNT "<tr class=\"td1\ border-width =\"3px\">\n";
+		}
+		else {
+			print HTMLSNP "<tr class=\"bord2\">\n";
+			print HTMLCOUNT "<tr class=\"td2\">\n";
+		}
+		#######################################
+	
+		my $ref = $snp_final{$s};
+		my %hash = %$ref;
+		$taille = keys(%hash);
+		
+		# taille de la ligne gene
+		print HTMLSNP "<td  rowspan=\"".$taille."\"><b>".$s."</b></td>";
+		
+		$ligneOK = 0 ;
+		
+		$nbPolyploid = 0;
+		$nbGenomes = 0 ;
+		$nbGenome2 = 0 ;  		# SNP chez les diploides dans un cas "Other" avec genome 1 heterozygote
+		$nbCommuns = 0;
+		$nbPoly_only = 0 ;
+		$nbSub_only = 0 ;
+		
+		$case5 = 0 ;
+		$case1 = 0 ;
+		$case2 = 0 ;
+		$case3ou4 = 0;
+		$case3 = 0 ;
+		$case4 = 0 ;
+		$caseOther = 0; 
+		$casePolyplother = 0 ;	# SNP chez le polyploide dans un cas "Other"
+		$caseDiplother = 0 ; 	# SNP chez les diploides dans un cas "Other"
+	
+	
+	
+		# Moyenne Ponderee
+		$moyenneSNPindep1 = 0 ;
+		$moyenneSNPindep2 = 0 ;
+		
+		@tabTrie = sort ({ $a <=> $b }keys %hash);
+
+		#foreach my $c(sort ({$hash{$a} <=> $hash{$b}} keys %hash)) {
+		foreach my $c(@tabTrie) {
+			if ($ligneOK == 1) {
+				if ($ligneInter == 0) {
+					print HTMLSNP "<tr class=\"td1\">\n";
+				}
+				else {
+					print HTMLSNP "<tr class=\"td2\">\n";
+				}
+			}
+			################################################################################
+			### Recuperation des informations ###
+			
+			($code_snp,$ratio,$GT_poly,$DP_P,$code_G1,$GT_G1) = split(/\t/,$snp_final{$s}{$c});
+			($DP_P, $FDP) = split(/-/, $DP_P);
+			#print STDOUT "\n($code_snp:$GT_poly) - ($code_G1:$GT_G1)" ;
+			if ($GT_poly ne "") { # Polyploide = [0.0] ou [0.1] ou [1.1]
+				@recupAlleles = split(/\[/,$code_snp);
+				@recupAlleles = split(/\]/,$recupAlleles[1]);
+				($alRef,$alAltP) = split(/\//,$recupAlleles[0]);
+				# Attribution des alleles au polyploide si pas de SNP
+				if ($GT_poly =~ /^0.0$/) { $code_snp = $alRef ; }
+				if ($GT_poly =~ /^1.1$/) { $code_snp = $alAltP ; }
+				# Attribution des alleles au genome 1 si pas de SNP
+				if (($GT_G1 eq "") || ($GT_G1 =~ /^0.0$/)) { $code_G1 = $alRef ; }
+				if ($GT_G1 =~ /^1.1$/) {
+					@recupAlleles = split(/\[/,$code_G1);
+					@recupAlleles = split(/\]/,$recupAlleles[1]);
+					($alRef,$alAlt) = split(/\//,$recupAlleles[0]);
+					$code_G1 = $alAlt;
+				}
+			}
+			elsif ($GT_G1 ne "") { # pas de SNP polyploide dans le fichier 1 (fichiers non mergés) -> equivalent de [0.0]
+				@recupAlleles = split(/\[/,$code_G1);
+				@recupAlleles = split(/\]/,$recupAlleles[1]);
+				($alRef,$alAlt) = split(/\//,$recupAlleles[0]);
+				# Attribution des Alleles au genome 1
+				if ($GT_G1 =~ /^1.1$/) { $code_G1 = $alAlt ; }
+				if ($GT_G1 =~ /^0.0$/) { $code_G1 = $alRef ; }
+			}
+
+			################################################################################
+			$noSNPpoly = "ok" ;
+			
+			
+			
+			
+			if ((($GT_poly =~ /^0.1$/)||($GT_poly =~ /^1.0$/)) && (($GT_G1 =~ /^1.1$/)) && ($code_G1 eq  $alAltP)) {
+				if ($ligneInter == 0) {
+					print HTMLSNP "<td class=\"tedG2\">".$c."</td>";
+					print HTMLSNP "<td class=\"ted2\">".$code_snp."</td>";
+					print HTMLSNP "<td class=\"ted2\">".$code_G1."</td>";
+					print HTMLSNP "<td class=\"ted2\">".$alRef."</td>"; #REF
+					print HTMLSNP "<td class=\"ted2\">OK</td>";
+					
+				}
+				else {
+					print HTMLSNP "<td class=\"tedG\">".$c."</td>";
+					print HTMLSNP "<td class=\"ted\">".$code_snp."</td>";
+					print HTMLSNP "<td class=\"ted\">".$code_G1."</td>";
+					print HTMLSNP "<td class=\"ted\">".$alRef."</td>"; #REF
+					print HTMLSNP "<td class=\"ted\">OK</td>";
+				}
+			}
+			else {
+				print HTMLSNP "<td style=\"border-left:3px solid black\">".$c."</td>";
+				print HTMLSNP "<td>".$code_snp."</td>";
+				print HTMLSNP "<td>".$code_G1."</td>";
+				print HTMLSNP "<td>".$alRef."</td>"; #REF
+				print HTMLSNP "<td>not OK</td>";
+			}	
+			print TABSNP $s."\t".$c."\t".$code_snp."\t".$code_G1."\t".$alRef."\t";		
+	
+	
+	
+			$tailleImg = 35 ;
+			
+			
+			if (($GT_poly =~ /^0.1$/)||($GT_poly =~ /^1.0$/)) { #	SNP POLYPLOID - [0/1] [0|1] [1|0]
+				# Moyenne du Ratio -----------------------------------
+				($sub1,$sub2) = split(",",$ratio);
+				$somme = $sub1 + $sub2 ;
+
+				if ($somme == 0 ) {
+					print STDOUT "ERROR : Cannot calculate ratio for ".$gene." [pos:".$position."]\n\"".$line."\"";
+					die ("ERROR : Cannot calculate ratio for ".$gene." [pos:".$position."]\n\"".$line."\"");
+				}
+				else {
+					$ratio = ($sub1/($sub1+$sub2))*100;
+					$ratio = sprintf("%.0f", $ratio);
+				}
+				#$ratio = sprintf("%.0f", $ratio);
+				$ratio2 = 100-$ratio ;
+
+				#-----------------------------------------------------
+				if (($GT_G1 =~ /^1.1$/)){ # Pas de SNP Genome1  [1/1] [1|1] SNP entre genome1 et genome2
+					if ($code_G1 eq $alAltP) {							# 5
+						$moyenneSNPindep1 = $moyenneSNPindep1 + $ratio ;
+						$moyenneSNPindep2 = $moyenneSNPindep2 + $ratio2 ;
+						if ($ligneInter == 0) {
+							print HTMLSNP "<td class=\"ted2\">".$ratio.":".$ratio2."<br>";							# RATIO %
+							print HTMLSNP "<img src=\"".$REPimages."r1.png\" height=10 width=".$ratio.">";			# IMG RATIO 1
+							print HTMLSNP "<img src=\"".$REPimages."r2.png\" height=10 width=".$ratio2."></td>";	# IMG RATIO 2
+							print HTMLSNP "<td class=\"ted2\">".$FDP."</td>";
+							print HTMLSNP "<td class=\"ted2\">".$DP_P."</td>";
+							print HTMLSNP "<td class=\"final\"><img src=\"".$REPimages."5v.png\" height=".$tailleImg."></td>";
+							
+						}
+						else {
+							print HTMLSNP "<td class=\"ted\">".$ratio.":".$ratio2."<br>";							# RATIO %
+							print HTMLSNP "<img src=\"".$REPimages."r1.png\" height=10 width=".$ratio.">";			# IMG RATIO 1
+							print HTMLSNP "<img src=\"".$REPimages."r2.png\" height=10 width=".$ratio2.">";			# IMG RATIO 2
+							print HTMLSNP "<td class=\"ted\">".$FDP."</td>";
+							print HTMLSNP "<td class=\"ted\">".$DP_P."</td>";
+							print HTMLSNP "<td class=\"final\"><img src=\"".$REPimages."5v.png\" height=".$tailleImg."></td>";
+
+						}
+						print TABSNP "OK\t".$ratio."\t".$ratio2."\t".$FDP."\t".$DP_P."\t5";
+						$case5 ++ ;
+					}
+					else { # Other 0.1 - 1.1 (O GA A)					# Other [SNP DIPLO + SNP POLY]
+						print HTMLSNP "<td>#</td><td>#</td><td>#</td>";
+						print HTMLSNP "<td class=\"final\"><img src=\"".$REPimages."other.png\" height=".$tailleImg."></td>";
+						print TABSNP "not OK\t#\t#\t#\t#\tother";
+						$caseOther ++ ;
+						$casePolyplother ++ ;
+						$caseDiplother ++ ;
+					}
+				}
+				else {
+					if (($GT_G1 =~ /^0.0$/)||($GT_G1 =~ /^$/)){			# 3 ou 4
+	
+						###############################################################################################
+						# PHASING
+						###############################################################################################
+						$phasedornot = 0 ;
+						my $is_3 = 0;
+						my $is_4 = 0;
+						if ($GT_poly =~/\|/){
+							
+							#print STDOUT $s."\n";
+							my $ref = $phased_regions{$s};
+							my %hash = %$ref ;
+							foreach my $num_reg(sort(keys(%hash))){
+								if  (exists $phased_regions{$s}{$num_reg}{$c}) {
+									$genotype = $phased_regions{$s}{$num_reg}{$c} ;
+									my $ref2 = $phased_regions{$s}{$num_reg};
+									my %hash2 = %$ref2 ;
+									foreach my $pos(sort(keys(%hash2))){
+										if (exists $five{$s}{$pos}){
+											if (($five{$s}{$pos} =~ /0.1/ && $GT_poly =~ /0.1/) or ($five{$s}{$pos} =~ /1.0/ && $GT_poly =~ /1.0/)){
+												print HTMLSNP "<td class=\"ted2\">".$ratio.":".$ratio2."<br>";                                                  # RATIO %
+					                                                        print HTMLSNP "<img src=\"".$REPimages."r1.png\" height=10 width=".$ratio.">";                  # IMG RATIO 1
+                                        					                print HTMLSNP "<img src=\"".$REPimages."r2.png\" height=10 width=".$ratio2."></td>";    # IMG RATIO 2
+					                                                        print HTMLSNP "<td class=\"ted2\">".$FDP."</td>";
+                                        					                print HTMLSNP "<td class=\"ted2\">".$DP_P."</td>";
+												print HTMLSNP "<td class=\"final\"><img src=\"".$REPimages."3.png\" height=".$tailleImg."></td>";
+												$case3 ++ ;
+												$is_3 = 1;
+											}
+											else {
+												print HTMLSNP "<td class=\"ted2\">".$ratio.":".$ratio2."<br>";                                                  # RATIO %
+                                                                                                print HTMLSNP "<img src=\"".$REPimages."r1.png\" height=10 width=".$ratio.">";                  # IMG RATIO 1
+                                                                                                print HTMLSNP "<img src=\"".$REPimages."r2.png\" height=10 width=".$ratio2."></td>";    # IMG RATIO 2
+                                                                                                print HTMLSNP "<td class=\"ted2\">".$FDP."</td>";
+                                                                                                print HTMLSNP "<td class=\"ted2\">".$DP_P."</td>";
+
+												print HTMLSNP "<td class=\"final\"><img src=\"".$REPimages."4.png\" height=".$tailleImg."></td>";
+												$case4 ++ ;
+												$is_4 = 1;
+											}
+											$phasedornot = 1 ;
+											last ;
+										}
+									}
+								}
+							}
+							#print STDOUT "\n";		
+						}
+						if ($phasedornot == 0) {
+							print HTMLSNP "<td class=\"ted2\">".$ratio.":".$ratio2."<br>";                                                  # RATIO %
+                                                        print HTMLSNP "<img src=\"".$REPimages."r1.png\" height=10 width=".$ratio.">";                  # IMG RATIO 1
+                                                        print HTMLSNP "<img src=\"".$REPimages."r2.png\" height=10 width=".$ratio2."></td>";    # IMG RATIO 2
+                                                        print HTMLSNP "<td class=\"ted2\">".$FDP."</td>";
+                                                        print HTMLSNP "<td class=\"ted2\">".$DP_P."</td>";
+							print HTMLSNP "<td class=\"final\"><img src=\"".$REPimages."3ou4.png\" height=".$tailleImg."></td>";
+							$case3ou4 ++ ;
+						}
+						
+						###############################################################################################
+						
+	
+	
+						print TABSNP "not OK\t".$ratio."\t".$ratio2."\t".$FDP."\t".$DP_P."\t";	
+						if ($is_3){print TABSNP "3";}
+						elsif ($is_4){print TABSNP "4";}
+						else{print TABSNP "3or4";}
+						
+					}
+					else { #0/1
+										# heterozygosity G1
+						print HTMLSNP "<td>#</td><td>#</td><td>#</td>";
+						print HTMLSNP "<td class=\"final\"><img src=\"".$REPimages."other.png\" height=".$tailleImg."><img src=\"".$REPimages."HG1.png\" height=".$tailleImg."></td>";
+						print TABSNP "not OK\t#\t#\t#\t#\tother,heterozygosity for genome 1";
+						$nbGenome2 ++ ;
+						$casePolyplother ++ ;
+						$caseOther ++ ;
+					}
+				}
+			}
+				
+			if (($GT_poly =~ /^1.1$/)) { #	POLYPLOID NE REFERENCE - [1/1]
+				if ($GT_G1 && ($GT_G1 !~ /^0.0$/) && ($GT_G1 !~ /^1.1$/)){ # SNP Genome1 intra [0/1] [0|1] [1|0]
+					print HTMLSNP "<td>#</td><td>#</td><td>#</td>";
+					print HTMLSNP "<td class=\"final\"><img src=\"".$REPimages."other.png\" height=".$tailleImg."><img src=\"".$REPimages."HG1.png\" height=".$tailleImg."></td>";	
+					print TABSNP "not OK\t#\t#\t#\t#\tother,heterozygosity for genome 1";
+					$nbGenome2 ++ ;
+					$caseOther ++ ;
+				}
+				elsif (!$GT_G1){ # POLYPLOID A/A DIPLOIDS T/T
+					print HTMLSNP "<td>#</td><td>#</td><td>#</td>";
+					print HTMLSNP "<td class=\"final\"><img src=\"".$REPimages."other.png\" height=".$tailleImg."></td>";	
+					print TABSNP "not OK\t#\t#\t#\t#\tother";
+					$caseOther ++ ;
+				}
+				
+				else { # Pas de SNP Genome1 [0/0] [0|0] [1/1] [1|1] SNP entre genome1 et genome2
+					if ($GT_G1 =~ /^0.0$/){									# Other [NOTHING]
+						print HTMLSNP "<td>#</td><td>#</td><td>#</td>";
+						print HTMLSNP "<td class=\"final\"><img src=\"".$REPimages."other.png\" height=".$tailleImg."></td>";
+						print TABSNP "not OK\t#\t#\t#\t#\tother";
+						$caseOther ++ ;
+					}
+					else {
+						if ($code_G1 eq $alAltP) {							# 2
+							print HTMLSNP "<td>#</td><td>#</td><td>#</td>";
+							print HTMLSNP "<td class=\"final\"><img src=\"".$REPimages."2.png\" height=".$tailleImg."></td>";
+							print TABSNP "not OK\t#\t#\t#\t#\t2";
+							$case2 ++ ;
+						}
+						else {											# Other [SNP DIPLO]
+							print HTMLSNP "<td>#</td><td>#</td><td>#</td>";
+							print HTMLSNP "<td class=\"final\"><img src=\"".$REPimages."other.png\" height=".$tailleImg."></td>";
+							print TABSNP "not OK\t#\t#\t#\t#\tother";
+							$caseOther ++ ;
+							$caseDiplother ++ ;
+						}
+					}
+				}
+			}
+			
+			if (($GT_poly =~ /^0.0$/)||($GT_poly =~ /^$/)) { #POLYPLOID == REFERENCE - [0|0]
+				####################################
+				if (($GT_G1 !~ /^0.0$/) && ($GT_G1 !~ /^1.1$/)){ # SNP Genome1 intra [0/1] [0|1] [1|0]
+					print HTMLSNP "<td>#</td><td>#</td><td>#</td>";
+					print HTMLSNP "<td class=\"final\"><img src=\"".$REPimages."other.png\" height=".$tailleImg."><img src=\"".$REPimages."HG1.png\" height=".$tailleImg."></td>";
+					print TABSNP "not OK\t#\t#\t#\t#\tother,heterozygosity for genome 1";
+					$nbGenome2 ++ ;
+					$caseOther++;
+				}
+				else { # Pas de SNP Genome1 [0/0] [0|0] [1/1] [1|1] SNP entre genome1 et genome2
+					if ($GT_G1 =~ /^1.1$/){
+						print HTMLSNP "<td>#</td><td>#</td><td>#</td>";
+						print HTMLSNP "<td class=\"final\"><img src=\"".$REPimages."1.png\" height=".$tailleImg."></td>";
+						print TABSNP "not OK\t#\t#\t#\t#\t1";
+						$case1 ++ ;
+					}	
+				}	
+			}
+		
+			print TABSNP "\n";
+			print HTMLSNP "</tr>\n";
+			$ligneOK = 1 ;
+		}
+	
+		if ($ligneInter == 0) {	
+			print HTMLCOUNT "<td class=\"ted2\" style=\"border-right:3px solid black\">".$s."</td>";
+		}
+		else {
+			print HTMLCOUNT "<td class=\"ted\" style=\"border-right:3px solid black\">".$s."</td>";
+		}
+		print TABCOUNT $s."\t";	
+			
+		#######################################
+		if ($ligneInter == 0) { $ligneInter = 1 ; }
+		else { $ligneInter = 0 ; }
+		#######################################
+		
+		# Calcul des intervalles #
+		##########################
+		$taille_totale = 0 ;
+		my $ref = $intervalle2{$s};
+		my %hash = %$ref;
+		
+		foreach my $interval(keys(%hash)){
+			my @pos = split(/-/,$interval);
+			$taille_inter = $pos[1]-$pos[0]+1 ;
+			$taille_totale = $taille_totale + $taille_inter;
+		}
+		$total1 = $case5 + $case1 + $case2 + $caseDiplother + $nbGenome2;
+		$total2 = $case5 + $case3ou4 + $casePolyplother;
+		
+
+		
+		# SYNTHESIS
+		print HTMLCOUNT "<td>".$taille_totale."</td><td style=\"border-left:3px solid black\">".$taille."</td></td>";	
+		print HTMLCOUNT "<td style=\"border-left:3px solid black\">";
+		print HTMLCOUNT $case1."</td><td>".$case2."</td><td>".$case3ou4."</td><td>";
+		print HTMLCOUNT $case3."</td><td>".$case4."</td><td>".$case5."</td><td>";
+		print HTMLCOUNT $caseOther."</td><td style=\"border-left:3px solid black\">".$nbGenome2."</td><td style=\"border-left:3px solid black\">".$total1."</td>";
+		print HTMLCOUNT "<td style=\"border-left:3px solid black\">".$total2."</td>";
+		print TABCOUNT $taille_totale."\t".$taille."\t";
+		print TABCOUNT $case1."\t".$case2."\t".$case3ou4."\t".$case3."\t".$case4."\t".$case5."\t".$caseOther."\t".$nbGenome2."\t".$total1."\t".$total2."\t";
+
+		$nbTotGenesAna ++ ;
+	
+		if ($case5 != 0) {
+			$nbTotGenesVal ++ ;
+			if ($ligneInter == 1) {	
+				print HTMLCOUNT "<td class=\"ted2\" style=\"border-left:3px solid black\">";
+				print HTMLCOUNT sprintf("%.0f", $moyenneSNPindep1/$case5).":".sprintf("%.0f", $moyenneSNPindep2/$case5)."<br>";
+				print HTMLCOUNT "<img src=\"".$REPimages."r1.png\" height=10 width=".sprintf("%.0f", $moyenneSNPindep1/$case5).">";
+				print HTMLCOUNT "<img src=\"".$REPimages."r2.png\" height=10 width=".sprintf("%.0f", $moyenneSNPindep2/$case5)."></td>";
+			}
+			else {
+				print HTMLCOUNT "<td class=\"ted\" style=\"border-left:3px solid black\">";
+				print HTMLCOUNT sprintf("%.0f", $moyenneSNPindep1/$case5).":".sprintf("%.0f", $moyenneSNPindep2/$case5)."<br>";
+				print HTMLCOUNT "<img src=\"".$REPimages."r1.png\" height=10 width=".sprintf("%.0f", $moyenneSNPindep1/$case5).">";
+				print HTMLCOUNT "<img src=\"".$REPimages."r2.png\" height=10 width=".sprintf("%.0f", $moyenneSNPindep2/$case5)."></td>";
+			}
+			print TABCOUNT sprintf("%.0f", $moyenneSNPindep1/$case5)."\t".sprintf("%.0f", $moyenneSNPindep2/$case5)."\t";	
+		}
+		else {
+			print HTMLCOUNT "<td style=\"border-left:3px solid black\"></td>";
+			print TABCOUNT "\t";
+		}
+		print HTMLCOUNT "</tr>";
+		print TABCOUNT "\n";
+		
+		$totalSize = $totalSize + $taille_totale ;
+		$totalSNP = $totalSNP + $taille ;
+		$total11 = $total11 + $case1 ;
+		$total22 = $total22 + $case2 ;
+		$total3ou4 = $total3ou4 + $case3ou4 ;
+		$total3 = $total3 + $case3 ;
+		$total4 = $total4 + $case4 ;
+		$total5 = $total5 + $case5 ;
+		$total512 = $total512 + $total1 ;
+		$total534 = $total534 + $total2 ;
+		$totalOther = $totalOther + $caseOther ;
+		$totalGenome2 = $totalGenome2 + $nbGenome2 ;
+	}
+	########## MODIF DERNIERE MINUTE ################"
+	print HTMLCOUNT "<tr class=\"td3\">\n<td>";
+
+	print HTMLCOUNT $nbTotGenesAna."<td style=\"border-left:3px solid black\">";
+	print HTMLCOUNT $totalSize."</td><td style=\"border-left:3px solid black\">";
+	print HTMLCOUNT $totalSNP."</td><td style=\"border-left:3px solid black\">";
+	print HTMLCOUNT $total11."</td><td>";
+	print HTMLCOUNT $total22."</td><td>";
+	print HTMLCOUNT $total3ou4."</td><td>";
+	print HTMLCOUNT $total3."</td><td>";
+	print HTMLCOUNT $total4."</td><td>";
+	print HTMLCOUNT $total5."</td><td>";
+	print HTMLCOUNT $totalOther."</td><td style=\"border-left:3px solid black\">";
+	print HTMLCOUNT $totalGenome2."</td><td style=\"border-left:3px solid black\">";
+	print HTMLCOUNT $total512."</td><td style=\"border:3px solid black\">";
+	print HTMLCOUNT $total534."</td><td style=\"border:3px solid black\">";
+	
+	print HTMLCOUNT $nbTotGenesVal."</td>";
+
+	print HTMLCOUNT "</tr>";
+
+
+	print TABCOUNT "$nbTotGenesAna\t$totalSize\t$totalSNP\t$total11\t$total22\t$total3ou4\t$total3\t$total4\t$total5\t$totalOther\t$totalGenome2\t$total512\t$total534\t";
+	print TABCOUNT "\n";
+
+	####################################################				
+	print HTMLSNP "</table>\n";
+	print HTMLSNP "</html>\n";
+	close HTMLSNP ;
+
+	print HTMLCOUNT "</table>\n";
+	print HTMLCOUNT "</html>\n";
+	close HTMLCOUNT ;
+
+	close TABSNP;
+	close TABCOUNT ;
+
+		tie @array, 'Tie::File', $SNP_count or die ;
+	
+		$array[113] = "<tr><td class=\"ted3\">".$nbTotGenesAna."</td><td class=\"ted3\" style=\"border-left:3px solid black\">".$totalSize."</td><td class=\"ted3\" style=\"border-left:3px solid black\">".$totalSNP."</td></td>";	
+		$array[114] = "<td class=\"ted3\" style=\"border-left:3px solid black\">";
+		$array[115] = $total11."</td><td class=\"ted3\">".$total22."</td><td class=\"ted3\">".$total3ou4."</td><td class=\"ted3\">";
+		$array[116] = $total3."</td><td class=\"ted3\">".$total4."</td><td class=\"ted3\">".$total5."</td><td class=\"ted3\">";
+		$array[117] = $totalOther."</td><td class=\"ted3\" style=\"border-left:3px solid black\">".$totalGenome2."</td><td class=\"ted3\" style=\"border-left:3px solid black\">".$total512."</td>";
+		$array[118] = "<td class=\"ted3\" style=\"border-left:3px solid black\">".$total534."</td><td class=\"ted3\">".$nbTotGenesVal."</td></tr>";		
+}
+
+
+
+
+sub ext_output { # Extern reference
+
+print TABCOUNT "Gene;Interval Size Analysed (pb);nb SNP;1;2;3 or 4;5;other;SNP Diploids;SNP Polyploid;Ratio (%) $genome2Name:$genome1Name\n";
+
+foreach my $s(sort(keys(%snp))){
+	
+	#######################################
+	if ($ligneInter == 0) {
+		print HTMLSNP "<tr class=\"bord1\">\n";
+		print HTMLCOUNT "<tr class=\"td1\ border-width =\"3px\">\n";
+	}
+	else {
+		print HTMLSNP "<tr class=\"bord2\">\n";
+		print HTMLCOUNT "<tr class=\"td2\">\n";
+	}
+	#######################################
+	
+
+	my $ref = $snp{$s};
+	my %hash = %$ref;
+	$taille = keys(%hash);
+		# taille de la ligne gene
+		print HTMLSNP "<td  rowspan=\"$taille\"><b>$s</b></td>";
+		
+	$ligneOK = 0 ;
+	
+	$nbPolyploid = 0;
+	$nbGenomes = 0 ;
+	$nbCommuns = 0;
+	$nbPoly_only = 0 ;
+	$nbSub_only = 0 ;
+	
+	$case5 = 0 ;
+	$case1 = 0 ;
+	$case2 = 0 ;
+	$case3ou4 = 0;
+	$caseOther = 0;
+	$caseGenome2 = 0 ;
+	
+	#Moyenne Ponderee
+	$moyenneSNPindep1 = 0 ;
+	$moyenneSNPindep2 = 0 ;
+	
+	@tabTrie = sort ({ $a <=> $b }keys %hash);
+	
+	#foreach my $c(sort ({$hash{$a} <=> $hash{$b}} keys %hash)) {
+	foreach my $c(@tabTrie) {
+		$nb1 = 0 ;
+		$nb2 = 0 ;
+		$nb3 = 0 ;
+		if ($ligneOK == 1) {
+			if ($ligneInter == 0) {
+				print HTMLSNP "<tr class=\"td1\">\n";
+			}
+			else {
+				print HTMLSNP "<tr class=\"td2\">\n";
+			}
+		}
+		### Recuperation des informations ###
+		($code_snp,$ratio,$GT_poly,$GT_G1,$GT_G2,$DP_P) = split(/\t/,$snp{$s}{$c});
+		@recupAlleles = split(/\[/,$code_snp);
+		@recupAlleles = split(/\]/,$recupAlleles[1]);
+		($alRef,$alAlt) = split(/\//,$recupAlleles[0]);
+		$noSNPpoly = "ok" ;
+		
+		#print STDOUT "\n $c $GT_poly $GT_G1 $GT_G2";
+		print HTMLSNP "<td>$c</td>";
+		print TABSNP "$c;";
+			#####################################################################
+			#	SNP POLYPLOID - [0/1] [0|1] [1|0]
+			#####################################################################
+			if (($GT_poly =~ /^0.1$/) || ($GT_poly =~ /^1.0$/) ) {		# Polyploid [0.1] [1.0]
+				$ratio = sprintf("%.0f", $ratio);
+				$ratio2 = 100-$ratio ;
+				$moyenneSNPindep1 = $moyenneSNPindep1 + $ratio ;
+				$moyenneSNPindep2 = $moyenneSNPindep2 + $ratio2 ;
+				print HTMLSNP "<td>$code_snp</td>";
+				print TABSNP "$code_snp;";
+				if (($GT_G1 =~ /^1.1$/)){ #  Genome1  [1/1] [1|1]
+					print HTMLSNP "<td>$alAlt</td>";
+					print TABSNP "$alAlt;";
+					if($GT_G2 =~ /^1.1$/){ # Genome2 = Alt [1.1]
+						print HTMLSNP "<td>$alAlt</td>";
+						print HTMLSNP "<td></td>";
+						print HTMLSNP "<td></td>";
+						print HTMLSNP "<td></td>";
+						print HTMLSNP "<td class=\"final\"><img src=\"".$REPimages."3ou4.png\" height=30></td>";
+						print TABSNP "$alAlt;";
+						print TABSNP ";";
+						print TABSNP ";";
+						print TABSNP ";";
+						print TABSNP "3 or 4;";
+					}
+					else {
+						if($GT_G2 =~ /^0.0$/){ # Genome2 = Ref [0.0]
+							print HTMLSNP "<td>$alRef</td>";
+							print HTMLSNP "<td>OK</td>";
+							print HTMLSNP "<td>[$ratio/$ratio2]</td>";
+							print HTMLSNP "<td></td>";
+							print HTMLSNP "<td class=\"final\"><img src=\"".$REPimages."5v.png\" height=30></td>";
+							print TABSNP "$alRef";
+							print TABSNP "OK";
+							print TABSNP "[$ratio/$ratio2;]";
+							print TABSNP "$DP_P;";
+							print TABSNP "<td class=\"final\"><img src=\"".$REPimages."5v.png\" height=30></td>";
+						}
+						else { # Genome2 = SNP [0.1]
+							print HTMLSNP "<td>$code_snp</td>";
+							print HTMLSNP "<td>OK</td>";
+							print HTMLSNP "<td>[$ratio/$ratio2]</td>";
+							print HTMLSNP "<td></td>";
+							print HTMLSNP "<td class=\"final\"><img src=\"".$REPimages."5prime.png\" height=30></td>";		
+							print TABSNP "$code_snp;";
+							print TABSNP "OK;";
+							print TABSNP "[$ratio/$ratio2];";
+							print TABSNP "$DP_P;";
+							print TABSNP "5';";		
+						}
+					}
+				}
+				else{
+					if ($GT_G1 =~ /^0.0$/){  # # Genome1  [0/0] [0|0]
+						print HTMLSNP "<td>$alRef</td>";
+						print TABSNP "$alRef;";
+						if($GT_G2 =~ /^1.1$/){ # Genome2 = Alt [1.1]
+							print HTMLSNP "<td>$alAlt</td>";
+							print HTMLSNP "<td>OK</td>";
+							print HTMLSNP "<td>[$ratio/$ratio2]</td>";
+							print HTMLSNP "<td></td>";
+							print HTMLSNP "<td class=\"final\"><img src=\"".$REPimages."5v.png\" height=30></td>";
+							print TABSNP "$alAlt;";
+							print TABSNP "OK;";
+							print TABSNP "[$ratio/$ratio2];";
+							print TABSNP ";";
+							print TABSNP "5;";
+						}
+						else {
+							if($GT_G2 =~ /^0.0$/){ # Genome2 = Ref [0.0]
+								print HTMLSNP "<td>$alRef</td>";
+								print HTMLSNP "<td></td>";
+								print HTMLSNP "<td></td>";
+								print HTMLSNP "<td></td>";
+								print HTMLSNP "<td class=\"final\"><img src=\"".$REPimages."3ou4.png\" height=30></td>";
+								print TABSNP "$alRef;";
+								print TABSNP ";";
+								print TABSNP ";";
+								print TABSNP ";";
+								print TABSNP "3 or 4;";
+							}
+							else { # Genome2 = SNP [0.1]
+								print HTMLSNP "<td>$code_snp</td>";
+								print HTMLSNP "<td>OK</td>";
+								print HTMLSNP "<td>[$ratio/$ratio2]</td>";
+								print HTMLSNP "<td></td>";
+								print HTMLSNP "<td class=\"final\"><img src=\"".$REPimages."5prime.png\" height=30></td>";
+								print TABSNP "$code_snp;";
+								print TABSNP "OK;";
+								print TABSNP "[$ratio/$ratio2];";
+								print TABSNP ";";
+								print TABSNP "5';";		
+								}
+							}
+						}		
+						else { # SNP Genome1  [0/1] [0|1] [1|0]
+							print HTMLSNP "<td>$code_snp</td>"; #REF
+							print HTMLSNP "$code_snp;"; #REF
+							if($GT_G2 =~ /^1.1$/){ # Genome2 = Alt [1.1]
+								print HTMLSNP "<td>$alAlt</td>";
+								print HTMLSNP "<td>OK</td>";
+								print HTMLSNP "<td>[$ratio/$ratio2]</td>";
+								print HTMLSNP "<td></td>";
+								print HTMLSNP "<td class=\"final\"><img src=\"".$REPimages."5prime.png\" height=30></td>";
+								print TABSNP "$alAlt;";
+								print TABSNP "OK;";
+								print TABSNP "[$ratio/$ratio2];";
+								print TABSNP ";";
+								print TABSNP "5'";
+							}
+							else {
+								if($GT_G2 =~ /^0.0$/){ # Genome2 = Ref [0.0]
+									print HTMLSNP "<td>$alRef</td>";
+									print HTMLSNP "<td>OK</td>";
+									print HTMLSNP "<td>[$ratio/$ratio2]</td>";
+									print HTMLSNP "<td></td>";
+									print HTMLSNP "<td class=\"final\"><img src=\"".$REPimages."5prime.png\" height=30></td>";
+									print TABSNP "$alRef;";
+									print TABSNP "OK;";
+									print TABSNP "[$ratio/$ratio2];";
+									print TABSNP ";";
+									print TABSNP "5';";
+								}
+								else { # Genome2 = SNP [0.1]
+									print HTMLSNP "<td>$code_snp</td>";
+									print HTMLSNP "<td></td>";
+									print HTMLSNP "<td></td>";
+									print HTMLSNP "<td></td>";
+									print HTMLSNP "<td class=\"final\"><img src=\"".$REPimages."5second.png\" height=30></td>";	
+									print TABSNP "$code_snp;";
+									print TABSNP ";";
+									print TABSNP ";";
+									print TABSNP ";";
+									print TABSNP "5''";		
+								}
+							}
+						}
+						print TABSNP "\n";
+						$ligneOK = 1 ;
+						print HTMLSNP "</tr>\n";
+					}
+			}
+			#####################################################################
+			#	POLYPLOID NE REFERENCE - [1/1]
+			#####################################################################
+			#print STDOUT "GTPOLY:$GT_poly@";
+			if (($GT_poly =~ /^1.1$/) ) {	
+				print HTMLSNP "<td>$alAlt</td>";
+				print TABSNP "$alAlt;";
+				####################################
+				if (($GT_G1 !~ /^0.0$/) && ($GT_G1 !~ /^1.1$/)){ # Genome 1 [0/1] [0|1] [1|0]
+					print HTMLSNP "<td>$code_snp</td>";
+					print TABSNP "$code_snp";
+					if ($GT_G2 =~ /^1.1$/) {
+						print HTMLSNP "<td>$alAlt</td>";
+						print HTMLSNP "<td></td>";
+						print HTMLSNP "<td></td>";
+						print HTMLSNP "<td></td>";
+						print HTMLSNP "<td class=\"final\"><img src=\"".$REPimages."5primeou1.png\" height=30></td>";
+						print TABSNP "$alAlt;;;;5' or 1;";
+					}
+					else {
+						if  ($GT_G2 =~ /^0.0$/) {
+							print HTMLSNP "<td>$alRef</td>";
+							print HTMLSNP "<td></td>";
+							print HTMLSNP "<td></td>";
+							print HTMLSNP "<td></td>";
+							print HTMLSNP "<td class=\"final\"><img src=\"".$REPimages."5primeou1.png\" height=30></td>";
+							print TABSNP "$altRef;;;;5' or 1;";
+						}
+						else { # Genome2 = SNP [0.1]
+							print HTMLSNP "<td>$code_snp</td>";
+							print HTMLSNP "<td></td>";
+							print HTMLSNP "<td></td>";
+							print HTMLSNP "<td></td>";
+							print HTMLSNP "<td class=\"final\"><img src=\"".$REPimages."5second.png\" height=30></td>";		
+							print TABSNP "$code_snp;;;;5'';";
+						}
+					}
+				}
+				else { 
+					if ($GT_G1 =~ /^0.0$/){ #  Genome1 [0/0] [0|0]
+					###################
+						print HTMLSNP "<td>$alRef</td>";
+						print TABSNP "$alRef";
+						if ($GT_G2 =~ /^1.1$/) { # Genome2 = Alt [1.1]	
+							print HTMLSNP "<td>$alAlt</td>";
+							print HTMLSNP "<td></td>";
+							print HTMLSNP "<td></td>";
+							print HTMLSNP "<td></td>";
+							print HTMLSNP "<td class=\"final\"><img src=\"".$REPimages."1.png\" height=30></td>";
+							print TABSNP "$alAlt;;;;1;";
+						}
+						else {
+							if  ($GT_G2 =~ /^0.0$/) {
+								print HTMLSNP "<td>$alAlt</td>";
+								print HTMLSNP "<td></td>"; 
+								print HTMLSNP "<td></td>";
+								print HTMLSNP "<td></td>";
+								print HTMLSNP "<td class=\"final\"><img src=\"".$REPimages."3ou4.png\" height=30></td>";
+								print TABSNP "$alAlt;;;;3 or 4;";
+							}
+							else { # Genome2 = SNP [0.1]
+								print HTMLSNP "<td>$code_snp</td>";
+								print HTMLSNP "<td></td>";
+								print HTMLSNP "<td></td>";
+								print HTMLSNP "<td></td>";
+								print HTMLSNP "<td class=\"final\"><img src=\"".$REPimages."5primeou2.png\" height=30></td>";
+								print TABSNP "$code_snp;;;;5' or 2";		
+							}	
+						}
+					}
+					else { #  [1/1] [1|1] Genome 1
+						print HTMLSNP "<td>$alAlt</td>";
+						print TABSNP "$alAlt";
+						if ($GT_G2 =~ /^1.1$/)  { # Genome2 = Alt [1.1]	
+							print HTMLSNP "<td>$alAlt</td>";
+							print HTMLSNP "<td>OK</td>";
+							print HTMLSNP "<td>[$ratio/$ratio2]</td>";
+							print HTMLSNP "<td>$DP_P</td>";
+							print HTMLSNP "<td class=\"final\"><img src=\"".$REPimages."5v.png\" height=30></td>";
+							print TABSNP "$alAlt;OK;[$ratio/$ratio2];$DP_P;5;";
+						}
+						else {
+							if  ($GT_G2 =~ /^0.0$/) {
+								print HTMLSNP "<td>$alRef</td>";
+								print HTMLSNP "<td></td>"; 
+								print HTMLSNP "<td></td>";
+								print HTMLSNP "<td></td>";
+								print HTMLSNP "<td class=\"final\"><img src=\"".$REPimages."2.png\" height=30></td>";
+								print TABSNP "$alRef;;;;2;";
+							}
+							else { # Genome2 = SNP [0.1]
+								print HTMLSNP "<td>$code_snp</td>";
+								print HTMLSNP "<td></td>";
+								print HTMLSNP "<td></td>";
+								print HTMLSNP "<td></td>";
+								print HTMLSNP "<td class=\"final\"><img src=\"".$REPimages."5primeou2.png\" height=30></td>";
+								print TABSNP "$code_snp;;;;5' or 2" ;		
+							}	
+						}
+					}
+				}
+				$nbPolyploid ++ ;
+				print TABSNP "\n";
+				$ligneOK = 1 ;
+				print HTMLSNP "</tr>\n";
+			
+		}	
+		#####################################################################
+		#	POLYPLOID == REFERENCE - [0|0]
+		#####################################################################
+		if (($GT_poly =~ /^0.0$/) ) {	
+			print HTMLSNP "<td>$alRef</td>";
+			print TABSNP "$alRef;";
+			if (($GT_G1 !~ /^0.1$/) && ($GT_G1 !~ /^1.0$/)){				 # Genome1 intra [0/1] [0|1] [1|0]
+				print HTMLSNP "<td>$code_snp</td>";
+				print TABSNP "$code_snp";
+				if ($GT_G2 =~ /^1.1$/)  { 													# Genome2 = Alt [1.1]	
+					print HTMLSNP "<td>$alAlt</td>";
+					print HTMLSNP "<td></td>";
+					print HTMLSNP "<td></td>";
+					print HTMLSNP "<td></td>";
+					print HTMLSNP "<td class=\"final\"><img src=\"".$REPimages."5primeou1.png\" height=30></td>";
+					print TABSNP "$alAlt;;;;5' or 1";
+				}
+				else {
+					if  ($GT_G2 =~ /^0.0$/) { 													# Genome2 = Ref [0.0]
+						print HTMLSNP "<td>$alRef</td>";
+						print HTMLSNP "<td></td>";
+						print HTMLSNP "<td></td>";
+						print HTMLSNP "<td></td>";
+						print HTMLSNP "<td class=\"final\"><img src=\"".$REPimages."5primeou1.png\" height=30></td>";
+						print TABSNP "$alRef;;;;5' or 1";
+					}
+					else { # Genome2 = SNP [0.1]
+						if ( ($GT_G2 =~ /^0.1$/) || ($GT_G2 =~ /^1.0$/)){ 													# Genome2 = SNP [0.1]
+							print HTMLSNP "<td>$code_snp</td>";
+							print HTMLSNP "<td></td>";
+							print HTMLSNP "<td></td>";
+							print HTMLSNP "<td></td>";
+							print HTMLSNP "<td class=\"final\"><img src=\"".$REPimages."5second.png\" height=30></td>";	
+							print TABSNP "$code_snp;;;;5''";
+						}	
+					}	
+				}
+			}
+			
+			else { 
+				if ($GT_G1 =~ /^0.0$/){ # Pas de SNP Genome1 [0/0] [0|0]
+					print HTMLSNP "<td>$alRef</td>";
+					print TABSNP "$alRef";
+					if ($GT_G2 =~ /^1.1$/) { # Genome2 = Alt [1.1]	
+						print HTMLSNP "<td>$alAlt</td>";
+						print HTMLSNP "<td></td>";
+						print HTMLSNP "<td></td>";
+						print HTMLSNP "<td></td>";
+						print HTMLSNP "<td class=\"final\"><img src=\"".$REPimages."2.png\" height=30></td>";
+						print TABSNP "$alAlt;;;;2;";
+					}
+					else {
+						if ( ($GT_G2 =~ /^0.1$/) || ($GT_G2 =~ /^1.0$/)){
+							print HTMLSNP "<td>$code_snp</td>";
+							print HTMLSNP "<td>OK</td>";
+							print HTMLSNP "<td>[$ratio/$ratio2]</td>";
+							print HTMLSNP "<td>$DP_P</td>";
+							print HTMLSNP "<td class=\"final\"><img src=\"".$REPimages."5primeou2.png\" height=30></td>";
+							print TABSNP "$code_snp;OK;[$ratio/$ratio2];$DP_P;5' or 2";
+						}	
+					}
+				}
+					
+					else { #  [1/1] [1|1] SNP entre genome1 et genome2
+						print HTMLSNP "<td>$alAlt</td>";
+						print TABSNP "$alAlt";
+						if ($GT_G2 =~ /^1.1$/)  { # Genome2 = Alt [1.1]	
+							print HTMLSNP "<td>$alAlt</td>";
+							print HTMLSNP "<td></td>";
+							print HTMLSNP "<td></td>";
+							print HTMLSNP "<td></td>";
+							print HTMLSNP "<td class=\"final\"><img src=\"".$REPimages."other.png\" height=30></td>";
+							print TABSNP "$alAlt;;;;other;";
+						}
+						else {
+							if  ($GT_G2 =~ /^0.0$/) {
+								print HTMLSNP "<td>$alRef</td>";
+								print HTMLSNP "<td></td>";
+								print HTMLSNP "<td></td>";
+								print HTMLSNP "<td></td>";
+								print HTMLSNP "<td class=\"final\"><img src=\"".$REPimages."1.png\" height=30></td>";
+								print TABSNP "$alRef;;;;1;";
+							}
+							else { # Genome2 = SNP [0.1]
+								print HTMLSNP "<td>$code_snp</td>";
+								print HTMLSNP "<td></td>";
+								print HTMLSNP "<td></td>";
+								print HTMLSNP "<td></td>";
+								print HTMLSNP "<td class=\"final\"><img src=\"".$REPimages."5primeou2.png\" height=30></td>";
+								print TABSNP "$code_snp;;;;5' or 2;";
+							}	
+						}
+					}
+						
+				}		
+			}
+			$nbSub_only ++;
+			print TABSNP "\n";
+			$ligneOK = 1 ;
+			print HTMLSNP "</tr>\n";
+		}
+	
+	if ($ligneInter == 0) {
+		print HTMLCOUNT "<td class=\"ted2\" style=\"border-right:3px solid black\">$s</td>";
+	}
+	else {
+		print HTMLCOUNT "<td class=\"ted\" style=\"border-right:3px solid black\">$s</td>";
+	}
+	
+	print TABCOUNT "Gene;Interval Size;Analysed (pb);nb SNP;1;2;3 or 4;5;5';5'';5' or 1;5'' or 2;other;SNP Diploids;SNP Polyploid;Ratio (%) $genome2Name:$genome1Name;";
+	
+	#######################################
+	if ($ligneInter == 0) {
+		$ligneInter = 1 ;
+	}
+	else {
+		$ligneInter = 0 ;
+	}
+	#######################################
+	
+	# Calcul des intervalles
+	$taille_totale = 0 ;
+	my $ref = $intervalle2{$s};
+	my %hash = %$ref;
+		
+		foreach my $interval(keys(%hash)){
+			my @pos = split(/-/,$interval);
+			$taille_inter = $pos[1]-$pos[0]-1 ;
+			$taille_totale = $taille_totale + $taille_inter;
+		}
+	
+	$total1 = $case5 + $case1 + $case2 ;
+	$total2 = $case5 + $case3ou4 ;
+	
+	print HTMLCOUNT "<td>$taille_totale</td><td style=\"border-left:3px solid black\">$taille</td></td>";	
+	print HTMLCOUNT "<td style=\"border-left:3px solid black\">$case1</td><td>$case2</td><td>$case3ou4</td><td>$case5</td><td>$caseGenome2</td><td>$caseOther</td><td style=\"border-left:3px solid black\">$total1</td><td style=\"border-left:3px solid black\">$total2</td>";
+	if ($case5 != 0) {
+		print HTMLCOUNT "<td style=\"border-left:3px solid black\">".sprintf("%.0f", $moyenneSNPindep1/$case5).":".sprintf("%.0f", $moyenneSNPindep2/$case5)."</td>";	
+	}
+	else {
+		print HTMLCOUNT "<td style=\"border-left:3px solid black\"></td>";
+	}
+	print HTMLCOUNT "</tr>";
+	
+	$totalSize = $totalSize + $taille_totale ;
+	$totalSNP = $totalSNP + $taille ;
+	$total11 = $total11 + $case1 ;
+	$total22 = $total22 + $case2 ;
+	$total3ou4 = $total3ou4 + $case3ou4 ;
+	$total5 = $total5 + $case5 ;
+	$total512 = $total512 + $total1 ;
+	$total534 = $total534 + $total2 ;
+	$totalOther = $totalOther + $caseOther ;
+	$totalGenome2 = $totalGenome2 + $caseGenome2 ;
+}
+########## MODIF DERNIERE MINUTE ################"
+print HTMLCOUNT "<tr class=\"td3\">\n";
+print HTMLCOUNT "<td></td><td style=\"border-left:3px solid black\">$totalSize</td><td style=\"border-left:3px solid black\">$totalSNP</td><td style=\"border-left:3px solid black\">$total11</td><td>$total22</td><td>$total3ou4</td><td>$total5</td><td>$totalGenome2</td><td>$totalOther</td><td style=\"border-left:3px solid black\">$total512</td><td style=\"border-left:3px solid black\">$total534</td><td style=\"border-left:3px solid black\"></td>";
+print HTMLCOUNT "</tr>";
+####################################################
+print HTMLSNP "</table>\n";
+print HTMLSNP "</html>\n";
+print HTMLCOUNT "</table>\n";
+print HTMLCOUNT "</html>\n";
+
+close TABSNP;
+close HTMLSNP ;
+close HTMLCOUNT ;
+	}
+
+sub poly_poly_output {
+	foreach my $s(sort(keys(%snp_final))){
+		#######################################
+		if ($ligneInter == 0) {
+			print HTMLSNP "<tr class=\"bord1\">\n";
+			print HTMLCOUNT "<tr class=\"td1\ border-width =\"3px\">\n";
+		}
+		else {
+			print HTMLSNP "<tr class=\"bord2\">\n";
+			print HTMLCOUNT "<tr class=\"td2\">\n";
+		}
+		#######################################
+	
+		my $ref = $snp_final{$s};
+		my %hash = %$ref;
+		$taille = keys(%hash);
+		
+		# taille de la ligne gene
+		print HTMLSNP "<td  rowspan=\"".$taille."\"><b>".$s."</b></td>";
+		
+		$ligneOK = 0 ;
+		
+		$nbPolyploid1 = 0 ;		# SNP heterozygosity for P1
+		$nbPolyploid2 = 0 ;		# SNP heterozygosity for P2
+		$nbCommuns = 0 ; 		# SNP heterozygosity [P1] = [P2]
+		$nbCommunHomo = 0 ;		# SNP homozygosity [P1] = [P2]
+		$nbDifferent = 0 ;		# [P1] ne [P2]
+		$alleleCommun = 0 ;		# Example : P1 = [A/G] ; P2 = [A]
+		$alleleDifferent = 0 ;	# Example : P1 = [A/G] ; P2 = [C] or [T]
+		$alleleCommunH = 0 ;	# Example : P1 = [A/G] ; P2 = [A/C]
+		$nbHomoDiff = 0 ;
+		
+		@tabTrie = sort ({ $a <=> $b }keys %hash);
+		
+		$taille = 0;
+		
+		
+
+		#foreach my $c(sort ({$hash{$a} <=> $hash{$b}} keys %hash)) {
+		foreach my $c(@tabTrie) {
+			
+			if ($ligneOK == 1) {
+				if ($ligneInter == 0) {
+					print HTMLSNP "<tr class=\"td1\">\n";
+				}
+				else {
+					print HTMLSNP "<tr class=\"td2\">\n";
+				}
+			}
+		
+			#print STDOUT "\n\n\n".$snp_final{$s}{$c} ;
+			($code_snp,$AD,$GT_poly,$DP_P,$code_snp2,$AD_2,$GT_poly2,$DP_P2) = split(/\t/,$snp_final{$s}{$c});
+			($DP_P, $FDP) = split(/-/, $DP_P);
+			($DP_P2, $FDP2) = split(/-/, $DP_P2);
+			
+			#print STDOUT "\nALLELES :".$AD." - ".$AD_2;
+			
+			($sub1_1,$sub1_2) = split(",",$AD);
+			($sub2_1,$sub2_2) = split(",",$AD_2);
+			
+			# $sub1_1 = sprintf("%.0f", $sub1_1);
+			# $sub1_2 = sprintf("%.0f", $sub1_2);
+			# $sub2_1 = sprintf("%.0f", $sub2_1);
+			# $sub2_2 = sprintf("%.0f", $sub2_2);
+			if ($DP_P > 0) {
+				$SG1 = ($sub1_1/$DP_P*100) ;
+				$SG2 = ($sub1_2/$DP_P*100) ;
+			}
+			if ($DP_P2 > 0) {
+				$SG3 = ($sub2_1/$DP_P2*100) ;
+				$SG4 = ($sub2_2/$DP_P2*100) ;
+			}
+			
+
+			if ($GT_poly ne "") { # Polyploide 1 = [0.0] ou [0.1] ou [1.1]
+				@recupAlleles = split(/\[/,$code_snp);
+				@recupAlleles = split(/\]/,$recupAlleles[1]);
+				($alRef,$alAltP) = split(/\//,$recupAlleles[0]);
+				# Attribution des alleles au polyploide 1 si pas de SNP
+				if ($GT_poly =~ /^0.0$/) { $code_snp = $alRef ; } 
+				if ($GT_poly =~ /^1.1$/) { $code_snp = $alAltP ; }
+				# Attribution des alleles au polyploide 2 si pas de SNP
+				if (($GT_poly2 eq "") || ($GT_poly2 =~ /^0.0$/)) { $code_snp2 = $alRef ; }
+				if ($GT_poly2 =~ /^1.1$/) {
+					@recupAlleles = split(/\[/,$code_snp2);
+					@recupAlleles = split(/\]/,$recupAlleles[1]);
+					($alRef,$alAlt2) = split(/\//,$recupAlleles[0]);
+					$code_snp2 = $alAlt2 ;
+				}
+			}
+			elsif ($GT_poly2 ne "") { # pas de SNP polyploide 1 dans le fichier 1 (fichiers non mergés) -> equivalent de [0.0]
+				@recupAlleles = split(/\[/,$code_snp2);
+				@recupAlleles = split(/\]/,$recupAlleles[1]);
+				($alRef,$alAlt2) = split(/\//,$recupAlleles[0]);
+				# Attribution des Alleles au polyploide 2
+				if ($GT_poly2 =~ /^1.1$/) { $code_snp2 = $alAlt2 ; }
+				if ($GT_poly2 =~ /^0.0$/) { $code_snp2 = $alRef ; }
+			}
+			#print STDOUT "\n($code_snp:$GT_poly) - ($code_snp2:$GT_poly2)" ;
+			$noSNPpoly = "ok" ;
+			#____________________________________________________________________________________________________________________________________________			
+			# [1] P1 = 0/1 ; P2 = 0/1		(2 alleles)
+			#print STDOUT "\n".($code_snp2 eq $code_snp);
+			if ((($GT_poly =~ /^0.1$/)||($GT_poly =~ /^1.0$/)) && (($GT_poly2 =~ /^0.1$/)||($GT_poly2 =~ /^1.0$/))) {
+				
+				if (($SG1 > $value_filter_p1) && ($SG2 > $value_filter_p1) && ($SG3 > $value_filter_p2) && ($SG4 > $value_filter_p2) && $code_snp2 eq $code_snp) {
+					
+					
+					if ($ligneInter == 0) {
+						
+						print HTMLSNP "<td class=\"tedG2\">".$c."</td>";
+						print HTMLSNP "<td class=\"tedG2\">".$alRef."</td>";
+						print HTMLSNP "<td class=\"ted2\">".$code_snp."</td>";
+						print HTMLSNP "<td class=\"ted2\">".$code_snp2."</td>";
+						
+						print TABSNP $s . "\t";
+						print TABSNP $c . "\t";
+						print TABSNP $alRef . "\t";
+						print TABSNP $code_snp . "\t";
+						print TABSNP $code_snp2 . "\t";
+						print TABSNP $FDP."/".$DP_P;
+						
+						print HTMLSNP "<td class=\"ted2\">".$FDP."/".$DP_P;
+						if (($DP_P) != 0) {
+							print HTMLSNP "<br><img src=\"".$REPimages."r1.png\" height=5 width=".sprintf("%.0f", $FDP/$DP_P*100).">";
+							print HTMLSNP "<img src=\"".$REPimages."r2.png\" height=5 width=".sprintf("%.0f", 100-$FDP/$DP_P*100).">";
+							print HTMLSNP "<br>".$sub1_1." - ".$sub1_2."</td>";
+							print TABSNP "," . $sub1_1." - ".$sub1_2."\t";
+						}
+						else {
+							print HTMLSNP "</td>";
+							print TABSNP "\t";
+						}
+						
+						print TABSNP $FDP2."/".$DP_P2;
+						print HTMLSNP "<td class=\"ted2\">".$FDP2."/".$DP_P2;
+						if (($DP_P2) != 0) {
+							print HTMLSNP "<br><img src=\"".$REPimages."r1.png\" height=5 width=".sprintf("%.0f", $FDP2/$DP_P2*100).">";
+							print HTMLSNP "<img src=\"".$REPimages."r2.png\" height=5 width=".sprintf("%.0f", 100-$FDP2/$DP_P2*100).">";
+							print HTMLSNP "<br>".$sub2_1." - ".$sub2_2."</td>";
+							print TABSNP "," . $sub2_1." - ".$sub2_2."\t";
+						}
+						else {
+							print HTMLSNP "</td>";
+							print TABSNP "\t";
+						}
+						print TABSNP "\n";
+						print HTMLSNP "</tr>\n";
+					}
+					else {
+						#
+							print HTMLSNP "<td class=\"tedG\">".$c."</td>";
+							print HTMLSNP "<td class=\"tedG\">".$alRef."</td>";
+							print HTMLSNP "<td class=\"ted\">".$code_snp."</td>";
+							print HTMLSNP "<td class=\"ted\">".$code_snp2."</td>";
+							print HTMLSNP "<td class=\"ted\">".$FDP." / ".$DP_P;
+							print TABSNP $s . "\t";
+							print TABSNP $c . "\t";
+							print TABSNP $alRef . "\t";
+							print TABSNP $code_snp . "\t";
+							print TABSNP $code_snp2 . "\t";
+							print TABSNP $FDP."/".$DP_P;
+							if (($DP_P) != 0) {
+								print HTMLSNP "<br><img src=\"".$REPimages."r1.png\" height=5 width=".sprintf("%.0f", $FDP/$DP_P*100).">";
+								print HTMLSNP "<img src=\"".$REPimages."r2.png\" height=5 width=".sprintf("%.0f", 100-$FDP/$DP_P*100).">";
+								print HTMLSNP "<br>".$sub1_1." - ".$sub1_2."</td>";
+								print TABSNP "," . $sub1_1." - ".$sub1_2."\t";
+							}
+							else {
+								print HTMLSNP "</td>";
+								print TABSNP "\t";
+							}
+							print TABSNP $FDP2."/".$DP_P2;
+							print HTMLSNP "<td class=\"ted\">".$FDP2." / ".$DP_P2;
+							if (($DP_P2) != 0) {
+								print HTMLSNP "<br><img src=\"".$REPimages."r1.png\" height=5 width=".sprintf("%.0f", $FDP2/$DP_P2*100).">";
+								print HTMLSNP "<img src=\"".$REPimages."r2.png\" height=5 width=".sprintf("%.0f", 100-$FDP2/$DP_P2*100).">";
+								print HTMLSNP "<br>".$sub2_1." - ".$sub2_2."</td>";
+								print TABSNP "," . $sub2_1." - ".$sub2_2."\t";
+							}
+							else {
+								print HTMLSNP "</td>";
+								print TABSNP "\t";
+							}
+							print TABSNP "\n";
+							print HTMLSNP "</tr>\n";
+					}
+					$nbPolyploid1 ++ ;		# SNP heterozygosity for P1
+					$nbPolyploid2 ++ ;		# SNP heterozygosity for P2
+					$nbCommuns ++ ; 		# SNP heterozygosity [P1] = [P2]
+					$taille++;
+					
+				}
+				else {
+					if (($SG1 > $value_filter_p1) && ($SG2 > $value_filter_p1) && ($SG3 > $value_filter_p2) && ($SG4 > $value_filter_p2)) {
+						if ($alAlt2 ne $alAlt) { # P1 [A/G] P2 [A/C]		(3 alleles)
+							
+
+					
+							print HTMLSNP "<td style=\"border-left:3px solid black\">".$c."</td>";
+							print HTMLSNP "<td style=\"border-left:3px solid black\">".$alRef."</td>";
+							print HTMLSNP "<td>".$code_snp."</td>";
+							print HTMLSNP "<td>".$code_snp2."</td>";
+							print HTMLSNP "<td>".$FDP."/".$DP_P;
+							print TABSNP $s . "\t";
+							print TABSNP $c . "\t";
+							print TABSNP $alRef . "\t";
+							print TABSNP $code_snp . "\t";
+							print TABSNP $code_snp2 . "\t";
+							print TABSNP $FDP."/".$DP_P;
+							if (($DP_P) != 0) {
+								print HTMLSNP "<br><img src=\"".$REPimages."r1.png\" height=5 width=".sprintf("%.0f", $FDP/$DP_P*100).">";
+								print HTMLSNP "<img src=\"".$REPimages."r2.png\" height=5 width=".sprintf("%.0f", 100-$FDP/$DP_P*100).">";
+								print HTMLSNP "<br>".$sub1_1." - ".$sub1_2."</td>";
+								print TABSNP "," . $sub1_1." - ".$sub1_2."\t";
+							}
+							else {
+								print HTMLSNP "</td>";
+								print TABSNP "\t";
+							}
+							print TABSNP $FDP2."/".$DP_P2;
+							print HTMLSNP "<td>".$FDP2."/".$DP_P2;
+							if (($DP_P2) != 0) {
+								print HTMLSNP "<br><img src=\"".$REPimages."r1.png\" height=5 width=".sprintf("%.0f", $FDP2/$DP_P2*100).">";
+								print HTMLSNP "<img src=\"".$REPimages."r2.png\" height=5 width=".sprintf("%.0f", 100-$FDP2/$DP_P2*100).">";
+								print HTMLSNP "<br>".$sub2_1." - ".$sub2_2."</td>";
+								print TABSNP "," . $sub2_1." - ".$sub2_2."\t";
+							}
+							else {
+								print HTMLSNP "</td>";
+								print TABSNP "\t";
+							}
+							print TABSNP "\n";
+							print HTMLSNP "</tr>\n";
+							$nbDifferent ++ ;		
+							$alleleCommunH ++ ;		
+							$taille++;
+						}
+					}
+				}
+			}
+				
+			else { # ALL
+				# COMMON PART
+				#print STDOUT "\nBOUM : ".$SG1." + ".$SG2." + ".$SG3." + ".$SG4 ;
+				#if (($SG1> $value_filter_p1) && ($SG2> $value_filter_p1) && ($SG3> $value_filter_p2) && ($SG4> $value_filter_p2)) {
+					
+					# print HTMLSNP "<td></td><td></td>";
+						
+					# [5] P1 = 1/1 ; P2 = 1/1		(1 allele)		P1 [A] P2 [A]
+					if (($GT_poly =~ /^1.1$/) && ($GT_poly2 =~ /^1.1$/)) {
+
+						
+						print HTMLSNP "<td style=\"border-left:3px solid black\">".$c."</td>";
+						print HTMLSNP "<td class=\"border-left:3px solid black\">".$alRef."</td>";
+						print HTMLSNP "<td>".$code_snp."</td>";
+						print HTMLSNP "<td>".$code_snp2."</td>";
+						print HTMLSNP "<td>".$FDP."/".$DP_P;
+						print TABSNP $s . "\t";
+						print TABSNP $c . "\t";
+						print TABSNP $alRef . "\t";
+						print TABSNP $code_snp . "\t";
+						print TABSNP $code_snp2 . "\t";
+						print TABSNP $FDP."/".$DP_P;
+						if (($DP_P) != 0) {
+							print HTMLSNP "<br><img src=\"".$REPimages."r1.png\" height=5 width=".sprintf("%.0f", $FDP/$DP_P*100).">";
+							print HTMLSNP "<img src=\"".$REPimages."r2.png\" height=5 width=".sprintf("%.0f", 100-$FDP/$DP_P*100).">";
+							print HTMLSNP "<br>".$sub1_1." - ".$sub1_2."</td>";
+							print TABSNP "," . $sub1_1." - ".$sub1_2."\t";
+						}
+						else {
+							print HTMLSNP "</td>";
+							print TABSNP "\t";
+						}
+						print TABSNP $FDP2."/".$DP_P2;
+						print HTMLSNP "<td>".$FDP2."/".$DP_P2;
+						if (($DP_P2) != 0) {
+							print HTMLSNP "<br><img src=\"".$REPimages."r1.png\" height=5 width=".sprintf("%.0f", $FDP2/$DP_P2*100).">";
+							print HTMLSNP "<img src=\"".$REPimages."r2.png\" height=5 width=".sprintf("%.0f", 100-$FDP2/$DP_P2*100).">";
+							print HTMLSNP "<br>".$sub2_1." - ".$sub2_2."</td>";
+							print TABSNP "," . $sub2_1." - ".$sub2_2."\t";
+						}
+						else {
+							print HTMLSNP "</td>";
+							print TABSNP "\t";
+						}
+						print TABSNP "\n";
+						print HTMLSNP "</tr>\n";
+						#*********************************************************************************************************************
+						if ($code_snp2 eq $code_snp) {
+							$nbCommunHomo ++ ;
+							$taille++;
+						}
+						else { # 						(2 alleles)		P1 [A] P2 [C]	
+							$nbDifferent ++ ;
+							$nbHomoDiff ++ ;
+							$taille++;
+						}
+					}
+					# [2] [4] P1 = 0/1 ; P2 = 1/1			 
+					if (((($GT_poly =~ /^0.1$/) || ($GT_poly =~ /^0.1$/)) && ($GT_poly2 =~ /^1.1$/))) {
+						if (($SG1> $value_filter_p1) && ($SG2> $value_filter_p1)) {
+							
+							
+							
+							print HTMLSNP "<td style=\"border-left:3px solid black\">".$c."</td>";
+							print HTMLSNP "<td class=\"border-left:3px solid black\">".$alRef."</td>";
+							print HTMLSNP "<td>".$code_snp."</td>";
+							print HTMLSNP "<td>".$code_snp2."</td>";
+							print HTMLSNP "<td>".$FDP."/".$DP_P;
+							print TABSNP $s . "\t";
+							print TABSNP $c . "\t";
+							print TABSNP $alRef . "\t";
+							print TABSNP $code_snp . "\t";
+							print TABSNP $code_snp2 . "\t";
+							print TABSNP $FDP."/".$DP_P;
+							if (($DP_P) != 0) {
+								print HTMLSNP "<br><img src=\"".$REPimages."r1.png\" height=5 width=".sprintf("%.0f", $FDP/$DP_P*100).">";
+								print HTMLSNP "<img src=\"".$REPimages."r2.png\" height=5 width=".sprintf("%.0f", 100-$FDP/$DP_P*100).">";
+								print HTMLSNP "<br>".$sub1_1." - ".$sub1_2."</td>";
+								print TABSNP "," . $sub1_1." - ".$sub1_2."\t";
+							}
+							else {
+								print HTMLSNP "</td>";
+								print TABSNP "\t";
+							}
+							print TABSNP $FDP2."/".$DP_P2;
+							print HTMLSNP "<td>".$FDP2."/".$DP_P2;
+							if (($DP_P2) != 0) {
+								print HTMLSNP "<br><img src=\"".$REPimages."r1.png\" height=5 width=".sprintf("%.0f", $FDP2/$DP_P2*100).">";
+								print HTMLSNP "<img src=\"".$REPimages."r2.png\" height=5 width=".sprintf("%.0f", 100-$FDP2/$DP_P2*100).">";
+								print HTMLSNP "<br>".$sub2_1." - ".$sub2_2."</td>";
+								print TABSNP "," . $sub2_1." - ".$sub2_2."\t";
+							}
+							else {
+								print HTMLSNP "</td>";
+								print TABSNP "\t";
+							}
+							print TABSNP "\n";
+							print HTMLSNP "</tr>\n";
+							if ($alAlt2 ne $alAlt) { # 	(2 alleles)	P1 [A/G] P2 [G]
+								$nbDifferent ++ ;
+								$alleleCommun ++ ;
+								$nbPolyploid1 ++ ;
+								$taille++;
+							}
+							else { #					(3 alleles) P1 [A/G] P2 [C]
+								$nbDifferent ++ ;
+								$alleleDifferent ++ ;
+								$nbPolyploid1 ++ ;
+								$taille++;
+							}
+						}
+					}
+					if ((($GT_poly2 =~ /^0.1$/) || ($GT_poly2 =~ /^0.1$/)) && ($GT_poly =~ /^1.1$/)) {
+						if (($SG3> $value_filter_p2) && ($SG4> $value_filter_p2)) {
+							print HTMLSNP "<td style=\"border-left:3px solid black\">".$c."</td>";
+							print HTMLSNP "<td class=\"border-left:3px solid black\">".$alRef."</td>";
+							print HTMLSNP "<td>".$code_snp."</td>";
+							print HTMLSNP "<td>".$code_snp2."</td>";
+							print HTMLSNP "<td>".$FDP."/".$DP_P;
+							print TABSNP $s . "\t";
+							print TABSNP $c . "\t";
+							print TABSNP $alRef . "\t";
+							print TABSNP $code_snp . "\t";
+							print TABSNP $code_snp2 . "\t";
+							print TABSNP $FDP."/".$DP_P;
+							if (($DP_P) != 0) {
+								print HTMLSNP "<br><img src=\"".$REPimages."r1.png\" height=5 width=".sprintf("%.0f", $FDP/$DP_P*100).">";
+								print HTMLSNP "<img src=\"".$REPimages."r2.png\" height=5 width=".sprintf("%.0f", 100-$FDP/$DP_P*100).">";
+								print HTMLSNP "<br>".$sub1_1." - ".$sub1_2."</td>";
+								print TABSNP "," . $sub1_1." - ".$sub1_2."\t";
+							}
+							else {
+								print HTMLSNP "</td>";
+								print TABSNP "\t";
+							}
+							print TABSNP $FDP2."/".$DP_P2;
+							print HTMLSNP "<td>".$FDP2."/".$DP_P2;
+							if (($DP_P2) != 0) {
+								print HTMLSNP "<br><img src=\"".$REPimages."r1.png\" height=5 width=".sprintf("%.0f", $FDP2/$DP_P2*100).">";
+								print HTMLSNP "<img src=\"".$REPimages."r2.png\" height=5 width=".sprintf("%.0f", 100-$FDP2/$DP_P2*100).">";
+								print HTMLSNP "<br>".$sub2_1." - ".$sub2_2."</td>";
+								print TABSNP "," . $sub2_1." - ".$sub2_2."\t";
+							}
+							else {
+								print HTMLSNP "</td>";
+								print TABSNP "\t";
+							}
+							print TABSNP "\n";
+							print HTMLSNP "</tr>\n";
+							if ($alAlt2 ne $alAlt) { # 	(2 alleles)	P1 [A/G] P2 [G]
+								$nbDifferent ++ ;
+								$alleleCommun ++ ;
+								$nbPolyploid2 ++ ;
+								$taille++;
+							}
+							else { #					(3 alleles) P1 [A/G] P2 [C]
+								$nbDifferent ++ ;
+								$alleleDifferent ++ ;
+								$nbPolyploid2 ++ ;
+								$taille++;
+							}
+						}
+					}
+					# [3] [7] P1 = 0/1 ; P2 = 0/0 (2 alleles) P1 [A/G] P2 [A]
+					if ((($GT_poly =~ /^0.1$/) || ($GT_poly =~ /^0.1$/)) && (($GT_poly2 =~ /^0.0$/) || ($GT_poly2 eq ""))) {
+						if (($SG1> $value_filter_p1) && ($SG2> $value_filter_p1)) {
+							print HTMLSNP "<td style=\"border-left:3px solid black\">".$c."</td>";
+							print HTMLSNP "<td class=\"border-left:3px solid black\">".$alRef."</td>";
+							print HTMLSNP "<td>".$code_snp."</td>";
+							print HTMLSNP "<td>".$code_snp2."</td>";
+							print HTMLSNP "<td>".$FDP."/".$DP_P;
+							print TABSNP $s . "\t";
+							print TABSNP $c . "\t";
+							print TABSNP $alRef . "\t";
+							print TABSNP $code_snp . "\t";
+							print TABSNP $code_snp2 . "\t";
+							print TABSNP $FDP."/".$DP_P;
+							if (($DP_P) != 0) {
+								print HTMLSNP "<br><img src=\"".$REPimages."r1.png\" height=5 width=".sprintf("%.0f", $FDP/$DP_P*100).">";
+								print HTMLSNP "<img src=\"".$REPimages."r2.png\" height=5 width=".sprintf("%.0f", 100-$FDP/$DP_P*100).">";
+								print HTMLSNP "<br>".$sub1_1." - ".$sub1_2."</td>";
+								print TABSNP "," . $sub1_1." - ".$sub1_2."\t";
+							}
+							else {
+								print HTMLSNP "</td>";
+								print TABSNP "\t";
+							}
+							print TABSNP $FDP2."/".$DP_P2;
+							print HTMLSNP "<td>".$FDP2."/".$DP_P2;
+							if (($DP_P2) != 0) {
+								print HTMLSNP "<br><img src=\"".$REPimages."r1.png\" height=5 width=".sprintf("%.0f", $FDP2/$DP_P2*100).">";
+								print HTMLSNP "<img src=\"".$REPimages."r2.png\" height=5 width=".sprintf("%.0f", 100-$FDP2/$DP_P2*100).">";
+								print HTMLSNP "<br>".$sub2_1." - ".$sub2_2."</td>";
+								print TABSNP "," . $sub2_1." - ".$sub2_2."\t";
+							}
+							else {
+								print HTMLSNP "</td>";
+								print TABSNP "\t";
+							}
+							print TABSNP "\n";
+							print HTMLSNP "</tr>\n";
+
+							$nbDifferent ++ ;
+							$alleleCommun ++ ;
+							$nbPolyploid1 ++ ;
+							$taille++;
+						}
+					}
+					if ((($GT_poly2 =~ /^0.1$/) || ($GT_poly2 =~ /^0.1$/)) && (($GT_poly =~ /^0.0$/) || ($GT_poly eq ""))) {
+						if (($SG3> $value_filter_p2) && ($SG4> $value_filter_p2)) {
+							print HTMLSNP "<td style=\"border-left:3px solid black\">".$c."</td>";
+							print HTMLSNP "<td class=\"border-left:3px solid black\">".$alRef."</td>";
+							print HTMLSNP "<td>".$code_snp."</td>";
+							print HTMLSNP "<td>".$code_snp2."</td>";
+							print HTMLSNP "<td>".$FDP."/".$DP_P;
+							print TABSNP $s . "\t";
+							print TABSNP $c . "\t";
+							print TABSNP $alRef . "\t";
+							print TABSNP $code_snp . "\t";
+							print TABSNP $code_snp2 . "\t";
+							print TABSNP $FDP."/".$DP_P;
+							if (($DP_P) != 0) {
+								print HTMLSNP "<br><img src=\"".$REPimages."r1.png\" height=5 width=".sprintf("%.0f", $FDP/$DP_P*100).">";
+								print HTMLSNP "<img src=\"".$REPimages."r2.png\" height=5 width=".sprintf("%.0f", 100-$FDP/$DP_P*100).">";
+								print HTMLSNP "<br>".$sub1_1." - ".$sub1_2."</td>";
+								print TABSNP "," . $sub1_1." - ".$sub1_2."\t";
+							}
+							else {
+								print HTMLSNP "</td>";
+								print TABSNP "\t";
+							}
+							print TABSNP $FDP2."/".$DP_P2;
+							print HTMLSNP "<td>".$FDP2."/".$DP_P2;
+							if (($DP_P2) != 0) {
+								print HTMLSNP "<br><img src=\"".$REPimages."r1.png\" height=5 width=".sprintf("%.0f", $FDP2/$DP_P2*100).">";
+								print HTMLSNP "<img src=\"".$REPimages."r2.png\" height=5 width=".sprintf("%.0f", 100-$FDP2/$DP_P2*100).">";
+								print HTMLSNP "<br>".$sub2_1." - ".$sub2_2."</td>";
+								print TABSNP "," . $sub2_1." - ".$sub2_2."\t";
+							}
+							else {
+								print HTMLSNP "</td>";
+								print TABSNP "\t";
+							}
+							print TABSNP "\n";
+							print HTMLSNP "</tr>\n";
+							############
+							# HERE P2  #
+							############
+							$nbDifferent ++ ;
+							$alleleCommun ++ ;
+							$nbPolyploid2 ++ ;
+							$taille++;
+						}
+					}
+					# [6] [8] P1 = 1/1 ; P2 = 0/0 
+					if (($GT_poly =~ /^1.1$/) && (($GT_poly2 =~ /^0.0$/) || ($GT_poly2 eq ""))) {
+						print HTMLSNP "<td style=\"border-left:3px solid black\">".$c."</td>";
+						print HTMLSNP "<td class=\"border-left:3px solid black\">".$alRef."</td>";
+						print HTMLSNP "<td>".$code_snp."</td>";
+						print HTMLSNP "<td>".$code_snp2."</td>";
+						print HTMLSNP "<td>".$FDP."/".$DP_P;
+						print TABSNP $s . "\t";
+						print TABSNP $c . "\t";
+						print TABSNP $alRef . "\t";
+						print TABSNP $code_snp . "\t";
+						print TABSNP $code_snp2 . "\t";
+						print TABSNP $FDP."/".$DP_P;
+						if (($DP_P) != 0) {
+							print HTMLSNP "<br><img src=\"".$REPimages."r1.png\" height=5 width=".sprintf("%.0f", $FDP/$DP_P*100).">";
+							print HTMLSNP "<img src=\"".$REPimages."r2.png\" height=5 width=".sprintf("%.0f", 100-$FDP/$DP_P*100).">";
+							print HTMLSNP "<br>".$sub1_1." - ".$sub1_2."</td>";
+							print TABSNP "," . $sub1_1." - ".$sub1_2."\t";
+						}
+						else {
+							print HTMLSNP "</td>";
+							print TABSNP "\t";
+						}
+						print TABSNP $FDP2."/".$DP_P2;
+						print HTMLSNP "<td>".$FDP2."/".$DP_P2;
+						if (($DP_P2) != 0) {
+							print HTMLSNP "<br><img src=\"".$REPimages."r1.png\" height=5 width=".sprintf("%.0f", $FDP2/$DP_P2*100).">";
+							print HTMLSNP "<img src=\"".$REPimages."r2.png\" height=5 width=".sprintf("%.0f", 100-$FDP2/$DP_P2*100).">";
+							print HTMLSNP "<br>".$sub2_1." - ".$sub2_2."</td>";
+							print TABSNP "," . $sub2_1." - ".$sub2_2."\t";
+						}
+						else {
+							print HTMLSNP "</td>";
+							print TABSNP "\t";
+						}
+						print TABSNP "\n";
+						print HTMLSNP "</tr>\n";
+							$nbDifferent ++ ;
+							$alleleCommun ++ ;
+							$nbPolyploid1 ++ ;
+							$taille++;
+					}
+					if (($GT_poly2 =~ /^1.1$/) && (($GT_poly =~ /^0.0$/) || ($GT_poly eq ""))) {
+						print HTMLSNP "<td style=\"border-left:3px solid black\">".$c."</td>";
+						print HTMLSNP "<td class=\"border-left:3px solid black\">".$alRef."</td>";
+						print HTMLSNP "<td>".$code_snp."</td>";
+						print HTMLSNP "<td>".$code_snp2."</td>";
+						print HTMLSNP "<td>".$FDP."/".$DP_P;
+						print TABSNP $s . "\t";
+						print TABSNP $c . "\t";
+						print TABSNP $alRef . "\t";
+						print TABSNP $code_snp . "\t";
+						print TABSNP $code_snp2 . "\t";
+						print TABSNP $FDP."/".$DP_P;
+						if (($DP_P) != 0) {
+							print HTMLSNP "<br><img src=\"".$REPimages."r1.png\" height=5 width=".sprintf("%.0f", $FDP/$DP_P*100).">";
+							print HTMLSNP "<img src=\"".$REPimages."r2.png\" height=5 width=".sprintf("%.0f", 100-$FDP/$DP_P*100).">";
+							print HTMLSNP "<br>".$sub1_1." - ".$sub1_2."</td>";
+							print TABSNP "," . $sub1_1." - ".$sub1_2."\t";
+						}
+						else {
+							print HTMLSNP "</td>";
+							print TABSNP "\t";
+						}
+						print TABSNP $FDP2."/".$DP_P2;
+						print HTMLSNP "<td>".$FDP2."/".$DP_P2;
+						if (($DP_P2) != 0) {
+							print HTMLSNP "<br><img src=\"".$REPimages."r1.png\" height=5 width=".sprintf("%.0f", $FDP2/$DP_P2*100).">";
+							print HTMLSNP "<img src=\"".$REPimages."r2.png\" height=5 width=".sprintf("%.0f", 100-$FDP2/$DP_P2*100).">";
+							print HTMLSNP "<br>".$sub2_1." - ".$sub2_2."</td>";
+							print TABSNP "," . $sub2_1." - ".$sub2_2."\t";
+						}
+						else {
+							print HTMLSNP "</td>";
+							print TABSNP "\t";
+						}
+						print TABSNP "\n";
+						print HTMLSNP "</tr>\n";
+							$nbDifferent ++ ;
+							$alleleCommun ++ ;
+							$nbPolyploid2 ++ ;
+							$taille++;
+					}
+				#}
+			}
+			
+			
+			#print TABSNP $s."\t".$c."\t".$alRef."\t".$code_snp."\t".$code_snp2."\t".$FDP."\t".$DP_P."\t".$FDP2."\t".$DP_P2;
+			
+			$ligneOK = 1 ;
+		}
+	
+	
+		if (($nbCommuns + $nbCommunHomo + $nbDifferent + $nbHomoDiff + $alleleCommun + $alleleDifferent + $alleleCommunH + $nbPolyploid1 + $nbPolyploid2) > 0 ) {
+		
+			if ($ligneInter == 0) {	
+				print HTMLCOUNT "<td class=\"ted2\" style=\"border-right:3px solid black\">".$s."</td>";
+			}
+			else {
+				print HTMLCOUNT "<td class=\"ted\" style=\"border-right:3px solid black\">".$s."</td>";
+			}
+			print TABCOUNT $s."\t";	
+				
+			#######################################
+			if ($ligneInter == 0) { $ligneInter = 1 ; }
+			else { $ligneInter = 0 ; }
+			#######################################
+			
+			# Calcul des intervalles #
+			##########################
+			$taille_totale = 0 ;
+			my $ref = $intervalle2{$s};
+			my %hash = %$ref;
+			
+			foreach my $interval(keys(%hash)){
+				my @pos = split(/-/,$interval);
+				$taille_inter = $pos[1]-$pos[0]+1 ;
+				$taille_totale = $taille_totale + $taille_inter;
+			}
+			$total1 = $case5 + $case1 + $case2 + $casePolyplother;
+			$total2 = $case5 + $case3ou4 + $caseDiplother;
+			
+			# SYNTHESIS
+			
+			print HTMLCOUNT "<td>".$taille_totale."</td><td style=\"border-left:3px solid black\">".$taille. "</td></td>";	
+			print HTMLCOUNT "<td style=\"border-left:3px solid black\">";
+			print HTMLCOUNT $nbCommuns."</td><td>".$nbCommunHomo."</td><td style=\"border-left:3px solid black\">".$nbDifferent."</td><td style=\"border-left:3px solid black\">";
+			print HTMLCOUNT $nbHomoDiff."</td><td>".$alleleCommun."</td><td>".$alleleDifferent."</td><td>".$alleleCommunH."</td>"; 
+			print HTMLCOUNT "<td style=\"border-left:3px solid black\">".$nbPolyploid1."</td><td>".$nbPolyploid2."</td>";
+			print TABCOUNT $taille_totale."\t".$taille."\t";
+			print TABCOUNT $nbCommuns."\t".$nbCommunHomo."\t".$nbDifferent."\t".$nbHomoDiff."\t".$alleleCommun."\t".$alleleDifferent."\t".$alleleCommunH."\t".$nbPolyploid1."\t".$nbPolyploid2."\t";
+
+			$nbTotGenesAna ++ ;
+		
+			print HTMLCOUNT "</tr>";
+			print TABCOUNT "\n";
+			
+			$totalSize = $totalSize + $taille_totale ;
+			$totalSNP = $totalSNP + $taille ;
+			$totalNbPolyploid1 = $totalNbPolyploid1 + $nbPolyploid1 ;			# SNP heterozygosity for P1
+			$totalNbPolyploid2 = $totalNbPolyploid2 + $nbPolyploid2 ;			# SNP heterozygosity for P2
+			$totalNbCommuns = $totalNbCommuns + $nbCommuns ;					# SNP heterozygosity [P1] = [P2]
+			$totalNbCommunsHomo = $totalNbCommunsHomo + $nbCommunHomo ;			# SNP homozygosity [P1] = [P2]
+			$totalNbDifferent = $totalNbDifferent + $nbDifferent ;				# [P1] ne [P2]
+			$totalNbAlleleCommun = $totalNbAlleleCommun + $alleleCommun ;		# Example : P1 = [A/G] ; P2 = [A]
+			$totalAlleleDifferent = $totalAlleleDifferent + $alleleDifferent ;	# Example : P1 = [A/G] ; P2 = [C] or [T]
+			$totalAlleleCommunH = $totalAlleleCommunH + $alleleCommunH ;		# Example : P1 = [A/G] ; P2 = [A/C]
+			$totalNbHomoDiff = $totalNbHomoDiff + $nbHomoDiff ;					# Example : P1 = [A/G] ; P2 = [A/C]
+		}
+		
+		
+		
+		
+	}
+	########## MODIF DERNIERE MINUTE ################"
+	print HTMLCOUNT "<tr class=\"td3\">\n<td>";
+
+	print HTMLCOUNT $nbTotGenesAna."<td style=\"border-left:3px solid black\">";
+	print HTMLCOUNT $totalSize."</td><td style=\"border-left:3px solid black\">";
+	print HTMLCOUNT $totalSNP."</td><td style=\"border-left:3px solid black\">";
+	print HTMLCOUNT $totalNbCommuns."</td><td>";
+	print HTMLCOUNT $totalNbCommunsHomo."</td><td>";
+	print HTMLCOUNT $totalNbDifferent."</td><td style=\"border-left:3px solid black\">";
+	print HTMLCOUNT $totalNbHomoDiff."</td><td style=\"border-left:3px solid black\">";
+	print HTMLCOUNT $totalNbAlleleCommun."</td><td style=\"border:3px solid black\">";
+	print HTMLCOUNT $totalAlleleDifferent."</td><td style=\"border:3px solid black\">";
+	print HTMLCOUNT $totalAlleleCommunH."</td><td>";
+	print HTMLCOUNT $totalNbPolyploid1."</td><td>";
+	print HTMLCOUNT $totalNbPolyploid2."</td>";
+	print HTMLCOUNT "</tr>";
+
+
+	print TABCOUNT "$nbTotGenesAna\t$totalSize\t$totalSNP\t$totalNbCommuns\t$totalNbCommunsHomo\t$totalNbDifferent\t$totalNbHomoDiff\t$totalNbAlleleCommun\t$totalAlleleDifferent\t$totalAlleleCommunH\t$totalNbPolyploid1\t$totalNbPolyploid2\t";
+	print TABCOUNT "\n";
+ 
+	####################################################				
+	print HTMLSNP "</table>\n";
+	print HTMLSNP "</html>\n";
+	close HTMLSNP ;
+
+	print HTMLCOUNT "</table>\n";
+	print HTMLCOUNT "</html>\n";
+	close HTMLCOUNT ;  
+
+	close TABSNP;
+	close TABCOUNT ;
+
+	# tie @array, 'Tie::File', $SNP_count or die ;
+	# $array[82] = "<table class=\"tab2\"><th class=\"th\"  style=\"text-align:left;\">"; 
+	# $array[83] = "<br>".$nbTotGenesAna." analysed genes";
+	# $array[84] = "<br>".$nbTotGenesVal." with SNP validation";
+	# $array[85] = "<br>Analysis performed on ".$totalSize." bp";
+	# $array[86] = "<br>".$totalSNP." SNP";
+	# $array[87] = "<br><img src=\"".$REPimages."5v.png\" WIDTH=20> : ".$total5." validated SNP";
+	# $array[88] = "<br><br><img src=\"".$REPimages."1.png\" WIDTH=20> : ".$total11."";
+	# $array[89] = "<br><img src=\"".$REPimages."2.png\" WIDTH=20> : ".$total22."";
+	# $array[90] = "<br><img src=\"".$REPimages."3ou4.png\" WIDTH=20> : ".$total3ou4."";
+	# $array[91] = "<br>Other SNP types : ".$totalOther."";
+	# $array[92] = "<br>Heterozygosity for genome 1 : ".$totalGenome2."";
+	# $array[93] = "<br>SNP between parental genomes (diploids) : ".$total512."";
+	# $array[94] = "<br>SNP polyploid : ".$total534."";
+	# $array[95] = "<th class=\"th\"><img src=\"".$REPimages."arbre.png\" WIDTH=400></th></table>";
+}
+
+$time2 = time ;
+$tmps = $time2 - $time;
+print STDOUT "\n\nTemps execution : ".$tmps."\n";