Biblioteca con scripts sencillos de Python

Script de Python para dibujar una caja cuboide entorno a un objeto excediendo 3 Ångströms sus dimensiones.

Este script permite crear una caja cuboide sobre un objeto ("obj01" en nuestro ejemplo) previamente selecionado en una escena de PyMol. Se pueden modificar el tañano de expansión de la caja, colores, etc.


from pymol import cmd

def create_expanded_cuboid_around_object(obj_name, expansion_size, label_color="white"):
    # Obtén los límites del objeto
    min_corner, max_corner = cmd.get_extent(obj_name)
    
    # Calcula el centro geométrico
    center = [(min_corner[i] + max_corner[i]) / 2 for i in range(3)]
    
    # Calcula las dimensiones actuales del objeto
    dimensions = [max_corner[i] - min_corner[i] for i in range(3)]
    
    # Aumenta cada dimensión en el tamaño de expansión
    expanded_dimensions = [dim + expansion_size for dim in dimensions]
    
    # Calcula las coordenadas de los vértices de la caja expandida
    half_extent = [dim / 2 for dim in expanded_dimensions]
    vertices = [
        [center[0] - half_extent[0], center[1] - half_extent[1], center[2] - half_extent[2]],
        [center[0] + half_extent[0], center[1] - half_extent[1], center[2] - half_extent[2]],
        [center[0] + half_extent[0], center[1] + half_extent[1], center[2] - half_extent[2]],
        [center[0] - half_extent[0], center[1] + half_extent[1], center[2] - half_extent[2]],
        [center[0] - half_extent[0], center[1] - half_extent[1], center[2] + half_extent[2]],
        [center[0] + half_extent[0], center[1] - half_extent[1], center[2] + half_extent[2]],
        [center[0] + half_extent[0], center[1] + half_extent[1], center[2] + half_extent[2]],
        [center[0] - half_extent[0], center[1] + half_extent[1], center[2] + half_extent[2]],
    ]
    
    # Elimina cualquier pseudoátomo y línea existentes
    cmd.delete("vertex_*")
    cmd.delete("edge_*")
    
    # Crea los pseudoátomos en los vértices
    for i, vertex in enumerate(vertices):
        cmd.pseudoatom(f"vertex_{i}", pos=vertex)
    
    # Conecta los vértices con líneas
    edges = [
        (0, 1), (1, 2), (2, 3), (3, 0),
        (4, 5), (5, 6), (6, 7), (7, 4),
        (0, 4), (1, 5), (2, 6), (3, 7)
    ]
    
    for edge in edges:
        cmd.distance(f"edge_{edge[0]}_{edge[1]}", f"vertex_{edge[0]}", f"vertex_{edge[1]}")
    
    # Ajusta la apariencia de la caja
    cmd.hide("everything", "vertex_*")
    cmd.show("lines", "edge_*")
    cmd.set("dash_gap", 0)
    cmd.set("dash_length", 1)
    cmd.set("label_size", 22)
    
    # Establece el color de las etiquetas
    cmd.set_color("label_color", label_color)
    cmd.set("label_color", "label_color", "edge_*")

# Llamada a la función con un tamaño de expansión de 7 Ångströms y color de etiqueta deseado
create_expanded_cuboid_around_object("obj01", 7, label_color=[1, 0, 0])  # Rojo



Última modificación: