LICENSE
NOTICE
README.md
pyproject.toml
src/mfethuls/__init__.py
src/mfethuls/_files.py
src/mfethuls/comparison.py
src/mfethuls/dataset.py
src/mfethuls/discovery.py
src/mfethuls/experiments.py
src/mfethuls/factory.py
src/mfethuls/main.py
src/mfethuls/manifest.py
src/mfethuls/py.typed
src/mfethuls/reconcile.py
src/mfethuls/registry_validator.py
src/mfethuls/schema_normalization.py
src/mfethuls/settings.py
src/mfethuls/stores.py
src/mfethuls.egg-info/PKG-INFO
src/mfethuls.egg-info/SOURCES.txt
src/mfethuls.egg-info/dependency_links.txt
src/mfethuls.egg-info/entry_points.txt
src/mfethuls.egg-info/requires.txt
src/mfethuls.egg-info/top_level.txt
src/mfethuls/app/__init__.py
src/mfethuls/app/backend.py
src/mfethuls/app/launch.py
src/mfethuls/app/page.py
src/mfethuls/app/register.py
src/mfethuls/app/streamlit_app.py
src/mfethuls/app/welcome.py
src/mfethuls/characterizers/__init__.py
src/mfethuls/characterizers/dsc.py
src/mfethuls/characterizers/tga.py
src/mfethuls/config/__init__.py
src/mfethuls/config/instrument_params.json
src/mfethuls/config/loader.py
src/mfethuls/config/schemas/dma.json
src/mfethuls/config/schemas/dsc.json
src/mfethuls/config/schemas/fluorescence.json
src/mfethuls/config/schemas/ftir.json
src/mfethuls/config/schemas/ms.json
src/mfethuls/config/schemas/nmr.json
src/mfethuls/config/schemas/rheometer.json
src/mfethuls/config/schemas/saxs.json
src/mfethuls/config/schemas/sec.json
src/mfethuls/config/schemas/tga.json
src/mfethuls/config/schemas/uv_vis.json
src/mfethuls/examples/__init__.py
src/mfethuls/examples/experiments_registry.csv
src/mfethuls/examples/data/DSC/poly1.txt
src/mfethuls/examples/data/DSC/poly2.txt
src/mfethuls/examples/data/FTIR/poly1.csv
src/mfethuls/examples/data/FTIR/poly2.csv
src/mfethuls/examples/data/Fluorescence/poly3/poly3__0__18-11-09-757.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__10__18-11-19-757.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__11__18-11-20-757.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__12__18-11-21-757.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__13__18-11-22-757.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__14__18-11-23-757.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__15__18-11-24-757.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__16__18-11-25-757.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__17__18-11-26-757.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__18__18-11-27-757.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__19__18-11-28-758.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__1__18-11-10-757.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__20__18-11-29-757.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__21__18-11-30-757.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__22__18-11-31-744.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__23__18-11-32-758.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__24__18-11-33-758.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__25__18-11-34-758.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__26__18-11-35-758.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__27__18-11-36-758.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__28__18-11-37-758.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__29__18-11-38-758.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__2__18-11-11-757.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__30__18-11-39-758.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__31__18-11-40-758.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__32__18-11-41-758.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__33__18-11-42-758.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__34__18-11-43-758.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__35__18-11-44-758.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__36__18-11-45-757.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__37__18-11-46-758.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__38__18-11-47-758.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__39__18-11-48-758.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__3__18-11-12-757.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__40__18-11-49-758.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__41__18-11-50-758.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__42__18-11-51-758.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__43__18-11-52-758.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__44__18-11-53-758.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__45__18-11-54-758.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__46__18-11-55-758.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__47__18-11-56-758.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__48__18-11-57-758.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__49__18-11-58-758.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__4__18-11-13-757.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__5__18-11-14-757.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__6__18-11-15-757.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__7__18-11-16-757.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__8__18-11-17-757.txt
src/mfethuls/examples/data/Fluorescence/poly3/poly3__9__18-11-18-757.txt
src/mfethuls/examples/data/TGA/poly1.txt
src/mfethuls/examples/data/TGA/poly2.txt
src/mfethuls/instruments/__init__.py
src/mfethuls/instruments/base.py
src/mfethuls/instruments/generic.py
src/mfethuls/parsers/__init__.py
src/mfethuls/parsers/dma.py
src/mfethuls/parsers/dsc.py
src/mfethuls/parsers/ftir.py
src/mfethuls/parsers/ingestion.py
src/mfethuls/parsers/ms.py
src/mfethuls/parsers/nmr.py
src/mfethuls/parsers/registry.py
src/mfethuls/parsers/rheometer.py
src/mfethuls/parsers/saxs.py
src/mfethuls/parsers/sec.py
src/mfethuls/parsers/tga.py
src/mfethuls/parsers/uv_vis.py
src/mfethuls/plotting/__init__.py
src/mfethuls/plotting/backend.py
src/mfethuls/plotting/comparison.py
src/mfethuls/plotting/core.py
src/mfethuls/plotting/dma.py
src/mfethuls/plotting/dsc.py
src/mfethuls/plotting/fluorescence.py
src/mfethuls/plotting/ftir.py
src/mfethuls/plotting/labels.py
src/mfethuls/plotting/ms.py
src/mfethuls/plotting/nmr.py
src/mfethuls/plotting/render_mpl.py
src/mfethuls/plotting/render_plotly.py
src/mfethuls/plotting/rheology.py
src/mfethuls/plotting/saxs.py
src/mfethuls/plotting/sec.py
src/mfethuls/plotting/spec.py
src/mfethuls/plotting/style.py
src/mfethuls/plotting/tga.py
src/mfethuls/plotting/uv_vis.py
src/mfethuls/storage/__init__.py
src/mfethuls/storage/backends.py
src/mfethuls/storage/catalog.py
src/mfethuls/storage/config.py
src/mfethuls/storage/duckdb_backend.py
src/mfethuls/storage/manager.py
src/mfethuls/storage/notebook.py
src/mfethuls/storage/provenance.py
src/mfethuls/storage/types.py
src/mfethuls/tutorials/__init__.py
src/mfethuls/tutorials/local_tutorial.py
tests/test_app_onboarding.py
tests/test_app_style_by.py
tests/test_catalog.py
tests/test_cli.py
tests/test_comparison.py
tests/test_core_boundary.py
tests/test_discovery.py
tests/test_duckdb_lifecycle.py
tests/test_examples.py
tests/test_experiment_flow.py
tests/test_instrument_config.py
tests/test_manifest.py
tests/test_parsers.py
tests/test_plotting.py
tests/test_plotting_colorbar.py
tests/test_plotting_labels.py
tests/test_plotting_limits.py
tests/test_plotting_plotly.py
tests/test_plotting_spec.py
tests/test_real_data_pipeline.py
tests/test_reconcile.py
tests/test_registry.py
tests/test_registry_row_builder.py
tests/test_registry_validator.py
tests/test_registry_write.py
tests/test_schema_normalization.py
tests/test_settings.py
tests/test_source_file.py
tests/test_tutorials.py
tests/test_validate_registry_dataframe.py
tests/test_wrong_instrument.py