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