Skip to content

Releases: gemmology-dev/mineral-database

v2.1.2 - Clean crystal models in npm package

17 Feb 05:17

Choose a tag to compare

Changes

  • npm package now includes pre-rendered SVG/STL/glTF models for 163/171 expressions
  • SVG renders show crystal structure only (no axes, grid, or coordinate labels)
  • Transparent SVG backgrounds for clean integration
  • Package size increased from ~576KB to ~7.5MB due to embedded 3D models

Model Style

Before: Crystal with axes, grid panes, coordinate labels (a, b, c)
After: Clean crystal structure only with transparent background

v2.1.1 - Fix crystal model generation for pyroxenes and amphiboles

17 Feb 03:44

Choose a tag to compare

Changes

  • Fix CDL expressions for 5 minerals (jadeite, enstatite, actinolite, tremolite, spodumene) by adding {001} basal pinacoid to close crystal forms
  • Pre-rendered SVG/STL/glTF models now included for 163/171 expressions
  • Remaining 8 without models are composites/glass with no crystal morphology

Model Coverage

Format Count Coverage
SVG 163/171 95.3%
STL 163/171 95.3%
glTF 161/171 94.2%

v2.1.0

16 Feb 05:08

Choose a tag to compare

Mineral Database v2.1.0

New mineral families (25)

Garnet endmembers: Almandine, Andradite, Grossular, Hessonite, Pyrope, Uvarovite, Colour-Change Garnet

Quartz varieties: Chalcedony, Rose Quartz, Smoky Quartz

Pyroxenes: Augite, Enstatite, Jadeite, Diopside (enriched)

Amphiboles: Actinolite, Nephrite, Tremolite

Tourmaline species: Dravite, Elbaite, Schorl

Corundum varieties: Padparadscha, Pink Sapphire

Feldspars: Andesine, Bytownite, Sanidine

Other: Spodumene

Database enrichment

  • 93 natural mineral families (up from 68)
  • 171 expressions (up from 141)
  • 13 mineral groups with query API (list_mineral_groups(), list_families_by_group())
  • Dana category classification on all natural minerals (silicates, oxides, carbonates, etc.)
  • Fluorescence data on ~20 minerals (UV response, colour, intensity)
  • Diagnostic features on ~20 minerals (inclusions, pleochroism, colour zoning, etc.)

API additions

  • list_mineral_groups() - list all 13 mineral groups
  • list_families_by_group(group) - list families within a group (e.g. "garnet", "beryl")
  • CLI --groups argument for group listing

Testing

  • 131 tests (up from 79), all passing

v2.0.2

16 Feb 03:15

Choose a tag to compare

Fix name stutter for multi-expression families and correct amorphous system detection in legacy minerals table

v2.0.1 -- CDL Expression Overhaul

16 Feb 02:56

Choose a tag to compare

CDL Expression Overhaul

Comprehensive review and update of all 141 CDL expressions across 96 mineral families.

