Pitanje:
Razumijevanje DESeq2 dizajna, kontrasta i rezultata
bli
2017-05-19 19:40:14 UTC
view on stackexchange narkive permalink

Imam niz eksperimenata s visokom produktivnošću s 2 genotipa ("WT" i "prg1") i 3 tretmana ("RT", "HS30" i "HS30RT120"), a postoje po 2 replike za kombinacije tretmana genotip x.

Brojevi očitavanja gena sažeti su u datoteci koju učitavam na sljedeći način u R:

  > counts_data <- read.table (" put / do / moje / datoteke ", zaglavlje = TRUE, row.names =" gen ") > kolname (counts_data) [1]" WT_RT_1 "" WT_HS30_1 "" WT_HS30RT120_1 "" prg1_RT_1 "[5]" prg1_HS30_1 "" prg1_HS30_1 "" prg1_HS30_1 "" prg1_HS30_1 "" prg1_HS30_1 "" prg1_HS30_1 "" prg1_HS30_1 "" prg1_HS30_1 " "WT_RT_2" "WT_HS30_2" [9] "WT_HS30RT120_2" "prg1_RT_2" "prg1_HS30_2" "prg1_HS30RT120_2"  

Eksperimente opisujem na sljedeći način:

  > col_data <- DataFrame (geno = c (rep ("WT", puta = 3), rep ("prg1", puta = 3), rep ("WT", puta = 3), rep ("prg1", puta = 3)), tretman = rep (c ("RT", "HS30", "HS30RT120"), puta = 4), rep = c (rep ("1", puta = 6), rep ("2", puta = 6) ), Row.names = colnames (counts_data)) > col_dataDataFrame s 12 redaka i stupaca 3 geno Treat Rep <character> <character> <character>WT_RT_1 WT RT 1WT_HS30_1 WT HS30 1WT_HS30RT120_1 WT HS30RT120 1prg1_RT_1 prg1 RT 1prg1_HS30_1 prg1 HS30 1 ... ... .... ..WT_HS30_2 WT HS30 2WT_HS30RT120_2 WT HS30RT120 2prg1_RT_2 prg1 RT 2prg1_HS30_2 prg1 HS30 2prg1_HS30RT120_2 prg1 HS30RT120 2  

