diff lib/writer.pm @ 2:1276908e8fc4 draft

Master branch Updating - - Fxx
author fgiacomoni
date Mon, 20 Aug 2018 09:17:05 -0400
parents e8bd49794291
children
line wrap: on
line diff
--- a/lib/writer.pm	Tue Apr 11 04:09:58 2017 -0400
+++ b/lib/writer.pm	Mon Aug 20 09:17:05 2018 -0400
@@ -15,8 +15,8 @@
 $VERSION     = "1.0";
 @ISA         = qw(Exporter);
 @EXPORT      = ();
-@EXPORT_OK   = qw(write_csv_skel write_html_skel );
-%EXPORT_TAGS = ( ALL => [qw( write_csv_skel write_html_skel)] );
+@EXPORT_OK   = qw(write_csv_skel write_html_skel convert_tbody_to_globalmatrix );
+%EXPORT_TAGS = ( ALL => [qw( write_csv_skel write_html_skel convert_tbody_to_globalmatrix )] );
 
 =head1 NAME
 
@@ -607,6 +607,75 @@
 }
 ## END of SUB
 
+=head2 METHOD convert_tbody_to_globalmatrix
+
+	## Description : allow the conversion of the tbody object to a global matrix of results
+	## Input : $tbody_object
+	## Output : $var4
+	## Usage : my ( $var4 ) = convert_tbody_to_globalmatrix ( $tbody_object ) ;
+	
+=cut
+## START of SUB
+sub convert_tbody_to_globalmatrix {
+    ## Retrieve Values
+    my $self = shift ;
+    my ( $header, $tbody_object ) = @_;
+    my @lm_matrix = () ;
+    my $nb_headers = 0 ;    
+    
+    if ( defined $header ) {
+    	$nb_headers = scalar(@{$header}) ;
+    	if ($nb_headers == 5) {
+    		push @lm_matrix, $header ;
+    	}
+    }
+    else {
+    		$header = [ 'MASS', 'CLUSTER_DELTA', 'CLUSTER_FORMULA', 'CLUSTER_NAME', 'CLUSTER_TOTAL' ] ; ## default header
+    		push @lm_matrix, $header ;
+    	}
+    
+    if (defined $tbody_object) {
+    	
+    	my @Masses = @{$tbody_object->[0]{'MASSES'}} ;
+    	## foreach masses :
+    	foreach my $mz (@Masses) {
+    		my $MZ = $mz->{'MASS'} ;
+    		
+    		## foreach transfo :
+    		foreach my $transfo (@{$mz->{'TRANSFORMS'}}) {
+    			
+    			## foreach cluster
+    			foreach my $cluster (@{$transfo->{'CLUSTERS'}}) {
+    				my @tmp_cluster = () ;
+    				push (@tmp_cluster, $MZ) if (defined $MZ);
+	    			my $CLUSTER_DELTA = $cluster->{'CLUSTER_DELTA'} ;
+	    			push (@tmp_cluster, $CLUSTER_DELTA) if (defined $CLUSTER_DELTA);
+	    			my $CLUSTER_FORMULA = $cluster->{'CLUSTER_FORMULA'} ;
+	    			push (@tmp_cluster, $CLUSTER_FORMULA) if (defined $CLUSTER_FORMULA);
+	    			my $CLUSTER_NAME = $cluster->{'CLUSTER_NAME'} ;
+	    			push (@tmp_cluster, $CLUSTER_NAME) if (defined $CLUSTER_NAME);
+	    			my $CLUSTER_TOTAL = $cluster->{'CLUSTER_TOTAL'} ;
+	    			push (@tmp_cluster, $CLUSTER_TOTAL) if (defined $CLUSTER_TOTAL);
+	    			
+	    			if ( (defined $MZ) and (defined $CLUSTER_DELTA) and (defined $CLUSTER_FORMULA) and (defined $CLUSTER_NAME) and (defined $CLUSTER_TOTAL) ) {
+	    				push @lm_matrix, \@tmp_cluster ;
+	    			}
+	    			else {
+	    				croak "The conversion aborted ! Because a value is missing ($MZ or $CLUSTER_DELTA or $CLUSTER_FORMULA or $CLUSTER_NAME or $CLUSTER_TOTAL)" ; 
+	    			}
+	    			
+    			} #end foreach clusters
+    		} #end foreach transfo
+    	} #end foreach masses
+    }
+    else {
+    	croak 'No tbody_object defined...' ;
+    }
+    
+    return (\@lm_matrix) ;
+}
+### END of SUB
+
 1 ;