Fråga:
Hitta plats och enhetslängd för repetitiva sekvenser inom en lång läsning
gringer
2017-06-02 07:48:05 UTC
view on stackexchange narkive permalink

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]:

Repeat sequence represented in a rectangular fashion Repeat sequence represented in a circular fashion

[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:

  1. Att köra en all-vs-all-mappning och letat efter sekvenser som kartläggs till sig själva många gånger
  2. 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:

  1. Använd SENAST för att producera en punktdiagram av självmappning för kartläggningen
  2. Identifiera den repetitiva regionen visuellt och extrahera regionen från sekvens
  3. 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
  4. 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:

  1. Bearbeta sekvensen och lagra platsen för varje kmer
  2. För varje kmer, ta reda på hur många gånger det visas i sekvensen
  3. För upprepade kmers, ta reda på hur mycket ett gap det finns mellan nästa gång som kmer inträffar
  4. 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 ).

Skulle RepeatMasker hjälpa dig här? Eller hittar det bara kända repetitiva element och regioner med låg komplexitet? Jag har aldrig försökt använda den för att identifiera enkla upprepningar.
Dessa upprepningar har högkomplexa upprepningsenheter; Jag har inte hittat att regionerna är markerade av tantan eller damm, och jag misstänker att RepeatMasker kommer att likna. Webbtjänsten kan åtminstone inte hitta upprepningsregionen i testsekvensen som jag har länkat.
Jag vet om [detta blogginlägg] (https://dazzlerblog.wordpress.com/2016/04/01/detecting-and-soft-masking-repeats/) från Gene Myers där han använder en strategi för att maskera upprepningar i långa läsningar för att påskynda genommontering. Jag är inte säker på om det är exakt vad du vill, men jag trodde att det kan vara användbart.
Tack. TANmask (i slutet av inlägget) ser väldigt mycket ut som den typ av algoritm jag letar efter. Det kommer åtminstone att lösa gränsproblemet, om inte statistik för upprepad enhetslängd. Kan du skriva upp det som ett svar?
Två svar:
Sergio Arredondo
2017-06-02 19:20:35 UTC
view on stackexchange narkive permalink

Det kan vara en idé att fragmentera de långa avläsningarna i små sekvenser, som att simulera Illumina-avläsningar på 150 bp, och sedan kartlägga dessa små sekvenser mot de ursprungliga långa avläsningarna och extrahera regioner med hög täckning?

gringer
2018-09-04 16:09:01 UTC
view on stackexchange narkive permalink

Jag har sorterat visualiseringen. Här är tre alternativa representationer av repetitiva strukturer för samma sekvens:

Repeat patterns represented as a dotplot Repeat patterns represented as a linear "ripple" plot Repeat patterns represented as a semicircular "sunset" plot

Dessa genererades med samma R-skript, som kan anropas från kommandoraden:

  $ repaver.r -style dotplot -prefix dotplot MAOA_chrX_43645715-43756016.fa $ repaver. r -stilsprofil -prefixprofil MAOA_chrX_43645715-43756016.fa $ repaver.r -stil halvcirkelformat -prefix semi MAOA_chrX_43645715-43756016.fa  

Mer information om detta finns i presentation Jag gav vid Queenstown Research Week, 2018. Det finns också ett peer-reviewed eBook-kapitel som kommer inom kort.

Detta är tillräckligt snabbt för att jag ska kunna köra det på nanopore C. elegans genomet på ungefär hälften en timme, producerar dessa tomter för varje kontig. Jag har inte riktigt en metod för att iterera genom denna plot och välja den dominerande repeteringslängden på varje plats, men det är en [relativt] enkel förlängning av vad jag redan har gjort.



Denna fråga och svar översattes automatiskt från det engelska språket.Det ursprungliga innehållet finns tillgängligt på stackexchange, vilket vi tackar för cc by-sa 3.0-licensen som det distribueras under.
Loading...