es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo consultar un objeto GRanges en un objeto que se pueda consultar nuevamente?

“Cargué un objeto TxDb creado a partir de Gencode y lo consulté para obtener los exones, luego utilicé lapply para obtener todos los ÚLTIMOS exones de cada transcripción que tiene más de 1 exón:

#Cargar la base de datos:
Gencode <- loadDb(‘gencode.v39.basic.annotation.sqlite’)

#Exones por transcripción
Exones <- exonsBy(Gencode, by = ‘tx’, use.names=TRUE)

#Obtener el número de exones
ExonCount <- as.data.frame(elementNROWS(Exones))

#Obtener el último exón de cada transcripción
lapply(1:nrow(ExonCount), function(x) Exones[[x]][ExonCount$’elementNROWS(Exones)'[x]])

“A continuación, quiero realizar acciones en estos rangos. Como shift() o cualquier otra cosa. Sin embargo, obtengo una advertencia:

Error in (function (classes, fdef, mtable) :
no se puede encontrar un método heredado para la función ‘resize’ para la firma ‘list’

Mi pregunta es, ¿cómo puedo devolver este objeto a un formato que pueda manipular con las funciones de GRanges?

“O alternativamente, ¿cómo puedo obtener el último exón de cada transcripción de una manera que evite este problema?”

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para obtener el objeto nuevamente en un formato que pueda ser manipulado con las funciones de GRanges, puedes utilizar la función unlist() en el resultado de la llamada a lapply(), y luego utilizar el constructor GRanges() para crear un nuevo objeto GRanges:

    lastExons <- unlist(lapply(1:nrow(ExonCount), function(x) Exons[[x]][ExonCount$`elementNROWS(Exons)`[x]]))
    lastExonsGR <- GRanges(lastExons)
    

    Alternativamente, puedes utilizar la función transcripts() para obtener los objetos Transcript del objeto TxDb, y luego utilizar la función last() para obtener el último exón de cada transcrito:

    txs <- transcripts(Gencode, columns=c("gene_id", "transcript_id", "tx_start", "tx_end"), use.names=TRUE)
    lastExons <- last(exonsBy(txs, use.names=TRUE))
    

Comments are closed.