コード例 #1
0
        public void GetCdnaPositionOffset_Intron_ReqL_Reverse()
        {
            var regions = new ITranscriptRegion[]
            {
                new TranscriptRegion(TranscriptRegionType.Intron, 10, 108901173, 108918171, 422, 423)
            };

            var translation = new Mock <ITranslation>();

            translation.SetupGet(x => x.CodingRegion).Returns(new CodingRegion(108813927, 108941437, 129, 1613, 1485));

            var transcript = new Mock <ITranscript>();

            transcript.SetupGet(x => x.Start).Returns(108810721);
            transcript.SetupGet(x => x.End).Returns(108918171);
            transcript.SetupGet(x => x.Gene.OnReverseStrand).Returns(true);
            transcript.SetupGet(x => x.TranscriptRegions).Returns(regions);
            transcript.SetupGet(x => x.Translation).Returns(translation.Object);

            var po = HgvsUtilities.GetCdnaPositionOffset(transcript.Object, 108909672, 0, true);

            Assert.NotNull(po);
            Assert.False(po.HasStopCodonNotation);
            Assert.Equal(8500, po.Offset);
            Assert.Equal(422, po.Position);
            Assert.Equal("294+8500", po.Value);
        }
コード例 #2
0
        public void GetCdnaPositionOffset_Gap_Forward_ReturnNull()
        {
            var regions = new ITranscriptRegion[]
            {
                new TranscriptRegion(TranscriptRegionType.Gap, 1, 134901, 135802, 1760, 2661)
            };

            var translation = new Mock <ITranslation>();

            translation.SetupGet(x => x.CodingRegion).Returns(new CodingRegion(138530, 139309, 71, 850, 780));

            var transcript = new Mock <ITranscript>();

            transcript.SetupGet(x => x.Start).Returns(134901);
            transcript.SetupGet(x => x.End).Returns(139379);
            transcript.SetupGet(x => x.Gene.OnReverseStrand).Returns(false);
            transcript.SetupGet(x => x.TranscriptRegions).Returns(regions);
            transcript.SetupGet(x => x.Translation).Returns(translation.Object);

            var po = HgvsUtilities.GetCdnaPositionOffset(transcript.Object, 135001, 0, false);

            Assert.NotNull(po);
            Assert.True(po.HasStopCodonNotation);
            Assert.Equal(0, po.Offset);
            Assert.Equal(1760, po.Position);
            Assert.Equal("*910", po.Value);
        }
コード例 #3
0
        public void IsAminoAcidDuplicate_True()
        {
            var observedResult = HgvsUtilities.IsAminoAcidDuplicate(85, "P",
                                                                    "MEAAAGGRGCFQPHPGLQKTLEQFHLSSMSSLGGPAAFSARWAQEAYKKESAKEAGAAAVPAPVPAATEPPPVLHLPAIQPPPPVLPGPFFMPSDRSTERCETVLEGETISCFVVGGEKRLCLPQILNSVLRDFSLQQINAVCDELHIYCSRCTADQLEILKVMGILPFSAPSCGLITKTDAERLCNALLYGGAYPPPCKKELAASLALGLELSERSVRVYHECFGKCKGLLVPELYSSPSAACIQCLDCRLMYPPHKFVVHSHKALENRTCHWGFDSANWRAYILLSQDYTGKEEQARLGRCLDDVKEKFDYGNKYKRRVPRVSSEPPASIRPKTDDTSSQSPAPSEKDKPSSWLRTLAGSSNKSLGCVHPRQRLSAFRPWSPAVSASEKELSPHLPALIRDSFYSYKSFETAVAPNVALAPPAQQKVVSSPPCAAAVSRAPEPLATCTQPRKRKLTVDTPGAPETLAPVAAPEEDKDSEAEVEVESREEFTSSLSSLSSPSFTSSSSAKDLGSPGARALPSAVPDAAAPADAPSGLEAELEHLRQALEGGLDTKEAKEKFLHEVVKMRVKQEEKLSAALQAKRSLHQELEFLRVAKKEKLREATEAKRNLRKEIERLRAENEKKMKEANESRLRLKRELEQARQARVCDKGCEAGRLRAKYSAQIEDLQVKLQHAEADREQLRADLLREREAREHLEKVVKELQEQLWPRARPEAAGSEGAAELEP");

            Assert.True(observedResult);
        }