Želim sagraditi ili objekt koji bih mogao koristiti

  • pronaći diferencijalno eksprimirane gene kad liječenje varira za određeni fiksni genotip
  • ili:

    • pronaći različito izraženi geni kada se genotip razlikuje za određeni fiksni tretman

    Na forumu za pomoć bioprovodnicima mislim da sam našao donekle sličnu situaciju i pročitao sam sljedeće:

    Isprobajte dizajn ~ genotype + genotype: condition

    Tada ćete imati učinak stanja za svaku razinu genotipa, uključujući referentnu razinu .

    Parove možete ograničiti koristeći stil popisa argumenta 'kontrast'.

    Međutim, ovo ne objašnjava kako primijeniti ovaj "stil popisa "na argument" kontrast ". I čini se da je gornja situacija asimetrična. Pod tim mislim da izgleda da genotip i stanje nemaju zamjenjivu ulogu.

    Stoga sam isprobao sljedeću simetričniju formulu:

      > dds <- DESeqDataSetFromMatrix (countData = counts_data, colData = col_data, design = ~ geno + treat + geno: treat) > dds <- DESeq (dds)  

    Sada, mogu li, na primjer, dobiti diferencijalni izraz rezultati pri usporedbi tretmana "HS30" protiv "RT" kao reference, u genotipu "prg1" ?

    A kako?

    Ako dobro razumijem, gornji- spomenuti "stil popisa" koristi imena koja daje funkcija resultsNames . U mom slučaju imam sljedeće:

      > resultsNames (dds) [1] "Intercept" "geno_WT_vs_prg1" [3] "treat_HS30RT120_vs_HS30" "treat_RT_vs_HS30" [5] "genoWT.tre20HS30 "genoWT.treatRT"  

    Pretpostavljam da bi mi trebao kontrast između "genoprg1.treatRT" i "genoprg1.treatHS30", ali to nije u gornjim imenima rezultata.

    Izgubio sam se.

    ovo je sličniji primjer (mislim): https://support.bioconductor.org/p/63201/. Zaključak je sličan Devonovom odgovoru - upotrijebite LRT.
    Dva odgovori:
    #1
    +13
    Devon Ryan
    2017-05-19 19:51:01 UTC
    view on stackexchange narkive permalink

    Najjednostavniji je način da se ne koristi Wald test, već LRT sa smanjenim modelom kojem nedostaje faktor interesa:

      dds = DESeq (dds, test = "LRT" smanjen = ~ geno + geno: Liječenje)  

    Gore navedeno bi vam dalo rezultate za liječenje bez obzira na razinu, a da bi se i dalje računalo o mogućoj interakciji (tj. "glavni učinak liječenja, bez obzira na vrsta liječenja ").

    Osim toga, ovo je vjerojatno slučaj kada je edgeR-preferirani način stvaranja skupina kombinacija tretmana genotipom, a zatim upotreba modela ~ 0 + group možda će vam olakšati život. Dobit ćete iste rezultate (više ili manje) bez obzira, ali vjerojatno će vam biti lakše razmišljati tim izrazima, a ne sjećati se da će osnovna razina biti tretman HS30 i geno prg1 .

    Pokušao sam sljedeće: `dds <- DESeqDataSetFromMatrix (countData = counts_data, colData = col_data, design = ~ geno + treat + geno: treat)` tada `dds = DESeq (dds, test =" LRT ", smanjeno = ~ geno + geno: treat) `ali to ne uspije s` Pogreška u nbinomLRT (objekt, pun = pun, smanjen = smanjen, betaPrior = betaPrior,: manje od jednog stupnja slobode, možda puni i smanjeni modeli nisu u ispravnom redoslijedu`. Osim toga , ono što želim nije "bez obzira na vrstu liječenja". Želim rezultate za određeni fiksni tretman ili za dati fiksni genotip. Možda moje pitanje nije bilo jasno.
    Morao bih pregledati matricu modela da vidim zašto uzrokuje pogrešku. U svakom slučaju, predložio bih da se krene putem koji autori edgeR preferiraju i kombinacije tretmana i genotipa naprave u pojedinačne skupine. Tada su kontrasti očitiji.
    "Najjednostavniji način je ne koristiti test Walda, već LRT" - možete li objasniti zašto?
    Budući da liječenje ima više razina, tako bi se kod testa Wald-a trebalo prikladno nositi s kontrastima, dok se kod LRT-a može istodobno izostaviti sve razine odjednom.
    #2
    +8
    bli
    2017-05-22 17:05:18 UTC
    view on stackexchange narkive permalink

    Čini se da je trik "kombiniranja čimbenika" opisan u dijelu 3.3 trenutne "vinjete" DESeq2 (od svibnja 2017.) pod naslovom "Interakcija" način za pristup željenim kontrastima.

    Čini se da je moguće to učiniti izravno prilikom izgradnje colData i prilikom pozivanja DESeqDataSetFromMatrix:

    Dodajmo kombinirane faktore "geno" i "treat" na budući parametar colData :

      > col_data $ geno_treat <- as.factor (zalijepite (col_data $ geno, col_data $ treat, sep = "_")) > col_dataDataFrame sa 12 redaka i stupaca 4 geno Treat rep geno_treat <character> <character> <character> <factor>WT_RT_1 WT RT 1 WT_RTWT_HS30_1 WT HS30 1 WT_HS30WT_HS30RT120_1 WT HS30RT120 1 WT_HS30RT120prg1_RT_1 prg1 RT 1 prg1_RTprg1_HS30_1 prg1 HS30 1 prg1_HS30 ... ... ... ... ... WT_HS30_2 WT HS30 2 WT_HS30WT_HS30RT120_2 WT HS30RT120 2 WT_HS30RT120prg1_RT_2 prg1 RT 2 prg1_RTprg1_HS30_2 prg1 HS30 2 prg1_HS30prg1_HS30RT120_2 prg1 HS30RT120 2 prg1_HS30RT120  

    Sada možemo koristiti dizajn gdje će se diferencijalni izraz objasniti ovim kombiniranim faktorima:

      > dds <- DESeqDataSetFromMatrix (countData = counts_data, colData = col_data, design = ~ geno_treat)  

    Pokrećemo analizu:

      > dds <- DESeq (dds)  

    Tada možemo tražiti rezultate za određeni kontrast između takvih kombinacija faktora. Na primjer, da bi se dobili rezultati za učinak tretmana "HS30" protiv referentnog stanja "RT" u genotipu "prg1":

      res <- rezultati (dds, kontrast = c (" geno_treat "," prg1_HS30 "," prg1_RT "))  


    Ova pitanja su automatski prevedena s engleskog jezika.Izvorni sadržaj dostupan je na stackexchange-u, što zahvaljujemo na cc by-sa 3.0 licenci pod kojom se distribuira.
    Loading...