Пример #1
0
        private void InitializeReader(string chromosomeFilter = null)
        {
            _bamReader     = new BamReader(_bamFilePath);
            _references    = _bamReader.GetReferences().OrderBy(r => r.Index).ToList();
            _bamIsStitched = CheckIfBamHasBeenStitched(_bamReader.GetHeader());

            if (!string.IsNullOrEmpty(chromosomeFilter))
            {
                var chrReference = _references.FirstOrDefault(r => r.Name == chromosomeFilter);
                if (chrReference == null)
                {
                    throw new Exception(string.Format("Cannot set chr filter to '{0}'.  This chr is not in the bam.", chromosomeFilter));
                }

                _bamIndexFilter = chrReference.Index;
            }
            var chrToStart = !string.IsNullOrEmpty(chromosomeFilter)
                ? chromosomeFilter
                : _references.First().Name;

            var position = 0;

            if (_remainingIntervals != null && _remainingIntervals.ContainsKey(chrToStart))
            {
                position = _remainingIntervals[chrToStart][0].StartPosition - 1;
            }
            Jump(chrToStart, position);
        }
Пример #2
0
        private void InitializeReader(string chromosomeFilter = null)
        {
            _bamReader  = new BamReader(_bamFilePath);
            _references = _bamReader.GetReferences().OrderBy(r => r.Index).ToList();

            if (!_bamIsStitched)
            {
                _bamIsStitched = CheckBamHeaderIfBamHasBeenStitched(_bamReader.GetHeader());
            }

            SourceIsCollapsed = CheckIfBamHasBeenCollapsed(_bamReader.GetHeader());

            if (!string.IsNullOrEmpty(chromosomeFilter))
            {
                var chrReference = _references.FirstOrDefault(r => r.Name == chromosomeFilter);
                if (chrReference == null)
                {
                    throw new InvalidDataException(string.Format("Cannot set chr filter to '{0}'.  This chr is not in the bam.", chromosomeFilter));
                }

                _bamIndexFilter = chrReference.Index;
            }
            var chrToStart = !string.IsNullOrEmpty(chromosomeFilter)
                ? chromosomeFilter
                : _references.First().Name;

            Jump(chrToStart);
        }
Пример #3
0
        private void Initialize()
        {
            var baseReader = new BamReader(_inputBam);

            _chroms     = baseReader.GetReferenceNames();
            _header     = baseReader.GetHeader();
            _references = baseReader.GetReferences();
        }
Пример #4
0
 private BamWriter GetWriter(string outputFile)
 {
     using (var reader = new BamReader(_inputFile))
     {
         var    genome            = reader.GetReferences();
         string originalSamHeader = reader.GetHeader();
         var    updatedHeader     = UpdateBamHeader(originalSamHeader);
         return(new BamWriter(outputFile, updatedHeader, genome));
     }
 }
        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);
        }
Пример #6
0
        public void Initialize()
        {
            var outputDirectory = Path.GetDirectoryName(_outputFile);

            if (!Directory.Exists(outputDirectory))
            {
                Directory.CreateDirectory(outputDirectory);
            }

            using (var reader = new BamReader(_inputFile))
            {
                var genome = reader.GetReferences();

                _bamWriter = new BamWriter(_temp1File, reader.GetHeader(), genome);
            }
        }
Пример #7
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)));
        }
Пример #8
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));
        }