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); }
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); }
public void IsAminoAcidDuplicate_True() { var observedResult = HgvsUtilities.IsAminoAcidDuplicate(85, "P", "MEAAAGGRGCFQPHPGLQKTLEQFHLSSMSSLGGPAAFSARWAQEAYKKESAKEAGAAAVPAPVPAATEPPPVLHLPAIQPPPPVLPGPFFMPSDRSTERCETVLEGETISCFVVGGEKRLCLPQILNSVLRDFSLQQINAVCDELHIYCSRCTADQLEILKVMGILPFSAPSCGLITKTDAERLCNALLYGGAYPPPCKKELAASLALGLELSERSVRVYHECFGKCKGLLVPELYSSPSAACIQCLDCRLMYPPHKFVVHSHKALENRTCHWGFDSANWRAYILLSQDYTGKEEQARLGRCLDDVKEKFDYGNKYKRRVPRVSSEPPASIRPKTDDTSSQSPAPSEKDKPSSWLRTLAGSSNKSLGCVHPRQRLSAFRPWSPAVSASEKELSPHLPALIRDSFYSYKSFETAVAPNVALAPPAQQKVVSSPPCAAAVSRAPEPLATCTQPRKRKLTVDTPGAPETLAPVAAPEEDKDSEAEVEVESREEFTSSLSSLSSPSFTSSSSAKDLGSPGARALPSAVPDAAAPADAPSGLEAELEHLRQALEGGLDTKEAKEKFLHEVVKMRVKQEEKLSAALQAKRSLHQELEFLRVAKKEKLREATEAKRNLRKEIERLRAENEKKMKEANESRLRLKRELEQARQARVCDKGCEAGRLRAKYSAQIEDLQVKLQHAEADREQLRADLLREREAREHLEKVVKELQEQLWPRARPEAAGSEGAAELEP"); Assert.True(observedResult); }
public void IsAminoAcidDuplicate_False() { var observedResult = HgvsUtilities.IsAminoAcidDuplicate(307, "*RX", "MHYDGHVRFDLPPQGSVLARNVSTRSCPPRTSPAVDLEEEEEESSVDGKGDRKSTGLKLSKKKARRRHTDDPSKECFTLKFDLNVDIETEIVPAMKKKSLGEVLLPVFERKGIALGKVDIYLDQSNTPLSLTFEAYRFGGHYLRVKAPAKPGDEGKVEQGMKDSKSLSLPILRPAGTGPPALERVDAQSRRESLDILAPGRRRKNMSEFLGEASIPGQEPPTPSSCSLPSGSSGSTNTGDSWKNRAASRFSGFFSSGPSTSAFGREVDKMEQLEGKLHTYSLFGLPRLPRGLRFDHDSWEEEYDEDEDEDNACLRLEDSWRELIDGHEKLTRRQCHQQEAVWELLHTEASYIRKLRVIINLFLCCLLNLQESGLLCEVEAERLFSNIPEIAQLHRRLWASVMAPVLEKARRTRALLQPGDFLKGFKMFGSLFKPYIRYCMEEEGCMEYMRGLLRDNDLFRAYITWAEKHPQCQRLKLSDMLAKPHQRLTKYPLLLKSVLRKTEEPRAKEAVVAMIGSVERFIHHVNACMRQRQERQRLAAVVSRIDAYEVVESSSDEVDKLLKEFLHLDLTAPIPGASPEETRQLLLEGSLRMKEGKDSKMDVYCFLFTDLLLVTKAVKKAERTRVIRPPLLVDKIVCRELRDPGSFLLIYLNEFHSAVGAYTFQASGQALCRGWVDTIYNAQNQLQQLRAQEPPGSQQPLQSLEEEEDEQEEEEEEEEEEEEGEDSGTSAASSPTIMRKSSGSPDSQHCASDGSTETLAMVVVEPGDTLSSPEFDSGPFSSQSDETSLSTTASSATPTSELLPLGPVDGRSCSMDSAYGTLSPTSLQDFVAPGPMAELVPRAPESPRVPSPPPSPRLRRRTPVQLLSCPPHLLKSKSEASLLQLLAGAGTHGTPSAPSRSLSELCLAVPAPGIRTQGSPQEAGPSWDCRGAPSPGSGPGLVGCLAGEPAGSHRKRCGDLPSGASPRVQPEPPPGVSAQHRKLTLAQLYRIRTTLLLNSTLTASEV"); Assert.False(observedResult); }
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); }
public void GetChangesAfterFrameshift_FirstAminoAcidIsStop() { var observedResult = HgvsUtilities.GetChangesAfterFrameshift(4, "MABCDEFGHIIIKL", "MABCDEFGHIIIKL*"); Assert.Equal(15, observedResult.Start); Assert.Equal('*', observedResult.RefAminoAcid); Assert.Equal('*', observedResult.AltAminoAcid); }
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); }
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)); }
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); }
public void GetNumAminoAcidsUntilStopCodon_FirstAminoAcidIsStop() { const int expectedResult = -1; var observedResult = HgvsUtilities.GetNumAminoAcidsUntilStopCodon( "RHRNRNTQTETNTETQRHRNTQKHRNKHRDTETHRNTETNTETQKHTETQKQTQRHRNTQKHTDRNKHRNTETQKYRNTQKHRNKHRDTETQKHSDAETQQHKHRNTETHRNRNTETNTETQTHRHRETQKHTETLKHSGRCPGCRGSIA", "RHRNRNTQTETNTETQRHRNTQKHRNKHRDTETHRNTQKHRNKHRDTETHRNTETNTETQKHTETHRQKQTQKHRDTEIQKHTETQKQTQRHRDTETQRRRNTATQTQKHRNTQKQKHRNKHRDTDTQTQRNTETHRNTETQWAVSRLQRLHRC", 37, true); Assert.Equal(expectedResult, observedResult); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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)); }
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); }
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); }
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); }
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); }
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); }
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); }
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()); }
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)); }
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); }
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)); }