1.-Escribe una función que genere una secuencia aleatoria de DNA de tamaño “n” utilizando solo los 4 nucleótidos: A, T, C, G
generar_DNA <- function(n) {
nucleotidos <- c("A", "T", "C", "G")
secuencia <- sample(nucleotidos, n, replace = TRUE)
return(paste(secuencia, collapse = ""))
}
generar_DNA(10)
## [1] "ACGTGGGAGT"
2.-Codifica una función que calcula el tamaño de una secuencia de DNA
tamano_DNA <- function(secuencia) {
return(nchar(secuencia))
}
tamano_DNA("CTGGTTA")
## [1] 7
3.-Crea una función que recibe una secuencia de DNA e imprime el porcentaje de cada base en la secuencia
porcentaje_bases <- function(secuencia) {
total_bases <- nchar(secuencia)
num_a <- nchar(gsub("[^A]", "", secuencia))
num_c <- nchar(gsub("[^C]", "", secuencia))
num_g <- nchar(gsub("[^G]", "", secuencia))
num_t <- nchar(gsub("[^T]", "", secuencia))
porcentaje_a <- num_a / total_bases * 100
porcentaje_c <- num_c / total_bases * 100
porcentaje_g <- num_g / total_bases * 100
porcentaje_t <- num_t / total_bases * 100
cat("Porcentaje de A:", porcentaje_a, "%\n")
cat("Porcentaje de C:", porcentaje_c, "%\n")
cat("Porcentaje de G:", porcentaje_g, "%\n")
cat("Porcentaje de T:", porcentaje_t, "%\n")
}
porcentaje_bases("ATCGATCGATCG")
## Porcentaje de A: 25 %
## Porcentaje de C: 25 %
## Porcentaje de G: 25 %
## Porcentaje de T: 25 %
4.-Programa una función que transcribe DNA a RNA, asume que te están proporcionando la cadena codificante
transcribir_a_RNA <- function(secuencia_DNA) {
secuencia_RNA <- gsub("T", "U", secuencia_DNA)
return(secuencia_RNA)
}
transcribir_a_RNA("ATGCTAGCGTAA")
## [1] "AUGCUAGCGUAA"
5.-Crea una función que traduce una secuencia de RNA a una secuencia de proteínas
sec_p <- function(rna){
if((rna=="UUU") |(rna == "UUC")) {
prot <- "Phe"
} else if ((rna == "UUA") |(rna == "UUG")) {
prot <- "Leu"
} else if ((rna == "UCU") | (rna == "UCC") | (rna == "UCA") | (rna == "UCG")) {
prot <- "Ser"
} else if ((rna == "UAU") | (rna == "UAC")) {
prot <- "Tyr"
} else if ((rna == "UGU") | (rna == "UGC")) {
prot <- "Cys"
} else if ((rna == "UGG")) {
prot <- "Trp"
} else if ((rna == "CUU") | (rna == "CUC") | (rna == "CUA") | (rna == "CUG")) {
prot <- "Leu"
} else if ((rna == "CCU") | (rna == "CCC") | (rna == "CCA") | (rna == "CCG")) {
prot <- "Pro"
} else if ((rna == "CAU") | (rna == "CAC")) {
prot <- "His"
} else if ((rna == "CAA") | (rna == "CAG")) {
prot <- "Gin"
} else if ((rna == "CGU") | (rna == "CGC") | (rna == "CGA") | (rna == "CGG")) {
prot <- "Arg"
} else if ((rna == "AUU") | (rna == "AUC") | (rna == "AUA")) {
prot <- "Ile"
} else if ((rna == "AUG")) {
prot <- "Met"
} else if ((rna == "ACU") | (rna == "ACC") | (rna == "ACA") | (rna == "ACG")) {
prot <- "Thr"
} else if ((rna == "AAU") | (rna == "AAC")) {
prot <- "Asn"
} else if ((rna == "AAA") | (rna == "AAG")) {
prot <- "Lys"
} else if ((rna == "AGU") | (rna == "AGC")) {
prot <- "Ser"
} else if ((rna == "AGA") | (rna == "AGG")) {
prot <- "Arg"
} else if ((rna == "GUU") | (rna == "GUC") | (rna == "GUA") | (rna == "GUG")) {
prot <- "Val"
} else if ((rna == "GCU") | (rna == "GCC") | (rna == "GCA") | (rna == "GCG")) {
prot <- "Ala"
} else if ((rna == "GAU") | (rna == "GAC")) {
prot <- "Asp"
} else if ((rna == "GAA") | (rna == "GAG")){
prot <- "Glu"
} else if ((rna == "GGU") | (rna == "GGC") | (rna == "GGA") | (rna == "GGG")) {
prot <- "Gly"
} else if ((rna == "UAA") | (rna == "UAG") | (rna == "UGA")) {
prot <- "Stop"
}
prot
}
sec_p("AGC")
## [1] "Ser"
6.-Escribe una función que recibe una hebra directa y regresa la hebra inversa
invertir_hebra <- function(hebra_directa) {
invertida <- rev(strsplit(hebra_directa, "")[[1]])
return(paste(invertida, collapse = ""))
}
hebra_directa <- "5'-TGCGATAC-3'"
invertir_hebra(hebra_directa)
## [1] "'3-CATAGCGT-'5"
7.-Escribe una función qué recibe una hebra directa y obtiene la hebra complementaria.
obtener_complementaria <- function(hebra_directa) {
complementaria <- ""
for (i in 1:nchar(hebra_directa)) {
nucleotido <- substr(hebra_directa, i, i)
if (nucleotido == "A") {
complementaria <- paste0(complementaria, "T")
} else if (nucleotido == "T") {
complementaria <- paste0(complementaria, "A")
} else if (nucleotido == "C") {
complementaria <- paste0(complementaria, "G")
} else if (nucleotido == "G") {
complementaria <- paste0(complementaria, "C")
}
else if (nucleotido == "5") {
complementaria <- paste0(complementaria, "3")
}
else if (nucleotido == "3") {
complementaria <- paste0(complementaria, "5")
}
else if (nucleotido == "'") {
complementaria <- paste0(complementaria, "'")
}
else if (nucleotido == "'") {
complementaria <- paste0(complementaria, "'")
}
else if (nucleotido == "-") {
complementaria <- paste0(complementaria, "-")
}
}
return(complementaria)
}
hebra_directa <- "5'-TGCGATAC-3'"
hebra_complementaria <- obtener_complementaria(hebra_directa)
print(hebra_complementaria)
## [1] "3'-ACGCTATG-5'"
8.-Escribe la función en R para obtener la hebra complementaria inversa, desde una hebra directa
invertir_hebra <- function(hebra_directa) {
invertida <- rev(strsplit(hebra_directa, "")[[1]])
for (i in seq_along(invertida)) {
if (invertida[i] == "A") {
invertida[i] <- "T"
} else if (invertida[i] == "T") {
invertida[i] <- "A"
} else if (invertida[i] == "C") {
invertida[i] <- "G"
} else if (invertida[i] == "G") {
invertida[i] <- "C"
}
}
return(paste(invertida, collapse = ""))
}
hebra_directa <- "5'-TGCGATAC-3'"
hebra_inversa <- invertir_hebra(hebra_directa)
print(hebra_inversa)
## [1] "'3-GTATCGCA-'5"
9.-Modifica dos de las funciones para que tomen en cuenta que las secuencias pueden contener caracteres especiales donde aparte de ATGC, en ADN, y AUGC, en ARN, pueden existir guiones
random_DNA <- function(n) {
bases <- c("A", "T", "C", "G", "-", "N")
dna_seq <- sample(bases, n, replace = TRUE)
paste(dna_seq, collapse = "")
}
random_DNA(10)
## [1] "A-----NCNG"
hebra_directa <- function(secuencia) {
secuencia <- toupper(trimws(secuencia))
if ("U" %in% secuencia) {
secuencia <- gsub("U", "T", secuencia)
}
hebra_directa <- gsub("-", "", secuencia)
hebra_directa <- gsub("N", "", hebra_directa)
return(hebra_directa)
}
secuencia_arn <- "AUGC-UGACN-CGAU"
hebra_directa(secuencia_arn)
## [1] "AUGCUGACCGAU"