コード例 #4
0
        public void IsAminoAcidDuplicate_False()
        {
            var observedResult = HgvsUtilities.IsAminoAcidDuplicate(307, "*RX",
                                                                    "MHYDGHVRFDLPPQGSVLARNVSTRSCPPRTSPAVDLEEEEEESSVDGKGDRKSTGLKLSKKKARRRHTDDPSKECFTLKFDLNVDIETEIVPAMKKKSLGEVLLPVFERKGIALGKVDIYLDQSNTPLSLTFEAYRFGGHYLRVKAPAKPGDEGKVEQGMKDSKSLSLPILRPAGTGPPALERVDAQSRRESLDILAPGRRRKNMSEFLGEASIPGQEPPTPSSCSLPSGSSGSTNTGDSWKNRAASRFSGFFSSGPSTSAFGREVDKMEQLEGKLHTYSLFGLPRLPRGLRFDHDSWEEEYDEDEDEDNACLRLEDSWRELIDGHEKLTRRQCHQQEAVWELLHTEASYIRKLRVIINLFLCCLLNLQESGLLCEVEAERLFSNIPEIAQLHRRLWASVMAPVLEKARRTRALLQPGDFLKGFKMFGSLFKPYIRYCMEEEGCMEYMRGLLRDNDLFRAYITWAEKHPQCQRLKLSDMLAKPHQRLTKYPLLLKSVLRKTEEPRAKEAVVAMIGSVERFIHHVNACMRQRQERQRLAAVVSRIDAYEVVESSSDEVDKLLKEFLHLDLTAPIPGASPEETRQLLLEGSLRMKEGKDSKMDVYCFLFTDLLLVTKAVKKAERTRVIRPPLLVDKIVCRELRDPGSFLLIYLNEFHSAVGAYTFQASGQALCRGWVDTIYNAQNQLQQLRAQEPPGSQQPLQSLEEEEDEQEEEEEEEEEEEEGEDSGTSAASSPTIMRKSSGSPDSQHCASDGSTETLAMVVVEPGDTLSSPEFDSGPFSSQSDETSLSTTASSATPTSELLPLGPVDGRSCSMDSAYGTLSPTSLQDFVAPGPMAELVPRAPESPRVPSPPPSPRLRRRTPVQLLSCPPHLLKSKSEASLLQLLAGAGTHGTPSAPSRSLSELCLAVPAPGIRTQGSPQEAGPSWDCRGAPSPGSGPGLVGCLAGEPAGSHRKRCGDLPSGASPRVQPEPPPGVSAQHRKLTLAQLYRIRTTLLLNSTLTASEV");

            Assert.False(observedResult);
        }
コード例 #5
0
        public void GetCdnaPositionOffset_Intron_LeqR_Reverse()
        {
            var regions = new ITranscriptRegion[]
            {
                new TranscriptRegion(TranscriptRegionType.Exon, 2, 134901, 135802, 1760, 2661),
                new TranscriptRegion(TranscriptRegionType.Intron, 1, 135803, 137619, 1759, 1760),
                new TranscriptRegion(TranscriptRegionType.Exon, 1, 137620, 139379, 1, 1759)
            };

            var translation = new Mock <ITranslation>();

            translation.SetupGet(x => x.CodingRegion).Returns(new CodingRegion(138530, 139309, 71, 850, 780));

            var transcript = new Mock <ITranscript>();

            transcript.SetupGet(x => x.Start).Returns(134901);
            transcript.SetupGet(x => x.End).Returns(139379);
            transcript.SetupGet(x => x.Gene.OnReverseStrand).Returns(true);
            transcript.SetupGet(x => x.TranscriptRegions).Returns(regions);
            transcript.SetupGet(x => x.Translation).Returns(translation.Object);

            var po = HgvsUtilities.GetCdnaPositionOffset(transcript.Object, 136711, 1, true);

            Assert.NotNull(po);
            Assert.True(po.HasStopCodonNotation);
            Assert.Equal(909, po.Offset);
            Assert.Equal(1759, po.Position);
            Assert.Equal("*909+909", po.Value);
        }
コード例 #6
0
        public void GetChangesAfterFrameshift_FirstAminoAcidIsStop()
        {
            var observedResult = HgvsUtilities.GetChangesAfterFrameshift(4, "MABCDEFGHIIIKL", "MABCDEFGHIIIKL*");

            Assert.Equal(15, observedResult.Start);
            Assert.Equal('*', observedResult.RefAminoAcid);
            Assert.Equal('*', observedResult.AltAminoAcid);
        }
コード例 #7
0
        public void GetChangesAfterFrameshift_AfterFrameshift()
        {
            var observedResult = HgvsUtilities.GetChangesAfterFrameshift(4, "MABCDEFGHIIIKL", "MABCEFGH*");

            Assert.Equal(5, observedResult.Start);
            Assert.Equal('D', observedResult.RefAminoAcid);
            Assert.Equal('E', observedResult.AltAminoAcid);
        }
コード例 #8
0
        public void IsDuplicateWithinInterval_outside_interval()
        {
            var simpleVar = GenSimpleInsertionMock();

            // forward strand
            Assert.False(HgvsUtilities.IsDuplicateWithinInterval(_refSequence, simpleVar.Object, new Interval(12344, 12370), false));

            // reverse strand
            Assert.False(HgvsUtilities.IsDuplicateWithinInterval(_refSequence, simpleVar.Object, new Interval(12340, 12347), true));
        }
