Skip to content

Releases: Arifmaulanaazis/vera

1.1.2

Choose a tag to compare

@Arifmaulanaazis Arifmaulanaazis released this 02 Jun 09:50
4490d9d

v1.1.2 ( 2026-06-02)

This patch release improves VERA's developer-facing maintainability by organizing each built-in workflow node into its own file while keeping the existing node library and workflow behavior unchanged.


Highlights

  • One-node-per-file layout makes node implementations easier to browse and maintain
  • Category packages group node files under focused folders
  • Compatibility wrappers preserve imports such as nodes.plot_nodes
  • Data-driven registry keeps built-in node loading centralized and easier to extend

Added

Developer Experience

  • Modular node packages (nodes/)
    Each concrete built-in workflow node class now lives in its own file under its category folder.
    Shared imports, helper functions, and internal base classes remain in each package's common.py.

    • 110 split node files
    • 18 node category packages
    • Compatibility wrappers for the previous nodes.*_nodes module paths

Changed

  • Reorganized 110 built-in node classes into 18 category packages without changing node types, ports, execution semantics, or .vsw workflow compatibility.
  • Simplified NodeFactory registration into a data-driven built-in registry while preserving plugin loading.
  • Updated README project structure and technical counts to describe the new modular node layout.

Fixed

  • FloatingNodePicker now uses external plugin icon_relpath metadata, so plugin nodes show the same custom icons in the floating compatible-node picker as they do in the main toolbox.

Release Summary

  • 0 new nodes added
  • 0 new categories introduced
  • 110 node implementations split into individual files
  • Existing workflows and import paths remain compatible

1.1.1

Choose a tag to compare

@Arifmaulanaazis Arifmaulanaazis released this 20 Apr 13:58
e6b2889

v1.1.1 ( 2026-04-20)

This patch release resolves six stability issues across node execution, data handling, and error reporting — improving robustness in headless environments, multi-index DataFrames, and error-path behaviors throughout the workflow engine.


Highlights

  • Headless/validation mode compatibility fix for SelectColumnsNode
  • StackedBarPlotNode and PairPlotNode now always produce valid PNG output
  • Corrected silent data corruption in _coerce_number() zero-vs-error ambiguity
  • PythonScriptNode now warns when a script finishes without populating output

Fixed

Nodes

  • SelectColumnsNode (select_columns)
    Missing _lightweight_construction guard in __init__ caused Qt widget creation to run in headless/validation mode. All Qt attributes are now initialised to None and the constructor returns early when no display is available.

  • StackedBarPlotNode (plot_stacked_bar)
    Calling _finish_png() without an active matplotlib figure when the input table was None raised a ValueError. The node now creates a blank "No data" figure before saving so the output port always receives valid PNG bytes.

  • PairPlotNode (plot_pairplot)
    Returning raw b"" on missing data or seaborn errors caused downstream image_view nodes to crash on empty bytes. All error paths now render a "No data" / "Unable to render" placeholder PNG instead.

Data Handling

  • _to_rows() (data_mod_nodes)
    DataFrame.to_dict(orient="records") on a MultiIndex DataFrame produced tuple column keys that downstream filter and select nodes could not match. A reset_index() call is now applied before conversion to flatten multi-level indices into plain columns.

  • _coerce_number() (data_mod_nodes)
    All failure paths previously returned (False, 0.0), making it impossible to distinguish a coercion error from a legitimate zero value. Failure paths now return (False, float("nan")) so callers that skip the boolean check cannot silently treat 0.0 as a valid number.


Scripting

  • PythonScriptNode (python_script)
    Scripts that never wrote to output produced silent None results with no indication of the problem. execute() now emits a logger warning when the script finishes without populating output["result"] or output["result2"].

Release Summary

  • 6 bug fixes across nodes, data handling, and scripting
  • Improved stability in headless and validation-mode environments
  • Eliminated silent data corruption in number coercion
  • All plot nodes now guarantee valid PNG output on error paths

1.1.0

Choose a tag to compare

@Arifmaulanaazis Arifmaulanaazis released this 20 Apr 12:59
f104bca

v1.1.0 ( 2026-04-20)

This release delivers a significant expansion of VERA’s capabilities with the introduction of a dedicated Cheminformatics toolkit, integrated Python scripting, and new workflow utilities. These additions enable more flexible molecular analysis, custom logic execution, and improved workflow documentation directly within the canvas.


Highlights

  • New Cheminformatics category for molecular analysis
  • Built-in Python scripting support within workflows
  • New utility tools for better workflow organization
  • Expanded node library and toolbox structure

Added

Molecular Input

  • SMILES Input Node (smiles_input)
    Enter SMILES strings directly on the canvas without requiring file-based input.
    Supports one molecule per line with optional naming. Invalid entries are safely skipped with warnings.

