@@ -436,6 +436,7 @@ 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 cGeneChain = null ;
439440 for (int idx : new Integer []{6 ,8 ,9 }) {
440441 String val = StringUtils .trimToNull (tokens [idx ]);
441442 if (val != null )
@@ -454,43 +455,55 @@ else if (val.contains("TRBTRD"))
454455 }
455456
456457 chains .add (val );
458+ if (idx == 9 )
459+ {
460+ cGeneChain = val ;
461+ }
457462 }
458463 }
459464
460465 Set <String > uniqueChains = new HashSet <>(chains );
461466 String originalChain = StringUtils .trimToNull (tokens [5 ]);
467+
468+ // Recover TRDV/TRAJ/TRAC:
469+ if (uniqueChains .size () > 1 && cGeneChain != null )
470+ {
471+ uniqueChains .clear ();
472+ uniqueChains .add (cGeneChain );
473+ }
474+
462475 if (uniqueChains .size () == 1 )
463476 {
464477 String chain = uniqueChains .iterator ().next ();
465478 if (chain .equals ("TRG" ))
466479 {
467- if (!originalChain .equals ("TRA" ))
480+ if (!originalChain .equals ("TRA" ) && ! "None" . equals ( originalChain ) )
468481 {
469- getPipelineCtx ().getLogger ().error ("Unexpected chain: from " + originalChain + " to " + chain );
482+ getPipelineCtx ().getLogger ().error ("Unexpected chain: was " + originalChain + ", to " + chain );
470483 }
471484
472485 totalG ++;
473486 }
474487 else if (chain .equals ("TRD" ))
475488 {
476- if (!originalChain .equals ("TRB" ))
489+ if (!originalChain .equals ("TRB" ) && ! "None" . equals ( originalChain ) )
477490 {
478- getPipelineCtx ().getLogger ().error ("Unexpected chain: from " + originalChain + " to " + chain );
491+ getPipelineCtx ().getLogger ().error ("Unexpected chain: was " + originalChain + ", to " + chain );
479492 }
480493
481494 totalD ++;
482495 }
483496
484497 tokens [5 ] = chain ;
498+
499+ line = StringUtils .join (tokens , "," );
500+ line = line .replaceAll ("TRATRG" , "TRG" );
501+ line = line .replaceAll ("TRBTRD" , "TRD" );
485502 }
486503 else
487504 {
488505 getPipelineCtx ().getLogger ().warn ("Multiple chains detected [" + StringUtils .join (chains , "," )+ "], leaving original call alone: " + originalChain );
489506 }
490-
491- line = StringUtils .join (tokens , "," );
492- line = line .replaceAll ("TRATRG" , "TRG" );
493- line = line .replaceAll ("TRBTRD" , "TRD" );
494507 }
495508
496509 writer .println (line );
0 commit comments