Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        /// <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);
        }