Пример #1
0
        public Read DeepCopy()
        {
            var read = new Read(Chromosome, new BamAlignment(BamAlignment));

            if (_stitchedCigarInitialized)
            {
                read.StitchedCigar = StitchedCigar.DeepCopy();
            }

            //read.StitchedCigar = StitchedCigar; // copy this one - it may have been reset

            if (_directionCigarInitialized)
            {
                read.CigarDirections = new CigarDirection(CigarDirections.ToString());
            }
            if (_sequencedBaseDirectionMapInitialized)
            {
                read.SequencedBaseDirectionMap = (DirectionType[])SequencedBaseDirectionMap.Clone();
            }
            if (_positionMapInitialized)
            {
                read.PositionMap = (int[])PositionMap.Clone();
            }
            return(read);
        }
Пример #2
0
        private void SetSequencedBaseDirectionMapFromBam()
        {
            try
            {
                if (_sequencedBaseDirectionMap == null || _sequencedBaseDirectionMap.Length != ReadLength)
                {
                    _sequencedBaseDirectionMap = new DirectionType[ReadLength];

                    if (CigarDirections != null && (CigarDirections.Directions.Count > 0))
                    {
                        _expandedBaseDirectionMap  = CigarDirections.Expand().ToArray();
                        _sequencedBaseDirectionMap = CreateSequencedBaseDirectionMap(_expandedBaseDirectionMap, CigarData);
                    }
                    else
                    {
                        var reverse = BamAlignment.IsReverseStrand();
                        for (var i = 0; i < ReadLength; i++)
                        {
                            _sequencedBaseDirectionMap[i] = reverse ? DirectionType.Reverse : DirectionType.Forward;
                        }
                    }


                    _sequencedBaseDirectionMapInitialized = true;
                }
            }
            catch (Exception e)
            {
                throw new Exception("Exception caught in " + Name + ": " + e.StackTrace, e);
            }
        }