quantized-lab 0.8.0__tar.gz → 0.8.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- quantized_lab-0.8.1/PKG-INFO +176 -0
- quantized_lab-0.8.1/README.md +137 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/pyproject.toml +9 -2
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/__init__.py +1 -1
- quantized_lab-0.8.0/PKG-INFO +0 -122
- quantized_lab-0.8.0/README.md +0 -88
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/.gitignore +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/LICENSE +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/NOTICE +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/__main__.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/api.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/app.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/__init__.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/_clipfit.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/_natural_neighbor.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/aggregate.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/backgrounds.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/baseline.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/batch_fit.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/constants.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/corrections.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/crystallography.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/diffusion.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/electrical.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/electrochemistry.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/element_data.json +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/element_data.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/errors.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/figure.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/figure_break.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/figure_categorical.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/figure_corner.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/figure_facets.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/figure_field.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/figure_hitmap.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/figure_labels.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/figure_map.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/figure_overrides.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/figure_page.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/figure_scale.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/figure_statplots.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/figure_styles.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/figure_ternary.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/figure_ticks.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/fit_autoguess.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/fit_bootstrap.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/fit_bumps.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/fit_constraints.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/fit_equation.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/fit_findxy.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/fit_models.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/fit_models_special.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/fit_odr.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/fit_scan.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/fit_stats.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/fitting.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/formula.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/global_curve_fit.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/global_fit.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/interp2d.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/linecut.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/magnetic.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/magnetometry.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/map.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/mcmc.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/optics.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/pawley.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/peak_batch.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/peak_fit.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/peak_integrate.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/peak_multifit.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/peak_track.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/peaks.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/peakshapes.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/plotting.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/processing.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/qspace.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/reductions.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/reductions_fft.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/refl_sld_presets.json +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/reflectivity.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/registry.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/relaxation.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/report.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/report_emit.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/resample.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/rsm.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/rsm_analyze.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/semiconductor.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/sld.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/sld_formula.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/spectral.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/statplots.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/stats.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/stats_anova2.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/stats_anova_ext.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/stats_dist.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/stats_glm.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/stats_multivar.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/stats_roc.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/stats_survival.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/stats_tests.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/substrates.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/superconductor.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/surface_fit.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/surface_models.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/thermal.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/thin_film.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/unit_convert.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/units.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/vacuum.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/calc/xray.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/cli.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/datastruct.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/__init__.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/_hdf5_layout.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/_jcamp_asdf.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/_xrdml_scan.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/base.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/bruker_brml.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/bruker_raw.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/cif.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/consolidated.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/delimited.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/excel.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/hdf5.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/import_filters.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/import_preview.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/jcamp.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/lakeshore.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/ncnr.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/netcdf.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/opus.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/origin.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/origin_com.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/origin_project/__init__.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/origin_project/annotation_marks.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/origin_project/container.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/origin_project/curve_style_color.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/origin_project/figure_geometry.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/origin_project/figure_layers.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/origin_project/figure_text.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/origin_project/figures.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/origin_project/figures_opju.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/origin_project/notes.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/origin_project/opj.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/origin_project/opj_curves.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/origin_project/opj_shapes.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/origin_project/opju.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/origin_project/opju_axis_real_form.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/origin_project/opju_axis_specimen_form.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/origin_project/opju_codec.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/origin_project/opju_curves.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/origin_project/opju_curves_allcols.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/origin_project/opju_figure_curves.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/origin_project/opju_figure_text.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/origin_project/opju_reports.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/origin_project/origin_richtext.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/origin_project/preview.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/origin_project/templates.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/origin_project/tree.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/origin_project/tree_opju.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/origin_project/windows.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/origin_project/windows_opju.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/origin_project/writer.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/origin_project/writer_blocks.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/qd.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/refl1d.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/registry.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/report_export.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/rigaku.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/sims.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/spc.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/xrd_csv.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/io/xrdml.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/jobs.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/plugins/__init__.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/plugins/contract.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/plugins/loader.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/plugins/steps.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/__init__.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/_bookcache.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/_export_common.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/_payload.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/_uploadcache.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/aggregate.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/baseline.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/books.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/calc.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/corrections.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/crystallography.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/diffusion.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/electrical.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/electrochemistry.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/export.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/export_facets.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/export_figures.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/export_page.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/fitting.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/fitting_bumps.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/import_template.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/import_wizard.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/jobs_api.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/magnetic.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/magnetometry.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/optics.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/parsers.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/peaks.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/plot.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/reductions.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/reference.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/reflectivity.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/report_export.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/rsm.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/samples.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/semiconductor.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/sld.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/spectral.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/statplots.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/stats.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/stats_design.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/substrates.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/superconductor.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/thermal.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/thin_film.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/vacuum.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/routes/xray.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/samples/demo_vsm.csv +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/server_launch.py +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/web/assets/JetBrainsMono-Bold-CUogYd9I.woff2 +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/web/assets/JetBrainsMono-Regular-CA-Os4ii.woff2 +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/web/assets/index-BHmmCL-x.js +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/web/assets/index-BiZzN7J6.css +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/web/index.html +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/src/quantized/web/loading.html +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/tools/origin_compare/README.md +0 -0
- {quantized_lab-0.8.0 → quantized_lab-0.8.1}/tools/visual/README.md +0 -0
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: quantized-lab
|
|
3
|
+
Version: 0.8.1
|
|
4
|
+
Summary: Plot, analyze, and publish lab data - magnetometry, XRD, reflectometry - with OriginPro file interop, golden-verified analysis, and reproducible pipelines.
|
|
5
|
+
Project-URL: Homepage, https://github.com/pquarterman17/quantized
|
|
6
|
+
Project-URL: Documentation, https://github.com/pquarterman17/quantized/wiki
|
|
7
|
+
Project-URL: Repository, https://github.com/pquarterman17/quantized
|
|
8
|
+
Project-URL: Releases, https://github.com/pquarterman17/quantized/releases
|
|
9
|
+
Project-URL: Issues, https://github.com/pquarterman17/quantized/issues
|
|
10
|
+
Author: Paige Quarterman
|
|
11
|
+
License-Expression: Apache-2.0
|
|
12
|
+
License-File: LICENSE
|
|
13
|
+
License-File: NOTICE
|
|
14
|
+
Requires-Python: >=3.11
|
|
15
|
+
Requires-Dist: fastapi>=0.139.0
|
|
16
|
+
Requires-Dist: h5py>=3.10
|
|
17
|
+
Requires-Dist: matplotlib>=3.11.0
|
|
18
|
+
Requires-Dist: numpy>=1.26
|
|
19
|
+
Requires-Dist: openpyxl>=3.1
|
|
20
|
+
Requires-Dist: periodictable>=1.7
|
|
21
|
+
Requires-Dist: platformdirs>=4.10.0
|
|
22
|
+
Requires-Dist: pydantic>=2.7
|
|
23
|
+
Requires-Dist: python-multipart>=0.0.32
|
|
24
|
+
Requires-Dist: scipy>=1.11
|
|
25
|
+
Requires-Dist: uvicorn[standard]>=0.51.0
|
|
26
|
+
Provides-Extra: bumps
|
|
27
|
+
Requires-Dist: bumps>=1.0; extra == 'bumps'
|
|
28
|
+
Provides-Extra: desktop
|
|
29
|
+
Requires-Dist: pywebview>=5.1; extra == 'desktop'
|
|
30
|
+
Provides-Extra: office
|
|
31
|
+
Requires-Dist: python-docx>=1.1; extra == 'office'
|
|
32
|
+
Requires-Dist: python-pptx>=1.0; extra == 'office'
|
|
33
|
+
Provides-Extra: origin-com
|
|
34
|
+
Requires-Dist: pywin32; (sys_platform == 'win32') and extra == 'origin-com'
|
|
35
|
+
Provides-Extra: stats
|
|
36
|
+
Requires-Dist: lifelines>=0.27; extra == 'stats'
|
|
37
|
+
Requires-Dist: statsmodels>=0.14; extra == 'stats'
|
|
38
|
+
Description-Content-Type: text/markdown
|
|
39
|
+
|
|
40
|
+
# quantized
|
|
41
|
+
|
|
42
|
+
**Plot, analyze, and publish lab data — magnetometry, X-ray/neutron
|
|
43
|
+
diffraction & reflectometry, transport — in one fast, reproducible app.**
|
|
44
|
+
|
|
45
|
+
A clean-architecture Python (FastAPI) + React application, born as a port
|
|
46
|
+
of the `quantized_matlab` scientific toolbox and grown into a full
|
|
47
|
+
OriginPro-class daily driver. Backend math is **golden-verified** against
|
|
48
|
+
the MATLAB original; the GUI is a ground-up revamp.
|
|
49
|
+
|
|
50
|
+
> **Install:** `pip install quantized-lab` → run `qz`
|
|
51
|
+
> (the PyPI name is `quantized-lab`; the package you import and the
|
|
52
|
+
> commands you run are plain `quantized` / `qz`)
|
|
53
|
+
|
|
54
|
+
## What it does
|
|
55
|
+
|
|
56
|
+
**Import instrument data** — Quantum Design VSM/PPMS/MPMS, Lake Shore VSM,
|
|
57
|
+
PANalytical XRDML (1-D scans *and* 2-D reciprocal-space maps with Q-space),
|
|
58
|
+
Rigaku, NCNR reflectometry/PNR, refl1d, SIMS, generic CSV/Excel — with
|
|
59
|
+
content sniffing for ambiguous extensions, drag-drop, paste, guided import
|
|
60
|
+
wizard, and one-click re-import when the source file changes.
|
|
61
|
+
|
|
62
|
+
**Read and write OriginPro files** — native, clean-room `.opj`/`.opju`
|
|
63
|
+
readers recover workbooks, figures (with styles, legends, annotations),
|
|
64
|
+
and notes; the `.opj` writer produces projects real Origin loads; plus
|
|
65
|
+
Origin-ASCII + `.ogs` scripts, `.otp` template import, and an optional
|
|
66
|
+
Windows COM "Send to Origin" bridge.
|
|
67
|
+
|
|
68
|
+
**Explore interactively** — an Origin-style pointer tool (drag, resize,
|
|
69
|
+
and pin plot text; draggable legends), multi-window MDI with linked
|
|
70
|
+
zoom/cursor groups, a ctrl-click panel builder (side-by-side / grid /
|
|
71
|
+
overlay with automatic dual-Y by unit family), linked row selection and
|
|
72
|
+
masking across every view, worksheet with formulas and filters, and
|
|
73
|
+
app-wide **undo/redo**.
|
|
74
|
+
|
|
75
|
+
**Analyze with domain depth** — 29+ fit models plus a no-eval custom
|
|
76
|
+
equation builder, AICc model scanning, global/batch/ODR fits, an optional
|
|
77
|
+
[bumps](https://github.com/bumps/bumps) engine with DREAM posterior
|
|
78
|
+
sampling; a Peak Analyzer wizard; baselines from ALS to Shirley to
|
|
79
|
+
interactive anchor points; Parratt reflectivity; RSM strain analysis;
|
|
80
|
+
Williamson-Hall, FFT film thickness, and reflectivity-FFT reductions;
|
|
81
|
+
hysteresis, relaxation, and a full statistics suite.
|
|
82
|
+
|
|
83
|
+
**Publish** — vector PDF/SVG export (server-rendered matplotlib) that
|
|
84
|
+
matches the screen: rich-text labels (µ₀H, Å⁻¹, χ″…), journal size
|
|
85
|
+
presets (APS/Nature/thesis…), per-series styles, fills, color-mapped
|
|
86
|
+
scatter, engineering/scientific tick formats, and a multi-panel figure
|
|
87
|
+
composer for Fig. 1(a)–(d)-style pages.
|
|
88
|
+
|
|
89
|
+
**Stay reproducible** — every correction is a replayable pipeline step
|
|
90
|
+
with a recalculation DAG, a macro recorder emits runnable scripts,
|
|
91
|
+
workspaces save to a single `.dwk` file, and everything is scriptable
|
|
92
|
+
through the HTTP API and a plugin system.
|
|
93
|
+
|
|
94
|
+
**DiraCulator** — the built-in materials calculators (units, X-ray/neutron,
|
|
95
|
+
crystallography, SLD, semiconductors, superconductors, magnetism, optics,
|
|
96
|
+
vacuum, and more) also launch standalone: `diraculator` (or
|
|
97
|
+
`qz --calc`), with its own Start Menu entry in the Windows installer.
|
|
98
|
+
|
|
99
|
+
## Scope
|
|
100
|
+
|
|
101
|
+
Magnetometry / XRD / reflectometry / lab-data analysis. Electron-microscopy
|
|
102
|
+
tooling (EELS/EDS, imaging) is **out of scope** and lives in the separate
|
|
103
|
+
`fermiviewer` project.
|
|
104
|
+
|
|
105
|
+
## Run it
|
|
106
|
+
|
|
107
|
+
| Method | Command | Notes |
|
|
108
|
+
|--------|---------|-------|
|
|
109
|
+
| pipx (recommended) | `pipx install quantized-lab && qz` | isolated env, `qz` on PATH, no dev tools needed |
|
|
110
|
+
| uv tool | `uv tool install quantized-lab && qz` | same idea, via `uv` |
|
|
111
|
+
| pip | `pip install quantized-lab && qz` | into whatever env is active |
|
|
112
|
+
| Native installer | download from [Releases](https://github.com/pquarterman17/quantized/releases) | Windows `.exe` (NSIS, auto-updates), macOS `.dmg`, Linux `.deb` — no Python required |
|
|
113
|
+
| From source | see below | for development |
|
|
114
|
+
|
|
115
|
+
Once installed, `qz` serves the app at `http://127.0.0.1:8000` and opens a
|
|
116
|
+
browser tab. An empty library shows a **"Drop files here, or use ⊞ to import
|
|
117
|
+
/ ✚ for a demo"** hint — click **✚** for an instant synthetic dataset, so a
|
|
118
|
+
fresh install has something to plot within seconds.
|
|
119
|
+
|
|
120
|
+
**From source — double-click a launcher** (builds the UI + installs deps on
|
|
121
|
+
first run, then opens the app in your browser):
|
|
122
|
+
|
|
123
|
+
- **Windows:** double-click `run.cmd`
|
|
124
|
+
- **macOS:** double-click `run.command` (first time: right-click → Open)
|
|
125
|
+
|
|
126
|
+
**Or one command** (after `uv` + Node.js are installed):
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
# first time only: build the UI bundle the app serves
|
|
130
|
+
cd frontend && npm install && npm run build && cd ..
|
|
131
|
+
|
|
132
|
+
uv run qz # serve on :8000 and open a browser tab
|
|
133
|
+
uv run qz --port 9000 # different port
|
|
134
|
+
uv run qz --no-browser # headless (don't open a tab; never auto-exits)
|
|
135
|
+
uv run qz --desktop # native window (needs: pip install quantized-lab[desktop])
|
|
136
|
+
uv run qz --dev # contributor mode: Vite HMR + reloading backend
|
|
137
|
+
uv run diraculator # the materials calculators, standalone
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
The default mode behaves like an app: closing the last browser tab shuts
|
|
141
|
+
the server down (a page refresh doesn't). Set `QZ_AUTO_SHUTDOWN=0` to opt
|
|
142
|
+
out, use `--no-browser` for a persistent/headless server, or stop any mode
|
|
143
|
+
with **Ctrl+C** in its window. A busy port falls back to a free one
|
|
144
|
+
automatically, so the app and a standalone DiraCulator coexist.
|
|
145
|
+
|
|
146
|
+
Building your own wheel/sdist? Build the frontend **first** —
|
|
147
|
+
`cd frontend && npm ci && npm run build` — before `uv build`, or the wheel
|
|
148
|
+
ships without a UI.
|
|
149
|
+
|
|
150
|
+
## Documentation
|
|
151
|
+
|
|
152
|
+
- **[Wiki](https://github.com/pquarterman17/quantized/wiki)** — installation,
|
|
153
|
+
getting started, feature guides, Origin interop
|
|
154
|
+
- **[Releases](https://github.com/pquarterman17/quantized/releases)** —
|
|
155
|
+
installers + changelogs
|
|
156
|
+
- [`RELEASE.md`](https://github.com/pquarterman17/quantized/blob/main/RELEASE.md)
|
|
157
|
+
— how releases are built and published
|
|
158
|
+
- In-app: **⌘K** command palette, **Help ▸ Keyboard shortcuts**, and
|
|
159
|
+
**Help ▸ Text formatting** for the rich-text label syntax
|
|
160
|
+
|
|
161
|
+
## Architecture (for contributors)
|
|
162
|
+
|
|
163
|
+
Pure `io/` + `calc/` libraries (data in → results out, no web imports),
|
|
164
|
+
thin FastAPI `routes/`, a 500-line per-module ceiling, ~400-line React
|
|
165
|
+
component ceiling, and **golden tests** that freeze MATLAB outputs as the
|
|
166
|
+
parity oracle — enforced by tests, not convention. See
|
|
167
|
+
[`CLAUDE.md`](https://github.com/pquarterman17/quantized/blob/main/CLAUDE.md).
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
uv sync --group dev # backend deps
|
|
171
|
+
uv run pytest # backend tests (+ `-m golden` for MATLAB parity)
|
|
172
|
+
uv run ruff check src tests && uv run mypy src
|
|
173
|
+
cd frontend && npm test && npm run build
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
License: Apache-2.0.
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
# quantized
|
|
2
|
+
|
|
3
|
+
**Plot, analyze, and publish lab data — magnetometry, X-ray/neutron
|
|
4
|
+
diffraction & reflectometry, transport — in one fast, reproducible app.**
|
|
5
|
+
|
|
6
|
+
A clean-architecture Python (FastAPI) + React application, born as a port
|
|
7
|
+
of the `quantized_matlab` scientific toolbox and grown into a full
|
|
8
|
+
OriginPro-class daily driver. Backend math is **golden-verified** against
|
|
9
|
+
the MATLAB original; the GUI is a ground-up revamp.
|
|
10
|
+
|
|
11
|
+
> **Install:** `pip install quantized-lab` → run `qz`
|
|
12
|
+
> (the PyPI name is `quantized-lab`; the package you import and the
|
|
13
|
+
> commands you run are plain `quantized` / `qz`)
|
|
14
|
+
|
|
15
|
+
## What it does
|
|
16
|
+
|
|
17
|
+
**Import instrument data** — Quantum Design VSM/PPMS/MPMS, Lake Shore VSM,
|
|
18
|
+
PANalytical XRDML (1-D scans *and* 2-D reciprocal-space maps with Q-space),
|
|
19
|
+
Rigaku, NCNR reflectometry/PNR, refl1d, SIMS, generic CSV/Excel — with
|
|
20
|
+
content sniffing for ambiguous extensions, drag-drop, paste, guided import
|
|
21
|
+
wizard, and one-click re-import when the source file changes.
|
|
22
|
+
|
|
23
|
+
**Read and write OriginPro files** — native, clean-room `.opj`/`.opju`
|
|
24
|
+
readers recover workbooks, figures (with styles, legends, annotations),
|
|
25
|
+
and notes; the `.opj` writer produces projects real Origin loads; plus
|
|
26
|
+
Origin-ASCII + `.ogs` scripts, `.otp` template import, and an optional
|
|
27
|
+
Windows COM "Send to Origin" bridge.
|
|
28
|
+
|
|
29
|
+
**Explore interactively** — an Origin-style pointer tool (drag, resize,
|
|
30
|
+
and pin plot text; draggable legends), multi-window MDI with linked
|
|
31
|
+
zoom/cursor groups, a ctrl-click panel builder (side-by-side / grid /
|
|
32
|
+
overlay with automatic dual-Y by unit family), linked row selection and
|
|
33
|
+
masking across every view, worksheet with formulas and filters, and
|
|
34
|
+
app-wide **undo/redo**.
|
|
35
|
+
|
|
36
|
+
**Analyze with domain depth** — 29+ fit models plus a no-eval custom
|
|
37
|
+
equation builder, AICc model scanning, global/batch/ODR fits, an optional
|
|
38
|
+
[bumps](https://github.com/bumps/bumps) engine with DREAM posterior
|
|
39
|
+
sampling; a Peak Analyzer wizard; baselines from ALS to Shirley to
|
|
40
|
+
interactive anchor points; Parratt reflectivity; RSM strain analysis;
|
|
41
|
+
Williamson-Hall, FFT film thickness, and reflectivity-FFT reductions;
|
|
42
|
+
hysteresis, relaxation, and a full statistics suite.
|
|
43
|
+
|
|
44
|
+
**Publish** — vector PDF/SVG export (server-rendered matplotlib) that
|
|
45
|
+
matches the screen: rich-text labels (µ₀H, Å⁻¹, χ″…), journal size
|
|
46
|
+
presets (APS/Nature/thesis…), per-series styles, fills, color-mapped
|
|
47
|
+
scatter, engineering/scientific tick formats, and a multi-panel figure
|
|
48
|
+
composer for Fig. 1(a)–(d)-style pages.
|
|
49
|
+
|
|
50
|
+
**Stay reproducible** — every correction is a replayable pipeline step
|
|
51
|
+
with a recalculation DAG, a macro recorder emits runnable scripts,
|
|
52
|
+
workspaces save to a single `.dwk` file, and everything is scriptable
|
|
53
|
+
through the HTTP API and a plugin system.
|
|
54
|
+
|
|
55
|
+
**DiraCulator** — the built-in materials calculators (units, X-ray/neutron,
|
|
56
|
+
crystallography, SLD, semiconductors, superconductors, magnetism, optics,
|
|
57
|
+
vacuum, and more) also launch standalone: `diraculator` (or
|
|
58
|
+
`qz --calc`), with its own Start Menu entry in the Windows installer.
|
|
59
|
+
|
|
60
|
+
## Scope
|
|
61
|
+
|
|
62
|
+
Magnetometry / XRD / reflectometry / lab-data analysis. Electron-microscopy
|
|
63
|
+
tooling (EELS/EDS, imaging) is **out of scope** and lives in the separate
|
|
64
|
+
`fermiviewer` project.
|
|
65
|
+
|
|
66
|
+
## Run it
|
|
67
|
+
|
|
68
|
+
| Method | Command | Notes |
|
|
69
|
+
|--------|---------|-------|
|
|
70
|
+
| pipx (recommended) | `pipx install quantized-lab && qz` | isolated env, `qz` on PATH, no dev tools needed |
|
|
71
|
+
| uv tool | `uv tool install quantized-lab && qz` | same idea, via `uv` |
|
|
72
|
+
| pip | `pip install quantized-lab && qz` | into whatever env is active |
|
|
73
|
+
| Native installer | download from [Releases](https://github.com/pquarterman17/quantized/releases) | Windows `.exe` (NSIS, auto-updates), macOS `.dmg`, Linux `.deb` — no Python required |
|
|
74
|
+
| From source | see below | for development |
|
|
75
|
+
|
|
76
|
+
Once installed, `qz` serves the app at `http://127.0.0.1:8000` and opens a
|
|
77
|
+
browser tab. An empty library shows a **"Drop files here, or use ⊞ to import
|
|
78
|
+
/ ✚ for a demo"** hint — click **✚** for an instant synthetic dataset, so a
|
|
79
|
+
fresh install has something to plot within seconds.
|
|
80
|
+
|
|
81
|
+
**From source — double-click a launcher** (builds the UI + installs deps on
|
|
82
|
+
first run, then opens the app in your browser):
|
|
83
|
+
|
|
84
|
+
- **Windows:** double-click `run.cmd`
|
|
85
|
+
- **macOS:** double-click `run.command` (first time: right-click → Open)
|
|
86
|
+
|
|
87
|
+
**Or one command** (after `uv` + Node.js are installed):
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
# first time only: build the UI bundle the app serves
|
|
91
|
+
cd frontend && npm install && npm run build && cd ..
|
|
92
|
+
|
|
93
|
+
uv run qz # serve on :8000 and open a browser tab
|
|
94
|
+
uv run qz --port 9000 # different port
|
|
95
|
+
uv run qz --no-browser # headless (don't open a tab; never auto-exits)
|
|
96
|
+
uv run qz --desktop # native window (needs: pip install quantized-lab[desktop])
|
|
97
|
+
uv run qz --dev # contributor mode: Vite HMR + reloading backend
|
|
98
|
+
uv run diraculator # the materials calculators, standalone
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
The default mode behaves like an app: closing the last browser tab shuts
|
|
102
|
+
the server down (a page refresh doesn't). Set `QZ_AUTO_SHUTDOWN=0` to opt
|
|
103
|
+
out, use `--no-browser` for a persistent/headless server, or stop any mode
|
|
104
|
+
with **Ctrl+C** in its window. A busy port falls back to a free one
|
|
105
|
+
automatically, so the app and a standalone DiraCulator coexist.
|
|
106
|
+
|
|
107
|
+
Building your own wheel/sdist? Build the frontend **first** —
|
|
108
|
+
`cd frontend && npm ci && npm run build` — before `uv build`, or the wheel
|
|
109
|
+
ships without a UI.
|
|
110
|
+
|
|
111
|
+
## Documentation
|
|
112
|
+
|
|
113
|
+
- **[Wiki](https://github.com/pquarterman17/quantized/wiki)** — installation,
|
|
114
|
+
getting started, feature guides, Origin interop
|
|
115
|
+
- **[Releases](https://github.com/pquarterman17/quantized/releases)** —
|
|
116
|
+
installers + changelogs
|
|
117
|
+
- [`RELEASE.md`](https://github.com/pquarterman17/quantized/blob/main/RELEASE.md)
|
|
118
|
+
— how releases are built and published
|
|
119
|
+
- In-app: **⌘K** command palette, **Help ▸ Keyboard shortcuts**, and
|
|
120
|
+
**Help ▸ Text formatting** for the rich-text label syntax
|
|
121
|
+
|
|
122
|
+
## Architecture (for contributors)
|
|
123
|
+
|
|
124
|
+
Pure `io/` + `calc/` libraries (data in → results out, no web imports),
|
|
125
|
+
thin FastAPI `routes/`, a 500-line per-module ceiling, ~400-line React
|
|
126
|
+
component ceiling, and **golden tests** that freeze MATLAB outputs as the
|
|
127
|
+
parity oracle — enforced by tests, not convention. See
|
|
128
|
+
[`CLAUDE.md`](https://github.com/pquarterman17/quantized/blob/main/CLAUDE.md).
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
uv sync --group dev # backend deps
|
|
132
|
+
uv run pytest # backend tests (+ `-m golden` for MATLAB parity)
|
|
133
|
+
uv run ruff check src tests && uv run mypy src
|
|
134
|
+
cd frontend && npm test && npm run build
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
License: Apache-2.0.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "quantized-lab"
|
|
3
|
-
version = "0.8.
|
|
4
|
-
description = "
|
|
3
|
+
version = "0.8.1"
|
|
4
|
+
description = "Plot, analyze, and publish lab data - magnetometry, XRD, reflectometry - with OriginPro file interop, golden-verified analysis, and reproducible pipelines."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.11"
|
|
7
7
|
license = "Apache-2.0"
|
|
@@ -20,6 +20,13 @@ dependencies = [
|
|
|
20
20
|
"platformdirs>=4.10.0",
|
|
21
21
|
]
|
|
22
22
|
|
|
23
|
+
[project.urls]
|
|
24
|
+
Homepage = "https://github.com/pquarterman17/quantized"
|
|
25
|
+
Documentation = "https://github.com/pquarterman17/quantized/wiki"
|
|
26
|
+
Repository = "https://github.com/pquarterman17/quantized"
|
|
27
|
+
Releases = "https://github.com/pquarterman17/quantized/releases"
|
|
28
|
+
Issues = "https://github.com/pquarterman17/quantized/issues"
|
|
29
|
+
|
|
23
30
|
[project.scripts]
|
|
24
31
|
qz = "quantized.cli:main"
|
|
25
32
|
quantized = "quantized.cli:main"
|
quantized_lab-0.8.0/PKG-INFO
DELETED
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: quantized-lab
|
|
3
|
-
Version: 0.8.0
|
|
4
|
-
Summary: Clean-architecture Python + React port of the quantized_matlab scientific toolbox (magnetometry / XRD / lab data).
|
|
5
|
-
Author: Paige Quarterman
|
|
6
|
-
License-Expression: Apache-2.0
|
|
7
|
-
License-File: LICENSE
|
|
8
|
-
License-File: NOTICE
|
|
9
|
-
Requires-Python: >=3.11
|
|
10
|
-
Requires-Dist: fastapi>=0.139.0
|
|
11
|
-
Requires-Dist: h5py>=3.10
|
|
12
|
-
Requires-Dist: matplotlib>=3.11.0
|
|
13
|
-
Requires-Dist: numpy>=1.26
|
|
14
|
-
Requires-Dist: openpyxl>=3.1
|
|
15
|
-
Requires-Dist: periodictable>=1.7
|
|
16
|
-
Requires-Dist: platformdirs>=4.10.0
|
|
17
|
-
Requires-Dist: pydantic>=2.7
|
|
18
|
-
Requires-Dist: python-multipart>=0.0.32
|
|
19
|
-
Requires-Dist: scipy>=1.11
|
|
20
|
-
Requires-Dist: uvicorn[standard]>=0.51.0
|
|
21
|
-
Provides-Extra: bumps
|
|
22
|
-
Requires-Dist: bumps>=1.0; extra == 'bumps'
|
|
23
|
-
Provides-Extra: desktop
|
|
24
|
-
Requires-Dist: pywebview>=5.1; extra == 'desktop'
|
|
25
|
-
Provides-Extra: office
|
|
26
|
-
Requires-Dist: python-docx>=1.1; extra == 'office'
|
|
27
|
-
Requires-Dist: python-pptx>=1.0; extra == 'office'
|
|
28
|
-
Provides-Extra: origin-com
|
|
29
|
-
Requires-Dist: pywin32; (sys_platform == 'win32') and extra == 'origin-com'
|
|
30
|
-
Provides-Extra: stats
|
|
31
|
-
Requires-Dist: lifelines>=0.27; extra == 'stats'
|
|
32
|
-
Requires-Dist: statsmodels>=0.14; extra == 'stats'
|
|
33
|
-
Description-Content-Type: text/markdown
|
|
34
|
-
|
|
35
|
-
# quantized
|
|
36
|
-
|
|
37
|
-
A clean-architecture Python + React port of the
|
|
38
|
-
[`quantized_matlab`](../quantized_matlab) scientific data toolbox for
|
|
39
|
-
magnetometry, X-ray/neutron diffraction, and generic lab data.
|
|
40
|
-
|
|
41
|
-
- **Backend parity** with the MATLAB toolbox: parsers, corrections,
|
|
42
|
-
plotting, peak & curve fitting, materials calculators (DiraCulator),
|
|
43
|
-
and a spreadsheet workspace (DataWorkspace).
|
|
44
|
-
- **Revamped GUI** built fresh in React, sharing the look-and-feel and
|
|
45
|
-
component conventions of the sibling [`fermiviewer`](../fermiviewer)
|
|
46
|
-
Python app.
|
|
47
|
-
- **Architecture that holds the line:** pure `io/` + `calc/` libraries,
|
|
48
|
-
thin FastAPI `routes/`, a 500-line per-module ceiling, and golden tests
|
|
49
|
-
that freeze MATLAB outputs as the parity oracle — so this port never
|
|
50
|
-
grows the god-scripts the MATLAB original accumulated.
|
|
51
|
-
|
|
52
|
-
> Status: **active development** — backend + GUI are functional; native
|
|
53
|
-
> installers and PyPI packages publish from tagged releases (see
|
|
54
|
-
> [`RELEASE.md`](RELEASE.md)). See [`plans/PORT_PLAN.md`](plans/PORT_PLAN.md)
|
|
55
|
-
> for the detailed workstream plan, and [`CLAUDE.md`](CLAUDE.md) for the
|
|
56
|
-
> architecture hard-rules.
|
|
57
|
-
|
|
58
|
-
## Scope
|
|
59
|
-
|
|
60
|
-
Magnetometry / XRD / lab-data analysis (parity with `quantized_matlab`).
|
|
61
|
-
Electron-microscopy tooling (Fermi viewer, EELS/EDS, imaging) is **out of
|
|
62
|
-
scope** and lives in the separate `fermiviewer` project.
|
|
63
|
-
|
|
64
|
-
## Run it
|
|
65
|
-
|
|
66
|
-
**Install matrix** — pick whichever fits your workflow:
|
|
67
|
-
|
|
68
|
-
| Method | Command | Notes |
|
|
69
|
-
|--------|---------|-------|
|
|
70
|
-
| pipx (recommended) | `pipx install quantized-lab && qz` | isolated env, `qz` on PATH, no dev tools needed |
|
|
71
|
-
| uv tool | `uv tool install quantized-lab && qz` | same idea, via `uv` |
|
|
72
|
-
| pip | `pip install quantized-lab && qz` | into whatever env is active |
|
|
73
|
-
| Native installer | download from [Releases](https://github.com/pquarterman17/quantized/releases) | Windows `.exe` (NSIS, auto-updates), macOS `.dmg`, Linux `.deb` — no Python required, see [`RELEASE.md`](RELEASE.md) |
|
|
74
|
-
| From source | see below | for development |
|
|
75
|
-
|
|
76
|
-
Once installed, `qz` serves the app at `http://127.0.0.1:8000` and opens a
|
|
77
|
-
browser tab. An empty library shows a **"Drop files here, or use ⊞ to import
|
|
78
|
-
/ ✚ for a demo"** hint — click **✚** for an instant synthetic dataset (built
|
|
79
|
-
client-side), or hit `GET /api/samples/demo` for a bundled sample dataset
|
|
80
|
-
parsed server-side through the normal import path — so a fresh install has
|
|
81
|
-
something to plot within seconds, no data file required.
|
|
82
|
-
|
|
83
|
-
**From source — double-click a launcher** (builds the UI + installs deps on
|
|
84
|
-
first run, then opens the app in your browser):
|
|
85
|
-
|
|
86
|
-
- **Windows:** double-click [`run.cmd`](run.cmd)
|
|
87
|
-
- **macOS:** double-click [`run.command`](run.command) (first time:
|
|
88
|
-
right-click → Open)
|
|
89
|
-
|
|
90
|
-
**Or one command** (after `uv` + Node.js are installed):
|
|
91
|
-
|
|
92
|
-
```bash
|
|
93
|
-
# first time only: build the UI bundle the app serves
|
|
94
|
-
cd frontend && npm install && npm run build && cd ..
|
|
95
|
-
|
|
96
|
-
uv run qz # serve on :8000 and open a browser tab
|
|
97
|
-
uv run qz --port 9000 # different port
|
|
98
|
-
uv run qz --no-browser # headless (don't open a tab; never auto-exits)
|
|
99
|
-
uv run qz --desktop # native window (needs: pip install quantized-lab[desktop])
|
|
100
|
-
uv run qz --dev # contributor mode: Vite HMR + reloading backend
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
The default mode behaves like an app: closing the last browser tab shuts
|
|
104
|
-
the server down (a page refresh doesn't). Set `QZ_AUTO_SHUTDOWN=0` to opt
|
|
105
|
-
out, use `--no-browser` for a persistent/headless server, or stop any mode
|
|
106
|
-
with **Ctrl+C** in its window.
|
|
107
|
-
|
|
108
|
-
Building your own wheel/sdist (e.g. for `pip install .`)? Build the frontend
|
|
109
|
-
**first** — `cd frontend && npm ci && npm run build` — before `uv build` /
|
|
110
|
-
`python -m build`, or the wheel ships without a UI (`qz` still runs; it just
|
|
111
|
-
prints a "UI not built" warning instead of serving one).
|
|
112
|
-
|
|
113
|
-
## Develop
|
|
114
|
-
|
|
115
|
-
```bash
|
|
116
|
-
uv sync --group dev # backend deps
|
|
117
|
-
uv run pytest # backend tests (+ `-m golden` for MATLAB parity)
|
|
118
|
-
uv run ruff check src tests && uv run mypy src
|
|
119
|
-
cd frontend && npm test && npm run build
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
License: Apache-2.0.
|
quantized_lab-0.8.0/README.md
DELETED
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
# quantized
|
|
2
|
-
|
|
3
|
-
A clean-architecture Python + React port of the
|
|
4
|
-
[`quantized_matlab`](../quantized_matlab) scientific data toolbox for
|
|
5
|
-
magnetometry, X-ray/neutron diffraction, and generic lab data.
|
|
6
|
-
|
|
7
|
-
- **Backend parity** with the MATLAB toolbox: parsers, corrections,
|
|
8
|
-
plotting, peak & curve fitting, materials calculators (DiraCulator),
|
|
9
|
-
and a spreadsheet workspace (DataWorkspace).
|
|
10
|
-
- **Revamped GUI** built fresh in React, sharing the look-and-feel and
|
|
11
|
-
component conventions of the sibling [`fermiviewer`](../fermiviewer)
|
|
12
|
-
Python app.
|
|
13
|
-
- **Architecture that holds the line:** pure `io/` + `calc/` libraries,
|
|
14
|
-
thin FastAPI `routes/`, a 500-line per-module ceiling, and golden tests
|
|
15
|
-
that freeze MATLAB outputs as the parity oracle — so this port never
|
|
16
|
-
grows the god-scripts the MATLAB original accumulated.
|
|
17
|
-
|
|
18
|
-
> Status: **active development** — backend + GUI are functional; native
|
|
19
|
-
> installers and PyPI packages publish from tagged releases (see
|
|
20
|
-
> [`RELEASE.md`](RELEASE.md)). See [`plans/PORT_PLAN.md`](plans/PORT_PLAN.md)
|
|
21
|
-
> for the detailed workstream plan, and [`CLAUDE.md`](CLAUDE.md) for the
|
|
22
|
-
> architecture hard-rules.
|
|
23
|
-
|
|
24
|
-
## Scope
|
|
25
|
-
|
|
26
|
-
Magnetometry / XRD / lab-data analysis (parity with `quantized_matlab`).
|
|
27
|
-
Electron-microscopy tooling (Fermi viewer, EELS/EDS, imaging) is **out of
|
|
28
|
-
scope** and lives in the separate `fermiviewer` project.
|
|
29
|
-
|
|
30
|
-
## Run it
|
|
31
|
-
|
|
32
|
-
**Install matrix** — pick whichever fits your workflow:
|
|
33
|
-
|
|
34
|
-
| Method | Command | Notes |
|
|
35
|
-
|--------|---------|-------|
|
|
36
|
-
| pipx (recommended) | `pipx install quantized-lab && qz` | isolated env, `qz` on PATH, no dev tools needed |
|
|
37
|
-
| uv tool | `uv tool install quantized-lab && qz` | same idea, via `uv` |
|
|
38
|
-
| pip | `pip install quantized-lab && qz` | into whatever env is active |
|
|
39
|
-
| Native installer | download from [Releases](https://github.com/pquarterman17/quantized/releases) | Windows `.exe` (NSIS, auto-updates), macOS `.dmg`, Linux `.deb` — no Python required, see [`RELEASE.md`](RELEASE.md) |
|
|
40
|
-
| From source | see below | for development |
|
|
41
|
-
|
|
42
|
-
Once installed, `qz` serves the app at `http://127.0.0.1:8000` and opens a
|
|
43
|
-
browser tab. An empty library shows a **"Drop files here, or use ⊞ to import
|
|
44
|
-
/ ✚ for a demo"** hint — click **✚** for an instant synthetic dataset (built
|
|
45
|
-
client-side), or hit `GET /api/samples/demo` for a bundled sample dataset
|
|
46
|
-
parsed server-side through the normal import path — so a fresh install has
|
|
47
|
-
something to plot within seconds, no data file required.
|
|
48
|
-
|
|
49
|
-
**From source — double-click a launcher** (builds the UI + installs deps on
|
|
50
|
-
first run, then opens the app in your browser):
|
|
51
|
-
|
|
52
|
-
- **Windows:** double-click [`run.cmd`](run.cmd)
|
|
53
|
-
- **macOS:** double-click [`run.command`](run.command) (first time:
|
|
54
|
-
right-click → Open)
|
|
55
|
-
|
|
56
|
-
**Or one command** (after `uv` + Node.js are installed):
|
|
57
|
-
|
|
58
|
-
```bash
|
|
59
|
-
# first time only: build the UI bundle the app serves
|
|
60
|
-
cd frontend && npm install && npm run build && cd ..
|
|
61
|
-
|
|
62
|
-
uv run qz # serve on :8000 and open a browser tab
|
|
63
|
-
uv run qz --port 9000 # different port
|
|
64
|
-
uv run qz --no-browser # headless (don't open a tab; never auto-exits)
|
|
65
|
-
uv run qz --desktop # native window (needs: pip install quantized-lab[desktop])
|
|
66
|
-
uv run qz --dev # contributor mode: Vite HMR + reloading backend
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
The default mode behaves like an app: closing the last browser tab shuts
|
|
70
|
-
the server down (a page refresh doesn't). Set `QZ_AUTO_SHUTDOWN=0` to opt
|
|
71
|
-
out, use `--no-browser` for a persistent/headless server, or stop any mode
|
|
72
|
-
with **Ctrl+C** in its window.
|
|
73
|
-
|
|
74
|
-
Building your own wheel/sdist (e.g. for `pip install .`)? Build the frontend
|
|
75
|
-
**first** — `cd frontend && npm ci && npm run build` — before `uv build` /
|
|
76
|
-
`python -m build`, or the wheel ships without a UI (`qz` still runs; it just
|
|
77
|
-
prints a "UI not built" warning instead of serving one).
|
|
78
|
-
|
|
79
|
-
## Develop
|
|
80
|
-
|
|
81
|
-
```bash
|
|
82
|
-
uv sync --group dev # backend deps
|
|
83
|
-
uv run pytest # backend tests (+ `-m golden` for MATLAB parity)
|
|
84
|
-
uv run ruff check src tests && uv run mypy src
|
|
85
|
-
cd frontend && npm test && npm run build
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
License: Apache-2.0.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|