@@ -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