Por lo tanto, estoy digiriendo una secuencia de proteína con una enzima (por su curiosidad, Asp-N) que se escinde antes de las proteínas codificadas por B o D en una secuencia codificada de una sola letra. Mi análisis real usa String#scan
para las capturas. Estoy tratando de averiguar por qué la siguiente expresión regular no se digiere correctamente ...Digestión de proteína Regex
(\w*?)(?=[BD])|(.*\b)
donde existe el antecedente (.*\b)
para capturar el final de la secuencia. Para :
MTMDKPSQYDKIEAELQDICNDVLELLDSKGDYFRYLSEVASGDN
Esto debería dar algo como: [MTM, DKPSQY, DKIEAELQ, DICN, DVLELL, DSKG, ... ]
sino que se pierde cada D en la secuencia.
He estado usando http://www.rubular.com para la solución de problemas, que se ejecuta en 1.8.7 aunque también he probado este REGEX en 1.9.2 en vano. Tengo entendido que las aserciones de búsqueda de ancho cero son compatibles con ambas versiones de ruby. ¿Qué estoy haciendo mal con mi expresión regular?
¿Qué método estás usando? 'String # scan',' String # split' u otra cosa? –
+1 Qué gran pregunta. No esperaba los resultados que obtuve, y el análisis posterior me enseñó algo acerca de la forma en que la expresión regular maneja las repetidas coincidencias de ancho cero. – Phrogz
Estoy un poco confundido por su afirmación "que se escinde antes que las proteínas codificadas por B o D". Según entiendo las cosas, ** B ** es el código de una sola letra para ** bien ** D o N (donde no se sabe si el residuo es Asp o Asn). ¿Puede Asp-N escindirse antes de Asn? – tomd