Skip to content

CHalf v4.3

Latest

Choose a tag to compare

@chad-hyer chad-hyer released this 23 Dec 01:06

Release Notes: v4.3

Version 4.3 represents a complete architectural overhaul of CHalf.

We have transitioned from a monolithic PyQt5 application to a high-performance Client-Server architecture built on PySide6. This update introduces multi-core parallelization, a dedicated Headless Mode for HPC automation, and a non-blocking "Workflow" interface.

Scientifically, the analysis pipeline has shifted from raw efficiency counts to a Penetrance Model for QC, and introduces DeltaMapper—a statistical engine for identifying significantly altered protein stability across experimental conditions.


⚡ Performance & Parallelization

  • Multi-Core Processing: Unlike v4.2.2 (which was single-threaded), v4.3 implements concurrent.futures.ProcessPoolExecutor. Users can now define the number of workers, distributing curve fitting and normalization across multiple CPU cores to dramatically reduce runtime for proteome-wide datasets.
  • Asynchronous UI: The User Interface is now completely decoupled from the backend. The GUI remains responsive while calculations run in a background subprocess, streaming logs to a real-time console.

🤖 Headless Mode & Automation

  • CLI Execution: Added CHalf_v4_3_headless.exe for server-side batching.
  • Pipeline Integration: Fully compatible with HPC clusters and workflow managers (e.g., Snakemake, Nextflow). It accepts command-line arguments to run without user intervention:
    CHalf_v4_3_headless.exe --directory ./data --workflow params.workflow --manifest run_list.manifest

📊 Visualization: DeltaMapper

The visualization engine has been upgraded to move beyond simple curve plotting to statistically rigorous comparison.

  • DeltaMapper Module: Automated calculation of $\Delta C_{1/2}$ (stability shift) between "Reference" and "Experimental" conditions.
  • Stability Landscape (Manhattan Plots): Generates Manhattan-style plots mapping stability changes across the protein sequence.
  • Statistical Filtering: Implements statistical significance testing to automatically identify and highlight proteins/residues with significantly changed stability, separating signal from noise.
  • Mutation Scanning: Specific support for visualizing stability shifts induced by point mutations (e.g., highlighting E544D vs. WT).

🛡️ Quality Control: The Penetrance Model

The QC module has been reimagined. While it retains the attrition funnel concept, the underlying metrics have shifted to provide a more accurate biological context.

  • Penetrance vs. Efficiency: Replaced raw fitting counts with a Penetrance Model. This calculates the percentage of the theoretical labelable proteome (unique sequences) that was successfully detected, labeled, and fit.
  • Attrition Funnel: Tracks unique sequences through Detected $\to$ Labeled $\to$ Fit $\to$ Quality Checked.
  • Spearman Rank Correlation: Added Spearman Rank Correlation as a reporting metric for every curve to help users assess trend consistency. Note: This is a quality indicator, not a hard filter for data exclusion.

⚙️ Workflow & Configuration

  • Workflow Files (.workflow): Replaced global defaults with project-specific JSON configuration files for better reproducibility.
  • Manifest System (.manifest): Replaces manual file selection, allowing for batch processing of hundreds of files.
  • Concentration Mapping (.cc): Users can now map specific concentration gradients to specific files via Concentration Column files, enabling the analysis of heterogeneous experiments within a single project.

🧠 Algorithmic Updates

  • Robust Initial Guessing: Implemented heuristic initial guessing (scanning 10%/90% data percentiles) to estimate sigmoid parameters before optimization. This significantly improves convergence on noisy data compared to v4.2.2.
  • Signal Smoothing: Added optional Savitzky-Golay filtering options to digitally reduce signal noise prior to fitting.
  • Advanced Normalization: Added flexible strategies for handling zero-values (remove, keep, or impute) during normalization.