annotate massbank_ws_searchspectrum.pl @ 0:023c380900ef draft default tip

Init repository with last massbank_ws_searchspectrum master version
author fgiacomoni
date Wed, 19 Apr 2017 11:31:58 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
1 #!perl
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
2
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
3 ## script : XXX.pl
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
4
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
5 ## Notes :
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
6 # -> manage score sorting : Cleaned_pcGroups done but not in outputs !
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
7
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
8 #=============================================================================
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
9 # Included modules and versions
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
10 #=============================================================================
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
11 ## Perl modules
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
12 use strict ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
13 use warnings ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
14 use Carp qw (cluck croak carp) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
15
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
16 use threads;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
17 use threads::shared;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
18 use Thread::Queue;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
19
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
20 use Data::Dumper ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
21 use Getopt::Long ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
22 use POSIX ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
23 use FindBin ; ## Allows you to locate the directory of original perl script
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
24
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
25 ## Specific Perl Modules (PFEM)
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
26 use lib $FindBin::Bin ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
27 my $binPath = $FindBin::Bin ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
28 use lib::csv qw( :ALL ) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
29 use lib::conf qw( :ALL ) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
30
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
31 ## Dedicate Perl Modules (Home made...)
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
32 use lib::massbank_api qw( :ALL ) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
33 use lib::threader qw(:ALL) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
34 use lib::mapper qw(:ALL) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
35 use lib::writter qw(:ALL) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
36 use lib::massbank_parser qw(:ALL) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
37
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
38
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
39
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
40 ## Initialized values
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
41 my ($help, $mzs_file, $col_mz, $col_int, $col_pcgroup, $line_header ) = ( undef, undef, undef, undef, undef,undef, undef ) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
42 my ($server, $ion_mode, $score_threshold, $instruments, $max, $unit, $tol, $cutoff) = ( undef, undef, undef, undef, undef, undef, undef ) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
43 my ($output_json, $output_tabular, $output_xlsx, $output_html ) = ( undef, undef, undef, undef ) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
44
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
45 ## Local values ONLY FOR TEST :
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
46 #my $server = 'JP' ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
47 #my $threading_threshold = 6 ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
48
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
49 #=============================================================================
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
50 # Manage EXCEPTIONS
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
51 #=============================================================================
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
52 &GetOptions ( "help|h" => \$help, # HELP
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
53 "masses:s" => \$mzs_file,
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
54 "col_mz:i" => \$col_mz,
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
55 "col_int:i" => \$col_int, ## optionnal
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
56 "col_pcgroup:i" => \$col_pcgroup,
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
57 "lineheader:i" => \$line_header,
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
58 "mode:s" => \$ion_mode,
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
59 "score_threshold:f" => \$score_threshold,
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
60 "instruments:s" => \$instruments, # advanced -> to transform into string with comma => done !
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
61 "max:i" => \$max, # advanced
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
62 "unit:s" => \$unit, # advanced
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
63 "tolerance:f" => \$tol,
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
64 "cutoff:i" => \$cutoff, # advanced : intensity cutoff
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
65 "server:s" => \$server, ## by default JP and # advanced
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
66 "output_json:s" => \$output_json,
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
67 "output_xlsx:s" => \$output_xlsx,
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
68 "output_tabular:s" => \$output_tabular,
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
69 "output_html:s" => \$output_html,
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
70 ) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
71
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
72 ## if you put the option -help or -h function help is started
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
73 if ( defined($help) ){ &help ; }
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
74
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
75 #=============================================================================
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
76 # MAIN SCRIPT
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
77 #=============================================================================
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
78
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
79 ## -------------- Conf file ------------------------ :
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
80 my ( $CONF ) = ( undef ) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
81 foreach my $conf ( <$binPath/*.cfg> ) {
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
82 my $oConf = lib::conf::new() ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
83 $CONF = $oConf->as_conf($conf) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
84 }
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
85
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
86 ## -------------- HTML template file ------------------------ :
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
87 foreach my $html_template ( <$binPath/*.tmpl> ) { $CONF->{'HTML_TEMPLATE'} = $html_template ; }
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
88
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
89 ## Main variables :
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
90 my ($pcs, $mzs, $into, $complete_rows, $pcgroups) = (undef, undef, undef, undef, undef) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
91
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
92 ## manage csv file containing list of masses (every thing is manage in jar)
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
93 if ( ( defined $mzs_file ) and ( $mzs_file ne "" ) and ( -e $mzs_file ) ) {
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
94
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
95 ## parse csv ids and masses
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
96 my $is_header = undef ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
97 my $ocsv = lib::csv->new() ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
98 my $csv = $ocsv->get_csv_object( "\t" ) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
99 if ( ( defined $line_header ) and ( $line_header > 0 ) ) { $is_header = 'yes' ; }
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
100 $pcs = $ocsv->get_value_from_csv_multi_header( $csv, $mzs_file, $col_pcgroup, $is_header, $line_header ) ; ## retrieve pc values on csv
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
101 $mzs = $ocsv->get_value_from_csv_multi_header( $csv, $mzs_file, $col_mz, $is_header, $line_header ) ; ## retrieve mz values on csv
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
102 $into = $ocsv->get_value_from_csv_multi_header( $csv, $mzs_file, $col_int, $is_header, $line_header ) if ( defined $col_int ); ## retrieve into values on csv // optionnal in input files
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
103 $complete_rows = $ocsv->parse_csv_object($csv, \$mzs_file) ; ## parse all csv for output csv build
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
104
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
105 ## manage input file with no into colunm / init into with a default value of 10
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
106 if ( !defined $col_int ) {
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
107 my $nb_mzs = scalar(@{$mzs}) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
108 my @intos = map {10} (0..$nb_mzs-1) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
109 my $nb_intos = scalar(@intos) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
110 if ($nb_intos == $nb_mzs) { $into = \@intos ; }
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
111 else { carp "A difference exists between intensity and mz values\n" }
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
112 }
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
113
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
114 ## manage instruments string to array_ref
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
115 if (defined $instruments ) {
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
116 if ($instruments eq '') { ## in xml : can select nothing...
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
117 $instruments = ['all'] ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
118 }
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
119 else {
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
120 my @instruments = split(/,/, $instruments) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
121 $instruments = \@instruments ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
122 }
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
123 }
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
124
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
125
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
126 ## Build pcgroups with their features :
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
127 my $omap = lib::mapper->new() ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
128 $pcgroups = $omap->get_pcgroups($pcs, $mzs, $into ) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
129 my $pcgroup_list = $omap->get_pcgroup_list($pcs ) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
130
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
131 # print Dumper $pcgroups ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
132
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
133 my $pc_num = 0 ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
134 $pc_num = scalar(@{$pcgroup_list}) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
135
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
136 ## manage a list of query pc_group dependant:
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
137 if ($pcgroups) {
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
138 ## - - - - - - - - - - - - - - - - - - - - - Multithreadind mode if pcgroups > 6 - - - - - - - - - - - - - - - -
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
139 if ($pc_num > $CONF->{'THREADING_THRESHOLD'}) {
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
140 print $server."\n" ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
141 print "\n------ ** ** ** Using multithreading mode ** ** ** --------\n\n" ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
142 my $time_start = time ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
143
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
144 our $NBTHREADS = $CONF->{'THREADING_THRESHOLD'} ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
145
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
146 # use constant THREADS => 6 ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
147 my $Qworks = Thread::Queue->new();
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
148 my @threads = () ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
149 my @queries = () ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
150 my @Qresults = () ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
151
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
152 foreach my $pc_group_id (keys %{$pcgroups}) {
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
153 push (@queries, $pcgroups->{$pc_group_id}) if $pcgroups->{$pc_group_id} ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
154 }
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
155
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
156 for (1..$NBTHREADS) {
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
157 my $oworker = lib::threader->new ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
158 push @threads, threads->create(sub { $oworker->searchSpectrumWorker($Qworks, $server, $ion_mode, $instruments, $max, $unit, $tol, $cutoff) ; } ) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
159 }
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
160
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
161 $Qworks->enqueue(@queries);
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
162 $Qworks->enqueue(undef) for 1..$NBTHREADS;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
163 push @Qresults, $_->join foreach @threads;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
164
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
165
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
166 my $time_end = time ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
167 my $seconds = $time_end-$time_start ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
168 print "\n------ Time used in multithreading mode : $seconds seconds --------\n\n" ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
169
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
170 # print Dumper @Qresults ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
171
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
172 ## controle number of returned queries :
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
173 my $massbank_results_num = 0 ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
174 $massbank_results_num = scalar @Qresults ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
175
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
176 if ( $massbank_results_num == $pc_num ) {
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
177 ## Map @Qresults with annotation hash : pcgroup_id in @Qresults (pcgroup2) // id in $pcgroups (pcgroup2)
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
178 foreach my $result (@Qresults) {
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
179 ## manage annotation part
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
180 if ($result->{'pcgroup_id'}) {
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
181 if ($pcgroups->{$result->{'pcgroup_id'}}) {
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
182 $pcgroups->{$result->{'pcgroup_id'}}{'annotation'} = $result ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
183 }
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
184 else { carp "Carefull : no mapping possible between massbank results and initial pcgroups data\n";}
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
185 }
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
186 else { carp "Carefull : no pcgroup id defined in massbank results\n"; }
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
187
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
188 ## manage massbank_ids part
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
189 if ($result->{'res'}) {
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
190 my @tmp_res = map {$_->{'id'}} @{$result->{'res'}} ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
191 $pcgroups->{$result->{'pcgroup_id'}}{'massbank_ids'} = \@tmp_res ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
192 }
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
193 }
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
194 }
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
195 else {
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
196 croak "[ERROR] : problem between massbank results number and pcgroups number\n";
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
197 }
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
198 }
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
199 ## - - - - - - - - - - - - - - - - - - - - - mono thread mode if pcgroups <= 6 - - - - - - - - - - - - - - - -
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
200 else {
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
201 ## connexion
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
202 # print $server."\n" ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
203 my $omassbank = lib::massbank_api->new() ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
204 my $soap = $omassbank->selectMassBank($server) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
205 print "\n------ ** ** ** Using batch mode ** ** ** --------\n\n" ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
206 my $time_start = time ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
207 foreach my $pcgroup (keys %{$pcgroups}) {
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
208 ## searchSpectrum via SOAP
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
209 print "Annot pcgroup n-$pcgroup\n" ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
210 my $oquery = lib::massbank_api->new() ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
211 my ($results, $num) = $oquery->searchSpectrum($soap, $pcgroups->{$pcgroup}{'id'}, $pcgroups->{$pcgroup}{'mzmed'}, $pcgroups->{$pcgroup}{'into'}, $ion_mode, $instruments, $max, $unit, $tol, $cutoff) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
212 $pcgroups->{$pcgroup}{'annotation'} = $results ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
213 # print Dumper $results ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
214 }
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
215 my $time_end = time ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
216 my $seconds = $time_end-$time_start ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
217 print "\n------ Time used in foreach mode: $seconds seconds --------\n\n" ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
218 }
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
219 }
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
220 else {
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
221 croak "The pcgroup object is not defined\n" ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
222 }
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
223 # print "Init pcGroups results are\n" ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
224 # print Dumper $pcgroups ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
225
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
226 } ## End of elsif "defined $mzs_file"
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
227 else {
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
228 warn "[WARN] Can't use Massbank WS service without an existing input tabular file\n" ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
229 &help ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
230 }
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
231
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
232 ## Clean zone - use threshold on massbank entry returned score
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
233 my $omap = lib::mapper->new() ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
234 my $cleaned_pcgroups = $omap->filter_pcgroup_res($pcgroups, $score_threshold) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
235
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
236 #print "Cleaned_pcGroups are\n" ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
237 #print Dumper $cleaned_pcgroups ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
238
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
239 ## add min/max value of each mzmed in the pc_group
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
240 my $pcgroups_with_intervales = $omap->add_min_max_for_pcgroup_res($cleaned_pcgroups, $tol ) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
241
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
242 #print "pcGroups_with_intervales are\n" ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
243 #print Dumper $pcgroups_with_intervales ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
244
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
245
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
246 ## search in the local indexed db - - - TODO - - -
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
247
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
248 ## OR search new ones
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
249
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
250 ## get all unique Massbank Ids found
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
251 my $oids = lib::mapper->new() ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
252 my $all_massbank_ids = $omap->compute_ids_from_pcgroups_res($cleaned_pcgroups) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
253
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
254 ## get entries on the MassBank server by ID by pieces of 10
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
255 my $omapper = lib::mapper->new() ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
256 my $recordList = $omapper->get_massbank_records_by_chunk ($server, $all_massbank_ids, 10) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
257 #print "\n\nRecords are\n" ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
258 #print Dumper $recordList ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
259 #print Dumper $all_massbank_ids ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
260
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
261 ## foreach record - get id and peaks - create a object
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
262 my %records = ();
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
263 foreach (@$recordList) {
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
264 ## parse record handles
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
265 my $parser = lib::massbank_parser->new() ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
266 my $id = $parser->getIdFromString($_) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
267 $records{$id}{'peaks'} = $parser->getPeaksFromString($_) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
268 $records{$id}{'names'} = $parser->getChemNamesFromString($_) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
269 $records{$id}{'instrument_type'} = $parser->getInstrumentTypeFromString($_) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
270 $records{$id}{'precursor_type'} = $parser->getPrecursorTypeFromString($_) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
271 $records{$id}{'ms_type'} = $parser->getMsTypeFromString($_) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
272 $records{$id}{'formula'} = $parser->getFormulaFromString($_) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
273 $records{$id}{'exact_mz'} = $parser->getExactMzFromString($_) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
274 $records{$id}{'inchi'} = $parser->getInchiFromString($_) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
275 }
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
276 #print Dumper %records ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
277
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
278 ## Map pc_groups and records
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
279 my $well_annoted_pcGroups = $omapper->mapGroupsWithRecords($pcgroups_with_intervales, \%records) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
280
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
281 #print Dumper $well_annoted_pcGroups ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
282
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
283 ## Output writting :
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
284 my ( $massbank_matrix ) = ( undef ) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
285
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
286 ## XLS OUTPUT -- new format
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
287 if ( (defined $output_xlsx) and (defined $well_annoted_pcGroups) and (defined $mzs) and (defined $pcs) ) {
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
288 my $owritter = lib::writter->new() ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
289 $owritter->write_xls_skel(\$output_xlsx, $mzs, $pcs, $well_annoted_pcGroups, \%records) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
290 }
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
291
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
292 ## CSV OUTPUT
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
293 if ( (defined $output_tabular) and (defined $well_annoted_pcGroups) and (defined $pcs) and (defined $mzs) ) {
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
294 my $omapper = lib::mapper->new() ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
295 if ( ( defined $line_header ) and ( $line_header == 1 ) ) { $massbank_matrix = $omapper->set_massbank_matrix_object('massbank', $pcs, $mzs, $well_annoted_pcGroups, \%records ) ; }
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
296 elsif ( ( defined $line_header ) and ( $line_header == 0 ) ) { $massbank_matrix = $omapper->set_massbank_matrix_object(undef, $pcs, $mzs, $well_annoted_pcGroups, \%records ) ; }
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
297
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
298 $massbank_matrix = $omapper->add_massbank_matrix_to_input_matrix($complete_rows, $massbank_matrix) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
299 my $owritter = lib::writter->new() ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
300 $owritter->write_csv_skel(\$output_tabular, $massbank_matrix) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
301 }
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
302
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
303 my $json_scalar = undef ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
304 ## JSON OUTPUT
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
305 if ( (defined $output_json) and (defined $well_annoted_pcGroups) and (defined $mzs) and (defined $pcs) ) {
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
306 my $omapper = lib::mapper->new() ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
307 $json_scalar = $omapper->map_pc_to_generic_json($pcs, $well_annoted_pcGroups, \%records) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
308 my $owritter = lib::writter->new() ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
309 $owritter->write_json_skel(\$output_json, $json_scalar) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
310 }
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
311
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
312 ## HTML OUTPUT -- TODO
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
313 if ( (defined $output_html) and (defined $json_scalar) ) {
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
314
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
315 # print Dumper $json_scalar ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
316
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
317 ## Uses N mz and theirs entries per page (see config file).
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
318 # how many pages you need with your input mz list?
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
319 my $nb_pages_for_html_out = ceil( scalar(@{$mzs} ) / $CONF->{HTML_ENTRIES_PER_PAGE} ) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
320
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
321 ## Search condition:
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
322 my $search_condition = "Search params : Molecular specie = $ion_mode / delta ($unit) = $tol / Score threshold = $score_threshold and max hit = $max per pcgroup" ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
323
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
324 my $oHtml = lib::mapper->new() ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
325 my ($tbody_object) = $oHtml->set_html_tbody_object( $nb_pages_for_html_out, $CONF->{HTML_ENTRIES_PER_PAGE} ) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
326 ($tbody_object) = $oHtml->add_mz_to_tbody_object($tbody_object, $CONF->{HTML_ENTRIES_PER_PAGE}, $mzs, $json_scalar) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
327 ($tbody_object) = $oHtml->add_entries_to_tbody_object($tbody_object, $CONF->{HTML_ENTRIES_PER_PAGE}, $mzs, $json_scalar) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
328
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
329 my $oWritter = lib::writter->new() ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
330 $oWritter->write_html_skel(\$output_html, $tbody_object, $nb_pages_for_html_out, $search_condition, $CONF->{'HTML_TEMPLATE'}, $CONF->{'JS_GALAXY_PATH'}, $CONF->{'CSS_GALAXY_PATH'}) ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
331 }
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
332 else {
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
333 warn "[WARN] The html output file or the json iss not defined\n" ;
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
334 }
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
335
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
336
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
337
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
338
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
339
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
340
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
341
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
342 #====================================================================================
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
343 # Help subroutine called with -h option
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
344 # number of arguments : 0
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
345 # Argument(s) :
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
346 # Return : 1
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
347 #====================================================================================
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
348 sub help {
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
349 print STDERR "
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
350 massbank_ws_searchspectrum.pl
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
351
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
352 # massbank_ws_searchspectrum.pl is a script to use SOAP massbank webservice and send specific queries about spectra searches.
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
353 # Input : a list of mzs, intensities, pcgroup.
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
354 # Author : Franck Giacomoni
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
355 # Email : franck.giacomoni\@clermont.inra.fr
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
356 # Version : 1.0
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
357 # Created : 20/01/2017
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
358 USAGE :
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
359 massbank_ws_searchspectrum.pl -help OR
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
360
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
361 massbank_ws_searchspectrum.pl
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
362 -masses [name of input file] -col_id -col_mz -col_int -col_pcgroup -lineheader
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
363 -mode [ion mode : Positive, Negative or Both ]
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
364 -score_threshold [Ignore Massbank results with a score lower than the defined threshold]
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
365 -instruments [array of string: all or values obtained by getInstrumentTypes method]
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
366 -max [0 is all results or int]
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
367 -unit [unit or ppm]
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
368 -tolerance [Tolerance of values of m/z of peaks: 0.3 unit or 50 ppm]
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
369 -cutoff [Ignore peaks whose intensity is not larger than the value of cutoff. Default: 50)]
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
370 -server [name of the massbank server : EU or JP only]
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
371 -output_json [ouput file for JSON]
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
372 -output_xls [ouput file for XLS]
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
373 -output_tabular [ouput file for TABULAR]
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
374
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
375 ";
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
376 exit(1);
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
377 }
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
378
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
379 ## END of script - F Giacomoni
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
380
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
381 __END__
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
382
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
383 =head1 NAME
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
384
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
385 XXX.pl -- script for
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
386
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
387 =head1 USAGE
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
388
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
389 XXX.pl -precursors -arg1 [-arg2]
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
390 or XXX.pl -help
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
391
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
392 =head1 SYNOPSIS
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
393
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
394 This script manage ...
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
395
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
396 =head1 DESCRIPTION
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
397
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
398 This main program is a ...
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
399
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
400 =over 4
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
401
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
402 =item B<function01>
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
403
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
404 =item B<function02>
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
405
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
406 =back
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
407
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
408 =head1 AUTHOR
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
409
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
410 Franck Giacomoni E<lt>franck.giacomoni@clermont.inra.frE<gt>
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
411 Yann Guitton
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
412
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
413 =head1 LICENSE
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
414
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
415 This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
416
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
417 =head1 VERSION
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
418
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
419 version 1 : 05 / 01 / 2016
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
420
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
421 version 2 : ??
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
422
023c380900ef Init repository with last massbank_ws_searchspectrum master version
fgiacomoni
parents:
diff changeset
423 =cut