コード例 #9
0
        public void GetNumAminoAcidsUntilStopCodon_FoundExtraAminoAcids()
        {
            const int expectedResult = 38;
            var       observedResult =
                HgvsUtilities.GetNumAminoAcidsUntilStopCodon(
                    "MLAEPFNWHVEYAHSGDVLGPSGLPASPGAPGTCLHNPAGSNWGPG*EVLMAGTVPAVPG*SGEGSQF*LPWSCSDSPQAGSRAHGQGPGIPLLPQGHGTQSLCRAQGSVPAAEPVPPTEDGRGLSGPEQGHRGTAPARRPPGGWQDLLLLSATLRL*RHCPQHQQ*LPARPGRLAAGCP*ETLWP*PLLSPAAGHRTRDLFPGGGDVPGGPLLRQAGCGADPAFPRPEPQGFGRPLEPAPCGAGGDHHERDRGC*RPHQLL*GVRCHSRRPPEPSDGGPHPRGHGAAPQCQQCGGCAAAQASGLPGAAGPAEGQCRRGPVPVLQ*AGAQRAAEARQLPQPDADLRSRPSAH*QPSLGGRAFHPDVWQSLGRESGLRSDLVQEPGLLCAERKALGRGAEPVPAPAARLPHRPWRPGQPCRAGQQEPVQALPALQLEGNGGTTWAPPFRQPSVRLLRLQPCAGAGRPLRPLIPYLPWPEEFLHHHRELAGLLELLDPSAGEPGP*GPTPLPWRS*EWPSVGL*VQ*RPVVLFPAAAGAAGARARAGPNAQ*LPGPQGQVPREPAGLRLVRGADL*AG**HRGHRCASRAALWPVPPGTVGGLEPRGPVPAAGHGALWLPLGPHAPVAG*RALRPTLRPGVQLPGPAGPPAAARPDPLLQHPPHACAPAAAALRRGGPGRPDLCQGDLSPGGQQQLRPGAAGHGCRRAHSLPLPTVTHWPGWRAAGRADHEPLPATPPHEP*PASHQPRQEGGSPGHGQDEA*DHHAGEPGGP*AQEVAHLGCPAALRPAGVVHGLRRLPGMRAPVPLARFAPVLSFARVFPPFSAPPPAQRALALQNLLSHSQAPERAGQALSRCL*PAALCIGG*MQKQGRNGVCS*EASNSGQERSLKKRPPAVTHSYQPAQHGMAPKLRRSQEET*RGGLRLIREGFLGEVILELAPGEHSEHDW*TEGCRGAQGSTLPRAKQGHWGLS*DPEGVKPLLPQLPLLLEPLHI*PLALLFTASTCSRLPSLSPPSWLCSRNSRLLPVSLLFFRLHL*RMRADNRNTVAKTRLWKGFQKSFFFFN*KKYLQR*ALAMLPRLVSNSWAQAILPSQPPRVLGLQV*ATAPSPRNLSAVWSSISHLMTCSAWGGGVSFPQLPQGGPLPSAAPLSC*PSSRKHTGCR*SGHSRDPQFKRVISISGDSRMGVSALNSPSCFTRKDPVKSPTEVTAH*RGERWSIE*HWAIQAALLPPDRS*ASLAGGLPTAFSGARLAGDGAAARPSLPAPW*PRGFLSAGLSCYLSLHHELSA*DWGSKRVSSQ*A*VGDCDLEKPWASNTCFSEAPKEGSDILFKNTTKQNSQDMCSFVCSVSHNLRLGDGTLG*GRFFCLASPHLPLALWIRQI*TF*RILREGFLG*GSMAKSVSLWTVYTSRRWI*RNPGFHFQCQSETCSQAGALVHTTYSGHQQQPRPDRASLFFFFETESLSPRLEPSGEILAHYNLHLPGSGNSRA*ASRVAATTGAGQHACLIFVF**RQGFTMLPRLVSNS*AQAVYPPQPPKVLGLQA*ATAPSQNICFYTQRAPLVRTEPRCPEPGSRPPGAQHLSFYT*WAGSGEDRESWWKFHSWPRGGALAPHCRLLTAPIPAAPVPDFISLLSPRVPGPSTLPSVLQEPTPLQLQHQGERGLHMPKYPCRMKGRPALDVPFLNNSHCRRV*DVLF*LSPASDAPPICAEWVWECG*GSKCQRSTFQNQVPSANHVGKVQTWRCPCASAPTHPFSFSCVRKEKFSEPSRLVAFKLQTMICSKKRAFHHKSVHLFTTVFQAGFIKKFLTLE",
                    "MLAEPFNWHPGMWNMLIVAMCLALLGCLQAQELQGHVSIILLGATGDLAKKYLWQGLFQLYLDEAGRGHSFSFHGAALTAPKQGQELMAKALESLSCPKDMAPSHCAEHKDQFLQLSQYRQLKTAEDYQALNKDIEAQLQHAGLREAGRIFYFSVPPFAYEDIARNINSSCRPGPGAWLRVVLEKPFGHDHFSAQQLATELGTFFQEEEMYRVDHYLGKQAVAQILPFRDQNRKALDGLWNRHHVERVEIIMKETVDAEGRTSFYEEYGVIRDVLQNHLTEVLTLVAMELPHNVSSAEAVLRHKLQVFQALRGLQRGSAVVGQYQSYSEQVRRELQKPDSFHSLTPTFAAVLVHIDNLRWEGVPFILMSGKALDERVGYARILFKNQACCVQSEKHWAAAQSQCLPRQLVFHIGHGDLGSPAVLVSRNLFRPSLPSSWKEMEGPPGLRLFGSPLSDYYAYSPVRERDAHSVLLSHIFHGRKNFFITTENLLASWNFWTPLLESLAHKAPRLYPGGAENGRLLDFEFSSGRLFFSQQQPEQLVPGPGPAPMPSDFQVLRAKYRESPLVSAWSEELISKLANDIEATAVRAVRRFGQFHLALSGGSSPVALFQQLATAHYGFPWAHTHLWLVDERCVPLSDPESNFQGLQAHLLQHVRIPYYNIHPMPVHLQQRLCAEEDQGAQIYAREISALVANSSFDLVLLGMGADGHTASLFPQSPTGLDGEQLVVLTTSPSQPHRRMSLSLPLINRAKKVAVLVMGRMKREITTLVSRVGHEPKKWPISGVLPHSGQLVWYMDYDAFLG",
                    9, true);

            Assert.Equal(expectedResult, observedResult);
        }