Cheminformatics (New Category)

  • Mol Descriptor Node (mol_descriptor)
    Compute RDKit-based molecular descriptors using three presets:

    • lipinski
    • physicochemical
    • all (~200 descriptors)
      Outputs results as a pandas DataFrame.
  • Mol Fingerprint Node (mol_fingerprint)
    Generate molecular fingerprints with support for:

    • Morgan (ECFP)
    • MACCS Keys
    • RDKit
    • Topological Torsion
    • Atom Pair
      Outputs a bit-vector DataFrame (bit_0, bit_1, …).
  • SMARTS Filter Node (smarts_filter)
    Filter molecules using SMARTS substructure queries.
    Provides matched and unmatched outputs with validation at workflow level.


Scripting (New Category)

  • Python Script Node (python_script)
    Execute custom Python code directly within workflows.

    • Access inputs via inputs dictionary
    • Define outputs via output dictionary
    • Includes syntax validation prior to execution
    • Provides two output channels: result and result2

Utilities (New Category)

  • Note Node (note)
    Add inline documentation to workflows using configurable sticky notes.

    • छह color options
    • Non-executable (excluded from DAG processing)
    • Persisted within .vsw workflow files

Changed

  • Reorganized smiles_input under Molecular Input/Output

  • Introduced new toolbox sections:

    • Cheminformatics
    • Scripting
    • Utilities
  • Increased built-in nodes from 106 → 112

  • Expanded functional categories from 13 → 16

  • Updated README to reflect new structure and technical specifications


Removed

  • Removed unused admet_nodes.py reference from README to improve clarity

Release Summary

  • 6 new nodes added
  • 3 new categories introduced
  • Enhanced extensibility via scripting
  • Expanded molecular analysis capabilities

1.0.0

Choose a tag to compare

@Arifmaulanaazis Arifmaulanaazis released this 19 Apr 11:33
5724ddd

VERA

VERA Logo

Virtual Execution and Reaction Architecture

An open-source, extensible, desktop-native visual workflow platform for integrated computational chemistry and bioinformatics research.

Introduction

Modern computational chemistry and computer-aided drug design (CADD) rely on an increasingly complex ecosystem of specialized software tools. A typical structure-based virtual screening (SBVS) campaign requires protein structure retrieval and preparation, ligand library curation, molecular docking, post-docking analysis, molecular dynamics validation, and statistical visualization each involving distinct file formats (PDB, PDBQT, SDF, MOL2, GRO, TOP, MDP, XVG, XTC, EDR), command-line interfaces, and execution paradigms.

This fragmentation creates three categories of challenges:

  1. Integration Complexity. Researchers must develop custom glue code to orchestrate data flow between tools, handle file format conversions, and manage error propagation across tool boundaries.
  2. Reproducibility Deficit. Experimental protocols existing as undocumented scripts with implicit dependencies make computational experiments difficult to reproduce, share, and audit.
  3. Accessibility Barrier. The steep learning curve of command-line tools excludes domain scientists medicinal chemists, pharmacologists, toxicologists who possess deep biological intuition but lack programming proficiency.

VERA addresses these challenges by providing a desktop-native, visually rich workflow environment that deeply integrates the most widely used computational chemistry engines into a coherent, type-safe, node-based programming model.

Installation

Pre-built Installer (Recommended)

  1. Download the installer from the Releases page
  2. Run VERA-Setup-x64.exe
  3. Follow the installation wizard
  4. Launch VERA from desktop or Start menu

The installer bundles all dependencies and scientific engines.


From Source

Follow these steps to run VERA directly from the source code.

1. Clone the Repository

git clone https://github.com/Arifmaulanaazis/vera.git
cd vera

2. Create and Activate a Virtual Environment

# Create virtual environment
python -m venv .venv

# Activate (PowerShell)
.venv\Scripts\Activate.ps1

# Or activate (Command Prompt)
.venv\Scripts\activate.bat

3. Install Python Dependencies

pip install -r requirements.txt

4. Compile Qt Resources

python build_resources.py

5. Set Up GROMACS (Required for MD Nodes)

Important: GROMACS binaries are not included in this repository because they exceed Git's size limits. You must download and place them manually. See the Setting Up GROMACS section below.

6. Launch VERA

python main.py

Setting Up GROMACS

GROMACS is required for the Molecular Dynamics nodes. The pre-built Windows executables are distributed separately at:

🔗 https://github.com/Arifmaulanaazis/Gromacs-Prebuild-Windows

Releases are available from GROMACS 2025.1 through 2026.1 and will continue to be updated with new versions.

