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.

Encuentra modelos de un solo exón que formen parte de un gen de múltiples exones.

Tengo conjuntos de modelos que incluyen modelos de un solo exón y modelos de múltiples exones (.psl). Tengo que encontrar modelos de un solo exón que formen parte de modelos de múltiples exones.

¿Cómo escribir un código para comparar sstart y send de modelos?

Resultado esperado (data frame):

Modelo_multiple Modelos_individuales
m_qseqid_1 s_qseqid_1, s_qseqid_2 …
m_qseqid_2 s_qseqid_3
m_qseqid_3 s_qseqid_4, s_qseqid_5 …

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para encontrar los modelos de un solo exón que forman parte de modelos de múltiples exones, necesitamos comparar las posiciones de “sstart” y “send” de los modelos. Podemos hacer esto primero creando marcos de datos separados para modelos de un solo exón y modelos de múltiples exones. Luego, emparejaremos las posiciones de “sstart” y “send” de los modelos de un solo exón con las de los modelos de múltiples exones para identificar los modelos de un solo exón que forman parte de modelos de múltiples exones.

    Suponiendo que los datos se almacenan en un marco de datos llamado ‘a’, podemos escribir el siguiente código en R:

    “` {r}

    crear marcos de datos separados para modelos de un solo exón y modelos de múltiples exones

    mult_models <- subset(a, a$number_of_exons > 1)
    sing_models <- subset(a, a$number_of_exons == 1)

    crear un marco de datos vacío para almacenar la salida

    output_df <- data.frame(Mult_model = character(),
    Sing_models = character(),
    stringsAsFactors = FALSE)

    recorrer los modelos de múltiples exones

    for (i in 1:nrow(mult_models)) {
    # emparejar las posiciones de “sstart” y “send” de los modelos de un solo exón con las del modelo de múltiples exones
    matching_sing_models <- subset(sing_models, sing_models$qseqid == mult_models$qseqid[i] & sing_models$sstart >= mult_models$sstart[i] &
    sing_models$send <= mult_models$send[i])

    # si hay modelos de un solo exón que coinciden, agréguelos al marco de datos de salida
    if (nrow(matching_sing_models) > 0) {
    sing_model_names <- paste0(“s_”, matching_sing_models$qseqid)
    output_df <- rbind(output_df, data.frame(Mult_model = mult_models$qseqid[i],
    Sing_models = paste(sing_model_names, collapse = “,”),
    stringsAsFactors = FALSE))
    }
    }

    mostrar el marco de datos de salida

    output_df
    “`

    Este código debería producir un marco de datos con dos columnas: ‘Mult_model’ y ‘Sing_models’. La columna ‘Mult_model’ contendrá los nombres de los modelos de múltiples exones, mientras que la columna ‘Sing_models’ contendrá una lista separada por comas de los nombres de los modelos de un solo exón que forman parte del modelo de múltiples exones correspondiente.

Comments are closed.