コード例 #10
0
        public void GetNumAminoAcidsUntilStopCodon_FirstAminoAcidIsStop()
        {
            const int expectedResult = -1;
            var       observedResult =
                HgvsUtilities.GetNumAminoAcidsUntilStopCodon(
                    "RHRNRNTQTETNTETQRHRNTQKHRNKHRDTETHRNTETNTETQKHTETQKQTQRHRNTQKHTDRNKHRNTETQKYRNTQKHRNKHRDTETQKHSDAETQQHKHRNTETHRNRNTETNTETQTHRHRETQKHTETLKHSGRCPGCRGSIA",
                    "RHRNRNTQTETNTETQRHRNTQKHRNKHRDTETHRNTQKHRNKHRDTETHRNTETNTETQKHTETHRQKQTQKHRDTEIQKHTETQKQTQRHRDTETQRRRNTATQTQKHRNTQKQKHRNKHRDTDTQTQRNTETHRNTETQWAVSRLQRLHRC",
                    37, true);

            Assert.Equal(expectedResult, observedResult);
        }
コード例 #11
0
        public void GetCdnaPositionOffset_Intron_RltL_Forward()
        {
            var transcript = HgvsCodingNomenclatureTests.GetForwardTranscript();
            var po         = HgvsUtilities.GetCdnaPositionOffset(transcript, 1262210, 1);

            Assert.NotNull(po);
            Assert.False(po.HasStopCodonNotation);
            Assert.Equal(-6, po.Offset);
            Assert.Equal(337, po.Position);
            Assert.Equal("-75-6", po.Value);
        }
コード例 #12
0
        public void GetCdnaPositionOffset_Exon_Reverse()
        {
            var transcript = HgvsCodingNomenclatureTests.GetReverseTranscript();
            var po         = HgvsUtilities.GetCdnaPositionOffset(transcript, 137721, 2, true);

            Assert.NotNull(po);
            Assert.True(po.HasStopCodonNotation);
            Assert.Equal(0, po.Offset);
            Assert.Equal(1659, po.Position);
            Assert.Equal("*809", po.Value);
        }
コード例 #13
0
        public void GetCdnaPositionOffset_Exon_Forward()
        {
            var transcript = HgvsCodingNomenclatureTests.GetForwardTranscript();
            var po         = HgvsUtilities.GetCdnaPositionOffset(transcript, 1262627, 4, true);

            Assert.NotNull(po);
            Assert.False(po.HasStopCodonNotation);
            Assert.Equal(0, po.Offset);
            Assert.Equal(540, po.Position);
            Assert.Equal("129", po.Value);
        }
コード例 #14
0
        public void GetCdnaPositionOffset_Intron_LeqR_Forward()
        {
            var transcript = HgvsCodingNomenclatureTests.GetForwardTranscript();
            var po         = HgvsUtilities.GetCdnaPositionOffset(transcript, 1261349, 1, true);

            Assert.NotNull(po);
            Assert.False(po.HasStopCodonNotation);
            Assert.Equal(867, po.Offset);
            Assert.Equal(336, po.Position);
            Assert.Equal("-76+867", po.Value);
        }
コード例 #15
0
        public void GetCdnaPositionOffset_Intron_RltL_Reverse()
        {
            var transcript = HgvsCodingNomenclatureTests.GetReverseTranscript();
            var po         = HgvsUtilities.GetCdnaPositionOffset(transcript, 137619, 1, true);

            Assert.NotNull(po);
            Assert.True(po.HasStopCodonNotation);
            Assert.Equal(2, po.Offset);
            Assert.Equal(1759, po.Position);
            Assert.Equal("*909+2", po.Value);
        }
コード例 #16
0
        public void GetCdnaPositionOffset_Gap_RightSide_Forward()
        {
            var transcript = GetForwardGapTranscript();
            var po         = HgvsUtilities.GetCdnaPositionOffset(transcript, 1102, 1, true);

            Assert.NotNull(po);
            Assert.False(po.HasStopCodonNotation);
            Assert.Equal(0, po.Offset);
            Assert.Equal(101, po.Position);
            Assert.Equal("51", po.Value);
        }
コード例 #17
0
        public void GetCdnaPositionOffset_Gap_RightSide_Reverse()
        {
            var transcript = GetReverseGapTranscript();
            var po         = HgvsUtilities.GetCdnaPositionOffset(transcript, 1103, 1, false);

            Assert.NotNull(po);
            Assert.False(po.HasStopCodonNotation);
            Assert.Equal(0, po.Offset);
            Assert.Equal(200, po.Position);
            Assert.Equal("150", po.Value);
        }
コード例 #18
0
        public void GetCdnaPositionOffset_Intron_LltR_Reverse()
        {
            var transcript = HgvsCodingNomenclatureTests.GetReverseTranscript();
            var po         = HgvsUtilities.GetCdnaPositionOffset(transcript, 136000, 1, true);

            Assert.NotNull(po);
            Assert.True(po.HasStopCodonNotation);
            Assert.Equal(-198, po.Offset);
            Assert.Equal(1760, po.Position);
            Assert.Equal("*910-198", po.Value);
        }
