Comprehensive changelog — everything shipped across the Discoverant platform in the last 10 days.
Full scientific unit conversion engine integrated into the data grid. 62 default units mapped to canonical fields, 30 new ADMET/PK fields added (CL_int, Vd, AUC, Cmax, t_half, F_oral, fu, etc.).
| Conversion Type | Method | Example |
|---|---|---|
| Linear | Scale factor multiplication | nM ↔ µM, mg ↔ g, L/h ↔ mL/min |
| Cross-system (molar ↔ mass) | Uses molecular weight: mass = molarity × MW | nM ↔ ng/mL (requires MW column) |
| Logarithmic | pIC50 = −log10(IC50 × 10−9) | IC50 (nM) ↔ pIC50 |
Right-click any column header for Convert Display (in-place unit change) or Add Converted Column (new column with target units). The column menu dynamically shows only valid conversions for the current unit.
Indigo-based structure matching for identifying duplicate compounds across datasets. 4-step wizard UI: select columns → choose precision → review matches → resolve duplicates.
| Precision Level | Method | Use Case |
|---|---|---|
| Exact | Canonical SMILES string equality | Identical structures only |
| Canonical | Indigo canonical form comparison | Same structure, different input representations |
| InChIKey | First 14 characters (connectivity layer) | Same connectivity, different stereochemistry |
| Scaffold | Murcko scaffold comparison | Same core ring system |
Files containing SMILES strings now render inline 2D structure SVGs instead of showing raw text. Powered by the Indigo rendering pipeline via POST /api/v2/indigo/render. Activates automatically when the system detects a .smi file or a SMILES column.
RDKit standardisation pipeline for compound registration. Three-tier hierarchy:
| Level | Purpose | ID Format |
|---|---|---|
| Parent | Unique chemical entity (canonical, desalted) | DIS-000001 |
| Version | Salt form / polymorph / free base | DIS-000001-001 |
| Lot | Physical batch | DIS-000001-001-A |
13 API endpoints covering registration, lookup, versioning, and batch operations. Pipeline: SMILES → RDKit MolStandardize → charge neutralisation → salt stripping → canonical tautomer → InChIKey generation → duplicate check → insert.
| Change | Detail |
|---|---|
| Registration panel | Live compound count, last registered, pipeline status |
| Fleet View button | New header button linking to /fleet.html |
| Alert styling | Optional services (birthday-api, tailscaled) shown as grey info badges instead of red alerts |
| ops-monitor detection fix | Hardcoded as active (if the API responds, it's running) — was falsely showing "activating" |
| Null-safe JS | $el() helper replaces raw document.getElementById() throughout — eliminates null-reference errors |
| Dual-disk fleet monitoring | Both / and /mnt/data tracked per server |
| Docs restoration | Architecture, methodology, databases, workbench, guest-activity pages rebuilt |
Well-stirred hepatic model predicting intrinsic clearance from in-vitro microsomal data. Five ADMET display cards on the molecule detail view: CLint, hepatic extraction ratio, predicted hepatic clearance, bioavailability estimate, and metabolic stability classification.
10 enrichment columns were missing from CSV export: InChIKey, IP_Status, Patent_Zone, Zone_Score, Patent_Count, Nearest_Patent_Similarity, Target_Count, Pathway_Count, Clinical_Phase, and Data_Source. All now included.
| Model | Parameters |
|---|---|
| One-compartment IV bolus | Vd, kel, t½, AUC |
| One-compartment oral | ka, Vd/F, kel, t½, Tmax, Cmax |
| Two-compartment IV | α, β, Vdc, Vdss, CL |
| Emax (PD) | Emax, EC50, Hill coefficient |
Non-linear least-squares fitting via scipy.optimize.curve_fit. Observed vs. fitted overlay charts returned as Plotly JSON. Derived PK parameters calculated from fitted coefficients.
Unified import system with automatic file-type detection. Supports SDF, MOL, SMI, CSV, and Excel. Auto-detects delimiter, encoding, and structure column. Multi-format export with the same pipeline in reverse.
191 chemical file formats supported. Used for format conversion when importing non-native formats (e.g., MOL2 → SDF, PDB → MOL). Runs on port 8085.
| Stat | Value |
|---|---|
| Canonical fields | 88 (molecular_weight, logP, IC50, EC50, Ki, Kd, CL_int, etc.) |
| Synonym mappings | 441 (MW, mol_wt, MolWeight, molecular weight, peso molecular, etc.) |
| Languages | 6 (English, German, French, Spanish, Japanese, Chinese) |
| Match strategy | Case-insensitive, underscore/space/hyphen normalised, prefix-stripped |
| Link | Hardware | Throughput |
|---|---|---|
| della ↔ delld | Intel X520-DA2, DAC SFP+ cable | 9.4 Gbps (direct) |
| delld ↔ dellc | Intel X520-DA2, DAC SFP+ cable | 9.4 Gbps (direct) |
| della ↔ dellc (via delld bridge) | Linux bridge br-10g | 9.1 Gbps (bridged) |
| della ↔ dellb | Intel X520-DA2, DAC SFP+ cable | 9.4 Gbps (direct) |
Full mesh topology with delld acting as 10G switch via Linux bridge. All four servers now interconnected at 10 Gbps for database replication and batch job distribution.
nutdrv_qx for better Armour APM1200 compatibility
| Layer | Mechanism | Detail |
|---|---|---|
| 1. Email-pinned access | Token + email match | Share links tied to specific recipient email addresses |
| 2. Email OTP | 6-digit code, 10 min expiry | 5-attempt lockout, code sent via SMTP |
| 3. Domain restriction | Tenant-level config | allowed_share_domains whitelist enforced at share creation |
| 4. Dynamic watermark | Canvas overlay | Shown for guest and trial_member users — includes email + timestamp |
| 5. Anomaly detection | Behavioural analysis | Unusual access patterns flagged to admin security dashboard |
Paddle checkout integration for paid member upgrades. GDPR-compliant data handling with configurable retention policies per tenant.
Electronic Lab Notebook service verified working. 14 API endpoints covering experiment creation, protocol templates, observation logging, and audit trail. 4 Docker containers (API, worker, Redis, PostgreSQL).
| Index | Table | Rows | Status |
|---|---|---|---|
| idx_patent_compounds_bingo | patent_compounds | 28.4M | HEALTHY |
| idx_molecules_bingo | molecules | — | HEALTHY |
| idx_reactions_bingo | reactions | — | HEALTHY |
| idx_clinical_bingo | clinical_trial_structures | — | HEALTHY |
| idx_pubchem_bingo | pubchem | — | HEALTHY |
Bingo indexes operational on both della (local) and delld (patent DB). Substructure and similarity search confirmed working across all indexed tables.
4be9a34, bbc6d3aBrand new "Analyse" view mode alongside Grid / Heatmap / Transpose / IP Intelligence. Interactive scientific charts powered by Plotly.js with linked selection across all views. Patent zone colouring on every chart.
| Feature | Detail |
|---|---|
| Linked selection | Lasso on scatter → highlights in table and all other charts simultaneously |
| Patent zone colouring | Consistent across every chart: red (literal match) → orange → yellow → green → cyan (novel) |
| Axis dropdowns | Swap any numeric property onto any axis. Auto-detects numeric columns from molecule data. |
| Publication export | PNG and SVG export via Plotly — publication-quality figures |
| Lipinski overlay | Radar chart shows drug-like reference polygon (MW ≤ 500, HBA ≤ 10, HBD ≤ 5, LogP ≤ 5) |
| Spotify-dark aesthetic | Dark canvas matching existing Discoverant theme. High-contrast data points. |
| Field | Values |
|---|---|
| Species | Human, Mouse, Rat, Dog, Monkey, Guinea Pig, Rabbit, Pig, Zebrafish, Hamster |
| Target Relationship | Primary Target · Homologue · Orthologue · Anti-target · Off-target |
| Help Tooltips | Every interaction type has an explanatory tooltip on hover |
| Change | Detail |
|---|---|
| Login field label | "Email Address" (was "Username" — caused confusion during demos) |
| Inactivity timeout | Configurable: 5 minutes to 1 hour. Tracks mouse, keyboard, scroll, touch events. |
| Warning modal | Appears 60 seconds before auto-logout with countdown timer |
| Token cleanup | Auth tokens cleared on timeout — clean session state |
Five vision modes with palettes designed for distinct luminance differences, applied globally across every visual component.
| Scope | Components Affected |
|---|---|
| Charts | All 9 Analyse chart types — scatter, box, violin, parallel, radar, heatmap, bar, histogram, correlation |
| Patent zones | Zone indicator dots, zone colouring on scatter/globe, zone badges |
| Heatmaps | Molecule grid heatmap mode |
| Patent views | Patent Map 2D Scatter, 3D Globe, Overlap, Jurisdictions |
| Access | Quick toggle in header bar or Settings page |
| Component | Detail |
|---|---|
| Avatar circle | Header navigation — image upload or initials fallback (first + last name) |
| Username display | Shown next to avatar in nav bar |
| Profile dropdown | Settings, role display, logout |
| Admin control | Toggle to disable profile pictures org-wide |
The Patent Map 3D Globe now auto-rotates for 3 seconds on load as an eye-catcher, then stops permanently on the first user interaction (click, drag, scroll). It never restarts unexpectedly — previous behaviour had it re-triggering after idle periods which confused users trying to inspect specific molecules.
| Improvement | Detail |
|---|---|
| .mol file support | Single-molecule .mol files now accepted alongside .sdf. File type validation updated. |
| Import progress bar | Live progress during file import. Polls backend for molecule count. Shows "Processing molecule 147 of 300…" with animated bar. |
| Completion summary | Success/error summary on completion with counts |
Full audit conducted across all platform features. 45 features confirmed working, 11 broken items identified for remediation, 7 partially working items catalogued, and 20 TODO items queued for future development.
| Item | Status | Notes |
|---|---|---|
| Bingo index on patent_compounds | DONE | 28.4M rows — built and verified on both della and delld |
| Structure tooltips on scatter | QUEUED | Hover over dot → shows 2D structure preview |
| Chemical space map (PCA/t-SNE) | QUEUED | Needs backend — dimensionality reduction on descriptors |
| Activity cliff detection | QUEUED | Needs backend — identify structurally similar but pharmacologically different pairs |
4be9a34 feat: Analyse view — 9 chart types, 6 layouts, linked selectionbbc6d3a feat: Pharmacology-correct target interactions, session timeout, accessibility