public RealignmentResult Realign(Read read, List <CandidateIndel> allTargets, string refSequence, IIndelRanker ranker, HashSet <Tuple <string, string, string> > indelCandidateGroups = null, int maxIndelSize = 50) { try { // get targets near read var readTargets = GetProximalTargets(read, allTargets, maxIndelSize); ranker.Rank(readTargets); var attempted = 0; var result = GetBestAlignment(readTargets, read, refSequence, indelCandidateGroups, out attempted); #if false Console.WriteLine("{0}: Realigning {1} proximal targets, made {2} attempts. Best alignment has {3} mismatches {4} indels.", read.Position, readTargets.Count(), attempted, result == null ? -1 : result.NumMismatches, result == null ? -1 : result.NumIndels); #endif return(result); } catch (Exception ex) { Logger.WriteExceptionToLog(new Exception(string.Format("Error aligning read '{0}'", read.Name), ex)); return(null); } }
public ChrRealigner(ChrReference chrReference, IAlignmentExtractor extractorForCandidates, IAlignmentExtractor extractorForRealign, IIndelCandidateFinder indelFinder, IIndelRanker indelRanker, ITargetCaller caller, RealignStateManager stateManager, IRealignmentWriter writer, List <CandidateAllele> knownIndels = null, int maxIndelSize = 25, bool tryThree = false, int anchorSizeThreshold = 10, bool skipDuplicates = false, bool skipAndRemoveDuplicates = false, bool remaskSoftclips = true, bool maskPartialInsertion = false, int minimumUnanchoredInsertionLength = 0, bool tryRealignCleanSoftclippedReads = true, bool allowRescoringOrig0 = true, int maxRealignShift = 250, AlignmentScorer alignmentScorer = null, bool debug = false) { _chrReference = chrReference; _extractorForCandidates = extractorForCandidates; _extractorForRealign = extractorForRealign; _indelFinder = indelFinder; _indelRanker = indelRanker; _caller = caller; _stateManager = stateManager; _writer = writer; _knownIndels = knownIndels == null ? null : knownIndels.Select(i => new CandidateIndel(i)).ToList(); _maxIndelSize = maxIndelSize; _anchorSizeThreshold = anchorSizeThreshold; _skipDuplicates = skipDuplicates; _skipAndRemoveDuplicates = skipAndRemoveDuplicates; _allowRescoringOrig0 = allowRescoringOrig0; _maxRealignShift = maxRealignShift; _tryRealignCleanSoftclippedReads = tryRealignCleanSoftclippedReads; _alignmentScorer = alignmentScorer; _debug = debug; if (alignmentScorer != null) { _alignmentComparer = new ScoredAlignmentComparer(alignmentScorer); } else { _alignmentComparer = new BasicAlignmentComparer(); } _readRealigner = new ReadRealigner(_alignmentComparer, tryThree, remaskSoftclips, maskPartialInsertion, minimumUnanchoredInsertionLength); }