Script de Python para ejecutar desde PyMol que muestra el valor de B-factor de cada carbono alfa de un objeto (proteína) y colorea acorde a este valor.

Puedes copiar el código que hay justo debajo en un archivo de texto plano (notepad por ejemplo) y guardarlo como etiquetando_CA_b_factor.py. Después de cargar cualquier objeto en PyMOL, escribe en la consola de PyMOL: etiquetar_b_factors objeto (sustituye objeto por el nombre de cualquiera de los objetos que tengas creados en tu escena de PyMol, siempre que se trate de proteínas). Te va a generar una escena como la que ves justo debajo del código, en este caso he cargado el PDB 8SKL.

# Ejemplo de uso:
# Después de cargar el objeto en PyMOL, escribe en la consola de PyMOL:
# etiquetar_b_factors objeto1

from pymol import cmd

def etiquetar_b_factors(objeto):
    # Eliminar moléculas de agua
    cmd.remove(f"{objeto} and resn HOH")
    
    # Cambiar el fondo a blanco
    cmd.bg_color("white")
    
    # Obtener la lista de átomos del objeto
    atomos = cmd.get_model(objeto).atom
    
    # Filtrar los carbonos alfa y obtener sus B-factors
    b_factors = [atomo.b for atomo in atomos if atomo.name == 'CA']
    
    # Calcular el B-factor mínimo y máximo
    min_b_factor = min(b_factors)
    max_b_factor = max(b_factors)
    
    # Crear la rampa de color
    cmd.ramp_new('color_bar', objeto, [min_b_factor, max_b_factor], 'rainbow')
    
    # Colorear el objeto según el B-factor
    cmd.spectrum("b", selection=objeto, quiet=0)
    
    # Añadir etiquetas con los B-factors
    for atomo in atomos:
        if atomo.name == 'CA':
            # Crear la etiqueta con el B-factor
            etiqueta = f"{atomo.b:.2f}"
            # Posicionar la etiqueta en la escena
            cmd.label(f"{objeto} and chain {atomo.chain} and resi {atomo.resi} and name CA", f'"{etiqueta}"')
            print(f"Residuo: {atomo.resn}{atomo.resi}, Cadena: {atomo.chain}, B-factor: {etiqueta}")

    print(f"Rampa de color creada con min B-factor: {min_b_factor} y max B-factor: {max_b_factor}")

# Ejecutar la función
cmd.extend("etiquetar_b_factors", etiquetar_b_factors)





Última modificación: