Feature Service

GitHub Link to Code.

Service for feature-selector-based structure visualization.

This service provides methods for creating and visualizing molecular structures based on feature selectors and data selectors without requiring feature importance analysis.

class mdxplain.structure_visualization.services.structure_viz_feature_service.StructureVizFeatureService(manager: StructureVisualizationManager, pipeline_data: PipelineData)

Service for feature-selector-based structure visualization.

Provides methods for creating PDB files from data selector centroids with optional feature highlighting from feature selectors. Does not require feature importance analysis.

Examples

>>> # Via PipelineManager
>>> pipeline.structure_visualization.feature.create_representative_pdbs(
...     "my_viz",
...     data_selectors=["cluster_0", "cluster_1"],
...     selector_centroid="coords_all",
...     selector_features="important_distances"
... )
>>> ui, view = pipeline.structure_visualization.feature.visualize_nglview_jupyter(
...     "my_viz"
... )
__init__(manager: StructureVisualizationManager, pipeline_data: PipelineData)

Initialize feature-based visualization service.

Parameters

managerStructureVisualizationManager

Parent manager instance

pipeline_dataPipelineData

Pipeline data object (injected by AutoInjectProxy)

Returns

None

Initializes service instance

create_representative_pdbs(structure_viz_name: str, data_selectors: List[str], selector_centroid: str, selector_features: str = None, output_dir: str = None) None

Create PDB files from data selector centroids.

Generates PDB files for each data selector using centroid frames calculated from selector_centroid. Beta-factors are set to 0.0 (uniform). Optional feature highlighting from selector_features.

Parameters

structure_viz_namestr

Name for this visualization session

data_selectorsList[str]

List of data selector names (min 1 required)

selector_centroidstr

Feature selector name for centroid calculation (REQUIRED)

selector_featuresstr, optional

Feature selector for visualization highlights (default None)

output_dirstr, optional

Output directory for PDB files (defaults to cache_dir/structure_viz)

Returns

None

Stores PDB paths in pipeline_data.structure_visualization_data

Examples

>>> # With feature highlighting
>>> pipeline.structure_visualization.feature.create_representative_pdbs(
...     "my_viz",
...     data_selectors=["cluster_0", "cluster_1", "cluster_2"],
...     selector_centroid="coords_all",
...     selector_features="important_distances"
... )
>>> # Without features (only structures)
>>> pipeline.structure_visualization.feature.create_representative_pdbs(
...     "my_viz",
...     data_selectors=["cluster_0", "cluster_1"],
...     selector_centroid="coords_all"
... )

Notes

  • Creates one PDB per data selector

  • Beta-factors always 0.0 (uniform thickness)

  • Centroids calculated using selector_centroid

  • Features from selector_features shown as highlights (if provided)

visualize_nglview_jupyter(structure_viz_name: str, feature_own_color: bool = True) Tuple

Create interactive NGLView widget for Jupyter notebooks.

Creates 3D interactive visualization widget using NGLView with uniform structure coloring and optional feature highlights. Requires PDFs to be created first via create_representative_pdbs(). Automatically displays the widget in Jupyter and returns it.

Warning

  • Only works in Jupyter notebook environment

  • Requires nglview and ipywidgets packages

Parameters

structure_viz_namestr

Name of visualization session (from create_representative_pdbs)

feature_own_colorbool, default=True

If True, features use their own color from feature_colors. If False, features use the color of their structure.

Returns

Tuple[widgets.VBox, nv.NGLWidget]

UI container (dropdown + checkboxes) and NGLView widget

Raises

RuntimeError

If not running in Jupyter notebook environment

KeyError

If structure_viz_name not found in pipeline_data

ImportError

If nglview or ipywidgets not installed

Examples

>>> # First create PDFs
>>> pipeline.structure_visualization.feature.create_representative_pdbs(
...     "my_viz",
...     data_selectors=["cluster_0", "cluster_1"],
...     selector_centroid="coords_all",
...     selector_features="distances"
... )
>>> # Then visualize in Jupyter (automatically displayed)
>>> ui, view = pipeline.structure_visualization.feature.visualize_nglview_jupyter(
...     "my_viz"
... )

Notes

  • All structures have uniform thickness (beta=0.0)

  • Feature highlights use licorice representation

  • Dropdown allows switching between structures

  • Widget is automatically displayed via IPython.display.display()

create_pymol_script(structure_viz_name: str, output_dir: str = None, feature_own_color: bool = True) str

Create PyMOL script (.pml) for structure visualization.

Generates PyMOL script with uniform cartoons (beta=0.0) and optional feature objects as toggleable stick representations.

Parameters

structure_viz_namestr

Name of visualization session (from create_representative_pdbs)

output_dirstr, optional

Output directory (defaults to cache_dir/structure_viz)

feature_own_colorbool, default=True

If True, features use their own color from feature_colors. If False, features use the color of their structure.

Returns

str

Path to created .pml script file

Examples

>>> # First create PDFs
>>> pipeline.structure_visualization.feature.create_representative_pdbs(
...     "my_viz",
...     data_selectors=["cluster_0", "cluster_1"],
...     selector_centroid="coords_all",
...     selector_features="distances"
... )
>>> # Then create PyMOL script
>>> script_path = pipeline.structure_visualization.feature.create_pymol_script(
...     "my_viz"
... )
>>> print(f"Script saved to: {script_path}")

Notes

  • Focus groups named: all_focus_struct_{name}

  • Each group contains own structure + others for context

  • Only first focus group enabled by default

  • Toggle groups in PyMOL GUI to switch focus

  • Script saved as: output_dir/structure_viz_name.pml

  • Uniform cartoons (no beta-factor variation)

visualize_pymol(structure_viz_name: str, feature_own_color: bool = True) None

Open PyMOL with structure visualization.

Validates environment (terminal, PyMOL available), creates script if needed, and launches PyMOL with pymol Python module.

Warning

  • Only works in terminal/script, NOT in Jupyter notebooks

  • Requires pymol Python module (conda install pymol-open-source)

Parameters

structure_viz_namestr

Name of visualization session (from create_representative_pdbs)

feature_own_colorbool, default=True

If True, features use their own color from feature_colors. If False, features use the color of their structure.

Returns

None

Opens PyMOL with visualization

Raises

RuntimeError

If running in Jupyter notebook

ImportError

If pymol Python module not available

Examples

>>> # First create PDFs
>>> pipeline.structure_visualization.feature.create_representative_pdbs(
...     "my_viz",
...     data_selectors=["cluster_0", "cluster_1"],
...     selector_centroid="coords_all"
... )
>>> # Then open in PyMOL (terminal only!)
>>> pipeline.structure_visualization.feature.visualize_pymol("my_viz")

Notes

  • PyMOL opens with all structures and features visible

  • Toggle structures: enable/disable struct_<name>

  • Toggle features: enable/disable feat_<name>

  • Uniform cartoons (no beta-factor variation)

  • Script created if not already exists