Skip to content

Commit 6040cd6

Browse files
committed
Support tool to write 10x barcodes to file
1 parent f21bfec commit 6040cd6

File tree

3 files changed

+28
-0
lines changed

3 files changed

+28
-0
lines changed

singlecell/src/org/labkey/singlecell/run/NimbleAlignmentStep.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,8 @@ public AlignmentOutput performAlignment(Readset rs, List<File> inputFastqs1, @Nu
8787
}
8888
}
8989

90+
NimbleHelper.write10xBarcodes(localBam, getWrapper().getLogger(), rs, referenceGenome, output);
91+
9092
// Now run nimble itself:
9193
NimbleHelper helper = new NimbleHelper(getPipelineCtx(), getProvider(), getStepIdx());
9294
helper.doNimbleAlign(localBam, output, rs, basename);

singlecell/src/org/labkey/singlecell/run/NimbleAnalysis.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ public Output performAnalysisPerSampleRemote(Readset rs, File inputBam, Referenc
5858
NimbleHelper helper = new NimbleHelper(getPipelineCtx(), getProvider(), getStepIdx());
5959
helper.doNimbleAlign(inputBam, output, rs, FileUtil.getBaseName(inputBam));
6060

61+
NimbleHelper.write10xBarcodes(inputBam, getPipelineCtx().getLogger(), rs, referenceGenome, output);
62+
6163
return output;
6264
}
6365

singlecell/src/org/labkey/singlecell/run/NimbleHelper.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import org.apache.commons.io.IOUtils;
66
import org.apache.commons.io.output.StringBuilderWriter;
77
import org.apache.commons.lang3.StringUtils;
8+
import org.apache.logging.log4j.Logger;
89
import org.jetbrains.annotations.Nullable;
910
import org.json.JSONArray;
1011
import org.json.JSONObject;
@@ -27,6 +28,7 @@
2728
import org.labkey.api.sequenceanalysis.pipeline.PipelineStepProvider;
2829
import org.labkey.api.sequenceanalysis.pipeline.ReferenceGenome;
2930
import org.labkey.api.sequenceanalysis.pipeline.SequencePipelineService;
31+
import org.labkey.api.sequenceanalysis.run.DISCVRSeqRunner;
3032
import org.labkey.api.sequenceanalysis.run.DockerWrapper;
3133
import org.labkey.api.util.PageFlowUtil;
3234
import org.labkey.api.writer.PrintWriters;
@@ -494,6 +496,28 @@ private Map<NimbleGenome, File> doAlignment(List<NimbleGenome> genomes, List<Fil
494496
return resultMap;
495497
}
496498

499+
public static void write10xBarcodes(File bam, Logger log, Readset rs, ReferenceGenome referenceGenome, PipelineStepOutput output) throws PipelineJobException
500+
{
501+
// Write barcodes:
502+
DISCVRSeqRunner runner = new DISCVRSeqRunner(log);
503+
List<String> barcodeArgs = new ArrayList<>(runner.getBaseArgs("Save10xBarcodes"));
504+
barcodeArgs.add("--bam");
505+
barcodeArgs.add(bam.getPath());
506+
507+
File cbOutput = new File(bam.getParentFile(), SequenceAnalysisService.get().getUnzippedBaseName(bam.getName()) + "cb.txt.gz");
508+
barcodeArgs.add("--cbOutput");
509+
barcodeArgs.add(cbOutput.getPath());
510+
511+
File umiOutput = new File(bam.getParentFile(), SequenceAnalysisService.get().getUnzippedBaseName(bam.getName()) + "umi.txt.gz");
512+
barcodeArgs.add("--umiOutput");
513+
barcodeArgs.add(umiOutput.getPath());
514+
515+
runner.execute(barcodeArgs);
516+
517+
output.addSequenceOutput(cbOutput, "10x CellBarcode Map: " + rs.getName(), "10x CellBarcode Map", rs.getReadsetId(), null, referenceGenome.getGenomeId(), null);
518+
output.addSequenceOutput(umiOutput, "10x UMI Map: " + rs.getName(), "10x UMI Map", rs.getReadsetId(), null, referenceGenome.getGenomeId(), null);
519+
}
520+
497521
public static File runNimbleReport(File alignResultsGz, int genomeId, PipelineStepOutput output, PipelineContext ctx) throws PipelineJobException
498522
{
499523
List<String> reportArgs = new ArrayList<>();

0 commit comments

Comments
 (0)