Ejemplo n.º 1
0
 /// <summary>
 /// Gets chromosomes in parameters.bamFile.
 /// </summary>
 /// <returns></returns>
 private List <string> GetChromosomesInBam()
 {
     using (BamReader reader = new BamReader(parameters.bamFile))
     {
         return(reader.GetReferenceNames());
     }
 }
Ejemplo n.º 2
0
        public Genome GetReferenceGenome(string genomePath)
        {
            var chromosomeNames = new List <string>();
            var bamWorkRequests =
                WorkRequests.Where(
                    w => w.GenomeDirectory.Equals(genomePath, StringComparison.InvariantCultureIgnoreCase)).ToList();

            for (var i = 0; i < bamWorkRequests.Count(); i++)
            {
                var           bamFilePath = bamWorkRequests[i].BamFilePath;
                List <string> bamChromosomes;
                using (var reader = new BamReader(bamFilePath))
                {
                    bamChromosomes = reader.GetReferenceNames();
                }

                // load intervals and filter chromosomes if necessary
                var bamIntervals = _bamIntervalLookup.ContainsKey(bamFilePath) ? _bamIntervalLookup[bamFilePath] : null;
                chromosomeNames.AddRange(bamIntervals == null ? bamChromosomes : bamChromosomes.Where(bamIntervals.ContainsKey));
            }

            var genome = new Genome(genomePath, chromosomeNames.Distinct().ToList());

            return(genome);
        }
Ejemplo n.º 3
0
        //wrapper should now handle all throwing and catching..
        protected override void ProgramExecution()
        {
            var optionsUsed = _appOptionParser.ParsingResult.OptionsUsed;

            var doNotPassToSubprocess = new List <string>()
            {
                "outFolder", "numProcesses", "exePath", "intermediateDir", "multiprocess", "chromosomes"
            };

            var cmdLineList = MultiProcessHelpers.GetCommandLineWithoutIgnoredArguments(optionsUsed, doNotPassToSubprocess);


            var refNameMapping = new Dictionary <string, int>();

            using (var bamReader = new BamReader(_options.InputBam))
            {
                var chroms = bamReader.GetReferenceNames();
                foreach (var referenceName in chroms)
                {
                    if (_options.Chromosomes != null && !_options.Chromosomes.ToList().Contains(referenceName))
                    {
                        continue;
                    }
                    refNameMapping.Add(referenceName, bamReader.GetReferenceIndex(referenceName));
                }
            }

            var taskManager     = new CliTaskManager(_options.NumProcesses);
            var geminiProcessor = new GeminiMultiProcessor(_options, new CliTaskCreator());

            var samtoolsWrapper = new SamtoolsWrapper(_options.GeminiOptions.SamtoolsPath, _options.GeminiOptions.IsWeirdSamtools);

            geminiProcessor.Execute(taskManager, refNameMapping, cmdLineList, samtoolsWrapper);
        }
Ejemplo n.º 4
0
        private void Initialize()
        {
            var baseReader = new BamReader(_inputBam);

            _chroms     = baseReader.GetReferenceNames();
            _header     = baseReader.GetHeader();
            _references = baseReader.GetReferences();
        }
Ejemplo n.º 5
0
        public Genome SetGenome(ScyllaApplicationOptions options)
        {
            var bamChromosomes = new List <string>()
            {
            };

            using (var reader = new BamReader(options.BamPath))
            {
                bamChromosomes = reader.GetReferenceNames();
            }
            return(new Genome(options.GenomePath, bamChromosomes));
        }
Ejemplo n.º 6
0
        private List <GenomeMetadata.SequenceMetadata> GetReferences(string inBam)
        {
            List <GenomeMetadata.SequenceMetadata> bamReferences;
            var refIdMapping = new Dictionary <int, string>();

            using (var reader = new BamReader(inBam))
            {
                bamReferences = reader.GetReferences();
                foreach (var referenceName in reader.GetReferenceNames())
                {
                    refIdMapping.Add(reader.GetReferenceIndex(referenceName), referenceName);
                }
            }

            return(bamReferences);
        }
Ejemplo n.º 7
0
        private IReadPairHandler CreatePairHandler(ReadStatusCounter readStatuses)
        {
            var stitcher = new BasicStitcher(_options.MinBaseCallQuality, useSoftclippedBases: _options.UseSoftClippedBases,
                                             nifyDisagreements: _options.NifyDisagreements, debug: _options.Debug, nifyUnstitchablePairs: _options.NifyUnstitchablePairs, ignoreProbeSoftclips: !_options.StitchProbeSoftclips, maxReadLength: _options.MaxReadLength);

            var refIdMapping = new Dictionary <int, string>();

            using (var reader = new BamReader(_inBam))
            {
                foreach (var referenceName in reader.GetReferenceNames())
                {
                    refIdMapping.Add(reader.GetReferenceIndex(referenceName), referenceName);
                }
            }
            return(new PairHandler(refIdMapping, stitcher, _options.FilterUnstitchablePairs, readStatuses));
        }
