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")