コード例 #19
0
        private static (string Hgvs, bool IsTranscriptSuffix) GetBreakEndHgvs(ITranscript transcript, int regionIndex,
                                                                              int position, bool isGenomicSuffix)
        {
            var positionOffset     = HgvsUtilities.GetCdnaPositionOffset(transcript, position, regionIndex);
            var isTranscriptSuffix = isGenomicSuffix != transcript.Gene.OnReverseStrand;
            var codingRegionLength = transcript.Translation.CodingRegion.CdnaEnd - transcript.Translation.CodingRegion.CdnaStart + 1;
            var hgvsPosString      = isTranscriptSuffix ? positionOffset.Value + "_" + codingRegionLength : 1 + "_" + positionOffset.Value;

            var hgvs = transcript.Gene.Symbol + "{" + transcript.Id.WithVersion + "}" + ":c." + hgvsPosString;

            return(hgvs, isTranscriptSuffix);
        }
コード例 #20
0
        public void IsDuplicateWithinInterval_insertion_is_dup()
        {
            var simpleVar = GenSimpleInsertionMock();

            // forward strand
            Assert.True(HgvsUtilities.IsDuplicateWithinInterval(new SimpleSequence("ACCTGGGGC", 12340),
                                                                simpleVar.Object, new Interval(12300, 12400), false));

            // reverse strand
            Assert.True(HgvsUtilities.IsDuplicateWithinInterval(new SimpleSequence("ACTTCCTGC", 12340),
                                                                simpleVar.Object, new Interval(12300, 12400), true));
        }
コード例 #21
0
        public void Rotate3Prime_Identity_Insertion()
        {
            const int    expectedStart         = 46;
            const string expectedRefAminoAcids = "";
            const string expectedAltAminoAcids = "A";

            var observedResult = HgvsUtilities.Rotate3Prime("", "A", 44,
                                                            "MAAQVAPAAASSLGNPPPPPPSELKKAEQQQREEAGGEAAAAAAAERGEMKAAAGQESEGPAVGPPQPLGKELQDGAESNGGGGGGGAGSGGGPGAEPDLKNSNGNAGPRPALNNNLTEPPGGGGGGSSDGVGAPPHSAAAALPPPAYGFGQPYGRSPSAVAAAAAAVFHQQHGGQQSPGLAALQSGGGGGLEPYAGPQQNSHDHGFPNHQYNSYYPNRSAYPPPAPAYALSSPRGGTPGSGAAAAAGSKPPPSSSASASSSSSSFAQQRFGAMGGGGPSAAGGGTPQPTATPTLNQLLTSPSSARGYQGYPGGDYSGGPQDGGAGKGPADMASQCWGAAAAAAAAAAASGGAQQRSHHAPMSPGSSGGGGQPLARTPQPSSPMDQMGKMRPQPYGGTNPYSQQQGPPSGPQQGHGYPGQPYGSQTPQRYPMTMQGRAQSAMGGLSYTQQIPPYGQQGPSGYGQQGQTPYYNQQSPHPQQQQPPYSQQPPSQTPHAQPSYQQQPQSQPPQLQSSQPPYSQQPSQPPHQQSPAPYPSQQSTTQQHPQSQPPYSQPQAQSPYQQQQPQQPAPSTLSQQAAYPQPQSQQSQQTAYSQQRFPPPQELSQDSFGSQASSAPSMTSSKGGQEDMNLSLQSRPSSLPDLSGSIDDLPMGTEGALSPGVSTSGISSSQGEQSNPAQSPFSPHTSPHLPGIRGPSPSPVGSPASVAQSRSGPLSPAAVPGNQMPPRPPSGQSDSIMHPSMNQSSIAQDRGYMQRNPQMPQYSSPQPGSALSPRQPSGGQIHTGMGSYQQNSMGSYGPQGGQYGPQGGYPRQPNYNALPNANYPSAGMAGGINPMGAGGQMHGQPGIPPYGTLPPGRMSHASMGNRPYGPNMANMPPQVGSGMCPPPGGMNRKTQETAVAMHVAANSIQNRPPGYPNMNQGGMMGTGPPYGQGINSMAGMINPQGPPYSMGGTMANNSAGMAASPEMMGLGDVKLTPATKMNNKADGTPKTESKSKKSSSSTTTNEKITKLYELGGEPERKMWVDRYLAFTEEKAMGMTNLPAVGRKPLDLYRLYVSVKEIGGLTQVNKNKKWRELATNLNVGTSSSAASSLKKQYIQCLYAFECKIERGEDPPPDIFAAADSKKSQPKIQPPSPAGSGSMQGPQTPQSTSSSMAEGGDLKPPTPASTPHSQIPPLPGMSRSNSVGIQDAFNDGSDSTFQKRNSMTPNPGYQPSMNTSDMMGRMSYEPNKDPYGSMRKAPGSDPFMSSGQGPNGGMGDPYSRAAGPGLGNVAMGPRQHYPYGGPYDRVRTEPGIGPEGNMSTGAPQPNLMPSNPDSGMYSPSRYPPQQQQQQQQRHDSYGNQFSTQGTPSGSPFPSQQTTMYQQQQQNYKRPMDGTYGPPAKRHEGEMYSVPYSTGQGQPQQQQLPPAQPQPASQQQAAQPSPQQDVYNQYGNAYPATATAATERRPAGGPQNQFPFQFGRDRVSAPPGTNAQQNMPPQMMGGPIQASAEVAQQGTMWQGRNDMTYNYANRQSTGSAPQGPAYHGVNRTDEMLHTDQRANHEGSWPSHGTRQPPYGPSAPVPPMTRPPPSNYQPPPSMQNHIPQVSSPAPLPRPMENRTSPSKSPFLHSGMKMQKAGPPVPASHIAPAPVQPPMIRRDITFPPGSVEATQPVLKQRRRLTMKDIGTPEAWRVMMSLKSGLLAESTWALDTINILLYDDNSIMTFNLSQLPGLLELLVEYFRRCLIEIFGILKEYEVGDPGQRTLLDPGRFSKVSSPAPMEGGEEEEELLGPKLEEEEEEEVVENDEEIAFSGKDKPASENSEEKLISKFDKLPVKIVQKNDPFVVDCSDKLGRVQEFDSGLLHWRIGGGDTTEHIQTHFESKTELLPSRPHAPCPPAPRKHVTTAEGTPGTTDQEGPPPDGPPEKRITATMDDMLSTRSSTLTEDGAKSSEAIKESSKFPFGISPAQSHRNIKILEDEPHSKDETPLCTLLDWQDSLAKRCVCVSNTIRSLSFVPGNDFEMSKHPGLLLILGKLILLHHKHPERKQAPLTYEKEEEQDQGVSCNKVEWWWDCLEMLRENTLVTLANISGQLDLSPYPESICLPVLDGLLHWAVCPSAEAQDPFSTLGPNAVLSPQRLVLETLSKLSIQDNNVDLILATPPFSRLEKLYSTMVRFLSDRKNPVCREMAVVLLANLAQGDSLAARAIAVQKGSIGNLLGFLEDSLAATQFQQSQASLLHMQNPPFEPTSVDMMRRAARALLALAKVDENHSEFTLYESRLLDISVSPLMNSLVSQVICDVLFLIGQS");

            Assert.Equal(expectedStart, observedResult.Start);
            Assert.Equal(expectedRefAminoAcids, observedResult.RefAminoAcids);
            Assert.Equal(expectedAltAminoAcids, observedResult.AltAminoAcids);
        }
