Ti comincio a riportare un piccolo script R che genera peptidi casuali. Se non conosci R o non capisci il codice fai pure un fischio!
# Lista degli aminoacidi proteogenici
aminoacids <- list(
# Nome a una lettera
name = c("A", "C", "D", "E", "F",
"G", "H", "I", "K", "L",
"M", "N", "P", "Q", "R",
"S", "T", "V", "W", "Y"),
# Nome a tre lettere (giusto per referenza!)
name.3 = c("Ala", "Cys", "Asp", "Glu", "Phe",
"Gly", "His", "Ile", "Lys", "Leu",
"Met", "Asn", "Pro", "Gln", "Arg",
"Ser", "Thr", "Val", "Trp", "Tyr"),
# peso molecolare
weight = c(89.09404, 121.15404, 133.10384,
147.13074, 165.19184, 75.06714,
155.15634, 131.17464, 146.18934,
131.17464, 149.20784, 132.11904,
115.13194, 146.14594, 174.20274,
105.09344, 119.12034, 117.14784,
204.22844, 181.19124)
)
# Funzione che restituisce una sequenza peptidica random
# Parametri
# len: la lunghezza della sequenza
getPeptide <- function(len)
{
if (len < 1)
stop("La lunghezza del peptide deve essere > 0")
# Scegliamo len aminoacidi a caso
peptide <- sample(aminoacids$name, len, replace=TRUE)
# Restituiamo la sequenza
return(peptide)
}
# Funzione che calcola il peso di un peptide
getWeight <- function(peptide)
{
# Troviamo a che aminoacido corrisponde ciascun elemento
# del peptide
tmp <- sapply(peptide, function(x){which(aminoacids$name == x)})
# Sommiamo i pesi
weight <- sum(aminoacids$weight[as.integer(tmp)])
# Eliminiamo il peso di una molecola di H2O per
# ogni legame peptidico
weight <- weight - 18 * (length(peptide)-1)
return(weight)
}
Una volta dichiarate le funzioni possiamo chiamarle.
Ad es. vogliamo generare un peptide di 20 aminoacidi:
p <- getPeptide(20)
w <- getWeight(p)
# Scriviamo l'output
# Usiamo paste solo per estetica: ci restituisce una stringa
# unica piuttosto che un vettore
print(paste(p, collapse=""))
[1] "DRMLSTELGHLVFEPNQVFK"
print(w)
[1] 2361.003
Per la composizione simile a quella delle proteine naturali penso che la cosa più semplice sia generare una lista di proteine abbondanti nelle cellule di interesse e fare una statistica della loro composizione. Ora non ho tempo, ma la cosa non dovrebbe essere molto complessa.