GeneForgeLang / translate_to_geneforgelang.py
ManMenGon's picture
Upload 5 files
a52cd62 verified
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)