Beispiel #1
0
        private void ApplyRnaEdits(StringBuilder sb)
        {
            if (_rnaEdits == null)
            {
                return;
            }
            var codingStart = _codingRegion.CdnaStart;
            var editOffset  = 0;

            RnaEditUtilities.SetTypesAndSort(_rnaEdits);

            foreach (var rnaEdit in _rnaEdits)
            {
                //if the edits are in utr regions, we can skip them
                var cdsEditStart = rnaEdit.Start - codingStart + editOffset;

                if (sb.Length <= cdsEditStart)
                {
                    continue;
                }

                switch (rnaEdit.Type)
                {
                case VariantType.SNV:
                    if (cdsEditStart >= 0)
                    {
                        sb[cdsEditStart] = rnaEdit.Bases[0];
                    }
                    break;

                case VariantType.MNV:
                    for (var i = 0; i < rnaEdit.Bases.Length && cdsEditStart >= 0; i++)
                    {
                        sb[cdsEditStart + i] = rnaEdit.Bases[i];
                    }
                    break;

                case VariantType.insertion:
                    if (cdsEditStart >= 0)
                    {
                        sb.Insert(cdsEditStart, rnaEdit.Bases);
                    }
                    editOffset += rnaEdit.Bases.Length;     //account for inserted bases
                    break;

                case VariantType.deletion:
                    //from the transcripts NM_033089.6 and NM_001317107.1, it seems that deletion edits are
                    //already accounted for in the exons. So, we don't need to delete any more.
                    editOffset -= rnaEdit.End - rnaEdit.Start + 1;     //account for deleted bases
                    break;

                default:
                    throw new UserErrorException("Encountered unknown rnaEdit type:" + rnaEdit.Type);
                }
            }
        }
Beispiel #2
0
        private void ApplyRnaEdits(StringBuilder sb)
        {
            if (_rnaEdits == null)
            {
                return;
            }
            var editOffset = 0;

            RnaEditUtilities.SetTypesAndSort(_rnaEdits);

            foreach (var rnaEdit in _rnaEdits)
            {
                int cdnaEditStart = rnaEdit.Start - 1 + editOffset;

                switch (rnaEdit.Type)
                {
                case VariantType.SNV:
                    if (cdnaEditStart >= 0)
                    {
                        sb[cdnaEditStart] = rnaEdit.Bases[0];
                    }
                    break;

                case VariantType.MNV:
                    for (var i = 0; i < rnaEdit.Bases.Length && cdnaEditStart >= 0; i++)
                    {
                        sb[cdnaEditStart + i] = rnaEdit.Bases[i];
                    }
                    break;

                case VariantType.insertion:
                    if (cdnaEditStart >= 0)
                    {
                        sb.Insert(cdnaEditStart, rnaEdit.Bases);
                    }
                    editOffset += rnaEdit.Bases.Length;
                    break;

                case VariantType.deletion:
                    editOffset -= rnaEdit.End - rnaEdit.Start + 1;
                    break;

                default:
                    throw new UserErrorException("Encountered unknown rnaEdit type:" + rnaEdit.Type);
                }
            }
        }
        public void RnaEditTypes(int start, int end, string bases, VariantType expectedType)
        {
            var rnaEdit = new RnaEdit(start, end, bases);

            Assert.Equal(expectedType, RnaEditUtilities.GetRnaEditType(rnaEdit));
        }