Download and Installation Steps

  1. Go to the Releases page of the GROMACS pre-build repository.

  2. Download the archive for the version and build type you need:

    • gromacs_2025.1_cpu.zip — CPU-only build
    • gromacs_2025.1_cuda.zip — CUDA-accelerated build (requires NVIDIA GPU)
    • (and so on for newer versions)
  3. Extract the contents into the exact folder path matching the version inside this repository:

    vera/
    └── engine/
        └── gromacs/
            ├── gromacs_2025.1_cpu/      ← extract CPU archive here
            │   ├── bin/
            │   ├── lib/
            │   ├── share/
            │   └── GMXRC.bat
            ├── gromacs_2025.1_cuda/     ← extract CUDA archive here
            │   ├── bin/
            │   ├── lib/
            │   ├── share/
            │   └── GMXRC.bat
            ├── gromacs_2025.2_cpu/
            ├── gromacs_2025.2_cuda/
            └── ...
    

    ⚠️ The folder names must match exactly (e.g., gromacs_2025.1_cuda) because VERA uses these paths to locate the gmx executable at runtime.

  4. Verify the installation by checking that the executable exists, for example:

    engine\gromacs\gromacs_2025.1_cuda\bin\gmx.exe
    

Available Versions

Version CPU Build CUDA Build Notes
2025.1 ✅ ✅ First available pre-build
2025.2 ✅ ✅ Maintenance release
2026.1 ✅ ✅ Latest stable
future ✅ ✅ Added as upstream releases

Note: If you only plan to run CPU-based MD simulations, the CPU build is sufficient. Use the CUDA build to enable GPU acceleration (-nb gpu -bonded gpu -pme gpu).


Project Structure

vera/
├── main.py                       # Application entry point
├── vera.py                       # Thin launcher (calls main.py)
├── requirements.txt              # Python dependencies
├── build_resources.py            # Qt resource compiler script
├── vera.ico                      # Application icon
├── vera.png                      # VERA logo
├── LICENSE                       # MIT License
├── README.md                     # This file
├── CONTRIBUTING.md               # Contribution guidelines
│
├── core/                         # Core UI and workflow components
│   ├── application.py            # VERAApplication — main window orchestrator
│   ├── canvas.py                 # WorkflowCanvas — QGraphicsView-based editor
│   ├── nodes.py                  # BaseNode — abstract node base class
│   ├── toolbox.py                # NodeToolbox — drag-and-drop palette
│   ├── properties.py             # Properties panel
│   ├── port_types.py             # PortTypes — type system definitions
│   └── floating_controls.py      # Run/Stop/Pause floating toolbar
│
├── backend/
│   └── workflow_manager.py       # WorkflowManager — DAG execution engine
│
├── nodes/                        # All built-in node implementations
│   ├── node_factory.py           # NodeFactory — registry and loader
│   ├── docking_nodes.py          # AutoDock Vina nodes
│   ├── md_nodes.py               # GROMACS molecular dynamics nodes
│   ├── io_nodes.py               # File I/O nodes (SDF, MOL, PDB, CSV, etc.)
│   ├── data_mod_nodes.py         # DataFrame manipulation nodes
│   ├── visualization_nodes.py    # Plotting and 3D viewer nodes
│   ├── ml_nodes.py               # Machine learning nodes (sklearn)
│   ├── admet_nodes.py            # ADMET/toxicity prediction nodes
│   └── ...                       # Other node modules by category
│
├── UI/                           # Qt dialogs and UI components
├── utils/                        # Logging, theming, external tool helpers
├── theme/                        # QSS stylesheets and icon assets
├── plugins/                      # Plugin framework and documentation
├── web/                          # NGL.js 3D viewer HTML
├── example/                      # Pre-built .vsw workflow files
├── assets/                       # Qt resource manifests
│
├── engine/                       # Bundled external computational engines
│   ├── gromacs/                  # GROMACS builds (contents downloaded separately)
│   │   ├── gromacs_2025.1_cpu/   # ← Place CPU 2025.1 build here
│   │   ├── gromacs_2025.1_cuda/  # ← Place CUDA 2025.1 build here
│   │   ├── gromacs_2025.2_cpu/   # ← Place CPU 2025.2 build here
│   │   ├── gromacs_2025.2_cuda/  # ← Place CUDA 2025.2 build here
│   │   └── gromacs_2026.1_*/     # ← And so on for newer versions
│   ├── openbabel/                # OpenBabel binary (included)
│   ├── vina/                     # AutoDock Vina CPU binary (included)
│   ├── vina_gpu/                 # Vina-GPU 2.1 binary (included)
│   └── vina_split/               # Vina split utility (included)
│
├── AutoDockTools/                # AutoDockTools Python library
├── MolKit/                       # MolKit molecular modelling library
├── PyBabel/                      # PyBabel utility library
└── mglutil/                      # MGLTools utility library

Note on engine/gromacs/: The GROMACS sub-folders are tracked by Git (so the expected paths exist after cloning), but their contents are .gitignored due to binary size. You must manually download and extract the GROMACS pre-builds from Gromacs-Prebuild-Windows into the matching folder. All other engines (openbabel, vina, vina_gpu, vina_split) are already included in the repository.