Se me asignó un problema para encontrar genes cuando recibía una serie de letras A, C, G o T, todas seguidas, como ATGCTCTCTTGATTTTTTTATGTGTAGCCATGCACACACACACATAAGA. Un gen se inicia con ATG y termina con TAA, TAG o TGA (el gen excluye ambos extremos). El gen consta de trillizos de letras, por lo que su longitud es un múltiplo de tres, y ninguno de esos trillizos puede ser los trillizos de inicio/final enumerados anteriormente. Entonces, para la cadena de arriba, los genes que contiene son CTCTCT y CACACACACACA. Y, de hecho, mi expresión regular funciona para esa cadena en particular. Esto es lo que tengo hasta ahora (y estoy bastante contento con mi mismo que llegué hasta aquí):Java Regex para el rompecabezas del genoma
(?<=ATG)(([ACGT]{3}(?<!ATG))+?)(?=TAG|TAA|TGA)
Sin embargo, si hay un ATG y uso final del triplete dentro de otro resultado, y no alineada con los trillizos de ese resultado, falla. Por ejemplo:
Results for TCGAATGTTGCTTATTGTTTTGAATGGGGTAGGATGACCTGCTAATTGGGGGGGGGG :
TTGCTTATTGTTTTGAATGGGGTAGGA
ACCTGC
Se debe encontrar también una GGG pero no lo hace: TTGCTTATTGTTTTGA (ATG | GGG | TAG) GA
Soy nuevo en regex en general y un poco atascado ... sólo una pequeña sugerencia sería increíble!
¿Qué debe pasar a 'ATGATGTAG'? Coincide o no coincide? –
+1 - No tengo tiempo para pensar en esto ahora, y no sé si este es un uso apropiado de regex, pero me encanta el hecho de que lo estás aplicando a un problema interesante en biología. Lindas cosas. – duffymo
'ATGATGTAG' no coincidiría porque ATG no puede ser uno de los trillizos incluidos. – Swordbeard