Selecciona una secuencia de aminoácidos de una cadena de un objeto en PyMol.
Este script de Python selecciona una secuencia de aminoácidos ["LSTARS"] que nos interese, localizada dentro de un objeto ["AWisconsin672022H1N1_model"] y en una cadena ["C"] de ese objeto. También devuelve en consola el número de los aminoácidos seleccionados.
from pymol import cmd
def select_subsequence(obj_name, chain, subseq, sel_name="subseq_sel"):
# Obtener la secuencia de la cadena
seq = cmd.get_fastastr(f"{obj_name} and chain {chain}")
# Quitar cabecera FASTA y saltos de línea
seq = "".join(seq.splitlines()[1:])
# Buscar subsecuencia
start = seq.find(subseq)
if start == -1:
print(f"⚠️ No se encontró la subsecuencia {subseq} en {obj_name} cadena {chain}")
return
# Calcular posiciones de residuo (FASTA empieza en el residuo real de la estructura)
resi_start = cmd.get_model(f"{obj_name} and chain {chain}").atom[0].resi_number
first_res = resi_start + start
last_res = first_res + len(subseq) - 1
# Crear selección
cmd.select(sel_name, f"{obj_name} and chain {chain} and resi {first_res}-{last_res}")
print(f"✅ Selección '{sel_name}' creada: {obj_name}, cadena {chain}, residuos {first_res}-{last_res}")
# Ejemplo de uso:
# Busca la secuencia LSTARS en la cadena C del objeto AWisconsin672022H1N1_model
select_subsequence("AWisconsin672022H1N1_model", "C", "LSTARS", "sel_LSTARS")