コード例 #22
0
        public void Rotate3Prime_Identity_WithNullAminoAcids()
        {
            const int    expectedStart         = 55;
            const string expectedRefAminoAcids = "Q";
            const string expectedAltAminoAcids = "*";

            var observedResult = HgvsUtilities.Rotate3Prime(expectedRefAminoAcids, expectedAltAminoAcids, expectedStart,
                                                            "MGWDLTVKMLAGNEFQVSLSSSMSVSELKAQITQKIGVHAFQQRLAVHPSGVALQDRVPLASQGLGPGSTVLLVVDKCDEPLSILVRNNKGRSSTYEVRLTQTVAHLKQQVSGLEGVQDDLFWLTFEGKPLEDQLPLGEYGLKPLSTVFMNLRLRGGGTEPGGRS");

            Assert.Equal(expectedStart, observedResult.Start);
            Assert.Equal(expectedRefAminoAcids, observedResult.RefAminoAcids);
            Assert.Equal(expectedAltAminoAcids, observedResult.AltAminoAcids);
        }
コード例 #23
0
        public void ShiftAndRotateAlleles_Rotated()
        {
            int    observedStart         = 98;
            string observedRefAminoAcids = "YYAKEV";
            string observedAltAminoAcids = "Y";

            HgvsUtilities.ShiftAndRotateAlleles(ref observedStart, ref observedRefAminoAcids, ref observedAltAminoAcids,
                                                "MHYCVLSAFLILHLVTVALSLSTCSTLDMDQFMRKRIEAIRGQILSKLKLTSPPEDYPEPEEVPPEVISIYNSTRDLLQEKASRRAAACERERSDEEYYAKEVYKIDMPPFFPSENAIPPTFYRPYFRIVRFDVSAMEKNASNLVKAEFRVFRLQNPKARVPEQRIELYQILKSKDLTSPTQRYIDSKVVKTRAEGEWLSFDVTDAVHEWLHHKDRNLGFKISLHCPCCTFVPSNNYIIPNKSEELEARFAGIDGTSTYTSGDQKTIKSTRKKNSGKTPHLLLMLLPSYRLESQQTNRRKKRALDAAYCFRNVQDNCCLRPLYIDFKRDLGWKWIHEPKGYNANFCAGACPYLWSSDTQHSRVLSLYNTINPEASASPCCVSQDLEPLTILYYIGKTPKIEQLSNMIVKSCKCS");

            Assert.Equal(100, observedStart);
            Assert.Equal("AKEVY", observedRefAminoAcids);
            Assert.Equal("", observedAltAminoAcids);
        }
コード例 #24
0
        public void GetAltPeptideSequence_Genomic()
        {
            var          refSequence         = GetGenomicRefSequence();
            var          transcript          = GetGenomicTranscript();
            const int    cdsBegin            = 112;
            const int    cdsEnd              = 121;
            const string transcriptAltAllele = "";

            const string expectedResult = "RHRNRNTQTETNTETQRHRNTQKHRNKHRDTETHRNTETNTETQKHTETQKQTQRHRNTQKHTDRNKHRNTETQKYRNTQKHRNKHRDTETQKHSDAETQQHKHRNTETHRNRNTETNTETQTHRHRETQKHTETLKHSGRCPGCRGSIA";
            var          observedResult =
                HgvsUtilities.GetAltPeptideSequence(refSequence, cdsBegin, cdsEnd, transcriptAltAllele, transcript,
                                                    false);

            Assert.Equal(expectedResult, observedResult);
        }
