matlab DNA barcoding
Publicado por Javier Rodriguez Perez (1 intervención) el 17/07/2015 20:56:59
hola a todos, no se si han oido hablar de la tecnica bardcoding para diferenciar especies entre otras utilidades, estoy intentando crear un programa con este fin, (si alguen conoce algun toolbox o algo de eso me vendria genial), es un programa largo y complejo y aun voy por el principio, el caso es que me he atrancado intentando meter los resultados de un bucle en una matriz voy a intentar explicrme:
en primer lugar hay que leer un vector cadena que se trata del genoma de alguna especie, (el genoma entero ya q son bacterias con poca cantidad de adn) y nos dice las veces q se repite una frase concreta de por ejemplo 3 nucleotidos
par ello primero he calculado cuantas frase diferentes la longitud K se pueden hacer con los 4 nucleotidos:
base=['a' 'c' 't' 'g'];
a=char(zeros(k, 4^k));
for k2=1:k
k1=1:4^k;
a(k2,:)=base(fix(mod(k1-1,4^k2)/4^(k2-1))+1);
end
puede invocar como a(:,i). O dicho de otra forma, todas las "palabras" posibles de tamaño k se pueden listar/recorrer con el bucle:
for i=1:4^k
a(:,i)
end;
bien pues ahora se mete la cadena problema (cad) y:
M=[]
for i=1:length(a) % recorre la cadena matriz de las combinaciones posibles
b=a(:,i)' % pasa las columnas (diff palabras) a fila para que las pueda leer strfind que lee filas
strfind(cad,b) % compara las filas de las diff combinaciones con las palabras de K
s= length (strfind(cad,b))
M=s % aqui quiero hacer la matriz donde se recogen las salidas d s en una columna los primeros mil nucleotidos
end
gracias de antemano, no se si me he explicado bien saludos
en primer lugar hay que leer un vector cadena que se trata del genoma de alguna especie, (el genoma entero ya q son bacterias con poca cantidad de adn) y nos dice las veces q se repite una frase concreta de por ejemplo 3 nucleotidos
par ello primero he calculado cuantas frase diferentes la longitud K se pueden hacer con los 4 nucleotidos:
base=['a' 'c' 't' 'g'];
a=char(zeros(k, 4^k));
for k2=1:k
k1=1:4^k;
a(k2,:)=base(fix(mod(k1-1,4^k2)/4^(k2-1))+1);
end
puede invocar como a(:,i). O dicho de otra forma, todas las "palabras" posibles de tamaño k se pueden listar/recorrer con el bucle:
for i=1:4^k
a(:,i)
end;
bien pues ahora se mete la cadena problema (cad) y:
M=[]
for i=1:length(a) % recorre la cadena matriz de las combinaciones posibles
b=a(:,i)' % pasa las columnas (diff palabras) a fila para que las pueda leer strfind que lee filas
strfind(cad,b) % compara las filas de las diff combinaciones con las palabras de K
s= length (strfind(cad,b))
M=s % aqui quiero hacer la matriz donde se recogen las salidas d s en una columna los primeros mil nucleotidos
end
gracias de antemano, no se si me he explicado bien saludos
Valora esta pregunta


0