@@ -314,34 +314,39 @@ private File doAlignment(NimbleGenome genome, File refJson, File bam, PipelineSt
314314 alignArgs .add ("/work/" + resultsTsv .getName ());
315315 alignArgs .add ("/work/" + localBam .getName ());
316316
317- runUsingDocker ( alignArgs , output , "align-" + genome .genomeId );
317+ File doneFile = getNimbleDoneFile ( getPipelineCtx (). getWorkingDirectory () , "align-" + genome .genomeId );
318318
319- File resultsGz = new File ( resultsTsv . getPath () + ".gz" );
320- if (! resultsTsv . exists () && !resultsGz .exists ())
319+ boolean dockerRan = runUsingDocker ( alignArgs , output , "align-" + genome . genomeId );
320+ if (dockerRan && !resultsTsv .exists ())
321321 {
322- File doneFile = getNimbleDoneFile (getPipelineCtx ().getWorkingDirectory (), "align-" + genome .genomeId );
323322 if (doneFile .exists ())
324323 {
325324 doneFile .delete ();
326325 }
327326
328327 throw new PipelineJobException ("Expected to find file: " + resultsTsv .getPath ());
329328 }
330- else if (!resultsGz .exists ())
329+
330+ File resultsGz = new File (resultsTsv .getPath () + ".gz" );
331+ if (dockerRan )
331332 {
333+ if (resultsGz .exists ())
334+ {
335+ getPipelineCtx ().getLogger ().debug ("Deleting pre-existing gz output: " + resultsGz .getName ());
336+ resultsGz .delete ();
337+ }
338+
332339 // NOTE: perform compression outside of nimble until nimble bugs fixed
333340 getPipelineCtx ().getLogger ().debug ("Compressing results TSV file" );
334341 resultsGz = Compress .compressGzip (resultsTsv );
335342 resultsTsv .delete ();
336343 }
337- else
344+ else if (! resultsGz . exists ())
338345 {
339- getPipelineCtx (). getLogger (). debug ( "Compressed output found, skipping gzip" );
346+ throw new PipelineJobException ( "Expected to find gz file: " + resultsGz . getPath () );
340347 }
341348
342- resultsTsv = resultsGz ;
343-
344- File log = getNimbleLogFile (resultsTsv .getParentFile (), genome .genomeId );
349+ File log = getNimbleLogFile (resultsGz .getParentFile (), genome .genomeId );
345350 if (!log .exists ())
346351 {
347352 throw new PipelineJobException ("Expected to find file: " + log .getPath ());
@@ -372,12 +377,12 @@ else if (!resultsGz.exists())
372377 getPipelineCtx ().getLogger ().debug ("Alignment output file not present: " + alignmentOutputFile .getName ());
373378 }
374379
375- return resultsTsv ;
380+ return resultsGz ;
376381 }
377382
378383 public static File getNimbleLogFile (File baseDir , int genomeId )
379384 {
380- return new File (baseDir , "nimbleDebug ." + genomeId + ".txt" );
385+ return new File (baseDir , "nimbleStats ." + genomeId + ".txt" );
381386 }
382387
383388 private File getNimbleDoneFile (File parentDir , String resumeString )
@@ -387,7 +392,7 @@ private File getNimbleDoneFile(File parentDir, String resumeString)
387392
388393 public static String DOCKER_CONTAINER_NAME = "ghcr.io/bimberlab/nimble:latest" ;
389394
390- private void runUsingDocker (List <String > nimbleArgs , PipelineStepOutput output , String resumeString ) throws PipelineJobException
395+ private boolean runUsingDocker (List <String > nimbleArgs , PipelineStepOutput output , String resumeString ) throws PipelineJobException
391396 {
392397 File localBashScript = new File (getPipelineCtx ().getWorkingDirectory (), "docker.sh" );
393398 output .addIntermediateFile (localBashScript );
@@ -434,7 +439,8 @@ private void runUsingDocker(List<String> nimbleArgs, PipelineStepOutput output,
434439 writer .println ("\t -e TMPDIR=/work/tmpDir \\ " );
435440 writer .println ("\t -w /work \\ " );
436441 writer .println ("\t " + DOCKER_CONTAINER_NAME + " \\ " );
437- writer .println ("\t " + StringUtils .join (nimbleArgs , " " ));
442+ // TODO: eventually remove this:
443+ writer .println ("\t /bin/bash -c \" " + StringUtils .join (nimbleArgs , " " ) + "; echo 'Exit code: '$?; ls /work \" " );
438444 writer .println ("EXIT_CODE=$?" );
439445 writer .println ("echo 'Bash script complete: '$EXIT_CODE" );
440446 writer .println ("exit $EXIT_CODE" );
@@ -450,22 +456,23 @@ private void runUsingDocker(List<String> nimbleArgs, PipelineStepOutput output,
450456 if (doneFile .exists ())
451457 {
452458 getPipelineCtx ().getLogger ().info ("Nimble already completed, resuming: " + resumeString );
459+ return false ;
453460 }
454- else
455- {
456- SimpleScriptWrapper rWrapper = new SimpleScriptWrapper (getPipelineCtx ().getLogger ());
457- rWrapper .setWorkingDir (getPipelineCtx ().getWorkingDirectory ());
458- rWrapper .execute (Arrays .asList ("/bin/bash" , localBashScript .getName ()));
459461
460- try
461- {
462- FileUtils .touch (doneFile );
463- }
464- catch (IOException e )
465- {
466- throw new PipelineJobException (e );
467- }
462+ SimpleScriptWrapper rWrapper = new SimpleScriptWrapper (getPipelineCtx ().getLogger ());
463+ rWrapper .setWorkingDir (getPipelineCtx ().getWorkingDirectory ());
464+ rWrapper .execute (Arrays .asList ("/bin/bash" , localBashScript .getName ()));
465+
466+ try
467+ {
468+ FileUtils .touch (doneFile );
469+ }
470+ catch (IOException e )
471+ {
472+ throw new PipelineJobException (e );
468473 }
474+
475+ return true ;
469476 }
470477
471478 private File ensureLocalCopy (File input , PipelineStepOutput output ) throws PipelineJobException
0 commit comments