Changes

  • Doc comments (#!) added to all non-empty CDL expressions with Species, System, and Habit metadata
  • Diagnostic features added to 12 minerals (striations, pleochroism, colour zoning)
  • Tourmaline point group corrected: trigonal[32] -> trigonal[3m]
  • Emerald typo fixed: [inclusion:jardine] -> [inclusion:jardin]
  • New expression: Orthoclase Baveno twin (141 total expressions, up from 140)
  • Synthetics & simulants: Doc comments added to all 24 non-empty CDL strings

Validation

  • 133/141 expressions parse successfully (8 warnings = empty CDL for composites/glass)
  • 79/79 tests pass

v2.0.0 - CDL v2.0 Mineral Database Overhaul

16 Feb 01:08

Choose a tag to compare

v2.0.0 - CDL v2.0 Mineral Database Overhaul

Highlights

  • 140 CDL expressions across 96 mineral families (was 128)
  • Fixed misrepresented minerals: turquoise, pearl, malachite, sodalite, lazurite, opal
  • 7 amorphous, 5 aggregate, 3 nested growth expressions
  • Doc comments on major gem species
  • Updated npm package (@gemmology/mineral-data) with rebuilt minerals.db

v1.8.1 - CDL & Models for Synthetics/Simulants

14 Feb 12:33

Choose a tag to compare

What's Changed

Added CDL crystal structures and pre-generated 3D models (SVG/STL/glTF) for 13 additional synthetic and simulant entries that have valid crystal structures.

Before

  • Only 7 of 28 non-natural entries had CDL and 3D models

After

  • 20 of 28 non-natural entries now have full crystal visualizations
  • 8 entries correctly remain without models (amorphous materials, aggregates, composites)

CDL Assignments

Entry CDL
Synthetic Ruby (Verneuil) trigonal[-3m]:{10-11}@1.0 + {0001}@0.4
Synthetic Sapphire (Verneuil) trigonal[-3m]:{10-10}@1.0 + {10-11}@0.7 | elongate(c:1.8)
CVD Diamond cubic[m3m]:{100}@1.0 + {111}@0.3
Synthetic Alexandrite orthorhombic[mmm]:{110}@1.0 + {010}@0.6 + {111}@0.4
Synthetic Spinel (Verneuil) cubic[m3m]:{111}
Cubic Zirconia cubic[m3m]:{111}@1.0 + {100}@0.8
Moissanite hexagonal[6mm]:{10-10}@1.0 + {0001}@0.6
YAG cubic[m3m]:{110}@1.0 + {211}@0.8
GGG cubic[m3m]:{110}@1.0 + {211}@0.6
Strontium Titanate cubic[m3m]:{100}
Synthetic Rutile tetragonal[4/mmm]:{110}@1.0 + {100}@0.8 + {101}@0.6
LuAG cubic[m3m]:{110}@1.0 + {211}@0.7
Gilson Turquoise triclinic[-1]:{010}@1.0 + {001}@0.9 + {110}@0.7

v1.8.0 - Synthetic Gems, Simulants & Composites

14 Feb 07:04

Choose a tag to compare

What's New

This release adds 28 new material families to the mineral database, bringing the total from 68 to 96 families with 123 expressions.

Origin Classification

Every mineral family now has an origin field:

  • Natural (68 families) - naturally occurring minerals
  • Synthetic (15 families) - lab-grown materials with same composition as natural counterparts
  • Simulant (9 families) - materials that imitate other gems
  • Composite (4 families) - assembled stones (doublets, triplets)

New Materials

Synthetics: Verneuil ruby/sapphire, flux ruby/sapphire/emerald, hydrothermal emerald/quartz, CVD diamond, HPHT diamond, Czochralski alexandrite, Verneuil spinel, Gilson opal, lab-grown Paraiba tourmaline

Simulants: Cubic zirconia, moissanite, YAG, GGG, strontium titanate, synthetic rutile, LuAG, glass, Gilson turquoise/lapis, synthetic coral

Composites: Garnet-topped doublet, opal doublet, opal triplet, soude emerald

New Query API

from mineral_database import list_synthetics, list_simulants, get_counterparts, list_by_origin

list_synthetics()              # All synthetic entries
list_synthetics("flux")        # Filter by growth method
list_simulants()               # All simulant entries
get_counterparts("diamond")    # Synthetics + simulants for diamond
list_by_origin("natural")      # Filter by origin

CLI

mineral-db --synthetics            # List all synthetics
mineral-db --simulants diamond     # Simulants for diamond
mineral-db --counterparts ruby     # All counterparts for ruby
mineral-db --list --origin natural # Filter presets by origin

npm Package

@gemmology/mineral-data updated to v1.8.0 with the expanded database.

Backwards Compatible

All existing APIs continue working and now include synthetic/simulant/composite entries alongside natural minerals.

v1.7.0 - Pre-generated 3D Models for All Expressions

02 Feb 08:10

Choose a tag to compare

🎉 Pre-generated 3D Models for All Expressions

This release adds pre-generated SVG, STL, and glTF models for all 95 mineral expressions, stored directly in the SQLite database.

New Features

  • Expression Models: All 94 crystalline expressions now have:
    • model_svg: 2D SVG visualization
    • model_stl: Binary STL for 3D printing
    • model_gltf: glTF for web 3D viewers
  • Updated Generation Script: generate_models.py now supports:
    • --expressions mode (default) for generating expression models
    • --output-dir to export static SVG files
    • Legacy --minerals mode still available

Database Changes

  • Database size increased from 532KB to 2.78MB (includes embedded models)
  • 94 of 95 expressions have models (opal skipped - amorphous)
  • model_svg, model_stl, model_gltf columns populated in mineral_expressions table

API Additions

  • get_all_expressions() function in db.py
  • update_expression_models() for updating expression model data

Breaking Changes

None - fully backwards compatible with v1.6.0

v1.6.0 - Mineral Families & Expressions

02 Feb 07:58

Choose a tag to compare

What's New

This release adds the normalized mineral family/expression structure:

New Database Tables

  • mineral_families - 68 deduplicated mineral families with shared gemmological properties
  • mineral_expressions - 95 crystal forms/habits (e.g., fluorite-octahedron, fluorite-cube)

Changes

  • Database size increased from 241KB to 532KB with enriched data
  • Enables website tools to show deduplicated results
  • Backward compatible - existing minerals table still works

For Website Integration

import { dbPath } from '@gemmology/mineral-data';
// Query mineral_families for deduplicated results
// Query mineral_expressions for crystal form variants