Ejemplo n.º 8
0
        public Genome GetReferenceGenome(string genomePath)
        {
            var chromosomeNames = new List <string>();
            var bamWorkRequests =
                WorkRequests.Where(
                    w => w.GenomeDirectory.Equals(genomePath, StringComparison.CurrentCultureIgnoreCase)).ToList();

            for (var i = 0; i < bamWorkRequests.Count(); i++)
            {
                var           bamFilePath = bamWorkRequests[i].BamFilePath;
                List <string> bamChromosomes;
                using (var reader = new BamReader(bamFilePath))
                {
                    bamChromosomes = reader.GetReferenceNames();
                }

                var filteredChromosomes = FilterBamChromosomes(bamChromosomes, bamFilePath);

                if (!string.IsNullOrEmpty(_baseOptions.ChromosomeFilter))
                {
                    filteredChromosomes.RemoveAll(c => c != _baseOptions.ChromosomeFilter);
                }

                chromosomeNames.AddRange(filteredChromosomes);
            }

            var genome = new Genome(genomePath, chromosomeNames.Distinct().ToList());

            if (genome.ChromosomesToProcess.Count() < chromosomeNames.Distinct().Count())
            {
                Logger.WriteToLog("Warning: Not all requested sequences were found in {0} to process.", genome.GetGenomeBuild());
                Logger.WriteToLog("Check BAM file matches reference genome.");

                if (string.IsNullOrEmpty(_baseOptions.ChromosomeFilter))
                {
                    Logger.WriteToLog("Requested sequences: {0}", (string.Join(",", chromosomeNames.Distinct().ToList())));
                }
                else
                {
                    Logger.WriteToLog("Requested sequences: {0}", _baseOptions.ChromosomeFilter);
                }
            }

            return(genome);
        }
Ejemplo n.º 9
0
        private IBamWriter CreateBamWriter()
        {
            string bamHeader;
            List <GenomeMetadata.SequenceMetadata> bamReferences;
            var refIdMapping = new Dictionary <int, string>();

            using (var reader = new BamReader(_inBam))
            {
                bamReferences = reader.GetReferences();
                var oldBamHeader = reader.GetHeader();
                bamHeader = UpdateBamHeader(oldBamHeader);
                foreach (var referenceName in reader.GetReferenceNames())
                {
                    refIdMapping.Add(reader.GetReferenceIndex(referenceName), referenceName);
                }
            }

            return(new BamWriterWrapper(new BamWriter(_outBam, bamHeader, bamReferences)));
        }
Ejemplo n.º 10
0
        private IBamWriterMultithreaded CreateBamWriter()
        {
            string bamHeader;
            List <GenomeMetadata.SequenceMetadata> bamReferences;
            var refIdMapping = new Dictionary <int, string>();

            using (var reader = new BamReader(_inBam))
            {
                bamReferences = reader.GetReferences();
                var oldBamHeader = reader.GetHeader();
                bamHeader = UpdateBamHeader(oldBamHeader);
                foreach (var referenceName in reader.GetReferenceNames())
                {
                    refIdMapping.Add(reader.GetReferenceIndex(referenceName), referenceName);
                }
            }

            if (_options.SortMemoryGB <= 0)
            {
                return(new BamWriterMultithreaded(_outBam, bamHeader, bamReferences, _options.NumThreads, 1));
            }

            return(new BamWriterInMem(_outBam, bamHeader, bamReferences, _options.SortMemoryGB, _options.NumThreads, 1));
        }
Ejemplo n.º 11
0
        private List <IReadPairHandler> CreatePairHandlers(ReadStatusCounter readStatuses, int numThreads)
        {
            var handlers = new List <IReadPairHandler>(numThreads);

            var refIdMapping = new Dictionary <int, string>();

            using (var reader = new BamReader(_inBam))
            {
                foreach (var referenceName in reader.GetReferenceNames())
                {
                    refIdMapping.Add(reader.GetReferenceIndex(referenceName), referenceName);
                }
            }

            for (int i = 0; i < numThreads; ++i)
            {
                var stitcher = new BasicStitcher(_options.MinBaseCallQuality, useSoftclippedBases: _options.UseSoftClippedBases,
                                                 nifyDisagreements: _options.NifyDisagreements, debug: _options.Debug, nifyUnstitchablePairs: _options.NifyUnstitchablePairs, ignoreProbeSoftclips: !_options.StitchProbeSoftclips, maxReadLength: _options.MaxReadLength, ignoreReadsAboveMaxLength: _options.IgnoreReadsAboveMaxLength, minMapQuality: _options.FilterMinMapQuality, dontStitchHomopolymerBridge: _options.DontStitchHomopolymerBridge);

                handlers.Add(new PairHandler(refIdMapping, stitcher, readStatuses, _options.FilterUnstitchablePairs, true));
            }

            return(handlers);
        }