コード例 #25
0
                        AltAminoAcids, string RefCodons, string AltCodons, string TranscriptAltAllele, string TranscriptRefAllele) AnnotateTranscript(ITranscript transcript, ISimpleVariant variant, AminoAcids aminoAcids, ISequence refSequence)
        {
            bool onReverseStrand = transcript.Gene.OnReverseStrand;
            var  start           = MappedPositionUtilities.FindRegion(transcript.TranscriptRegions, variant.Start);
            var  end             = MappedPositionUtilities.FindRegion(transcript.TranscriptRegions, variant.End);

            var position = GetMappedPosition(transcript.TranscriptRegions, start.Region, start.Index, end.Region,
                                             end.Index, variant, onReverseStrand, transcript.Translation?.CodingRegion, transcript.StartExonPhase,
                                             variant.Type == VariantType.insertion);

            var codingSequence = GetCodingSequence(transcript, refSequence);
            var cdnaSequence   = GetCdnaSequence(transcript, refSequence);

            string transcriptAltAllele = HgvsUtilities.GetTranscriptAllele(variant.AltAllele, onReverseStrand);
            var    codons = Codons.GetCodons(transcriptAltAllele, position.CdsStart, position.CdsEnd, position.ProteinStart, position.ProteinEnd, codingSequence);

            var aa = aminoAcids.Translate(codons.Reference, codons.Alternate);

            (aa, position.ProteinStart, position.ProteinEnd) = TryTrimAminoAcidsAndUpdateProteinPositions(aa, position.ProteinStart, position.ProteinEnd);

            (position.CoveredCdnaStart, position.CoveredCdnaEnd) = transcript.TranscriptRegions.GetCoveredCdnaPositions(position.CdnaStart, start.Index, position.CdnaEnd, end.Index, onReverseStrand);
            (position.CoveredCdsStart, position.CoveredCdsEnd, position.CoveredProteinStart, position.CoveredProteinEnd) = MappedPositionUtilities.GetCoveredCdsAndProteinPositions(position.CoveredCdnaStart, position.CoveredCdnaEnd, transcript.StartExonPhase, transcript.Translation?.CodingRegion);

            var            transcriptRefAllele = GetTranscriptRefAllele(position, cdnaSequence, variant, onReverseStrand);
            SequenceChange coveredAa;

            // only generate the covered version of ref & alt alleles when CDS start/end is -1
            if (position.CdsStart == -1 || position.CdsEnd == -1)
            {
                coveredAa = GetCoveredAa(aminoAcids, transcriptAltAllele, position.CoveredCdsStart, position.CoveredCdsEnd, position.CoveredProteinStart, position.CoveredProteinEnd, codingSequence);
                (coveredAa, position.CoveredProteinStart, position.CoveredProteinEnd) = TryTrimAminoAcidsAndUpdateProteinPositions(coveredAa, position.CoveredProteinStart, position.CoveredProteinEnd);
            }
            else
            {
                coveredAa = aa;
                position.CoveredProteinStart = position.ProteinStart;
                position.CoveredProteinEnd   = position.ProteinEnd;
            }


            var positionalEffect = GetPositionalEffect(transcript, variant, position, aa.Reference, aa.Alternate,
                                                       position.CoveredCdnaStart, position.CoveredCdnaEnd, position.CoveredCdsStart, position.CoveredCdsEnd);

            var variantEffect = new VariantEffect(positionalEffect, variant, transcript, aa.Reference, aa.Alternate,
                                                  codons.Reference, codons.Alternate, position.ProteinStart, coveredAa.Reference, coveredAa.Alternate);

            return(variantEffect, position, aa.Reference, aa.Alternate, codons.Reference, codons.Alternate, transcriptAltAllele, transcriptRefAllele);
        }
コード例 #26
0
        private static (string Begin, string End) AdjustFirst(BreakPointTranscript first)
        {
            var codingRegion       = first.Transcript.Translation.CodingRegion;
            int position           = first.GenomicPosition;
            int codingRegionLength = codingRegion.CdnaEnd - codingRegion.CdnaStart + 1;

            if (position < codingRegion.Start)
            {
                return("?", (position - codingRegion.Start).ToString());
            }
            if (position > codingRegion.End)
            {
                return("?", (position - codingRegion.End + codingRegionLength).ToString());
            }
            return("1", HgvsUtilities.GetCdnaPositionOffset(first.Transcript, position, first.RegionIndex).Value);
        }
コード例 #27
0
        private static (string Begin, string End) AdjustSecond(BreakPointTranscript second)
        {
            var codingRegion       = second.Transcript.Translation.CodingRegion;
            int position           = second.GenomicPosition;
            int codingRegionLength = codingRegion.CdnaEnd - codingRegion.CdnaStart + 1;

            if (position < codingRegion.Start)
            {
                return((position - codingRegion.Start).ToString(), "?");
            }
            if (position > codingRegion.End)
            {
                return((position - codingRegion.End + codingRegionLength).ToString(), "?");
            }
            return(HgvsUtilities.GetCdnaPositionOffset(second.Transcript, position, second.RegionIndex).Value, codingRegionLength.ToString());
        }
