/// <summary> /// Assemble the list of sequence reads /// </summary> /// <param name="inputSequences">List of input sequences</param> /// <returns>Assembled output</returns> public IDeNovoAssembly Assemble(IList <ISequence> inputSequences) { ValidateAllSequences(inputSequences); // Remove ambiguous reads and set up fields for assembler process Initialize(inputSequences); // Step 1, 2: Create k-mers from reads and build de bruijn graph CreateGraph(); // Estimate and set default value for erosion and coverage thresholds EstimateDefaultThresholds(); // Step 3: Remove dangling links from graph UnDangleGraph(); // Step 4: Remove redundant paths from graph RemoveRedundancy(); // Perform dangling link purger step once more. // This is done to remove any links created by redundant paths purger. UnDangleGraph(); // Step 5: Build Contigs IList <ISequence> contigSequences = BuildContigs(); PaDeNAAssembly result = new PaDeNAAssembly(); result.AddContigs(contigSequences); _graph.Dispose(); return(result); }
/// <summary> /// Assemble the list of sequence reads. Also performs the /// scaffold building step as part of assembly process. /// </summary> /// <param name="inputSequences">List of input sequences</param> /// <param name="includeScaffolds">Boolean indicating whether scaffold building step has to be run</param> /// <returns>Assembled output</returns> public IDeNovoAssembly Assemble(IList <ISequence> inputSequences, bool includeScaffolds) { PaDeNAAssembly assemblyResult = (PaDeNAAssembly)Assemble(inputSequences); if (includeScaffolds) { // Step 6: Build _scaffolds IList <ISequence> scaffolds = BuildScaffolds(assemblyResult.ContigSequences); if (scaffolds != null) { assemblyResult.AddScaffolds(scaffolds); } } return(assemblyResult); }