Efter att ha upptäckt några svårigheter med genommontering har jag intresserat mig för att hitta och kategorisera repetitiva DNA-sekvenser, som den här från Nippostrongylus brasiliensis [varje bas är färgkodad som A: grön; C: blå; G: gul; T: röd]:
[FASTA-fil associerad med denna sekvens kan hittas här]
Dessa sekvenser med stora upprepade enhetsstorlekar kan bara detekteras (och monteras) med långa avläsningar (t.ex. PacBio, nanopore), eftersom alla följder som är mindre än enhetens längd inte kommer att kunna för att skilja mellan sekvenseringsfel och att slå en annan plats inom repeteringsstrukturen. Jag har spårat dessa sekvenser på ett bulk sätt med två metoder:
- Att köra en all-vs-all-mappning och letat efter sekvenser som kartläggs till sig själva många gånger
- Genomföra en komprimering av sekvensen (t.ex. bzip2) och hitta sekvenser som har en komprimeringshastighet som är väsentligt högre än normalt
När jag har hittat en misstänkt sekvens, sedan vill kunna kategorisera repetitionen (t.ex. större repeteringslängd, antal tandemupprepningar, repetitiv sekvens). Det är här jag fastnar.
För att göra en "look, blank" demonstration har jag för närvarande en mycket manuell process för att få dessa sekvenser till ett format som jag kan visualisera. Min process är som följer:
- Använd SENAST för att producera en punktdiagram av självmappning för kartläggningen
- Identifiera den repetitiva regionen visuellt och extrahera regionen från sekvens
- Använd en kombination av
vik -w <width> och mindre -S för att visuellt inspektera sekvensen med olika möjliga repeterande enhetsbredder för att hitta den mest sannolika upprepa enhetsstorlek - Visa sekvensen på ett rektangulärt och cirkulärt sätt med hjälp av mitt eget skript, omslaget med upprepad enhetslängd
Men den processen är inte möjlig när jag har tusentals potentiella repetitiva sekvenser att fiska igenom.
Finns det något bättre sätt att göra detta? Med tanke på en godtycklig DNA-sekvens med längd> 10 kb, hur kan jag (automatiskt) hitta både platsen för upprepningsregionen och även enhetslängden (med tanke på att det kan finnas flera upprepningsstrukturer, med enhetslängder från 30 bp till 10 kb)?
Ett exempel på en sekvens kan hittas här, som har en ~ 21 kb upprepningsregion med ~ 171 bp upprepningsenheter ungefär 1/3 av vägen in i sekvensen.
En Kmer-baserad analys
Jag har nu sett mänskliga sekvenser med repetitiva regioner överstigande 10 kb (dvs. utanför intervallet för mest länkade läs applikationer). Min nuvarande idé är centrerad kring att skapa hashtabeller med korta sekvenser (för närvarande 13-mers) och spåra deras plats:
- Bearbeta sekvensen och lagra platsen för varje kmer
- För varje kmer, ta reda på hur många gånger det visas i sekvensen
- För upprepade kmers, ta reda på hur mycket ett gap det finns mellan nästa gång som kmer inträffar
- Rapportera median- och modalopplängden för upprepade kmers och statistik associerad med deras frekvens i sekvensen
Vissa lokala repetitiva regioner kan gå förlorade i statistiken med denna metod, det är svårt att säga om det finns flera repetitiva regioner inom en enda sekvens, och om repeteringsenheterna själva är något repetitiva (tillräckligt för att en kmer dupliceras inom en repeterande enhet), då rapporterar algoritmen repetitiviteten (se steg 3 ).