[Bio] / MGRAST / services.cgi Repository:
ViewVC logotype

Diff of /MGRAST/services.cgi

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.4, Mon Mar 7 18:28:40 2011 UTC revision 1.5, Mon Mar 7 21:23:17 2011 UTC
# Line 696  Line 696 
696    
697      # parse sample xml      # parse sample xml
698      my $xs = XML::Simple->new();      my $xs = XML::Simple->new();
699      my $block = $xs->XMLin( $data , ForceArray => [ 'study' , 'sample' , 'sequence_prep' , 'sample_prep' ]);      my $block = $xs->XMLin( $data , ForceArray => [ 'study' , 'sample' , 'sample_id' , 'sequence_prep' , 'sample_prep' ]);
700    
701      # single study without <daba_block>      # single study without <daba_block>
702    
# Line 746  Line 746 
746    
747          # get sample          # get sample
748          my $sample = '';          my $sample = '';
749          if ( $prep->{ sample_id } and $user->has_right(undef, 'edit' , 'sample', $prep->{ sample_id } ) ){          my $sid    = 0 ;
750              $sample =   $meta->db->MetaDataCollection->init( { ID => $prep->{ sample_id } } ) ;          if ( $prep->{ sample_id } ){
751              print STDERR "Getting Sample\n" ;              unless (ref $prep->{ sample_id }){
752              print STDERR $sample , "\n";                  $sid       = $prep->{ sample_id } || 0 ;
753          }          }
754            }
755    
756    
757          unless ($sample and ref $sample) {          # check for mgrast project id
758              $msg .= "no sample id or no rights to edit sample\n" ;          unless($sid){
759              print STDERR $msg  , "\n";              foreach my $s (@{ $prep->{sample_id} }){
760    
761                    unless (ref $s){
762                        $sid       = $s || 0 ;
763                    }
764                    else{
765                        $sid = $s->{content} if ($s->{namespace} =~/mgrast|mg-rast/i);
766                    }
767                }
768            }
769            if ( $sid and $user->has_right(undef, 'edit' , 'sample', $sid ) ){
770                $sample =   $meta->db->MetaDataCollection->init( { ID => $sid } ) ;
771            }
772            else{
773                $msg .= "no sample id or no rights to edit sample\n"  . ( $sid ? "($sid)\n" : '') ;
774              return ( 0 , $msg , [] );              return ( 0 , $msg , [] );
775  1       }          }
776    
777    
778          print STDERR "Reading prep file 3\n";          print STDERR "Reading prep file 3\n";
779          exit unless  $prep->{ sample_id } ;          exit unless  $prep->{ sample_id } ;
780          print STDERR "Reading prep file 4\n";          print STDERR "Reading prep file 4\n";
# Line 912  Line 930 
930    
931          # only create if a user is present          # only create if a user is present
932          if ($user and ref $user){          if ($user and ref $user){
933              my ($s , $e , $ids , $md5 ) = create_job($master , $meta , $user , $cgi->param('POSTDATA') ) ;              my ($s , $e , $ids , $md5s ) = create_job($master , $meta , $user , $cgi->param('POSTDATA') ) ;
934              print STDERR scalar @$ids . " Job Created.\n";              print STDERR scalar @$ids . " Job Created.\n";
935              $msg  .= "<success>$s</success>\n<error>$e</error>" ;              $msg  .= "<success>$s</success>\n<error>$e</error>" ;
936              foreach my $id (@$ids){              foreach my $id (@$ids){
937                  $data = "<job_id>$id</job_id>\n";                  $data = "<job_id>$id</job_id>\n";
938              }              }
939              $data .="<md5sum>$md5<md5sum>\n";              $data .="<md5sum>" . (join " ; " , @$md5s) ."<md5sum>\n";
940          }          }
941          else{          else{
942              print Dumper $user ;              print Dumper $user ;
# Line 942  Line 960 
960      my $error    = 0 ;      my $error    = 0 ;
961      my $msg      = '';      my $msg      = '';
962      my @job_ids ;      my @job_ids ;
963        my @md5s ;
964      my $pipeline_options = {};      my $pipeline_options = {};
965    
966      # parse sample xml      # parse sample xml
967      my $xs = XML::Simple->new();      my $xs = XML::Simple->new();
968      my $block = $xs->XMLin( $data , ForceArray => [ 'study' , 'sample' , 'samples' , 'filter_reference_sequence_set' ,] , KeyAttr => [] );      my $block = $xs->XMLin( $data , ForceArray => [ 'study' , 'sample' , 'samples' , 'sample_id' , 'filter_reference_sequence_set' ,] , KeyAttr => [] );
969    
970      # single study without <daba_block>      # single study without <daba_block>
971      push @{ $block->{files} } , $block unless ($block->{files}) ;      push @{ $block->{files} } , $block unless ($block->{files}) ;
# Line 994  Line 1013 
1013    
1014          my $sample = '' ;          my $sample = '' ;
1015          foreach my $s ( @{ $data->{sample} }){          foreach my $s ( @{ $data->{sample} }){
1016              $sample = $s if (!($s->{namspace}) or ( $s->{namespace} =~ /mgrast|mg-rast/i)) ;              $sample = $s if (!($s->{namespace}) or ( $s->{namespace} =~ /mgrast|mg-rast/i)) ;
1017            }
1018            unless($sample){
1019                foreach my $s ( @{ $data->{sample_id} }){
1020                    unless( ref $s){
1021                        $sample = $s ;
1022                    }
1023                    else{
1024                        $sample = $s->{content} if ( $s->{namespace} =~ /mgrast|mg-rast/i ) ;
1025                    }
1026                }
1027          }          }
1028    
1029          if ( ($data->{sample_id} || $sample->{id}) and $user->has_right(undef, 'edit' , 'sample', ($data->{sample_id} || $sample->{id}) ) ){          if ($sample and $user->has_right(undef, 'edit' , 'sample', ($sample) ) ){
1030              $collection =   $meta->db->MetaDataCollection->init( { ID =>($data->{sample_id} || $sample->{id}) } ) ;              $collection =   $meta->db->MetaDataCollection->init( { ID => $sample } ) ;
1031          }          }
1032          else{          else{
1033              $msg .= "no sample id or no rights to edit sample\n" ;              $msg .= "no sample id or no rights to edit sample ($sample)\n" ;
1034          }          }
1035    
1036          if (exists $data->{options} ){          if (exists $data->{options} ){
# Line 1068  Line 1097 
1097                  print FILE  $data->{sequences} , "\n";                  print FILE  $data->{sequences} , "\n";
1098              }              }
1099    
1100              my ($md5 , $f) = split " " , `md5sum $filename` ;              my ($md5 , $f) = `md5sum $filename` =~/^\s*([^\s]+)\s*(\w+)/;
1101    
1102                unless($md5){
1103                    print "Soething wrong , can't compute md5 for $filename\n";
1104                    print STDERR "Something wrong , can't compute md5 for $filename\n";
1105                    exit;
1106                }
1107                push @md5s , $md5 ;
1108    
1109    
1110              my $seq_stats  = '' ; # compute sequence stats from file , use Travis script              my $seq_stats  = '' ; # compute sequence stats from file , use Travis script
1111    
1112              my $job  = $meta->db->Job->reserve_job($user , $pipeline_options , $seq_stats);              my $job  = $meta->db->Job->reserve_job($user , $pipeline_options , $seq_stats);
1113                push @job_ids , $job->job_id if ($job and ref $job);
1114              $msg .= $job->finish_upload($filename) ;              $msg .= $job->finish_upload($filename) ;
1115    
1116                $job->sample($collection) ;
1117                unless(ref $collection->job){
1118                    $collection->job($job) ;
1119                }
1120    
1121              #clean up              #clean up
1122              if ( -d $job->directory and -f $job->download_dir . "/" . $job->metagenome_id . ".fasta" ){              if ( -d $job->directory and -f $job->download_dir . "/" . $job->job_id . ".fasta" ){
1123                  my $error = `rm $filename` ;                  my $error = `rm $filename` ;
1124              }              }
1125              else{              else{
1126                  print STDERR "Missing file " . $job->download_dir . "/" . $job->metagenome_id . ".fasta\n";                  print STDERR "Missing file " . $job->download_dir . "/" . $job->job_id . ".fasta\n";
1127    
1128                  #delete job object if creation failed                  #delete job object if creation failed
1129    
1130                  return ( 0 , "Creation of job failed.\n$msg" , \@job_ids ) ;                  return ( 0 , "Creation of job failed.\n$msg" , \@job_ids , \@md5s) ;
1131              }              }
1132    
1133              # call mgrast job method here              # call mgrast job method here
1134              my @jobs ;              my @jobs ;
1135              push @jobs , $job->job_id if (ref $job);              push @jobs , $job->job_id if (ref $job);
             push @job_ids , $job->job_id ;  
1136              print STDERR "Created job " . $job->job_id , "\n"              print STDERR "Created job " . $job->job_id , "\n"
1137              #return (0 , "$msg\nnot implemented yet. File /tmp/$filename" , \@jobs , $md5) ;              #return (0 , "$msg\nnot implemented yet. File /tmp/$filename" , \@jobs , $md5) ;
1138          }          }
# Line 1106  Line 1149 
1149          #push @job_ids , $job->job_id ;          #push @job_ids , $job->job_id ;
1150      }      }
1151      $error .= "\n\n$msg\n";      $error .= "\n\n$msg\n";
1152      return ( $success , $error , \@job_ids ) ;      return ( $success , $error , \@job_ids , \@md5s) ;
1153  }  }
1154    
1155    

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3