/// <summary> /// Gets chromosomes in parameters.bamFile. /// </summary> /// <returns></returns> private List <string> GetChromosomesInBam() { using (BamReader reader = new BamReader(parameters.bamFile)) { return(reader.GetReferenceNames()); } }
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); }
//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); }
private void Initialize() { var baseReader = new BamReader(_inputBam); _chroms = baseReader.GetReferenceNames(); _header = baseReader.GetHeader(); _references = baseReader.GetReferences(); }
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)); }
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); }
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)); }
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); }
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))); }
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)); }
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); }