esta es una forma basica, de bajar la data de TCGA y generar una
tabla unica con la expresion de los genes que interesan, y la data
fenotipica (ej: tipo de muestra, survival)
descargar los sets de datos
se puede correr sin cambiar nada
# xpresion
download.file("https://tcga-xena-hub.s3.us-east-1.amazonaws.com/download/TCGA.PRAD.sampleMap%2FHiSeqV2.gz", destfile = 'expresion')
# fenotipo
download.file("https://tcga-xena-hub.s3.us-east-1.amazonaws.com/download/TCGA.PRAD.sampleMap%2FPRAD_clinicalMatrix", destfile = 'pheno')
# survival
download.file("https://tcga-xena-hub.s3.us-east-1.amazonaws.com/download/survival%2FPRAD_survival.txt", destfile = 'surv')
cargar la data
se puede correr sin cambiar nada
si hay problemas, asegurarse estar en el working directory en el cual
acabamos de bajar la data
PRAD_exp <- read.delim("expresion", stringsAsFactors=FALSE)
PRAD_pheno <- read.delim("pheno", stringsAsFactors=FALSE)
PRAD_surv <- read.delim("surv", stringsAsFactors=FALSE)
emprolijar las tablas
se puede correr sin cambiar nada
# expresion ####
# emprolijo expresion
rownames(PRAD_exp)=PRAD_exp$sample
PRAD_exp=PRAD_exp[,-1]
# le cambio los nombres de las muestras, para que tenga mas sentido con como aparecen los nombres en otras tablas
nuevos.nombres=gsub(x = colnames(PRAD_exp), pattern = '\\.', replacement = '-')
colnames(PRAD_exp)=nuevos.nombres
# phenotipe ####
# emprolijo feno
rownames(PRAD_pheno)=PRAD_pheno$sampleID
# survival ####
# me fijo si los nombres de surv y los nom,bres de pheno coinciden
# all(PRAD_pheno$sampleID == PRAD_surv$sample)
# PRAD_pheno$sampleID == PRAD_surv$sample
#
# all(PRAD_pheno$sampleID%in%PRAD_surv$sample)
# son las muestas muestras, solo que en otro orden!
# emprolijo
colnames(PRAD_surv)[1]='sampleID'
rownames(PRAD_surv)=PRAD_surv$sampleID
unir tablas y quedarme solo con la data que me interesa
esto requiere algun cambio en las zonas marcadas en el codigo
en el script hay que elegir los genes especificos que se quieran
estudiar/conservar, y las variables que se queiran
estudiar/conservar
# unifico pheno y survival
PRAD_feno = merge(PRAD_pheno, PRAD_surv)
# indico los genes que me interesa estudiar
genes.interes = c('ACE2', 'NDRG1', 'APOE', 'ACAT1') # ACA REQUIERE CAMBIO
# hago el subset
ss.prad.exp = t(PRAD_exp[genes.interes,])
# hago la union
tabla = merge(PRAD_feno, ss.prad.exp, by.x=1, by.y=0,all=T)
library(dplyr)
# bonus: hay una muestra qeu tiene expresion toda "NA", se puede filtrar asi:
tabla=tabla %>% filter(if_all(genes.interes, ~ !is.na(.x)))
# veo cuales con las variables que tengo disponible
colnames(tabla) # ESTO ES PARA MIRAR CON QUE VARIABLES ME QUIERO QUEDAR
# aca un ejemplo de como filtrar por filas y columnas, en este caso selecciono solo los tumores (filas) y las columnas que tienen data de survival y los genes que me interesan
tabla = tabla %>%
filter(sample_type == "Primary Tumor") %>% # Keep only 'Primary Tumor'
select(sampleID, all_of(genes.interes), all_of(colnames(tabla)[106:113])) # ACA REQUEIRE CAMBIO, SI ES QU QUIERO OTRAS COLUMNAS
LS0tDQp0aXRsZTogIkRlc2NhcmdhIGxhIGRhdGEgZGUgVENHQTogZXhwcmVzaW9uICsgZmVubyArIHN1cnZpdmFsIg0KYXV0aG9yOiAiSnVhbiBCLiINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCmVzdGEgZXMgdW5hIGZvcm1hIGJhc2ljYSwgZGUgYmFqYXIgbGEgZGF0YSBkZSBUQ0dBIHkgZ2VuZXJhciB1bmEgdGFibGEgdW5pY2EgY29uIGxhIGV4cHJlc2lvbiBkZSBsb3MgZ2VuZXMgcXVlIGludGVyZXNhbiwgeSBsYSBkYXRhIGZlbm90aXBpY2EgKGVqOiB0aXBvIGRlIG11ZXN0cmEsIHN1cnZpdmFsKSANCg0KIyMgZGVzY2FyZ2FyIGxvcyBzZXRzIGRlIGRhdG9zDQojIyMgc2UgcHVlZGUgY29ycmVyIHNpbiBjYW1iaWFyIG5hZGENCg0KYGBge3IgZGVzY2FyZ2FyLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KIyB4cHJlc2lvbg0KZG93bmxvYWQuZmlsZSgiaHR0cHM6Ly90Y2dhLXhlbmEtaHViLnMzLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tL2Rvd25sb2FkL1RDR0EuUFJBRC5zYW1wbGVNYXAlMkZIaVNlcVYyLmd6IiwgZGVzdGZpbGUgPSAnZXhwcmVzaW9uJykNCiMgZmVub3RpcG8NCmRvd25sb2FkLmZpbGUoImh0dHBzOi8vdGNnYS14ZW5hLWh1Yi5zMy51cy1lYXN0LTEuYW1hem9uYXdzLmNvbS9kb3dubG9hZC9UQ0dBLlBSQUQuc2FtcGxlTWFwJTJGUFJBRF9jbGluaWNhbE1hdHJpeCIsIGRlc3RmaWxlID0gJ3BoZW5vJykNCiMgc3Vydml2YWwgDQpkb3dubG9hZC5maWxlKCJodHRwczovL3RjZ2EteGVuYS1odWIuczMudXMtZWFzdC0xLmFtYXpvbmF3cy5jb20vZG93bmxvYWQvc3Vydml2YWwlMkZQUkFEX3N1cnZpdmFsLnR4dCIsIGRlc3RmaWxlID0gJ3N1cnYnKQ0KDQpgYGANCg0KDQojIyBjYXJnYXIgbGEgZGF0YQ0KIyMjIHNlIHB1ZWRlIGNvcnJlciBzaW4gY2FtYmlhciBuYWRhDQpzaSBoYXkgcHJvYmxlbWFzLCBhc2VndXJhcnNlIGVzdGFyIGVuIGVsIHdvcmtpbmcgZGlyZWN0b3J5IGVuIGVsIGN1YWwgYWNhYmFtb3MgZGUgYmFqYXIgbGEgZGF0YQ0KYGBge3J9DQpQUkFEX2V4cCA8LSByZWFkLmRlbGltKCJleHByZXNpb24iLCBzdHJpbmdzQXNGYWN0b3JzPUZBTFNFKQ0KUFJBRF9waGVubyA8LSByZWFkLmRlbGltKCJwaGVubyIsIHN0cmluZ3NBc0ZhY3RvcnM9RkFMU0UpDQpQUkFEX3N1cnYgPC0gcmVhZC5kZWxpbSgic3VydiIsIHN0cmluZ3NBc0ZhY3RvcnM9RkFMU0UpDQoNCmBgYA0KDQoNCg0KIyMgZW1wcm9saWphciBsYXMgdGFibGFzDQojIyMgc2UgcHVlZGUgY29ycmVyIHNpbiBjYW1iaWFyIG5hZGENCg0KDQpgYGB7cn0NCg0KIyBleHByZXNpb24gIyMjIw0KIyBlbXByb2xpam8gZXhwcmVzaW9uDQpyb3duYW1lcyhQUkFEX2V4cCk9UFJBRF9leHAkc2FtcGxlDQpQUkFEX2V4cD1QUkFEX2V4cFssLTFdDQoNCiMgbGUgY2FtYmlvIGxvcyBub21icmVzIGRlIGxhcyBtdWVzdHJhcywgcGFyYSBxdWUgdGVuZ2EgbWFzIHNlbnRpZG8gY29uIGNvbW8gYXBhcmVjZW4gbG9zIG5vbWJyZXMgZW4gb3RyYXMgdGFibGFzDQpudWV2b3Mubm9tYnJlcz1nc3ViKHggPSBjb2xuYW1lcyhQUkFEX2V4cCksIHBhdHRlcm4gPSAnXFwuJywgcmVwbGFjZW1lbnQgPSAnLScpDQpjb2xuYW1lcyhQUkFEX2V4cCk9bnVldm9zLm5vbWJyZXMgICAgIA0KDQojIHBoZW5vdGlwZSAjIyMjDQojIGVtcHJvbGlqbyBmZW5vDQpyb3duYW1lcyhQUkFEX3BoZW5vKT1QUkFEX3BoZW5vJHNhbXBsZUlEDQoNCiMgc3Vydml2YWwgIyMjIw0KIyBtZSBmaWpvIHNpIGxvcyBub21icmVzIGRlIHN1cnYgeSBsb3Mgbm9tLGJyZXMgZGUgcGhlbm8gY29pbmNpZGVuDQoNCiMgYWxsKFBSQURfcGhlbm8kc2FtcGxlSUQgPT0gUFJBRF9zdXJ2JHNhbXBsZSkNCiMgUFJBRF9waGVubyRzYW1wbGVJRCA9PSBQUkFEX3N1cnYkc2FtcGxlDQojIA0KIyBhbGwoUFJBRF9waGVubyRzYW1wbGVJRCVpbiVQUkFEX3N1cnYkc2FtcGxlKSANCg0KIyBzb24gbGFzIG11ZXN0YXMgbXVlc3RyYXMsIHNvbG8gcXVlIGVuIG90cm8gb3JkZW4hDQoNCiMgZW1wcm9saWpvDQpjb2xuYW1lcyhQUkFEX3N1cnYpWzFdPSdzYW1wbGVJRCcNCnJvd25hbWVzKFBSQURfc3Vydik9UFJBRF9zdXJ2JHNhbXBsZUlEDQpgYGANCg0KIyMgdW5pciB0YWJsYXMgeSBxdWVkYXJtZSBzb2xvIGNvbiBsYSBkYXRhIHF1ZSBtZSBpbnRlcmVzYQ0KIyMjIGVzdG8gcmVxdWllcmUgYWxndW4gY2FtYmlvIGVuIGxhcyB6b25hcyBtYXJjYWRhcyBlbiBlbCBjb2RpZ28NCg0KZW4gZWwgc2NyaXB0IGhheSBxdWUgZWxlZ2lyIGxvcyBnZW5lcyBlc3BlY2lmaWNvcyBxdWUgc2UgcXVpZXJhbiBlc3R1ZGlhci9jb25zZXJ2YXIsIHkgbGFzIHZhcmlhYmxlcyBxdWUgc2UgcXVlaXJhbiBlc3R1ZGlhci9jb25zZXJ2YXINCg0KYGBge3J9DQoNCiMgdW5pZmljbyBwaGVubyB5IHN1cnZpdmFsDQpQUkFEX2Zlbm8gPSBtZXJnZShQUkFEX3BoZW5vLCBQUkFEX3N1cnYpDQoNCiMgaW5kaWNvIGxvcyBnZW5lcyBxdWUgbWUgaW50ZXJlc2EgZXN0dWRpYXINCmdlbmVzLmludGVyZXMgPSBjKCdBQ0UyJywgJ05EUkcxJywgJ0FQT0UnLCAnQUNBVDEnKSAjIEFDQSBSRVFVSUVSRSBDQU1CSU8NCg0KDQojIGhhZ28gZWwgc3Vic2V0DQpzcy5wcmFkLmV4cCA9IHQoUFJBRF9leHBbZ2VuZXMuaW50ZXJlcyxdKQ0KDQojIGhhZ28gbGEgdW5pb24NCnRhYmxhID0gbWVyZ2UoUFJBRF9mZW5vLCBzcy5wcmFkLmV4cCwgYnkueD0xLCBieS55PTAsYWxsPVQpDQoNCg0KDQpsaWJyYXJ5KGRwbHlyKQ0KDQojIGJvbnVzOiBoYXkgdW5hIG11ZXN0cmEgcWV1IHRpZW5lIGV4cHJlc2lvbiB0b2RhICJOQSIsIHNlIHB1ZWRlIGZpbHRyYXIgYXNpOg0KdGFibGE9dGFibGEgJT4lIGZpbHRlcihpZl9hbGwoZ2VuZXMuaW50ZXJlcywgfiAhaXMubmEoLngpKSkNCg0KIyB2ZW8gY3VhbGVzIGNvbiBsYXMgdmFyaWFibGVzIHF1ZSB0ZW5nbyBkaXNwb25pYmxlDQpjb2xuYW1lcyh0YWJsYSkgIyBFU1RPIEVTIFBBUkEgTUlSQVIgQ09OIFFVRSBWQVJJQUJMRVMgTUUgUVVJRVJPIFFVRURBUg0KDQojIGFjYSB1biBlamVtcGxvIGRlIGNvbW8gZmlsdHJhciBwb3IgZmlsYXMgeSBjb2x1bW5hcywgZW4gZXN0ZSBjYXNvIHNlbGVjY2lvbm8gc29sbyBsb3MgdHVtb3JlcyAoZmlsYXMpIHkgbGFzIGNvbHVtbmFzIHF1ZSB0aWVuZW4gZGF0YSBkZSBzdXJ2aXZhbCB5IGxvcyBnZW5lcyBxdWUgbWUgaW50ZXJlc2FuDQp0YWJsYSA9IHRhYmxhICU+JSANCiAgZmlsdGVyKHNhbXBsZV90eXBlID09ICJQcmltYXJ5IFR1bW9yIikgJT4lICAjIEtlZXAgb25seSAnUHJpbWFyeSBUdW1vcicNCiAgc2VsZWN0KHNhbXBsZUlELCBhbGxfb2YoZ2VuZXMuaW50ZXJlcyksIGFsbF9vZihjb2xuYW1lcyh0YWJsYSlbMTA2OjExM10pKSAjIEFDQSBSRVFVRUlSRSBDQU1CSU8sIFNJIEVTIFFVIFFVSUVSTyBPVFJBUyBDT0xVTU5BUw0KDQoNCg0KYGBgDQoNCg0K