Skip to content

Commit cb635e2

Browse files
committed
Improve recovery of g/d loci for cellranger vdj
1 parent dda6000 commit cb635e2

File tree

1 file changed

+32
-6
lines changed

1 file changed

+32
-6
lines changed

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

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -436,6 +436,8 @@ public AlignmentStep.AlignmentOutput performAlignment(Readset rs, List<File> inp
436436
//Infer correct chain from the V, J and C genes
437437
String[] tokens = line.split(",");
438438
List<String> chains = new ArrayList<>();
439+
String vGeneChain = null;
440+
String jGeneChain = null;
439441
String cGeneChain = null;
440442
for (int idx : new Integer[]{6,8,9}) {
441443
String val = StringUtils.trimToNull(tokens[idx]);
@@ -455,7 +457,15 @@ else if (val.contains("TRBTRD"))
455457
}
456458

457459
chains.add(val);
458-
if (idx == 9)
460+
if (idx == 6)
461+
{
462+
vGeneChain = val;
463+
}
464+
if (idx == 8)
465+
{
466+
jGeneChain = val;
467+
}
468+
else if (idx == 9)
459469
{
460470
cGeneChain = val;
461471
}
@@ -466,10 +476,26 @@ else if (val.contains("TRBTRD"))
466476
String originalChain = StringUtils.trimToNull(tokens[5]);
467477

468478
// Recover TRDV/TRAJ/TRAC:
469-
if (uniqueChains.size() > 1 && cGeneChain != null)
479+
if (uniqueChains.size() > 1)
470480
{
471-
uniqueChains.clear();
472-
uniqueChains.add(cGeneChain);
481+
if (cGeneChain != null)
482+
{
483+
uniqueChains.clear();
484+
uniqueChains.add(cGeneChain);
485+
}
486+
else if (uniqueChains.size() == 2)
487+
{
488+
if ("TRD".equals(vGeneChain) && "TRA".equals(jGeneChain))
489+
{
490+
uniqueChains.clear();
491+
uniqueChains.add(vGeneChain);
492+
}
493+
if ("TRA".equals(vGeneChain) && "TRD".equals(jGeneChain))
494+
{
495+
uniqueChains.clear();
496+
uniqueChains.add(vGeneChain);
497+
}
498+
}
473499
}
474500

475501
if (uniqueChains.size() == 1)
@@ -479,7 +505,7 @@ else if (val.contains("TRBTRD"))
479505
{
480506
if (!originalChain.equals("TRA") && !"None".equals(originalChain))
481507
{
482-
getPipelineCtx().getLogger().error("Unexpected chain: was " + originalChain + ", updated to " + chain + ". " + tokens[6] + "/" + tokens[8] + "/" + tokens[9]);
508+
getPipelineCtx().getLogger().info("Unexpected chain: original was " + originalChain + ", updated to " + chain + ". " + tokens[6] + "/" + tokens[8] + "/" + tokens[9]);
483509
}
484510

485511
totalG++;
@@ -488,7 +514,7 @@ else if (chain.equals("TRD"))
488514
{
489515
if (!originalChain.equals("TRB") && !"None".equals(originalChain))
490516
{
491-
getPipelineCtx().getLogger().error("Unexpected chain: was " + originalChain + ", updated to " + chain + ". " + tokens[6] + "/" + tokens[8] + "/" + tokens[9]);
517+
getPipelineCtx().getLogger().info("Unexpected chain: original was " + originalChain + ", updated to " + chain + ". " + tokens[6] + "/" + tokens[8] + "/" + tokens[9]);
492518
}
493519

494520
totalD++;

0 commit comments

Comments
 (0)