Spørgsmål:
Brug af t-SNE-algoritmen på microarray-data + en fejlbonus
J. Doe
2017-09-02 22:53:00 UTC
view on stackexchange narkive permalink

Jeg prøver at bruge t-SNE-algoritmen på nogle mikroarrays-data. Mere specifikt har min dataramme 18600 kolonner med gener (funktioner) og 72 rækker med betingelser med replikater (10xWt, 10xTg osv.). Udtryksværdierne er i log2-skala.

Her er den kode, som jeg prøver at køre.

  # t-SNE implementeringsbibliotek (Rtsne) set.seed (1 ) for (i i 1:15) {tsne = Rtsne (data.T [, - 18601], dæmpes = 2, perplexitet = i, verbose = SAND, max_iter = 1000, pca = T) farver = regnbue (længde (unik (data.T $ klasser))) navne (farver) = unik (data.T $ klasser) plot (tsne $ Y, t = 'n', main = "tsne") tekst (tsne $ Y, labels = data. T $ klasser, col = farver [data.T $ klasser]) readline (prompt = "Tryk [enter] for at fortsætte")}  

Bemærk, at jeg ikke tæller kolonnen 18601 fordi disse søjler indeholder etiketter / klasser for hver betingelse.

Tanken her er, at når jeg udfører dette script, returnerer R mig denne fejl:

Fejl: beskyt (): protection stack overflow

Skal jeg ændre --max-pp-size eller det er en fejl i Rtsne-pakke?

Jeg spekulerede også på, om det er mere meningsfuldt at køre tSNE-algoritmen ved ikke at bruge log2-værdierne på ekspressionsniveauet men logfolden ændrer værdier i forhold til Wt-tilstanden (vildtype). Jeg spørger, fordi jeg ikke kunne finde en sådan anden implementering af tSNE på microarray-data.

For konfigurationen af ​​Rtsne-funktionen læste jeg denne artikel

Ethvert andet forslag til gennemførelsen hilses velkommen.

En svar:
Devon Ryan
2017-09-04 17:07:15 UTC
view on stackexchange narkive permalink

Konvertering af din data.frame til en matrix (og derefter fjernelse af data.frame ) frigør ofte nok hukommelse, som du vandt løber ikke ind i dette. Bemærk, at en -matrix er mere hukommelseseffektiv end en data.frame , og du skal Rtsne () beholde begge i hukommelsen på samme tid (mange matematiske centrerede funktioner ender med at konvertere ting til en matrix på et eller andet tidspunkt for effektivitet).

For hvad det er værd, har det aldrig været helt klart for mig, hvad interaktionen er mellem en data.frame og pegerbeskyttelsesstakken, men det er ofte tilfældet, at dette løser denne slags fejl.

'data.frames' er lister over kolonnevektorer, og hver af disse kolonner har en markør, der muligvis skal beskyttes. Med et stort antal kolonner kan jeg nemt se, hvordan dette kan sprænge beskyttelsesstakken. Tætte matricer er sammenhængende hukommelse, de har kun brug for en enkelt markør.
Jeg havde overvejet det, men min læsning præciserede aldrig, om det virkelig skyldtes pegepunkter til kolonnerne eller noget andet. Det er uheldigt, hvor lidt der er nævnt om det i dokumentationen.


Denne spørgsmål og svar blev automatisk oversat fra det engelske sprog.Det originale indhold er tilgængeligt på stackexchange, som vi takker for den cc by-sa 3.0-licens, den distribueres under.
Loading...