コード例 #28
0
        public static IAnnotatedTranscript GetAnnotatedTranscript(ITranscript transcript, IVariant variant, ISequence refSequence,
                                                                  AminoAcids aminoAcidsProvider)
        {
            var mappedPositions = MappedPositionsUtils.ComputeMappedPositions(variant.Start, variant.End, transcript);

            var transcriptRefAllele = HgvsUtilities.GetTranscriptAllele(variant.RefAllele, transcript.Gene.OnReverseStrand);
            var transcriptAltAllele = HgvsUtilities.GetTranscriptAllele(variant.AltAllele, transcript.Gene.OnReverseStrand);

            var codonsAndAminoAcids = GetCodonsAndAminoAcids(transcript, refSequence, transcriptRefAllele, transcriptAltAllele, variant, mappedPositions, aminoAcidsProvider);

            var referenceCodons     = codonsAndAminoAcids.Item1;
            var alternateCodons     = codonsAndAminoAcids.Item2;
            var referenceAminoAcids = codonsAndAminoAcids.Item3;
            var alternateAminoAcids = codonsAndAminoAcids.Item4;


            var insertionInStartCodonAndNoimpact = variant.Type == VariantType.insertion &&
                                                   mappedPositions.ProteinInterval.Start <= 1 &&
                                                   alternateAminoAcids.EndsWith(referenceAminoAcids);

            var variantEffect = GetVariantEffect(transcript, variant, mappedPositions, referenceAminoAcids,
                                                 alternateAminoAcids, referenceCodons, alternateCodons, insertionInStartCodonAndNoimpact);


            var consequences = GetConsequences(transcript, variant, variantEffect);

            var proteinBegin = mappedPositions.ProteinInterval.Start == null
                ? -1
                : mappedPositions.ProteinInterval.Start.Value;

            var proteinEnd = mappedPositions.ProteinInterval.End == null
                ? -1
                : mappedPositions.ProteinInterval.End.Value;

            var upStreamAminoAcids   = GetFlankingPeptides(transcript.Translation?.PeptideSeq, proteinBegin, proteinEnd, FlankingAminoAcidLength, true);
            var downStreamAminoAcids = consequences.Contains(ConsequenceTag.frameshift_variant)? null: GetFlankingPeptides(transcript.Translation?.PeptideSeq, proteinBegin, proteinEnd, FlankingAminoAcidLength, false);

            return(new PianoAnnotatedTranscript(transcript, referenceAminoAcids, alternateAminoAcids, mappedPositions, upStreamAminoAcids, downStreamAminoAcids, consequences));
        }
コード例 #29
0
                         AltAminoAcids, string RefCodons, string AltCodons, string TranscriptAltAllele) AnnotateTranscript(ITranscript transcript, ISimpleVariant variant, AminoAcids aminoAcids,
                                                                                                                           ISequence refSequence)
        {
            var onReverseStrand = transcript.Gene.OnReverseStrand;
            var start           = MappedPositionUtilities.FindRegion(transcript.TranscriptRegions, variant.Start);
            var end             = MappedPositionUtilities.FindRegion(transcript.TranscriptRegions, variant.End);

            var position = GetMappedPosition(transcript.TranscriptRegions, start.Region, start.Index, end.Region,
                                             end.Index, variant, onReverseStrand, transcript.Translation?.CodingRegion, transcript.StartExonPhase,
                                             variant.Type == VariantType.insertion);

            var transcriptRefAllele = HgvsUtilities.GetTranscriptAllele(variant.RefAllele, onReverseStrand);
            var transcriptAltAllele = HgvsUtilities.GetTranscriptAllele(variant.AltAllele, onReverseStrand);

            var codingSequence = transcript.Translation == null
                ? null
                : new CodingSequence(refSequence, transcript.Translation.CodingRegion, transcript.TranscriptRegions,
                                     transcript.Gene.OnReverseStrand, transcript.StartExonPhase);

            var codons = Codons.GetCodons(transcriptRefAllele, transcriptAltAllele, position.CdsStart, position.CdsEnd,
                                          position.ProteinStart, position.ProteinEnd, codingSequence);

            var coveredCdna = transcript.TranscriptRegions.GetCoveredCdnaPositions(position.CdnaStart, start.Index,
                                                                                   position.CdnaEnd, end.Index, onReverseStrand);

            var coveredCds = MappedPositionUtilities.GetCoveredCdsPositions(coveredCdna.Start, coveredCdna.End,
                                                                            transcript.StartExonPhase, transcript.Translation?.CodingRegion);

            var aa = aminoAcids.Translate(codons.Reference, codons.Alternate);

            var positionalEffect = GetPositionalEffect(transcript, variant, position, aa.Reference, aa.Alternate,
                                                       coveredCdna.Start, coveredCdna.End, coveredCds.Start, coveredCds.End);

            var variantEffect = new VariantEffect(positionalEffect, variant, transcript, aa.Reference, aa.Alternate,
                                                  codons.Reference, codons.Alternate, position.ProteinStart);

            return(variantEffect, position, aa.Reference, aa.Alternate, codons.Reference, codons.Alternate,
                   transcriptAltAllele);
        }
コード例 #30
0
        private static string GetTranscriptRefAllele(IMappedPosition position, ISequence cdnaSequence, ISimpleVariant variant,
                                                     bool onReverseStrand)
        {
            var variantRef = HgvsUtilities.GetTranscriptAllele(variant.RefAllele, onReverseStrand);

            if (position == null || cdnaSequence == null)
            {
                return(variantRef);
            }
            var start = position.CoveredCdnaStart;
            var end   = position.CoveredCdnaEnd;

            if (start == -1 && end == -1)
            {
                return(variantRef);
            }
            if (start != -1 && end != -1 && end < start)
            {
                Swap.Int(ref start, ref end);
            }

            return(cdnaSequence.Substring(start - 1, end - start + 1));
        }