Mercurial > repos > fgiacomoni > lipidmaps_textsearch
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 ;