jmbm

Fig_13

Oct 10th, 2022 (edited)
262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
R 1.74 KB | None | 0 0
  1. pdf("fig_13.pdf", width = 5, height = 5)
  2. par(bty = "n", las = 0, mar = c(4, 4, 1, 1) + 0.2)
  3.  
  4. # función suma armónicos
  5. sum_arm <- function(n) {
  6.   a <- numeric(n)
  7.   for (i in 1:n) {
  8.     for (j in 1:i) {
  9.       a[j] <- a[j] + 1/i
  10.     }
  11.   }
  12.   a/n
  13. }
  14.  
  15. # la secuencia de un archivo txt
  16. sec <- readChar("secuencia.txt", file.info("secuencia.txt")$size)
  17.  
  18. # posiciones de las metioninas
  19. mets <- unlist(gregexpr("M", sec))
  20. # distancias entre ellas
  21. n <- length(mets) - 1
  22. distancias <- numeric(n)
  23. for (i in 1:n) {
  24.   distancias[i] <- mets[i + 1] - mets[i]
  25. }
  26. # ordenar de mayor a menor distancia
  27. distancias <- sort(distancias, decreasing = TRUE)
  28. longitud <- sum(distancias)
  29.  
  30. # primero calculamos 'd' observada en la proteína
  31. d <- sum(abs(distancias - longitud * sum_arm(n)))
  32.  
  33. # ahora construimos la distribución de probabilidad
  34. repetir <- 10000
  35. dS <- numeric(repetir)
  36. distanciaa <- numeric(n)
  37. for (j in 1:repetir) {
  38.   p_azar <- nchar(sec) * runif(n + 1)  # elegir los puntos de corte al azar
  39.   p_azar <- sort(p_azar)  # ordenar los cortes
  40.   for (i in 1:n) {
  41.     distanciaa[i] <- p_azar[i + 1] - p_azar[i]
  42.   }
  43.   distanciaa <- sort(distanciaa, decreasing = TRUE)
  44.   longitua <- sum(distanciaa)
  45.   dS[j] <- sum(abs(distanciaa - longitua * sum_arm(n)))
  46. }
  47.  
  48. # calculamos donde cae el valor observado 'd'
  49. probd <- sum(dS <= d)/repetir
  50.  
  51. # dibujamos el histograma
  52. hist(dS, freq = FALSE, main = "", border = "lightgrey", xlab = expression("Valor " ~ italic(d)), ylab = "Densidad de probabilidad")
  53. # vemos dónde quedan los límites de confianza clásicos
  54. limites <- quantile(dS, probs = c(0.05, 0.95))
  55. abline(v = limites, col = "red", lty = 2)
  56. # y dibujamos el valor observado 'd' en la proteína
  57. abline(v = d, col = "darkgreen", lwd = 2)
  58.  
  59. dev.off()
Advertisement
Add Comment
Please, Sign In to add comment