All projects

Research software

One specification, multiple scientific interfaces

Automatic plugin generation for VMD, PyMOL, and the web

Open source2025 – 2026
  • Python
  • Qt
  • JSON Schema
  • VMD
  • PyMOL
  • Panel
  • NGL
  • Three.js
Diagram showing a Qt interface and CLI metadata transformed into JSON and then into VMD, PyMOL, and web applications.
9
bioinformatics application
1
formal specification per application
3
target environments

Context

The problem

Scientific command-line applications are powerful but expensive to expose through multiple user-interface ecosystems. A conventional approach creates a separate implementation for every application-platform pair, which duplicates logic and makes synchronized maintenance difficult.

The framework treats the interface design as a reusable specification rather than platform-specific source code. It follows a Model–View–Presenter separation so that application state, interface rendering, execution logic, post-analysis, and molecular visualization remain modular.

Method

How the system works

01

User Design

User lay out the input, output, and optional update areas in Qt Designer, then select the CLI and post-analysis parameters that should be exposed.

02

Auto Formalize

Automatically convert the layout and metadata into a validated JSON representation containing widget types, geometry, CLI semantics, outputs, and update behavior.

03

Auto Generate

Use platform adapters to synthesize native applications for Tkinter/VMD, pymol.Qt/PyMOL, and Panel with NGL or Three.js.

Role

My contribution

  • Architected the specification-driven workflow and Model–View–Presenter boundaries.
  • Implemented JSON schema validation, Qt UI parsing, CLI metadata integration, and platform-specific code generators.
  • Built communication layers for VMD sockets, the PyMOL command API, and embedded NGL/Three.js web viewers.
  • Created canonical generated-project structures, examples, documentation, and end-to-end generation commands.

Result

Outcomes and scientific value

Reduces the development structure from application × platform implementations to one specification per application plus one reusable generator per platform.

Provides a single source of truth for interface changes and keeps desktop and web versions synchronized.

Makes structural-bioinformatics CLI tools accessible without coupling scientific logic to a particular GUI toolkit.

Resources

Papers, code, and documentation

Related work

Publications