Spaces:
Sleeping
Sleeping
import sys | |
import re | |
# Nuevas reglas de reconocimiento con patrones suaves | |
def traducir_a_geneforge(secuencia): | |
motivos = [] | |
# Dom(Kin): 3 o m谩s K seguidos al principio | |
if re.search(r"^M*K{3,}", secuencia): | |
motivos.append("Dom(Kin)") | |
# Mot(NLS): presencia de varias R o K juntas, t铆pica se帽al nuclear | |
if re.search(r"[RK]{3,}", secuencia): | |
motivos.append("Mot(NLS)") | |
# Mot(PEST): alta densidad de E o D (glut谩mico o asp谩rtico) | |
if len(re.findall(r"E", secuencia)) >= 5 or "DEG" in secuencia: | |
motivos.append("Mot(PEST)") | |
# *AcK@X: presencia de "KQAK" o "QAK" como motivo de acetilaci贸n | |
if re.search(r"KQAK|QAK", secuencia): | |
motivos.append("*AcK@X") | |
# *P@X: motivos de fosforilaci贸n comunes | |
if re.search(r"[RST]P", secuencia): | |
motivos.append("*P@X") | |
# Localize(Nucleus): presencia de PRKRK, PKKKRKV | |
if "PRKRK" in secuencia or "PKKKRKV" in secuencia: | |
motivos.append("Localize(Nucleus)") | |
# Localize(Membrane): patrones hidrof贸bicos como AILFL o LAGGAV | |
if re.search(r"(AILFL|LAGGAV|LVLL|AAVL)", secuencia): | |
motivos.append("Localize(Membrane)") | |
if not motivos: | |
return "// No se encontraron motivos reconocibles" | |
return "^p:" + "-".join(sorted(set(motivos))) | |
if __name__ == "__main__": | |
if len(sys.argv) < 2: | |
print("Uso: python traducir_a_geneforgelang_v2.py <secuencia_proteina>") | |
sys.exit(1) | |
secuencia = sys.argv[1].upper() | |
resultado = traducir_a_geneforge(secuencia) | |
print("馃攳 GeneForgeLang:") | |
print(resultado) |