Skip to content

Commit 8dfb926

Browse files
committed
Initial support for tcrClustR
1 parent 1a05ffa commit 8dfb926

File tree

4 files changed

+99
-1
lines changed

4 files changed

+99
-1
lines changed
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
for (datasetId in names(seuratObjects)) {
2+
printName(datasetId)
3+
seuratObj <- readSeuratRDS(seuratObjects[[datasetId]])
4+
5+
seuratObj <- tcrClustR::CalculateTcrDistances(
6+
inputData = seuratObj,
7+
chains = c('TRA', 'TRB'),
8+
minimumCloneSize = 2,
9+
calculateChainPairs = TRUE
10+
)
11+
12+
seuratObj <- tcrClustR::RunTcrClustering(
13+
seuratObj_TCR = seuratObj,
14+
dianaHeight = 20,
15+
clusterSizeThreshold = 1
16+
)
17+
18+
saveData(seuratObj, datasetId)
19+
20+
# Cleanup
21+
rm(seuratObj)
22+
gc()
23+
}

singlecell/src/org/labkey/singlecell/SingleCellModule.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
import org.labkey.api.singlecell.CellHashingService;
3030
import org.labkey.api.singlecell.pipeline.SingleCellRawDataStep;
3131
import org.labkey.api.singlecell.pipeline.SingleCellStep;
32-
import org.labkey.api.util.PageFlowUtil;
3332
import org.labkey.api.view.WebPartFactory;
3433
import org.labkey.singlecell.analysis.AbstractSingleCellHandler;
3534
import org.labkey.singlecell.analysis.CellRangerRawDataHandler;
@@ -76,6 +75,7 @@
7675
import org.labkey.singlecell.pipeline.singlecell.NormalizeAndScale;
7776
import org.labkey.singlecell.pipeline.singlecell.PerformDefaultNimbleAppend;
7877
import org.labkey.singlecell.pipeline.singlecell.PerformMhcDimRedux;
78+
import org.labkey.singlecell.pipeline.singlecell.PerformTcrClustering;
7979
import org.labkey.singlecell.pipeline.singlecell.PhenotypePlots;
8080
import org.labkey.singlecell.pipeline.singlecell.PlotAssayFeatures;
8181
import org.labkey.singlecell.pipeline.singlecell.PlotAverageCiteSeqCounts;
@@ -305,6 +305,7 @@ public static void registerPipelineSteps()
305305
SequencePipelineService.get().registerPipelineStep(new CalculateTcrRepertoireStats.Provider());
306306
SequencePipelineService.get().registerPipelineStep(new PredictTcellActivation.Provider());
307307
SequencePipelineService.get().registerPipelineStep(new IdentifyAndStoreActiveClonotypes.Provider());
308+
SequencePipelineService.get().registerPipelineStep(new PerformTcrClustering.Provider());
308309

309310
SequenceAnalysisService.get().registerReadsetListener(new SingleCellReadsetListener());
310311
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package org.labkey.singlecell.pipeline.singlecell;
2+
3+
import org.labkey.api.sequenceanalysis.pipeline.PipelineContext;
4+
import org.labkey.api.sequenceanalysis.pipeline.PipelineStepProvider;
5+
import org.labkey.api.singlecell.pipeline.AbstractSingleCellPipelineStep;
6+
import org.labkey.api.util.PageFlowUtil;
7+
8+
import java.util.Collection;
9+
10+
abstract public class AbstractTcrClustRStep extends AbstractSingleCellPipelineStep
11+
{
12+
public static String CONTAINER_NAME = "ghcr.io/bimberlabinternal/tcrclustr:latest";
13+
14+
public AbstractTcrClustRStep(PipelineStepProvider<?> provider, PipelineContext ctx)
15+
{
16+
super(provider, ctx);
17+
}
18+
19+
@Override
20+
public Collection<String> getRLibraries()
21+
{
22+
return PageFlowUtil.set("tcrClustR");
23+
}
24+
25+
@Override
26+
public String getDockerContainerName()
27+
{
28+
return CONTAINER_NAME;
29+
}
30+
31+
// NOTE: ExperimentHub and similar packages default to saving data to the user's home dir. Set a directory, to avoid issues when not running the container as root
32+
@Override
33+
public String getDockerHomeDir()
34+
{
35+
return "/dockerHomeDir";
36+
}
37+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package org.labkey.singlecell.pipeline.singlecell;
2+
3+
import org.labkey.api.sequenceanalysis.pipeline.AbstractPipelineStepProvider;
4+
import org.labkey.api.sequenceanalysis.pipeline.PipelineContext;
5+
import org.labkey.api.singlecell.pipeline.SingleCellStep;
6+
7+
import java.util.List;
8+
9+
public class PerformTcrClustering extends AbstractTcrClustRStep
10+
{
11+
public PerformTcrClustering(PipelineContext ctx, PerformTcrClustering.Provider provider)
12+
{
13+
super(provider, ctx);
14+
}
15+
16+
public static class Provider extends AbstractPipelineStepProvider<SingleCellStep>
17+
{
18+
public Provider()
19+
{
20+
super("tcrClustR", "tcrClustR", "tcrClustR", "This will run tcrClustR to cluster TCRs by similarity.", List.of(
21+
22+
), null, "https://github.com/bimberlabinternal/tcrClustR/");
23+
}
24+
25+
@Override
26+
public PerformTcrClustering create(PipelineContext ctx)
27+
{
28+
return new PerformTcrClustering(ctx, this);
29+
}
30+
}
31+
32+
@Override
33+
public String getFileSuffix()
34+
{
35+
return "tcr";
36+
}
37+
}

0 commit comments

Comments
 (0)