From 21c610ee65ca155e9ef81dfe2d92e0c042b46457 Mon Sep 17 00:00:00 2001 From: Ameyanagi Date: Tue, 10 Feb 2026 01:16:36 +0900 Subject: [PATCH 1/8] Add FEFF85L fitting APIs with Rust runner and uv fixture workflow --- crates/xraytsubaki/README.md | 12 + crates/xraytsubaki/doc/feff-fitting-mvp.md | 36 + crates/xraytsubaki/src/prelude.rs | 7 + crates/xraytsubaki/src/xafs/fitting/errors.rs | 77 + .../xraytsubaki/src/xafs/fitting/feffdat.rs | 273 ++ crates/xraytsubaki/src/xafs/fitting/mod.rs | 63 + .../src/xafs/fitting/path_model.rs | 344 +++ crates/xraytsubaki/src/xafs/fitting/runner.rs | 804 ++++++ crates/xraytsubaki/src/xafs/fitting/solver.rs | 332 +++ .../xraytsubaki/src/xafs/fitting/transform.rs | 229 ++ crates/xraytsubaki/src/xafs/fitting/types.rs | 445 ++++ .../xraytsubaki/src/xafs/fitting/variables.rs | 411 +++ crates/xraytsubaki/src/xafs/mod.rs | 5 + .../xraytsubaki/tests/pythonscript/.gitignore | 2 + .../xraytsubaki/tests/pythonscript/README.md | 25 + .../tests/pythonscript/generate_test.py | 81 +- .../tests/pythonscript/pyproject.toml | 8 + crates/xraytsubaki/tests/pythonscript/uv.lock | 2368 +++++++++++++++++ .../xraytsubaki/tests/testfiles/feff0002.dat | 71 + .../tests/testfiles/feff_ff2chi_larch_ref.txt | 280 ++ .../tests/testfiles/feff_fit_target_larch.txt | 280 ++ .../testfiles/feff_path_chi_larch_ref.txt | 280 ++ .../xraytsubaki/tests/testfiles/feffcu01.dat | 71 + py-xraytsubaki/src/lib.rs | 1 + 24 files changed, 6495 insertions(+), 10 deletions(-) create mode 100644 crates/xraytsubaki/doc/feff-fitting-mvp.md create mode 100644 crates/xraytsubaki/src/xafs/fitting/errors.rs create mode 100644 crates/xraytsubaki/src/xafs/fitting/feffdat.rs create mode 100644 crates/xraytsubaki/src/xafs/fitting/mod.rs create mode 100644 crates/xraytsubaki/src/xafs/fitting/path_model.rs create mode 100644 crates/xraytsubaki/src/xafs/fitting/runner.rs create mode 100644 crates/xraytsubaki/src/xafs/fitting/solver.rs create mode 100644 crates/xraytsubaki/src/xafs/fitting/transform.rs create mode 100644 crates/xraytsubaki/src/xafs/fitting/types.rs create mode 100644 crates/xraytsubaki/src/xafs/fitting/variables.rs create mode 100644 crates/xraytsubaki/tests/pythonscript/.gitignore create mode 100644 crates/xraytsubaki/tests/pythonscript/README.md create mode 100644 crates/xraytsubaki/tests/pythonscript/pyproject.toml create mode 100644 crates/xraytsubaki/tests/pythonscript/uv.lock create mode 100644 crates/xraytsubaki/tests/testfiles/feff0002.dat create mode 100644 crates/xraytsubaki/tests/testfiles/feff_ff2chi_larch_ref.txt create mode 100644 crates/xraytsubaki/tests/testfiles/feff_fit_target_larch.txt create mode 100644 crates/xraytsubaki/tests/testfiles/feff_path_chi_larch_ref.txt create mode 100644 crates/xraytsubaki/tests/testfiles/feffcu01.dat diff --git a/crates/xraytsubaki/README.md b/crates/xraytsubaki/README.md index 7809159..f16bb0c 100644 --- a/crates/xraytsubaki/README.md +++ b/crates/xraytsubaki/README.md @@ -13,6 +13,18 @@ Additionally, this project seeks to leverage Rust's ecosystem to create a genera - [x] Standard EXAFS analysis (find_e0, preedge postedge normalization, AUTOBK, FFT, IFFT) - [x] Parallel processing using Rayon. (For example, M1 Macbook Pro with 10 cores can process 10000 spectra in 20 seconds, which is ~x10 enhancement without parallelization. Numpy + xraylarch takes 145 seconds.) - [x] Optimization on AUTOBK. The AUTOBK process were optimized with providing an analytical Jacobian to speed up the minimization process by Leverberg-Marquardt algorithm. +- [x] FEFF85L path-based EXAFS fitting in Rust core (`xfeffdat` parsing, `path2chi`, `ff2chi`, single-dataset R-space fit with shared expression variables). +- [x] FEFF85L pure-Rust module execution workflow (`resolve_feff_commands`, `run_feff`, `run_feff_and_load_paths`) starting from a provided FEFF executable path. + +## FEFF Fitting MVP Boundaries + +- Rust core only in this release (`crates/xraytsubaki`). +- FEFF85L execution path supports deterministic module resolution (`feff8l_rdinp`, `feff8l_pot`, `feff8l_xsph`, `feff8l_pathfinder`, `feff8l_genfmt`, `feff8l_ff2x`) and output discovery. +- Existing parse-only workflows with pre-generated `feffNNNN.dat` files remain supported. +- Single-dataset R-space fitting only. +- FEFF10 parsing/execution are reserved and return typed unsupported errors in this MVP. + +See `crates/xraytsubaki/doc/feff-fitting-mvp.md` for details and FEFF10 follow-up compatibility notes. ## Future Developments diff --git a/crates/xraytsubaki/doc/feff-fitting-mvp.md b/crates/xraytsubaki/doc/feff-fitting-mvp.md new file mode 100644 index 0000000..a49f483 --- /dev/null +++ b/crates/xraytsubaki/doc/feff-fitting-mvp.md @@ -0,0 +1,36 @@ +# FEFF Fitting MVP (Rust Core) + +This document describes the scope and compatibility guarantees of the first FEFF fitting implementation added in `add-feff85l-xafs-fitting`. + +## MVP Scope + +Implemented now: +- Rust-core APIs in `xraytsubaki::xafs::fitting`. +- FEFF85L command discovery and module execution from a caller-provided executable path. +- FEFF85L path file parsing for `feffNNNN.dat` style files. +- FEFF path model synthesis with `path2chi` and summed `ff2chi`. +- Single-dataset nonlinear fitting in R-space with configurable transform window/range. +- Shared fit variables plus expression-bound path parameters. +- Reference fixtures and parity-oriented regression checks against xraylarch-generated data. + +Out of scope in MVP: +- Python binding surface for fitting APIs. +- Multi-dataset/global fits. +- Non-R fitspaces (`k`, `q`, wavelet). +- FEFF10 execution support. + +## FEFF Flavor Compatibility + +- `FeffFlavor::Feff85L`: supported in this MVP. +- `FeffFlavor::Feff10`: intentionally returns a typed unsupported error. + +This explicit dispatch behavior is intentional to keep caller contracts stable while FEFF10 parsing is implemented in a follow-up. + +## FEFF10 Follow-up Path + +The extension path is: +1. Implement FEFF10 parser normalization into the existing `FeffDat` model. +2. Keep `path2chi`, `ff2chi`, and `feffit` API signatures unchanged. +3. Add FEFF10 fixtures and parity tests beside FEFF85L fixtures. + +No breaking API changes are expected for Rust callers when FEFF10 support is added. diff --git a/crates/xraytsubaki/src/prelude.rs b/crates/xraytsubaki/src/prelude.rs index 32e6f45..961b3a1 100644 --- a/crates/xraytsubaki/src/prelude.rs +++ b/crates/xraytsubaki/src/prelude.rs @@ -2,6 +2,13 @@ pub use crate::xafs::xasgroup::XASGroup; pub use crate::xafs::xasspectrum::XASSpectrum; pub use crate::xafs::background::{AUTOBKClampScalePolicy, AUTOBKSolver, BackgroundMethod, AUTOBK}; +pub use crate::xafs::fitting::{ + feffit, feffpath, ff2chi, parse_feff_path_file, path2chi, resolve_feff_commands, run_feff, + run_feff_and_load_paths, FeffDat, FeffExecutionMode, FeffFitDataset, FeffFitResult, + FeffFitTransform, FeffFlavor, FeffModuleCommand, FeffPathModel, FeffResolvedCommands, + FeffRunRequest, FeffRunResult, FitSpace, FitVariable, FitVariables, PathContribution, + PathParamSpec, +}; pub use crate::xafs::io; pub use crate::xafs::lmutils::LMParameters; // pub use crate::xafs::mathutils; diff --git a/crates/xraytsubaki/src/xafs/fitting/errors.rs b/crates/xraytsubaki/src/xafs/fitting/errors.rs new file mode 100644 index 0000000..a6f5df1 --- /dev/null +++ b/crates/xraytsubaki/src/xafs/fitting/errors.rs @@ -0,0 +1,77 @@ +use thiserror::Error; + +use super::types::FeffFlavor; + +#[derive(Error, Debug, Clone)] +pub enum FittingError { + #[error("unsupported FEFF flavor for this build: {flavor:?}")] + UnsupportedFeffFlavor { flavor: FeffFlavor }, + + #[error("failed to parse FEFF path file '{path}': {reason}")] + ParseFailed { path: String, reason: String }, + + #[error("invalid FEFF path data: {reason}")] + InvalidFeffData { reason: String }, + + #[error("expression evaluation failed for '{expr}': {reason}")] + ExpressionFailed { expr: String, reason: String }, + + #[error("undefined symbol in expression: {symbol}")] + UndefinedSymbol { symbol: String }, + + #[error("cyclic variable expression dependency detected at: {symbol}")] + CyclicExpression { symbol: String }, + + #[error("invalid fit transform configuration: {reason}")] + InvalidTransform { reason: String }, + + #[error("invalid fit dataset: {reason}")] + InvalidDataset { reason: String }, + + #[error("fitting requires at least one active FEFF path")] + EmptyPaths, + + #[error("fitting requires at least one varying variable")] + NoVaryingVariables, + + #[error("nonlinear solver failed: {reason}")] + SolverFailed { reason: String }, + + #[error("invalid FEFF executable path '{path}': {reason}")] + InvalidExecutablePath { path: String, reason: String }, + + #[error("FEFF workspace path does not exist or is not a directory: '{path}'")] + WorkspaceNotFound { path: String }, + + #[error("FEFF input file was not found: '{path}'")] + FeffInputNotFound { path: String }, + + #[error("required FEFF module executable could not be resolved: {module}")] + ExecutableNotFound { module: String }, + + #[error("failed to spawn FEFF module '{module}' using '{executable}': {reason}")] + ProcessSpawnFailed { + module: String, + executable: String, + reason: String, + }, + + #[error("FEFF module '{module}' exited with non-zero status {code}")] + ProcessFailed { module: String, code: i32 }, + + #[error("FEFF module '{module}' timed out after {timeout_sec}s")] + ProcessTimedOut { module: String, timeout_sec: u64 }, + + #[error("failed to read FEFF module output for '{module}': {reason}")] + OutputReadFailed { module: String, reason: String }, + + #[error("FEFF execution produced no path output files (feffNNNN.dat) in '{workspace}'")] + NoPathOutputs { workspace: String }, + + #[error("I/O failure during {action} for '{path}': {reason}")] + IOFailed { + action: String, + path: String, + reason: String, + }, +} diff --git a/crates/xraytsubaki/src/xafs/fitting/feffdat.rs b/crates/xraytsubaki/src/xafs/fitting/feffdat.rs new file mode 100644 index 0000000..2ca43ce --- /dev/null +++ b/crates/xraytsubaki/src/xafs/fitting/feffdat.rs @@ -0,0 +1,273 @@ +use std::fs; +use std::path::Path; + +use nalgebra::DVector; + +use super::errors::FittingError; +use super::types::{FeffDat, FeffFlavor}; + +pub fn parse_feff_path_file>( + path: P, + flavor: FeffFlavor, +) -> Result { + match flavor { + FeffFlavor::Feff85L => parse_feff85l_dat(path.as_ref()), + FeffFlavor::Feff10 => Err(FittingError::UnsupportedFeffFlavor { + flavor: FeffFlavor::Feff10, + }), + } +} + +fn parse_feff85l_dat(path: &Path) -> Result { + let content = fs::read_to_string(path).map_err(|error| FittingError::ParseFailed { + path: path.display().to_string(), + reason: error.to_string(), + })?; + + enum Mode { + Header, + Path, + Arrays, + } + + let mut mode = Mode::Header; + let mut title: Option = None; + let mut version = String::new(); + let mut shell: Option = None; + let mut absorber: Option = None; + + let mut nleg: Option = None; + let mut degen: Option = None; + let mut reff: Option = None; + let mut geometry: Vec = Vec::new(); + + let mut cols: Vec<[f64; 7]> = Vec::new(); + + for (line_number, raw_line) in content.lines().enumerate() { + let mut line = raw_line.trim(); + if line.starts_with('#') { + line = line.trim_start_matches('#').trim(); + } + if line.is_empty() { + continue; + } + + if title.is_none() { + // FEFF files traditionally contain title/version in line 1. + if line.len() > 64 { + title = Some(line[..64].trim().to_string()); + version = line[64..].trim().to_string(); + } else { + title = Some(line.to_string()); + } + continue; + } + + if line.starts_with('k') && line.contains("real[p]@#") { + mode = Mode::Arrays; + continue; + } + + if line.len() > 8 && line[2..].contains("----") { + mode = Mode::Path; + continue; + } + + match mode { + Mode::Header => { + if line.starts_with("Abs") && line.contains("shell") { + let words: Vec<&str> = line.split_whitespace().collect(); + if let Some(last) = words.last() { + shell = Some((*last).to_string()); + } + if words.len() >= 2 { + absorber = Some(words[0].to_string()); + } + } + } + Mode::Path => { + let words: Vec<&str> = line.split_whitespace().collect(); + if words.is_empty() { + continue; + } + + if nleg.is_none() { + if words.len() < 5 { + return Err(FittingError::ParseFailed { + path: path.display().to_string(), + reason: format!( + "line {}: expected at least 5 numeric values in path header", + line_number + 1 + ), + }); + } + let parsed = words + .iter() + .take(5) + .map(|item| { + item.parse::().map_err(|_| FittingError::ParseFailed { + path: path.display().to_string(), + reason: format!( + "line {}: invalid path header numeric value '{}'", + line_number + 1, + item + ), + }) + }) + .collect::, _>>()?; + + nleg = Some(parsed[0] as usize); + degen = Some(parsed[1]); + reff = Some(parsed[2]); + } else { + let label = words + .get(5) + .map(|value| (*value).to_string()) + .unwrap_or_else(|| format!("atom_{}", geometry.len())); + geometry.push(label); + } + } + Mode::Arrays => { + let words: Vec<&str> = line.split_whitespace().collect(); + if words.len() != 7 { + continue; + } + let values = words + .iter() + .map(|item| { + item.parse::().map_err(|_| FittingError::ParseFailed { + path: path.display().to_string(), + reason: format!( + "line {}: expected 7 floating values for array row", + line_number + 1 + ), + }) + }) + .collect::, _>>()?; + + let row: [f64; 7] = values.try_into().map_err(|_| FittingError::ParseFailed { + path: path.display().to_string(), + reason: format!( + "line {}: failed to convert parsed row to 7-column array", + line_number + 1 + ), + })?; + + if row.iter().any(|value| !value.is_finite()) { + return Err(FittingError::InvalidFeffData { + reason: format!("line {}: non-finite FEFF array value", line_number + 1), + }); + } + + cols.push(row); + } + } + } + + if cols.len() < 3 { + return Err(FittingError::InvalidFeffData { + reason: "FEFF array section must contain at least 3 rows".to_string(), + }); + } + + let nleg = nleg.ok_or_else(|| FittingError::InvalidFeffData { + reason: "missing path header (nleg/degen/reff)".to_string(), + })?; + let degen = degen.ok_or_else(|| FittingError::InvalidFeffData { + reason: "missing path degeneracy".to_string(), + })?; + let reff = reff.ok_or_else(|| FittingError::InvalidFeffData { + reason: "missing path reff".to_string(), + })?; + + if reff <= 0.0 { + return Err(FittingError::InvalidFeffData { + reason: format!("reff must be positive, got {reff}"), + }); + } + + let k = DVector::from_iterator(cols.len(), cols.iter().map(|row| row[0])); + for index in 1..k.len() { + if k[index] < k[index - 1] { + return Err(FittingError::InvalidFeffData { + reason: format!("k grid must be monotonic: k[{index}] < k[{}]", index - 1), + }); + } + } + + let real_phc = DVector::from_iterator(cols.len(), cols.iter().map(|row| row[1])); + let mag_feff = DVector::from_iterator(cols.len(), cols.iter().map(|row| row[2])); + let pha_feff = DVector::from_iterator(cols.len(), cols.iter().map(|row| row[3])); + let red_fact = DVector::from_iterator(cols.len(), cols.iter().map(|row| row[4])); + let lam = DVector::from_iterator(cols.len(), cols.iter().map(|row| row[5])); + let rep = DVector::from_iterator(cols.len(), cols.iter().map(|row| row[6])); + + let pha = &real_phc + &pha_feff; + let amp = mag_feff.component_mul(&red_fact); + + Ok(FeffDat { + filename: path.display().to_string(), + title: title.unwrap_or_default(), + version, + absorber, + shell, + reff, + degen, + nleg, + k, + real_phc, + mag_feff, + pha_feff, + red_fact, + lam, + rep, + pha, + amp, + geometry, + }) +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::xafs::tests::TOP_DIR; + + #[test] + fn test_parse_feff85l_file_success() { + let path = format!("{TOP_DIR}/tests/testfiles/feffcu01.dat"); + let parsed = parse_feff_path_file(path, FeffFlavor::Feff85L).unwrap(); + + assert!(parsed.reff > 0.0); + assert!(parsed.degen > 0.0); + assert!(parsed.nleg >= 2); + assert_eq!(parsed.k.len(), parsed.pha.len()); + assert!(parsed.k.iter().all(|value| value.is_finite())); + } + + #[test] + fn test_parse_feff10_reports_not_supported() { + let path = format!("{TOP_DIR}/tests/testfiles/feffcu01.dat"); + let err = parse_feff_path_file(path, FeffFlavor::Feff10).unwrap_err(); + + assert!(matches!(err, FittingError::UnsupportedFeffFlavor { .. })); + } + + #[test] + fn test_parse_rejects_invalid_array_rows() { + let unique = format!( + "xfeff-invalid-{}-{}.dat", + std::process::id(), + std::time::SystemTime::now() + .duration_since(std::time::UNIX_EPOCH) + .unwrap() + .as_nanos() + ); + let tmp = std::env::temp_dir().join(unique); + let invalid = "Title\n# comment\n ----\n 2 12.0 2.5 1.0 0.0\nk real[p]@#\n0.0 1.0 2.0\n"; + fs::write(&tmp, invalid).unwrap(); + + let err = parse_feff_path_file(&tmp, FeffFlavor::Feff85L).unwrap_err(); + let _ = fs::remove_file(tmp); + assert!(matches!(err, FittingError::InvalidFeffData { .. })); + } +} diff --git a/crates/xraytsubaki/src/xafs/fitting/mod.rs b/crates/xraytsubaki/src/xafs/fitting/mod.rs new file mode 100644 index 0000000..a197c15 --- /dev/null +++ b/crates/xraytsubaki/src/xafs/fitting/mod.rs @@ -0,0 +1,63 @@ +pub mod errors; +pub mod feffdat; +pub mod path_model; +pub mod runner; +pub mod solver; +pub mod transform; +pub mod types; +pub mod variables; + +use nalgebra::DVector; + +pub use errors::FittingError; +pub use path_model::FF2ChiOutput; +pub use types::{ + FeffDat, FeffExecutionMode, FeffFitDataset, FeffFitResult, FeffFitTransform, FeffFlavor, + FeffModuleCommand, FeffPathModel, FeffResolvedCommands, FeffRunRequest, FeffRunResult, + FitSpace, FitVariable, FitVariables, PathContribution, PathParamSpec, +}; + +use crate::xafs::{Result, XAFSError}; + +pub fn parse_feff_path_file(path: &str, flavor: FeffFlavor) -> Result { + feffdat::parse_feff_path_file(path, flavor).map_err(XAFSError::from) +} + +pub fn feffpath(path: &str, flavor: FeffFlavor) -> Result { + path_model::feffpath(path, flavor).map_err(XAFSError::from) +} + +pub fn path2chi( + path: &FeffPathModel, + vars: &FitVariables, + k: &DVector, +) -> Result> { + path_model::path2chi(path, vars, k).map_err(XAFSError::from) +} + +pub fn ff2chi( + paths: &[FeffPathModel], + vars: &FitVariables, + k: &DVector, +) -> Result { + path_model::ff2chi(paths, vars, k).map_err(XAFSError::from) +} + +pub fn feffit(dataset: &FeffFitDataset, vars: &FitVariables) -> Result { + solver::feffit(dataset, vars).map_err(XAFSError::from) +} + +pub fn resolve_feff_commands(request: &FeffRunRequest) -> Result { + runner::resolve_feff_commands(request).map_err(XAFSError::from) +} + +pub fn run_feff(request: &FeffRunRequest) -> Result { + runner::run_feff(request).map_err(XAFSError::from) +} + +pub fn run_feff_and_load_paths( + request: &FeffRunRequest, + flavor: FeffFlavor, +) -> Result> { + runner::run_feff_and_load_paths(request, flavor).map_err(XAFSError::from) +} diff --git a/crates/xraytsubaki/src/xafs/fitting/path_model.rs b/crates/xraytsubaki/src/xafs/fitting/path_model.rs new file mode 100644 index 0000000..400e650 --- /dev/null +++ b/crates/xraytsubaki/src/xafs/fitting/path_model.rs @@ -0,0 +1,344 @@ +use std::collections::BTreeMap; +use std::path::Path; + +use nalgebra::DVector; +use num_complex::Complex64; + +use crate::xafs::xafsutils::constants::ETOK; + +use super::errors::FittingError; +use super::feffdat::parse_feff_path_file; +use super::types::{FeffFlavor, FeffPathModel, FitVariables}; +use super::variables::resolve_path_param; + +const SMALL_Q: f64 = 1.0e-7; + +#[derive(Debug, Clone)] +pub struct FF2ChiOutput { + pub chi: DVector, + pub path_chi: Vec<(String, DVector)>, +} + +#[derive(Debug, Clone, Copy)] +pub(crate) struct PathParams { + degen: f64, + s02: f64, + e0: f64, + ei: f64, + deltar: f64, + sigma2: f64, + third: f64, + fourth: f64, +} + +pub fn feffpath>( + path: P, + flavor: FeffFlavor, +) -> Result { + let parsed = parse_feff_path_file(path.as_ref(), flavor)?; + let label = path + .as_ref() + .file_name() + .map(|s| s.to_string_lossy().to_string()) + .unwrap_or_else(|| "path".to_string()); + Ok(FeffPathModel::from_feffdat(label, parsed)) +} + +pub fn path2chi( + path: &FeffPathModel, + vars: &FitVariables, + k: &DVector, +) -> Result, FittingError> { + let globals = vars.resolve_values()?; + let params = resolve_params(path, &globals)?; + let (_cchi, chi) = calc_path_chi(path, ¶ms, k)?; + Ok(chi) +} + +pub fn ff2chi( + paths: &[FeffPathModel], + vars: &FitVariables, + k: &DVector, +) -> Result { + if paths.is_empty() { + return Err(FittingError::EmptyPaths); + } + + let globals = vars.resolve_values()?; + let mut total = DVector::zeros(k.len()); + let mut path_chi = Vec::with_capacity(paths.len()); + + for path in paths.iter().filter(|path| path.use_path) { + let params = resolve_params(path, &globals)?; + let (_cchi, chi) = calc_path_chi(path, ¶ms, k)?; + total += χ + path_chi.push((path.label.clone(), chi)); + } + + if path_chi.is_empty() { + return Err(FittingError::EmptyPaths); + } + + Ok(FF2ChiOutput { + chi: total, + path_chi, + }) +} + +pub(crate) fn calc_path_chi( + path: &FeffPathModel, + params: &PathParams, + k: &DVector, +) -> Result<(Vec, DVector), FittingError> { + if path.feff.reff < 0.05 { + return Err(FittingError::InvalidFeffData { + reason: format!("path '{}' has invalid reff {}", path.label, path.feff.reff), + }); + } + if k.len() < 3 { + return Err(FittingError::InvalidDataset { + reason: "k grid must contain at least 3 points".to_string(), + }); + } + + let reff = path.feff.reff; + let q = k.map(|kv| { + let energy = kv * kv - params.e0 * ETOK; + let signed_q = energy.signum() * energy.abs().sqrt(); + if signed_q.abs() < SMALL_Q { + if signed_q.is_sign_negative() { + -SMALL_Q + } else { + SMALL_Q + } + } else { + signed_q + } + }); + + let pha = interp_linear_clamped(&path.feff.k, &path.feff.pha, &q)?; + let amp = interp_linear_clamped(&path.feff.k, &path.feff.amp, &q)?; + let rep = interp_linear_clamped(&path.feff.k, &path.feff.rep, &q)?; + let lam = interp_linear_clamped(&path.feff.k, &path.feff.lam, &q)?; + + let mut cchi: Vec = Vec::with_capacity(k.len()); + for i in 0..k.len() { + let inv_lam = if lam[i].abs() < SMALL_Q { + 1.0 / SMALL_Q + } else { + 1.0 / lam[i] + }; + + let pp = Complex64::new(rep[i], inv_lam).powi(2) + Complex64::new(0.0, params.ei * ETOK); + let p = pp.sqrt(); + + let sigma_term = params.sigma2 - pp * (params.fourth / 3.0); + let delta_term = params.deltar - 2.0 * params.sigma2 / reff - 2.0 * pp * params.third / 3.0; + let phase_inner = Complex64::new(2.0 * q[i] * reff + pha[i], 0.0) + 2.0 * p * delta_term; + + let exponent = Complex64::new(-2.0 * reff * p.im, 0.0) - 2.0 * pp * sigma_term + + Complex64::new(0.0, 1.0) * phase_inner; + + let denom_q = if q[i].abs() < SMALL_Q { SMALL_Q } else { q[i] }; + let denom_r = (reff + params.deltar).powi(2).max(SMALL_Q); + + let scale = params.degen * params.s02 * amp[i] / (denom_q * denom_r); + cchi.push(scale * exponent.exp()); + } + + if cchi.len() >= 3 { + cchi[0] = 2.0 * cchi[1] - cchi[2]; + } + + let chi = DVector::from_iterator(cchi.len(), cchi.iter().map(|value| value.im)); + Ok((cchi, chi)) +} + +pub(crate) fn resolve_params( + path: &FeffPathModel, + globals: &BTreeMap, +) -> Result { + let mut locals = BTreeMap::new(); + locals.insert("reff".to_string(), path.feff.reff); + + Ok(PathParams { + degen: resolve_path_param(&path.degen, path.feff.degen, globals, &locals)?, + s02: resolve_path_param(&path.s02, 1.0, globals, &locals)?, + e0: resolve_path_param(&path.e0, 0.0, globals, &locals)?, + ei: resolve_path_param(&path.ei, 0.0, globals, &locals)?, + deltar: resolve_path_param(&path.deltar, 0.0, globals, &locals)?, + sigma2: resolve_path_param(&path.sigma2, 0.0, globals, &locals)?, + third: resolve_path_param(&path.third, 0.0, globals, &locals)?, + fourth: resolve_path_param(&path.fourth, 0.0, globals, &locals)?, + }) +} + +fn interp_linear_clamped( + xin: &DVector, + yin: &DVector, + xout: &DVector, +) -> Result, FittingError> { + if xin.len() != yin.len() || xin.len() < 2 { + return Err(FittingError::InvalidFeffData { + reason: "interpolation requires at least 2 FEFF grid points".to_string(), + }); + } + + for i in 1..xin.len() { + if xin[i] < xin[i - 1] { + return Err(FittingError::InvalidFeffData { + reason: "FEFF k grid must be monotonic for interpolation".to_string(), + }); + } + } + + let mut out = DVector::zeros(xout.len()); + let xs = xin.as_slice(); + let ys = yin.as_slice(); + + for (i, &x) in xout.iter().enumerate() { + if x <= xs[0] { + out[i] = ys[0]; + continue; + } + if x >= xs[xs.len() - 1] { + out[i] = ys[ys.len() - 1]; + continue; + } + + let idx = match xs.binary_search_by(|probe| probe.partial_cmp(&x).unwrap()) { + Ok(found) => found, + Err(insert) => insert, + }; + let hi = idx; + let lo = hi.saturating_sub(1); + + let x0 = xs[lo]; + let x1 = xs[hi]; + let y0 = ys[lo]; + let y1 = ys[hi]; + + let t = if (x1 - x0).abs() < f64::EPSILON { + 0.0 + } else { + (x - x0) / (x1 - x0) + }; + out[i] = y0 + t * (y1 - y0); + } + + Ok(out) +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::xafs::fitting::types::{FeffFlavor, PathParamSpec}; + use crate::xafs::tests::{PARAM_LOADTXT, TOP_DIR}; + use approx::assert_abs_diff_eq; + use data_reader::reader::load_txt_f64; + + #[test] + fn test_path2chi_returns_finite_values() { + let pathfile = format!("{TOP_DIR}/tests/testfiles/feffcu01.dat"); + let mut path = feffpath(pathfile, FeffFlavor::Feff85L).unwrap(); + path.s02 = PathParamSpec::Expression("amp".to_string()); + path.e0 = PathParamSpec::Expression("de0".to_string()); + path.sigma2 = PathParamSpec::Expression("sig2".to_string()); + + let mut vars = FitVariables::new(); + vars.insert("amp", super::super::types::FitVariable::new(0.95, true)); + vars.insert("de0", super::super::types::FitVariable::new(1.5, true)); + vars.insert("sig2", super::super::types::FitVariable::new(0.003, true)); + + let k = DVector::from_iterator(240, (0..240).map(|i| 0.05 * (i as f64 + 1.0))); + let chi = path2chi(&path, &vars, &k).unwrap(); + + assert_eq!(chi.len(), k.len()); + assert!(chi.iter().all(|value| value.is_finite())); + } + + #[test] + fn test_ff2chi_combines_multiple_paths() { + let pathfile1 = format!("{TOP_DIR}/tests/testfiles/feffcu01.dat"); + let pathfile2 = format!("{TOP_DIR}/tests/testfiles/feff0002.dat"); + + let path1 = feffpath(pathfile1, FeffFlavor::Feff85L).unwrap(); + let path2 = feffpath(pathfile2, FeffFlavor::Feff85L).unwrap(); + + let vars = FitVariables::new(); + let k = DVector::from_iterator(200, (0..200).map(|i| 0.05 * (i as f64 + 1.0))); + + let out = ff2chi(&[path1, path2], &vars, &k).unwrap(); + assert_eq!(out.chi.len(), k.len()); + assert_eq!(out.path_chi.len(), 2); + } + + #[test] + fn test_path2chi_matches_larch_reference_within_tolerance() { + let pathfile = format!("{TOP_DIR}/tests/testfiles/feffcu01.dat"); + let reference_path = format!("{TOP_DIR}/tests/testfiles/feff_path_chi_larch_ref.txt"); + + let mut path = feffpath(pathfile, FeffFlavor::Feff85L).unwrap(); + path.s02 = PathParamSpec::Expression("amp".to_string()); + path.e0 = PathParamSpec::Expression("de0".to_string()); + path.sigma2 = PathParamSpec::Expression("sig2".to_string()); + path.deltar = PathParamSpec::Expression("dr".to_string()); + + let mut vars = FitVariables::new(); + vars.insert("amp", super::super::types::FitVariable::new(0.92, false)); + vars.insert("de0", super::super::types::FitVariable::new(1.4, false)); + vars.insert("sig2", super::super::types::FitVariable::new(0.0031, false)); + vars.insert("dr", super::super::types::FitVariable::new(0.011, false)); + + let reference = load_txt_f64(&reference_path, &PARAM_LOADTXT).unwrap(); + let k = DVector::from_vec(reference.get_col(0)); + let chi_expected = reference.get_col(1); + let chi = path2chi(&path, &vars, &k).unwrap(); + + for ((kv, actual), expected) in k.iter().zip(chi.iter()).zip(chi_expected.iter()) { + if *kv < 2.0 { + continue; + } + assert_abs_diff_eq!(actual, expected, epsilon = 3.0e-3); + } + } + + #[test] + fn test_ff2chi_matches_larch_reference_within_tolerance() { + let pathfile1 = format!("{TOP_DIR}/tests/testfiles/feffcu01.dat"); + let pathfile2 = format!("{TOP_DIR}/tests/testfiles/feff0002.dat"); + let reference_path = format!("{TOP_DIR}/tests/testfiles/feff_ff2chi_larch_ref.txt"); + + let mut path1 = feffpath(pathfile1, FeffFlavor::Feff85L).unwrap(); + path1.s02 = PathParamSpec::Expression("amp".to_string()); + path1.e0 = PathParamSpec::Expression("de0".to_string()); + path1.sigma2 = PathParamSpec::Expression("sig2".to_string()); + path1.deltar = PathParamSpec::Expression("dr".to_string()); + + let mut path2 = feffpath(pathfile2, FeffFlavor::Feff85L).unwrap(); + path2.s02 = PathParamSpec::Expression("amp2".to_string()); + path2.e0 = PathParamSpec::Expression("de0".to_string()); + path2.sigma2 = PathParamSpec::Expression("sig2".to_string()); + path2.deltar = PathParamSpec::Expression("dr2".to_string()); + + let mut vars = FitVariables::new(); + vars.insert("amp", super::super::types::FitVariable::new(0.92, false)); + vars.insert("de0", super::super::types::FitVariable::new(1.4, false)); + vars.insert("sig2", super::super::types::FitVariable::new(0.0031, false)); + vars.insert("dr", super::super::types::FitVariable::new(0.011, false)); + vars.insert("amp2", super::super::types::FitVariable::new(0.35, false)); + vars.insert("dr2", super::super::types::FitVariable::new(0.0025, false)); + + let reference = load_txt_f64(&reference_path, &PARAM_LOADTXT).unwrap(); + let k = DVector::from_vec(reference.get_col(0)); + let chi_expected = reference.get_col(1); + + let out = ff2chi(&[path1, path2], &vars, &k).unwrap(); + for ((kv, actual), expected) in k.iter().zip(out.chi.iter()).zip(chi_expected.iter()) { + if *kv < 2.0 { + continue; + } + assert_abs_diff_eq!(actual, expected, epsilon = 4.0e-3); + } + } +} diff --git a/crates/xraytsubaki/src/xafs/fitting/runner.rs b/crates/xraytsubaki/src/xafs/fitting/runner.rs new file mode 100644 index 0000000..3683856 --- /dev/null +++ b/crates/xraytsubaki/src/xafs/fitting/runner.rs @@ -0,0 +1,804 @@ +use std::env; +use std::fs; +use std::io::Read; +use std::path::{Path, PathBuf}; +use std::process::{Command, ExitStatus, Stdio}; +use std::thread; +use std::time::{Duration, Instant}; + +use super::errors::FittingError; +use super::path_model::feffpath; +use super::types::{ + FeffExecutionMode, FeffFlavor, FeffModuleCommand, FeffPathModel, FeffResolvedCommands, + FeffRunRequest, FeffRunResult, +}; + +const FEFF85L_MODULES: [(&str, &str); 6] = [ + ("rdinp", "feff8l_rdinp"), + ("pot", "feff8l_pot"), + ("xsph", "feff8l_xsph"), + ("pathfinder", "feff8l_pathfinder"), + ("genfmt", "feff8l_genfmt"), + ("ff2x", "feff8l_ff2x"), +]; + +pub fn resolve_feff_commands( + request: &FeffRunRequest, +) -> Result { + let executable_path = validate_executable_path(&request.executable_path)?; + let base_dir = executable_path + .parent() + .ok_or_else(|| FittingError::InvalidExecutablePath { + path: request.executable_path.display().to_string(), + reason: "executable has no parent directory".to_string(), + })?; + + let mut resolved_modules = Vec::with_capacity(FEFF85L_MODULES.len()); + for &(module_label, module_bin) in required_modules(request.mode) { + let module_file = platform_executable_name(module_bin); + let sibling_candidate = base_dir.join(&module_file); + if is_executable_file(&sibling_candidate) { + resolved_modules.push(FeffModuleCommand { + module: module_label.to_string(), + executable: sibling_candidate, + }); + continue; + } + + if let Some(path_candidate) = lookup_in_path(&module_file) { + resolved_modules.push(FeffModuleCommand { + module: module_label.to_string(), + executable: path_candidate, + }); + continue; + } + + return Err(FittingError::ExecutableNotFound { + module: module_label.to_string(), + }); + } + + Ok(FeffResolvedCommands { + mode: request.mode, + modules: resolved_modules, + }) +} + +pub fn run_feff(request: &FeffRunRequest) -> Result { + let workspace_dir = validate_workspace_dir(&request.workspace_dir)?; + let feffinp_path = resolve_feffinp_path(request, &workspace_dir)?; + let resolved = resolve_feff_commands(request)?; + + let staged_input = stage_feff_input(&workspace_dir, &feffinp_path)?; + + let run_result = (|| { + let mut logs = Vec::with_capacity(resolved.modules.len()); + for module in &resolved.modules { + let log_path = run_single_module(module, &workspace_dir, request.timeout_sec)?; + logs.push(log_path); + } + + let path_files = discover_path_files(&workspace_dir)?; + if path_files.is_empty() { + return Err(FittingError::NoPathOutputs { + workspace: workspace_dir.display().to_string(), + }); + } + + Ok(FeffRunResult { + mode: request.mode, + workspace_dir: workspace_dir.clone(), + feffinp_path: feffinp_path.clone(), + resolved: resolved.clone(), + logs, + path_files, + }) + })(); + + let restore_result = staged_input.restore(); + match (run_result, restore_result) { + (Ok(result), Ok(())) => Ok(result), + (Err(run_err), Ok(())) => Err(run_err), + (Ok(_), Err(restore_err)) => Err(restore_err), + (Err(run_err), Err(_restore_err)) => Err(run_err), + } +} + +pub fn run_feff_and_load_paths( + request: &FeffRunRequest, + flavor: FeffFlavor, +) -> Result, FittingError> { + let result = run_feff(request)?; + load_paths_from_run_result(&result, flavor) +} + +pub fn load_paths_from_run_result( + result: &FeffRunResult, + flavor: FeffFlavor, +) -> Result, FittingError> { + result + .path_files + .iter() + .map(|path| feffpath(path, flavor)) + .collect() +} + +fn required_modules(mode: FeffExecutionMode) -> &'static [(&'static str, &'static str)] { + match mode { + FeffExecutionMode::Feff85LModules => &FEFF85L_MODULES, + } +} + +fn validate_workspace_dir(workspace_dir: &Path) -> Result { + if !workspace_dir.exists() || !workspace_dir.is_dir() { + return Err(FittingError::WorkspaceNotFound { + path: workspace_dir.display().to_string(), + }); + } + + fs::canonicalize(workspace_dir).map_err(|error| FittingError::IOFailed { + action: "canonicalize workspace".to_string(), + path: workspace_dir.display().to_string(), + reason: error.to_string(), + }) +} + +fn validate_executable_path(path: &Path) -> Result { + if path.as_os_str().is_empty() { + return Err(FittingError::InvalidExecutablePath { + path: path.display().to_string(), + reason: "path is empty".to_string(), + }); + } + + if !is_executable_file(path) { + return Err(FittingError::InvalidExecutablePath { + path: path.display().to_string(), + reason: "path does not point to an executable file".to_string(), + }); + } + + fs::canonicalize(path).map_err(|error| FittingError::InvalidExecutablePath { + path: path.display().to_string(), + reason: error.to_string(), + }) +} + +fn resolve_feffinp_path( + request: &FeffRunRequest, + workspace_dir: &Path, +) -> Result { + let feffinp = request + .feffinp + .clone() + .unwrap_or_else(|| PathBuf::from("feff.inp")); + let resolved = if feffinp.is_absolute() { + feffinp + } else { + workspace_dir.join(feffinp) + }; + + if !resolved.exists() || !resolved.is_file() { + return Err(FittingError::FeffInputNotFound { + path: resolved.display().to_string(), + }); + } + + Ok(resolved) +} + +fn run_single_module( + module: &FeffModuleCommand, + workspace_dir: &Path, + timeout_sec: Option, +) -> Result { + let mut child = Command::new(&module.executable) + .current_dir(workspace_dir) + .stdin(Stdio::null()) + .stdout(Stdio::piped()) + .stderr(Stdio::piped()) + .spawn() + .map_err(|error| FittingError::ProcessSpawnFailed { + module: module.module.clone(), + executable: module.executable.display().to_string(), + reason: error.to_string(), + })?; + + let timeout = timeout_sec.map(Duration::from_secs); + let start = Instant::now(); + let status = wait_for_exit(&mut child, start, timeout, &module.module)?; + + let stdout = read_pipe(child.stdout.take(), &module.module, "stdout")?; + let stderr = read_pipe(child.stderr.take(), &module.module, "stderr")?; + + let log_name = format!("feffrun_{}.log", module.module); + let log_path = workspace_dir.join(log_name); + write_module_log(&log_path, module, status, &stdout, &stderr)?; + + if !status.success() { + return Err(FittingError::ProcessFailed { + module: module.module.clone(), + code: status.code().unwrap_or(-1), + }); + } + + Ok(log_path) +} + +fn wait_for_exit( + child: &mut std::process::Child, + start: Instant, + timeout: Option, + module: &str, +) -> Result { + loop { + match child + .try_wait() + .map_err(|error| FittingError::ProcessSpawnFailed { + module: module.to_string(), + executable: "".to_string(), + reason: error.to_string(), + })? { + Some(status) => return Ok(status), + None => { + if let Some(limit) = timeout { + if start.elapsed() > limit { + let _ = child.kill(); + let _ = child.wait(); + return Err(FittingError::ProcessTimedOut { + module: module.to_string(), + timeout_sec: limit.as_secs(), + }); + } + } + thread::sleep(Duration::from_millis(10)); + } + } + } +} + +fn write_module_log( + log_path: &Path, + module: &FeffModuleCommand, + status: ExitStatus, + stdout: &[u8], + stderr: &[u8], +) -> Result<(), FittingError> { + let mut log = String::new(); + log.push_str(&format!( + "# module={} executable={} status={}\n", + module.module, + module.executable.display(), + status.code().unwrap_or(-1) + )); + log.push_str("\n# stdout\n"); + log.push_str(&String::from_utf8_lossy(stdout)); + log.push_str("\n# stderr\n"); + log.push_str(&String::from_utf8_lossy(stderr)); + + fs::write(log_path, log).map_err(|error| FittingError::IOFailed { + action: "write module log".to_string(), + path: log_path.display().to_string(), + reason: error.to_string(), + }) +} + +fn read_pipe( + mut pipe: Option, + module: &str, + stream_name: &str, +) -> Result, FittingError> { + let Some(mut stream) = pipe.take() else { + return Ok(Vec::new()); + }; + + let mut buf = Vec::new(); + stream + .read_to_end(&mut buf) + .map_err(|error| FittingError::OutputReadFailed { + module: module.to_string(), + reason: format!("{stream_name}: {error}"), + })?; + Ok(buf) +} + +fn discover_path_files(workspace_dir: &Path) -> Result, FittingError> { + let mut output_paths = Vec::new(); + + let entries = fs::read_dir(workspace_dir).map_err(|error| FittingError::IOFailed { + action: "read workspace directory".to_string(), + path: workspace_dir.display().to_string(), + reason: error.to_string(), + })?; + + for entry_result in entries { + let entry = entry_result.map_err(|error| FittingError::IOFailed { + action: "iterate workspace entries".to_string(), + path: workspace_dir.display().to_string(), + reason: error.to_string(), + })?; + + let path = entry.path(); + if !path.is_file() { + continue; + } + + let Some(file_name) = path.file_name().and_then(|name| name.to_str()) else { + continue; + }; + + if is_feff_path_file_name(file_name) { + output_paths.push(path); + } + } + + output_paths.sort_by(|lhs, rhs| { + lhs.file_name() + .unwrap_or_default() + .cmp(rhs.file_name().unwrap_or_default()) + }); + + Ok(output_paths) +} + +fn is_feff_path_file_name(file_name: &str) -> bool { + if !file_name.starts_with("feff") || !file_name.ends_with(".dat") { + return false; + } + + let digits = &file_name[4..file_name.len() - 4]; + !digits.is_empty() && digits.chars().all(|ch| ch.is_ascii_digit()) +} + +fn platform_executable_name(base_name: &str) -> String { + #[cfg(windows)] + { + if base_name.to_ascii_lowercase().ends_with(".exe") { + base_name.to_string() + } else { + format!("{base_name}.exe") + } + } + #[cfg(not(windows))] + { + base_name.to_string() + } +} + +fn lookup_in_path(executable_name: &str) -> Option { + let path_env = env::var_os("PATH")?; + for directory in env::split_paths(&path_env) { + let candidate = directory.join(executable_name); + if is_executable_file(&candidate) { + return Some(candidate); + } + + #[cfg(windows)] + { + if candidate.extension().is_some() { + continue; + } + let pathext = env::var_os("PATHEXT") + .unwrap_or_else(|| ".EXE;.BAT;.CMD;.COM".into()) + .to_string_lossy() + .to_string(); + for ext in pathext.split(';') { + let trimmed = ext.trim(); + if trimmed.is_empty() { + continue; + } + let ext_clean = trimmed.trim_start_matches('.').to_ascii_lowercase(); + let candidate_with_ext = directory.join(format!("{executable_name}.{ext_clean}")); + if is_executable_file(&candidate_with_ext) { + return Some(candidate_with_ext); + } + } + } + } + None +} + +fn is_executable_file(path: &Path) -> bool { + if !path.exists() || !path.is_file() { + return false; + } + + #[cfg(unix)] + { + use std::os::unix::fs::PermissionsExt; + return fs::metadata(path) + .map(|meta| meta.permissions().mode() & 0o111 != 0) + .unwrap_or(false); + } + + #[cfg(not(unix))] + { + true + } +} + +struct StagedFeffInput { + staged_path: Option, + backup_path: Option, + target_path: PathBuf, +} + +impl StagedFeffInput { + fn restore(self) -> Result<(), FittingError> { + if self.staged_path.is_some() { + if self.target_path.exists() { + fs::remove_file(&self.target_path).map_err(|error| FittingError::IOFailed { + action: "remove staged feff.inp".to_string(), + path: self.target_path.display().to_string(), + reason: error.to_string(), + })?; + } + } + + if let Some(backup_path) = self.backup_path { + fs::rename(&backup_path, &self.target_path).map_err(|error| { + FittingError::IOFailed { + action: "restore original feff.inp".to_string(), + path: self.target_path.display().to_string(), + reason: error.to_string(), + } + })?; + } + + Ok(()) + } +} + +fn stage_feff_input( + workspace_dir: &Path, + feffinp_path: &Path, +) -> Result { + let target_path = workspace_dir.join("feff.inp"); + if feffinp_path == target_path { + if !target_path.exists() || !target_path.is_file() { + return Err(FittingError::FeffInputNotFound { + path: target_path.display().to_string(), + }); + } + return Ok(StagedFeffInput { + staged_path: None, + backup_path: None, + target_path, + }); + } + + let backup_path = if target_path.exists() { + let backup = workspace_dir.join(".xraytsubaki_feff_inp_backup"); + if backup.exists() { + fs::remove_file(&backup).map_err(|error| FittingError::IOFailed { + action: "clear existing feff.inp backup".to_string(), + path: backup.display().to_string(), + reason: error.to_string(), + })?; + } + fs::rename(&target_path, &backup).map_err(|error| FittingError::IOFailed { + action: "backup existing feff.inp".to_string(), + path: target_path.display().to_string(), + reason: error.to_string(), + })?; + Some(backup) + } else { + None + }; + + if let Err(error) = fs::copy(feffinp_path, &target_path) { + if let Some(backup) = backup_path.as_ref() { + let _ = fs::rename(backup, &target_path); + } + return Err(FittingError::IOFailed { + action: "stage feff input file".to_string(), + path: target_path.display().to_string(), + reason: error.to_string(), + }); + } + + Ok(StagedFeffInput { + staged_path: Some(feffinp_path.to_path_buf()), + backup_path, + target_path, + }) +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::xafs::fitting::ff2chi; + use crate::xafs::fitting::{FeffFlavor, FitVariables}; + use nalgebra::DVector; + use std::sync::{Mutex, OnceLock}; + + static ENV_LOCK: OnceLock> = OnceLock::new(); + const TOP_DIR: &str = env!("CARGO_MANIFEST_DIR"); + + struct TestDir { + path: PathBuf, + } + + impl TestDir { + fn new(prefix: &str) -> Self { + let unique = format!( + "{}-{}-{}", + prefix, + std::process::id(), + std::time::SystemTime::now() + .duration_since(std::time::UNIX_EPOCH) + .unwrap() + .as_nanos() + ); + let path = std::env::temp_dir().join(unique); + fs::create_dir_all(&path).unwrap(); + Self { path } + } + + fn join(&self, file_name: &str) -> PathBuf { + self.path.join(file_name) + } + } + + impl Drop for TestDir { + fn drop(&mut self) { + let _ = fs::remove_dir_all(&self.path); + } + } + + #[cfg(unix)] + fn write_exec(path: &Path, body: &str) { + use std::os::unix::fs::PermissionsExt; + + let script = format!("#!/bin/sh\nset -eu\n{body}\n"); + fs::write(path, script).unwrap(); + + let mut perms = fs::metadata(path).unwrap().permissions(); + perms.set_mode(0o755); + fs::set_permissions(path, perms).unwrap(); + } + + #[cfg(unix)] + fn install_mock_modules(bin_dir: &Path, ff2x_payload: &str, fail_module: Option<&str>) { + fs::create_dir_all(bin_dir).unwrap(); + + for &(label, executable_name) in FEFF85L_MODULES.iter() { + let executable_path = bin_dir.join(executable_name); + let payload = if Some(label) == fail_module { + "echo intentional failure >&2\nexit 9".to_string() + } else if label == "ff2x" { + format!( + "if [ ! -f feff.inp ]; then echo missing feff.inp >&2; exit 8; fi\n{}\necho module ff2x done", + ff2x_payload + ) + } else { + format!( + "if [ ! -f feff.inp ]; then echo missing feff.inp >&2; exit 8; fi\necho module {label} done" + ) + }; + write_exec(&executable_path, &payload); + } + } + + fn build_request(executable_path: PathBuf, workspace_dir: PathBuf) -> FeffRunRequest { + FeffRunRequest { + executable_path, + workspace_dir, + feffinp: None, + mode: FeffExecutionMode::Feff85LModules, + timeout_sec: Some(5), + } + } + + #[test] + fn test_platform_executable_name_has_expected_shape() { + let executable = platform_executable_name("feff8l_rdinp"); + + #[cfg(windows)] + assert!(executable.ends_with(".exe")); + + #[cfg(not(windows))] + assert_eq!(executable, "feff8l_rdinp"); + } + + #[test] + fn test_is_feff_path_file_name() { + assert!(is_feff_path_file_name("feff0001.dat")); + assert!(is_feff_path_file_name("feff1234.dat")); + assert!(!is_feff_path_file_name("feff.dat")); + assert!(!is_feff_path_file_name("feffABCD.dat")); + assert!(!is_feff_path_file_name("notfeff0001.dat")); + } + + #[cfg(unix)] + #[test] + fn test_resolve_commands_from_sibling_modules() { + let bin_dir = TestDir::new("xfeff-bin"); + install_mock_modules(&bin_dir.path, "", None); + + let request = build_request(bin_dir.join("feff8l_rdinp"), bin_dir.path.clone()); + let resolved = resolve_feff_commands(&request).unwrap(); + let canonical_bin_dir = fs::canonicalize(&bin_dir.path).unwrap(); + + assert_eq!(resolved.modules.len(), FEFF85L_MODULES.len()); + assert!(resolved + .modules + .iter() + .all(|module| module.executable.starts_with(&canonical_bin_dir))); + } + + #[test] + fn test_resolve_missing_executable_fails() { + let workspace = TestDir::new("xfeff-work"); + let request = build_request(workspace.join("missing-feff"), workspace.path.clone()); + + let err = resolve_feff_commands(&request).unwrap_err(); + assert!(matches!(err, FittingError::InvalidExecutablePath { .. })); + } + + #[cfg(unix)] + #[test] + fn test_resolve_falls_back_to_path() { + let _lock = ENV_LOCK.get_or_init(|| Mutex::new(())).lock().unwrap(); + let previous_path = env::var_os("PATH"); + + let primary_dir = TestDir::new("xfeff-primary"); + let fallback_dir = TestDir::new("xfeff-fallback"); + + fs::create_dir_all(&primary_dir.path).unwrap(); + write_exec( + &primary_dir.join("feff8l_rdinp"), + "if [ ! -f feff.inp ]; then :; fi\necho only primary", + ); + install_mock_modules(&fallback_dir.path, "", None); + + env::set_var("PATH", fallback_dir.path.display().to_string()); + let request = build_request(primary_dir.join("feff8l_rdinp"), primary_dir.path.clone()); + let resolved = resolve_feff_commands(&request).unwrap(); + + if let Some(path) = previous_path { + env::set_var("PATH", path); + } else { + env::remove_var("PATH"); + } + + assert_eq!(resolved.modules.len(), FEFF85L_MODULES.len()); + assert_eq!(resolved.modules[0].module, "rdinp"); + assert!(resolved + .modules + .iter() + .skip(1) + .all(|module| module.executable.starts_with(&fallback_dir.path))); + } + + #[cfg(unix)] + #[test] + fn test_resolve_errors_for_missing_module() { + let _lock = ENV_LOCK.get_or_init(|| Mutex::new(())).lock().unwrap(); + let previous_path = env::var_os("PATH"); + + let primary_dir = TestDir::new("xfeff-primary-missing"); + fs::create_dir_all(&primary_dir.path).unwrap(); + write_exec( + &primary_dir.join("feff8l_rdinp"), + "if [ ! -f feff.inp ]; then :; fi\necho only rdinp", + ); + + env::set_var("PATH", ""); + + let request = build_request(primary_dir.join("feff8l_rdinp"), primary_dir.path.clone()); + let err = resolve_feff_commands(&request).unwrap_err(); + + if let Some(path) = previous_path { + env::set_var("PATH", path); + } else { + env::remove_var("PATH"); + } + + assert!(matches!(err, FittingError::ExecutableNotFound { .. })); + } + + #[cfg(unix)] + #[test] + fn test_runner_success_discovers_sorted_outputs() { + let workspace = TestDir::new("xfeff-work-success"); + fs::write(workspace.join("feff.inp"), "TITLE\n").unwrap(); + + let bin_dir = TestDir::new("xfeff-bin-success"); + install_mock_modules( + &bin_dir.path, + "echo 'dummy' > feff0010.dat\necho 'dummy' > feff0002.dat", + None, + ); + + let request = build_request(bin_dir.join("feff8l_rdinp"), workspace.path.clone()); + let result = run_feff(&request).unwrap(); + + assert_eq!(result.logs.len(), FEFF85L_MODULES.len()); + assert_eq!(result.path_files.len(), 2); + + let names = result + .path_files + .iter() + .map(|path| path.file_name().unwrap().to_string_lossy().to_string()) + .collect::>(); + assert_eq!(names, vec!["feff0002.dat", "feff0010.dat"]); + } + + #[cfg(unix)] + #[test] + fn test_runner_missing_feffinp_fails() { + let workspace = TestDir::new("xfeff-work-missing-inp"); + let bin_dir = TestDir::new("xfeff-bin-missing-inp"); + install_mock_modules(&bin_dir.path, "", None); + + let request = build_request(bin_dir.join("feff8l_rdinp"), workspace.path.clone()); + let err = run_feff(&request).unwrap_err(); + + assert!(matches!(err, FittingError::FeffInputNotFound { .. })); + } + + #[cfg(unix)] + #[test] + fn test_runner_nonzero_exit_fails_fast() { + let workspace = TestDir::new("xfeff-work-fail"); + fs::write(workspace.join("feff.inp"), "TITLE\n").unwrap(); + + let bin_dir = TestDir::new("xfeff-bin-fail"); + install_mock_modules(&bin_dir.path, "", Some("pot")); + + let request = build_request(bin_dir.join("feff8l_rdinp"), workspace.path.clone()); + let err = run_feff(&request).unwrap_err(); + + assert!(matches!( + err, + FittingError::ProcessFailed { + module, + code: 9 + } if module == "pot" + )); + } + + #[cfg(unix)] + #[test] + fn test_runner_empty_output_set_errors() { + let workspace = TestDir::new("xfeff-work-empty"); + fs::write(workspace.join("feff.inp"), "TITLE\n").unwrap(); + + let bin_dir = TestDir::new("xfeff-bin-empty"); + install_mock_modules(&bin_dir.path, "", None); + + let request = build_request(bin_dir.join("feff8l_rdinp"), workspace.path.clone()); + let err = run_feff(&request).unwrap_err(); + + assert!(matches!(err, FittingError::NoPathOutputs { .. })); + } + + #[cfg(unix)] + #[test] + fn test_run_and_load_paths_interoperates_with_modeling() { + let workspace = TestDir::new("xfeff-work-load"); + fs::write(workspace.join("feff.inp"), "TITLE\n").unwrap(); + + let fixture1 = format!("{TOP_DIR}/tests/testfiles/feffcu01.dat"); + let fixture2 = format!("{TOP_DIR}/tests/testfiles/feff0002.dat"); + + let bin_dir = TestDir::new("xfeff-bin-load"); + let ff2x_payload = format!( + "cat '{}' > feff0010.dat\ncat '{}' > feff0002.dat", + fixture1, fixture2 + ); + install_mock_modules(&bin_dir.path, &ff2x_payload, None); + + let request = build_request(bin_dir.join("feff8l_rdinp"), workspace.path.clone()); + let paths = run_feff_and_load_paths(&request, FeffFlavor::Feff85L).unwrap(); + + assert_eq!(paths.len(), 2); + + let k = DVector::from_iterator(120, (0..120).map(|i| 0.05 * (i as f64 + 1.0))); + let modeled = ff2chi(&paths, &FitVariables::new(), &k).unwrap(); + + assert_eq!(modeled.chi.len(), k.len()); + assert_eq!(modeled.path_chi.len(), 2); + } +} diff --git a/crates/xraytsubaki/src/xafs/fitting/solver.rs b/crates/xraytsubaki/src/xafs/fitting/solver.rs new file mode 100644 index 0000000..cf97a6b --- /dev/null +++ b/crates/xraytsubaki/src/xafs/fitting/solver.rs @@ -0,0 +1,332 @@ +use levenberg_marquardt::{LeastSquaresProblem, LevenbergMarquardt}; +use nalgebra::{DMatrix, DVector, Dyn, Owned}; + +use super::errors::FittingError; +use super::path_model::ff2chi; +use super::transform::{ + apply_r_transform, residual_in_r_space, validate_transform, TransformOutput, +}; +use super::types::{FeffFitDataset, FeffFitResult, FitVariables, PathContribution}; + +pub fn feffit( + dataset: &FeffFitDataset, + variables: &FitVariables, +) -> Result { + validate_dataset(dataset)?; + let varying_names = variables.varying_names(); + if varying_names.is_empty() { + return Err(FittingError::NoVaryingVariables); + } + + let data_transform = apply_r_transform(&dataset.k, &dataset.chi, &dataset.transform)?; + + let problem = FeffFitProblem::new( + dataset.clone(), + variables.clone(), + varying_names, + data_transform, + )?; + + let (solved, _report) = LevenbergMarquardt::new().minimize(problem); + + let model_eval = solved.evaluate_model(&solved.variables)?; + let residual = residual_in_r_space( + &solved.data_transform, + &model_eval.model_transform, + solved.dataset.epsilon_k, + )?; + + let mut solved_variables = solved.variables.clone(); + let chi_square = residual.dot(&residual); + let n_data = residual.len(); + let n_vary = solved.variable_names.len(); + let dof = n_data.saturating_sub(n_vary).max(1); + let reduced_chi_square = chi_square / dof as f64; + + if let Some(covar) = solved.approx_covariance() { + for (idx, name) in solved.variable_names.iter().enumerate() { + if let Some(var) = solved_variables.get_mut(name) { + let variance = covar[(idx, idx)].max(0.0) * reduced_chi_square; + var.stderr = Some(variance.sqrt()); + } + } + } + + let path_contributions = model_eval + .path_chi + .iter() + .filter_map(|(label, chi)| { + let transformed = + apply_r_transform(&solved.dataset.k, chi, &solved.dataset.transform).ok()?; + Some(PathContribution { + label: label.clone(), + chi: chi.clone(), + chir_re: transformed.chir_re, + chir_im: transformed.chir_im, + chir_mag: transformed.chir_mag, + }) + }) + .collect::>(); + + let data_norm = solved + .dataset + .chi + .iter() + .map(|value| value.abs()) + .sum::(); + let model_diff_norm = solved + .dataset + .chi + .iter() + .zip(model_eval.model_chi.iter()) + .map(|(d, m)| (d - m).abs()) + .sum::(); + let r_factor = if data_norm.abs() < f64::EPSILON { + 0.0 + } else { + model_diff_norm / data_norm + }; + + Ok(FeffFitResult { + variables: solved_variables, + n_vary, + n_data, + chi_square, + reduced_chi_square, + r_factor, + k: solved.dataset.k.clone(), + data_chi: solved.dataset.chi.clone(), + model_chi: model_eval.model_chi, + r: model_eval.model_transform.r.clone(), + data_chir_re: solved.data_transform.chir_re.clone(), + data_chir_im: solved.data_transform.chir_im.clone(), + model_chir_re: model_eval.model_transform.chir_re, + model_chir_im: model_eval.model_transform.chir_im, + model_chir_mag: model_eval.model_transform.chir_mag, + path_contributions, + }) +} + +fn validate_dataset(dataset: &FeffFitDataset) -> Result<(), FittingError> { + if dataset.k.len() != dataset.chi.len() { + return Err(FittingError::InvalidDataset { + reason: format!( + "k/chi length mismatch: k={}, chi={}", + dataset.k.len(), + dataset.chi.len() + ), + }); + } + if dataset.k.len() < 3 { + return Err(FittingError::InvalidDataset { + reason: "fit dataset requires at least 3 points".to_string(), + }); + } + for index in 0..dataset.k.len() { + if !dataset.k[index].is_finite() || !dataset.chi[index].is_finite() { + return Err(FittingError::InvalidDataset { + reason: format!("non-finite value detected at index {index}"), + }); + } + if index > 0 && dataset.k[index] < dataset.k[index - 1] { + return Err(FittingError::InvalidDataset { + reason: format!("k grid must be monotonic: k[{index}] < k[{}]", index - 1), + }); + } + } + if dataset.paths.is_empty() { + return Err(FittingError::EmptyPaths); + } + validate_transform(&dataset.transform) +} + +#[derive(Clone)] +struct ModelEvaluation { + model_chi: DVector, + path_chi: Vec<(String, DVector)>, + model_transform: TransformOutput, +} + +#[derive(Clone)] +struct FeffFitProblem { + dataset: FeffFitDataset, + variables: FitVariables, + variable_names: Vec, + data_transform: TransformOutput, + residual_len: usize, +} + +impl FeffFitProblem { + fn new( + dataset: FeffFitDataset, + variables: FitVariables, + variable_names: Vec, + data_transform: TransformOutput, + ) -> Result { + let mut problem = Self { + dataset, + variables, + variable_names, + data_transform, + residual_len: 0, + }; + + let initial_residual = problem.current_residual()?; + problem.residual_len = initial_residual.len(); + Ok(problem) + } + + fn evaluate_model(&self, vars: &FitVariables) -> Result { + let model = ff2chi(&self.dataset.paths, vars, &self.dataset.k)?; + let model_transform = + apply_r_transform(&self.dataset.k, &model.chi, &self.dataset.transform)?; + + Ok(ModelEvaluation { + model_chi: model.chi, + path_chi: model.path_chi, + model_transform, + }) + } + + fn current_residual(&self) -> Result, FittingError> { + let model = self.evaluate_model(&self.variables)?; + residual_in_r_space( + &self.data_transform, + &model.model_transform, + self.dataset.epsilon_k, + ) + } + + fn residual_for_parameter_vector(&self, params: &DVector) -> DVector { + let mut vars = self.variables.clone(); + if vars + .apply_parameter_vector(&self.variable_names, params) + .is_err() + { + return DVector::from_element(self.residual_len.max(2), 1.0e12); + } + + match self.evaluate_model(&vars).and_then(|model| { + residual_in_r_space( + &self.data_transform, + &model.model_transform, + self.dataset.epsilon_k, + ) + }) { + Ok(residual) => residual, + Err(_) => DVector::from_element(self.residual_len.max(2), 1.0e12), + } + } + + fn approx_covariance(&self) -> Option> { + let params = self.params(); + if params.is_empty() { + return None; + } + let jac = self.jacobian()?; + let jtj = jac.transpose() * jac; + jtj.try_inverse() + } +} + +impl LeastSquaresProblem for FeffFitProblem { + type ParameterStorage = Owned; + type ResidualStorage = Owned; + type JacobianStorage = Owned; + + fn set_params(&mut self, params: &DVector) { + let _ = self + .variables + .apply_parameter_vector(&self.variable_names, params); + } + + fn params(&self) -> DVector { + self.variables.parameter_vector(&self.variable_names) + } + + fn residuals(&self) -> Option> { + Some( + self.current_residual() + .unwrap_or_else(|_| DVector::from_element(self.residual_len.max(2), 1.0e12)), + ) + } + + fn jacobian(&self) -> Option> { + let x = self.params(); + if x.is_empty() { + return Some(DMatrix::zeros(self.residual_len, 0)); + } + + let epsilon = f64::EPSILON.sqrt(); + let base = self.residual_for_parameter_vector(&x); + let mut jac = DMatrix::zeros(base.len(), x.len()); + + for i in 0..x.len() { + let mut xt = x.clone(); + xt[i] += epsilon; + let fx1 = self.residual_for_parameter_vector(&xt); + jac.set_column(i, &((fx1 - &base) / epsilon)); + } + + Some(jac) + } +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::xafs::fitting::path_model::feffpath; + use crate::xafs::fitting::types::{FeffFlavor, FitVariable, PathParamSpec}; + use crate::xafs::tests::TOP_DIR; + + #[test] + fn test_single_dataset_fit_recovers_synthetic_parameters() { + let pathfile = format!("{TOP_DIR}/tests/testfiles/feffcu01.dat"); + let mut path = feffpath(pathfile, FeffFlavor::Feff85L).unwrap(); + path.s02 = PathParamSpec::Expression("amp".to_string()); + path.e0 = PathParamSpec::Expression("de0".to_string()); + path.sigma2 = PathParamSpec::Expression("sig2".to_string()); + path.deltar = PathParamSpec::Expression("dr".to_string()); + + let k = DVector::from_iterator(280, (0..280).map(|i| 0.05 * (i as f64 + 1.0))); + + let mut truth = FitVariables::new(); + truth.insert("amp", FitVariable::new(0.88, false)); + truth.insert("de0", FitVariable::new(1.2, false)); + truth.insert("sig2", FitVariable::new(0.0032, false)); + truth.insert("dr", FitVariable::new(0.012, false)); + + let synthetic = ff2chi(&[path.clone()], &truth, &k).unwrap(); + + let dataset = FeffFitDataset { + k: k.clone(), + chi: synthetic.chi, + epsilon_k: Some(1.0), + transform: Default::default(), + paths: vec![path], + }; + + let mut initial = FitVariables::new(); + initial.insert("amp", FitVariable::new(0.95, true)); + initial.insert("de0", FitVariable::new(0.0, true)); + initial.insert( + "sig2", + FitVariable::new(0.0020, true).with_bounds(Some(0.0), Some(0.02)), + ); + initial.insert("dr", FitVariable::new(0.0, true)); + + let result = feffit(&dataset, &initial).unwrap(); + + let amp = result.variables.get("amp").unwrap().value; + let de0 = result.variables.get("de0").unwrap().value; + let sig2 = result.variables.get("sig2").unwrap().value; + let dr = result.variables.get("dr").unwrap().value; + + assert!((amp - 0.88).abs() < 0.15); + assert!((de0 - 1.2).abs() < 1.2); + assert!((sig2 - 0.0032).abs() < 0.003); + assert!((dr - 0.012).abs() < 0.02); + assert!(result.chi_square.is_finite()); + assert!(!result.path_contributions.is_empty()); + } +} diff --git a/crates/xraytsubaki/src/xafs/fitting/transform.rs b/crates/xraytsubaki/src/xafs/fitting/transform.rs new file mode 100644 index 0000000..656296f --- /dev/null +++ b/crates/xraytsubaki/src/xafs/fitting/transform.rs @@ -0,0 +1,229 @@ +use nalgebra::DVector; +use num_complex::Complex64; + +use crate::xafs::xrayfft::XrayFFTF; + +use super::errors::FittingError; +use super::types::{FeffFitTransform, FitSpace}; + +#[derive(Debug, Clone)] +pub struct TransformOutput { + pub r: DVector, + pub chir: Vec, + pub chir_re: DVector, + pub chir_im: DVector, + pub chir_mag: DVector, + pub mask_indices: Vec, +} + +pub fn validate_transform(transform: &FeffFitTransform) -> Result<(), FittingError> { + if transform.fitspace != FitSpace::R { + return Err(FittingError::InvalidTransform { + reason: "MVP only supports R-space fitting".to_string(), + }); + } + if !(transform.kmax > transform.kmin) { + return Err(FittingError::InvalidTransform { + reason: format!( + "kmax ({}) must be larger than kmin ({})", + transform.kmax, transform.kmin + ), + }); + } + if !(transform.rmax > transform.rmin) { + return Err(FittingError::InvalidTransform { + reason: format!( + "rmax ({}) must be larger than rmin ({})", + transform.rmax, transform.rmin + ), + }); + } + if transform.nfft < 16 { + return Err(FittingError::InvalidTransform { + reason: "nfft must be at least 16".to_string(), + }); + } + if transform.kweight < 0.0 { + return Err(FittingError::InvalidTransform { + reason: "kweight must be non-negative".to_string(), + }); + } + if let Some(kstep) = transform.kstep { + if kstep <= 0.0 { + return Err(FittingError::InvalidTransform { + reason: "kstep must be positive when provided".to_string(), + }); + } + } + Ok(()) +} + +pub fn apply_r_transform( + k: &DVector, + chi: &DVector, + transform: &FeffFitTransform, +) -> Result { + if k.len() != chi.len() { + return Err(FittingError::InvalidDataset { + reason: format!( + "k/chi length mismatch for transform: {} vs {}", + k.len(), + chi.len() + ), + }); + } + + let mut fft = XrayFFTF::new(); + fft.kmin = Some(transform.kmin); + fft.kmax = Some(transform.kmax); + fft.kweight = Some(transform.kweight); + fft.dk = Some(transform.dk); + fft.dk2 = transform.dk2; + fft.window = Some(transform.window); + fft.nfft = Some(transform.nfft); + fft.kstep = transform.kstep; + + fft.xftf(k, chi) + .map_err(|error| FittingError::InvalidTransform { + reason: error.to_string(), + })?; + + let r = fft + .get_r() + .cloned() + .ok_or_else(|| FittingError::InvalidTransform { + reason: "missing r grid after forward transform".to_string(), + })?; + + let chir_dft = fft + .get_chir() + .ok_or_else(|| FittingError::InvalidTransform { + reason: "missing chi(R) after forward transform".to_string(), + })?; + + let chir_raw: Vec = chir_dft + .iter() + .take(r.len()) + .map(|value| Complex64::new(value.re, value.im)) + .collect(); + + let mut chir_re = DVector::from_iterator(chir_raw.len(), chir_raw.iter().map(|value| value.re)); + let mut chir_im = DVector::from_iterator(chir_raw.len(), chir_raw.iter().map(|value| value.im)); + + let r_window = crate::xafs::xafsutils::ftwindow( + &r, + Some(transform.rmin), + Some(transform.rmax), + Some(transform.dr), + transform.dr2, + Some(transform.rwindow), + ) + .map_err(|error| FittingError::InvalidTransform { + reason: format!("failed to create R-window: {error}"), + })?; + + for i in 0..chir_re.len() { + chir_re[i] *= r_window[i]; + chir_im[i] *= r_window[i]; + } + + let chir = chir_re + .iter() + .zip(chir_im.iter()) + .map(|(re, im)| Complex64::new(*re, *im)) + .collect::>(); + let chir_mag = DVector::from_iterator(chir.len(), chir.iter().map(|value| value.norm())); + + let mask_indices = r + .iter() + .enumerate() + .filter_map(|(index, rv)| (*rv >= transform.rmin && *rv <= transform.rmax).then_some(index)) + .collect::>(); + + if mask_indices.is_empty() { + return Err(FittingError::InvalidTransform { + reason: "configured R-range selects zero points".to_string(), + }); + } + + Ok(TransformOutput { + r, + chir, + chir_re, + chir_im, + chir_mag, + mask_indices, + }) +} + +pub fn residual_in_r_space( + data: &TransformOutput, + model: &TransformOutput, + epsilon_k: Option, +) -> Result, FittingError> { + if data.r.len() != model.r.len() { + return Err(FittingError::InvalidDataset { + reason: format!( + "data/model R grids differ: {} vs {}", + data.r.len(), + model.r.len() + ), + }); + } + + let sigma = epsilon_k.unwrap_or(1.0).max(1.0e-12); + let mut residual = Vec::with_capacity(data.mask_indices.len() * 2); + + for &index in data.mask_indices.iter() { + if index >= model.chir.len() || index >= data.chir.len() { + continue; + } + let diff = data.chir[index] - model.chir[index]; + residual.push(diff.re / sigma); + residual.push(diff.im / sigma); + } + + if residual.is_empty() { + return Err(FittingError::InvalidTransform { + reason: "R-space residual is empty after masking".to_string(), + }); + } + + Ok(DVector::from_vec(residual)) +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::xafs::xafsutils::FTWindow; + + #[test] + fn test_validate_transform_rejects_invalid_ranges() { + let transform = FeffFitTransform { + kmin: 10.0, + kmax: 2.0, + ..FeffFitTransform::default() + }; + let err = validate_transform(&transform).unwrap_err(); + assert!(matches!(err, FittingError::InvalidTransform { .. })); + } + + #[test] + fn test_apply_r_transform_returns_masked_output() { + let k = DVector::from_iterator(400, (0..400).map(|i| 0.05 * (i as f64 + 1.0))); + let chi = k.map(|kv| (2.0 * kv).sin() * (-0.01 * kv * kv).exp()); + + let transform = FeffFitTransform { + kmin: 2.0, + kmax: 14.0, + window: FTWindow::Hanning, + rmin: 1.0, + rmax: 3.0, + ..FeffFitTransform::default() + }; + + let out = apply_r_transform(&k, &chi, &transform).unwrap(); + assert!(!out.mask_indices.is_empty()); + assert_eq!(out.chir.len(), out.r.len()); + } +} diff --git a/crates/xraytsubaki/src/xafs/fitting/types.rs b/crates/xraytsubaki/src/xafs/fitting/types.rs new file mode 100644 index 0000000..fb4b934 --- /dev/null +++ b/crates/xraytsubaki/src/xafs/fitting/types.rs @@ -0,0 +1,445 @@ +use std::collections::BTreeMap; +use std::path::PathBuf; + +use nalgebra::DVector; +use serde::{Deserialize, Serialize}; + +use crate::xafs::xafsutils::FTWindow; + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] +pub enum FeffFlavor { + Feff85L, + Feff10, +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] +pub enum FitSpace { + R, +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] +pub enum FeffExecutionMode { + Feff85LModules, +} + +impl Default for FeffExecutionMode { + fn default() -> Self { + Self::Feff85LModules + } +} + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +#[serde(default)] +pub struct FeffRunRequest { + pub executable_path: PathBuf, + pub workspace_dir: PathBuf, + pub feffinp: Option, + pub mode: FeffExecutionMode, + pub timeout_sec: Option, +} + +impl Default for FeffRunRequest { + fn default() -> Self { + Self { + executable_path: PathBuf::new(), + workspace_dir: PathBuf::new(), + feffinp: None, + mode: FeffExecutionMode::Feff85LModules, + timeout_sec: None, + } + } +} + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +#[serde(default)] +pub struct FeffModuleCommand { + pub module: String, + pub executable: PathBuf, +} + +impl Default for FeffModuleCommand { + fn default() -> Self { + Self { + module: String::new(), + executable: PathBuf::new(), + } + } +} + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +#[serde(default)] +pub struct FeffResolvedCommands { + pub mode: FeffExecutionMode, + pub modules: Vec, +} + +impl Default for FeffResolvedCommands { + fn default() -> Self { + Self { + mode: FeffExecutionMode::Feff85LModules, + modules: Vec::new(), + } + } +} + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +#[serde(default)] +pub struct FeffRunResult { + pub mode: FeffExecutionMode, + pub workspace_dir: PathBuf, + pub feffinp_path: PathBuf, + pub resolved: FeffResolvedCommands, + pub logs: Vec, + pub path_files: Vec, +} + +impl Default for FeffRunResult { + fn default() -> Self { + Self { + mode: FeffExecutionMode::Feff85LModules, + workspace_dir: PathBuf::new(), + feffinp_path: PathBuf::new(), + resolved: FeffResolvedCommands::default(), + logs: Vec::new(), + path_files: Vec::new(), + } + } +} + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +#[serde(untagged)] +pub enum PathParamSpec { + Value(f64), + Expression(String), +} + +impl Default for PathParamSpec { + fn default() -> Self { + Self::Value(0.0) + } +} + +impl From for PathParamSpec { + fn from(value: f64) -> Self { + Self::Value(value) + } +} + +impl From<&str> for PathParamSpec { + fn from(value: &str) -> Self { + Self::Expression(value.to_string()) + } +} + +impl From for PathParamSpec { + fn from(value: String) -> Self { + Self::Expression(value) + } +} + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +#[serde(default)] +pub struct FitVariable { + pub value: f64, + pub vary: bool, + pub min: Option, + pub max: Option, + pub expr: Option, + pub stderr: Option, + pub init_value: f64, +} + +impl Default for FitVariable { + fn default() -> Self { + Self { + value: 0.0, + vary: false, + min: None, + max: None, + expr: None, + stderr: None, + init_value: 0.0, + } + } +} + +impl FitVariable { + pub fn new(value: f64, vary: bool) -> Self { + Self { + value, + vary, + init_value: value, + ..Self::default() + } + } + + pub fn with_bounds(mut self, min: Option, max: Option) -> Self { + self.min = min; + self.max = max; + self + } + + pub fn with_expr>(mut self, expr: S) -> Self { + self.expr = Some(expr.into()); + self.vary = false; + self + } + + pub fn clamp(&self, value: f64) -> f64 { + let mut out = value; + if let Some(min) = self.min { + out = out.max(min); + } + if let Some(max) = self.max { + out = out.min(max); + } + out + } +} + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)] +#[serde(default)] +pub struct FitVariables { + pub vars: BTreeMap, +} + +impl FitVariables { + pub fn new() -> Self { + Self::default() + } + + pub fn insert>(&mut self, name: S, variable: FitVariable) -> &mut Self { + self.vars.insert(name.into(), variable); + self + } + + pub fn get(&self, name: &str) -> Option<&FitVariable> { + self.vars.get(name) + } + + pub fn get_mut(&mut self, name: &str) -> Option<&mut FitVariable> { + self.vars.get_mut(name) + } +} + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +#[serde(default)] +pub struct FeffDat { + pub filename: String, + pub title: String, + pub version: String, + pub absorber: Option, + pub shell: Option, + pub reff: f64, + pub degen: f64, + pub nleg: usize, + pub k: DVector, + pub real_phc: DVector, + pub mag_feff: DVector, + pub pha_feff: DVector, + pub red_fact: DVector, + pub lam: DVector, + pub rep: DVector, + pub pha: DVector, + pub amp: DVector, + pub geometry: Vec, +} + +impl Default for FeffDat { + fn default() -> Self { + Self { + filename: String::new(), + title: String::new(), + version: String::new(), + absorber: None, + shell: None, + reff: 0.0, + degen: 1.0, + nleg: 0, + k: DVector::zeros(0), + real_phc: DVector::zeros(0), + mag_feff: DVector::zeros(0), + pha_feff: DVector::zeros(0), + red_fact: DVector::zeros(0), + lam: DVector::zeros(0), + rep: DVector::zeros(0), + pha: DVector::zeros(0), + amp: DVector::zeros(0), + geometry: Vec::new(), + } + } +} + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +#[serde(default)] +pub struct FeffPathModel { + pub label: String, + pub feff: FeffDat, + pub use_path: bool, + pub degen: PathParamSpec, + pub s02: PathParamSpec, + pub e0: PathParamSpec, + pub ei: PathParamSpec, + pub deltar: PathParamSpec, + pub sigma2: PathParamSpec, + pub third: PathParamSpec, + pub fourth: PathParamSpec, +} + +impl Default for FeffPathModel { + fn default() -> Self { + Self { + label: String::new(), + feff: FeffDat::default(), + use_path: true, + degen: PathParamSpec::Value(1.0), + s02: PathParamSpec::Value(1.0), + e0: PathParamSpec::Value(0.0), + ei: PathParamSpec::Value(0.0), + deltar: PathParamSpec::Value(0.0), + sigma2: PathParamSpec::Value(0.0), + third: PathParamSpec::Value(0.0), + fourth: PathParamSpec::Value(0.0), + } + } +} + +impl FeffPathModel { + pub fn from_feffdat>(label: S, feff: FeffDat) -> Self { + let degen = feff.degen; + Self { + label: label.into(), + degen: PathParamSpec::Value(degen), + feff, + ..Self::default() + } + } +} + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +#[serde(default)] +pub struct FeffFitTransform { + pub kmin: f64, + pub kmax: f64, + pub kweight: f64, + pub dk: f64, + pub dk2: Option, + pub window: FTWindow, + pub nfft: usize, + pub kstep: Option, + pub rmin: f64, + pub rmax: f64, + pub dr: f64, + pub dr2: Option, + pub rwindow: FTWindow, + pub fitspace: FitSpace, +} + +impl Default for FeffFitTransform { + fn default() -> Self { + Self { + kmin: 0.0, + kmax: 20.0, + kweight: 2.0, + dk: 4.0, + dk2: None, + window: FTWindow::KaiserBessel, + nfft: 2048, + kstep: Some(0.05), + rmin: 1.0, + rmax: 3.0, + dr: 0.0, + dr2: None, + rwindow: FTWindow::Hanning, + fitspace: FitSpace::R, + } + } +} + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +#[serde(default)] +pub struct FeffFitDataset { + pub k: DVector, + pub chi: DVector, + pub epsilon_k: Option, + pub transform: FeffFitTransform, + pub paths: Vec, +} + +impl Default for FeffFitDataset { + fn default() -> Self { + Self { + k: DVector::zeros(0), + chi: DVector::zeros(0), + epsilon_k: None, + transform: FeffFitTransform::default(), + paths: Vec::new(), + } + } +} + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +#[serde(default)] +pub struct PathContribution { + pub label: String, + pub chi: DVector, + pub chir_re: DVector, + pub chir_im: DVector, + pub chir_mag: DVector, +} + +impl Default for PathContribution { + fn default() -> Self { + Self { + label: String::new(), + chi: DVector::zeros(0), + chir_re: DVector::zeros(0), + chir_im: DVector::zeros(0), + chir_mag: DVector::zeros(0), + } + } +} + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +#[serde(default)] +pub struct FeffFitResult { + pub variables: FitVariables, + pub n_vary: usize, + pub n_data: usize, + pub chi_square: f64, + pub reduced_chi_square: f64, + pub r_factor: f64, + pub k: DVector, + pub data_chi: DVector, + pub model_chi: DVector, + pub r: DVector, + pub data_chir_re: DVector, + pub data_chir_im: DVector, + pub model_chir_re: DVector, + pub model_chir_im: DVector, + pub model_chir_mag: DVector, + pub path_contributions: Vec, +} + +impl Default for FeffFitResult { + fn default() -> Self { + Self { + variables: FitVariables::default(), + n_vary: 0, + n_data: 0, + chi_square: 0.0, + reduced_chi_square: 0.0, + r_factor: 0.0, + k: DVector::zeros(0), + data_chi: DVector::zeros(0), + model_chi: DVector::zeros(0), + r: DVector::zeros(0), + data_chir_re: DVector::zeros(0), + data_chir_im: DVector::zeros(0), + model_chir_re: DVector::zeros(0), + model_chir_im: DVector::zeros(0), + model_chir_mag: DVector::zeros(0), + path_contributions: Vec::new(), + } + } +} diff --git a/crates/xraytsubaki/src/xafs/fitting/variables.rs b/crates/xraytsubaki/src/xafs/fitting/variables.rs new file mode 100644 index 0000000..f74c4bc --- /dev/null +++ b/crates/xraytsubaki/src/xafs/fitting/variables.rs @@ -0,0 +1,411 @@ +use std::collections::{BTreeMap, HashMap, HashSet}; + +use nalgebra::DVector; + +use super::errors::FittingError; +use super::types::{FitVariable, FitVariables, PathParamSpec}; + +impl FitVariables { + pub fn varying_names(&self) -> Vec { + self.vars + .iter() + .filter(|(_, var)| var.vary && var.expr.is_none()) + .map(|(name, _)| name.clone()) + .collect() + } + + pub fn parameter_vector(&self, names: &[String]) -> DVector { + DVector::from_iterator( + names.len(), + names + .iter() + .map(|name| self.vars.get(name).map(|var| var.value).unwrap_or(0.0)), + ) + } + + pub fn apply_parameter_vector( + &mut self, + names: &[String], + values: &DVector, + ) -> Result<(), FittingError> { + if names.len() != values.len() { + return Err(FittingError::InvalidDataset { + reason: format!( + "parameter vector length mismatch: names={}, values={}", + names.len(), + values.len() + ), + }); + } + for (index, name) in names.iter().enumerate() { + if let Some(var) = self.vars.get_mut(name) { + var.value = var.clamp(values[index]); + } + } + Ok(()) + } + + pub fn resolve_values(&self) -> Result, FittingError> { + let mut resolved: HashMap = HashMap::new(); + let mut visiting: HashSet = HashSet::new(); + + fn resolve_one( + name: &str, + vars: &BTreeMap, + resolved: &mut HashMap, + visiting: &mut HashSet, + ) -> Result { + if let Some(value) = resolved.get(name) { + return Ok(*value); + } + if !vars.contains_key(name) { + return Err(FittingError::UndefinedSymbol { + symbol: name.to_string(), + }); + } + if !visiting.insert(name.to_string()) { + return Err(FittingError::CyclicExpression { + symbol: name.to_string(), + }); + } + + let variable = vars.get(name).expect("checked contains_key"); + let value = if let Some(expr) = variable.expr.as_ref() { + eval_expression_with(expr, |symbol| { + if symbol == name { + return Err(FittingError::CyclicExpression { + symbol: symbol.to_string(), + }); + } + resolve_one(symbol, vars, resolved, visiting) + })? + } else { + variable.value + }; + + visiting.remove(name); + resolved.insert(name.to_string(), value); + Ok(value) + } + + for name in self.vars.keys() { + resolve_one(name, &self.vars, &mut resolved, &mut visiting)?; + } + + Ok(BTreeMap::from_iter(resolved.into_iter())) + } +} + +pub fn resolve_path_param( + spec: &PathParamSpec, + default: f64, + globals: &BTreeMap, + locals: &BTreeMap, +) -> Result { + match spec { + PathParamSpec::Value(value) => Ok(*value), + PathParamSpec::Expression(expr) => eval_expression_with(expr, |symbol| { + locals + .get(symbol) + .copied() + .or_else(|| globals.get(symbol).copied()) + .ok_or_else(|| FittingError::UndefinedSymbol { + symbol: symbol.to_string(), + }) + }), + } + .map(|value| if value.is_finite() { value } else { default }) +} + +pub fn eval_expression_with(expr: &str, resolver: F) -> Result +where + F: FnMut(&str) -> Result, +{ + let mut parser = ExprParser::new(expr, resolver); + let value = parser.parse_expression()?; + parser.skip_whitespace(); + if parser.pos < parser.input.len() { + return Err(FittingError::ExpressionFailed { + expr: expr.to_string(), + reason: format!("unexpected token at byte {}", parser.pos), + }); + } + if !value.is_finite() { + return Err(FittingError::ExpressionFailed { + expr: expr.to_string(), + reason: "expression produced non-finite value".to_string(), + }); + } + Ok(value) +} + +struct ExprParser<'a, F> +where + F: FnMut(&str) -> Result, +{ + input: &'a str, + pos: usize, + resolver: F, +} + +impl<'a, F> ExprParser<'a, F> +where + F: FnMut(&str) -> Result, +{ + fn new(input: &'a str, resolver: F) -> Self { + Self { + input, + pos: 0, + resolver, + } + } + + fn parse_expression(&mut self) -> Result { + self.parse_add_sub() + } + + fn parse_add_sub(&mut self) -> Result { + let mut value = self.parse_mul_div()?; + loop { + self.skip_whitespace(); + if self.consume_char('+') { + value += self.parse_mul_div()?; + } else if self.consume_char('-') { + value -= self.parse_mul_div()?; + } else { + break; + } + } + Ok(value) + } + + fn parse_mul_div(&mut self) -> Result { + let mut value = self.parse_pow()?; + loop { + self.skip_whitespace(); + if self.consume_char('*') { + value *= self.parse_pow()?; + } else if self.consume_char('/') { + let rhs = self.parse_pow()?; + if rhs.abs() < f64::EPSILON { + return Err(FittingError::ExpressionFailed { + expr: self.input.to_string(), + reason: "division by zero".to_string(), + }); + } + value /= rhs; + } else { + break; + } + } + Ok(value) + } + + fn parse_pow(&mut self) -> Result { + let lhs = self.parse_unary()?; + self.skip_whitespace(); + if self.consume_char('^') { + let rhs = self.parse_pow()?; + Ok(lhs.powf(rhs)) + } else { + Ok(lhs) + } + } + + fn parse_unary(&mut self) -> Result { + self.skip_whitespace(); + if self.consume_char('+') { + return self.parse_unary(); + } + if self.consume_char('-') { + return self.parse_unary().map(|value| -value); + } + self.parse_primary() + } + + fn parse_primary(&mut self) -> Result { + self.skip_whitespace(); + + if self.consume_char('(') { + let value = self.parse_expression()?; + self.skip_whitespace(); + if !self.consume_char(')') { + return Err(FittingError::ExpressionFailed { + expr: self.input.to_string(), + reason: "missing closing ')'".to_string(), + }); + } + return Ok(value); + } + + if let Some(number) = self.try_parse_number()? { + return Ok(number); + } + + let ident = self.try_parse_identifier(); + if let Some(name) = ident { + return (&mut self.resolver)(&name).map_err(|err| match err { + FittingError::UndefinedSymbol { .. } | FittingError::CyclicExpression { .. } => err, + other => FittingError::ExpressionFailed { + expr: self.input.to_string(), + reason: other.to_string(), + }, + }); + } + + Err(FittingError::ExpressionFailed { + expr: self.input.to_string(), + reason: format!("unexpected token at byte {}", self.pos), + }) + } + + fn try_parse_number(&mut self) -> Result, FittingError> { + self.skip_whitespace(); + let bytes = self.input.as_bytes(); + if self.pos >= bytes.len() { + return Ok(None); + } + + let starts_number = matches!(bytes[self.pos] as char, '0'..='9' | '.'); + if !starts_number { + return Ok(None); + } + + let start = self.pos; + let mut seen_exp = false; + + while self.pos < bytes.len() { + let c = bytes[self.pos] as char; + match c { + '0'..='9' | '.' => self.pos += 1, + 'e' | 'E' if !seen_exp => { + seen_exp = true; + self.pos += 1; + if self.pos < bytes.len() { + let sign = bytes[self.pos] as char; + if sign == '+' || sign == '-' { + self.pos += 1; + } + } + } + _ => break, + } + } + + let raw = &self.input[start..self.pos]; + raw.parse::() + .map(Some) + .map_err(|_| FittingError::ExpressionFailed { + expr: self.input.to_string(), + reason: format!("invalid numeric literal '{raw}'"), + }) + } + + fn try_parse_identifier(&mut self) -> Option { + self.skip_whitespace(); + let bytes = self.input.as_bytes(); + if self.pos >= bytes.len() { + return None; + } + + let first = bytes[self.pos] as char; + if !(first.is_ascii_alphabetic() || first == '_') { + return None; + } + + let start = self.pos; + self.pos += 1; + while self.pos < bytes.len() { + let c = bytes[self.pos] as char; + if c.is_ascii_alphanumeric() || c == '_' { + self.pos += 1; + } else { + break; + } + } + + Some(self.input[start..self.pos].to_string()) + } + + fn skip_whitespace(&mut self) { + let bytes = self.input.as_bytes(); + while self.pos < bytes.len() && (bytes[self.pos] as char).is_ascii_whitespace() { + self.pos += 1; + } + } + + fn consume_char(&mut self, expected: char) -> bool { + self.skip_whitespace(); + let bytes = self.input.as_bytes(); + if self.pos < bytes.len() && bytes[self.pos] as char == expected { + self.pos += 1; + true + } else { + false + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_eval_expression_math_and_symbols() { + let mut symbols = BTreeMap::new(); + symbols.insert("a".to_string(), 2.0); + symbols.insert("b".to_string(), 3.0); + + let value = eval_expression_with("a + b*2 - (4/2)", |name| { + symbols + .get(name) + .copied() + .ok_or_else(|| FittingError::UndefinedSymbol { + symbol: name.to_string(), + }) + }) + .unwrap(); + + assert!((value - 6.0).abs() < 1.0e-12); + } + + #[test] + fn test_eval_expression_rejects_unknown_symbol() { + let err = eval_expression_with("a + z", |name| { + if name == "a" { + Ok(1.0) + } else { + Err(FittingError::UndefinedSymbol { + symbol: name.to_string(), + }) + } + }) + .unwrap_err(); + + assert!(matches!(err, FittingError::UndefinedSymbol { .. })); + } + + #[test] + fn test_fit_variables_resolve_expression_graph() { + let mut vars = FitVariables::new(); + vars.insert("amp", FitVariable::new(0.9, true)); + vars.insert("sig2", FitVariable::new(0.003, true)); + vars.insert( + "sig2_scale", + FitVariable::new(0.0, false).with_expr("sig2 * 2"), + ); + + let resolved = vars.resolve_values().unwrap(); + assert!((resolved["sig2_scale"] - 0.006).abs() < 1.0e-12); + } + + #[test] + fn test_fit_variables_detect_cycle() { + let mut vars = FitVariables::new(); + vars.insert("a", FitVariable::new(0.0, false).with_expr("b")); + vars.insert("b", FitVariable::new(0.0, false).with_expr("a")); + + let err = vars.resolve_values().unwrap_err(); + assert!(matches!(err, FittingError::CyclicExpression { .. })); + } +} diff --git a/crates/xraytsubaki/src/xafs/mod.rs b/crates/xraytsubaki/src/xafs/mod.rs index 1643ab9..a3c64e7 100644 --- a/crates/xraytsubaki/src/xafs/mod.rs +++ b/crates/xraytsubaki/src/xafs/mod.rs @@ -24,6 +24,7 @@ pub mod background; pub mod background; pub mod bessel_i0; pub mod errors; +pub mod fitting; pub mod io; pub mod lmutils; #[cfg(feature = "ndarray-compat")] @@ -58,6 +59,7 @@ use xafsutils::XAFSUtils; // Re-export error types for public API pub use errors::{BackgroundError, DataError, FFTError, IOError, MathError, NormalizationError}; +pub use fitting::errors::FittingError; /// Top-level error type that aggregates all domain-specific errors. #[derive(Error, Debug, Clone)] @@ -80,6 +82,9 @@ pub enum XAFSError { #[error("mathematical operation failed: {0}")] Math(#[from] MathError), + #[error("fitting operation failed: {0}")] + Fitting(#[from] FittingError), + // Legacy error variants for backwards compatibility #[error("not enough data")] NotEnoughData, diff --git a/crates/xraytsubaki/tests/pythonscript/.gitignore b/crates/xraytsubaki/tests/pythonscript/.gitignore new file mode 100644 index 0000000..a230a78 --- /dev/null +++ b/crates/xraytsubaki/tests/pythonscript/.gitignore @@ -0,0 +1,2 @@ +.venv/ +__pycache__/ diff --git a/crates/xraytsubaki/tests/pythonscript/README.md b/crates/xraytsubaki/tests/pythonscript/README.md new file mode 100644 index 0000000..b35c2e5 --- /dev/null +++ b/crates/xraytsubaki/tests/pythonscript/README.md @@ -0,0 +1,25 @@ +# Larch Fixture Generation (uv) + +This directory uses `uv` for generating xraylarch-based reference fixtures. + +## Setup dependencies + +```bash +uv lock --project crates/xraytsubaki/tests/pythonscript +``` + +## Regenerate FEFF fitting fixtures + +```bash +uv run --project crates/xraytsubaki/tests/pythonscript \ + python crates/xraytsubaki/tests/pythonscript/generate_test.py --target feff +``` + +## Regenerate all fixtures + +```bash +uv run --project crates/xraytsubaki/tests/pythonscript \ + python crates/xraytsubaki/tests/pythonscript/generate_test.py +``` + +This generates/updates files under `crates/xraytsubaki/tests/testfiles/`, including FEFF fitting references. diff --git a/crates/xraytsubaki/tests/pythonscript/generate_test.py b/crates/xraytsubaki/tests/pythonscript/generate_test.py index c93d86b..60e38ad 100644 --- a/crates/xraytsubaki/tests/pythonscript/generate_test.py +++ b/crates/xraytsubaki/tests/pythonscript/generate_test.py @@ -1,9 +1,12 @@ import os +import argparse import numpy as np from larch.math import utils from larch import Group from larch.xafs import pre_edge, preedge, xafsft, autobk, xftf, xftr +from larch.fitting import param, param_group +from larch.xafs import feffpath, path2chi, ff2chi import json current_dir = os.path.dirname(os.path.abspath(__file__)) @@ -100,18 +103,76 @@ def generate_xftf(): np.savetxt(save_filepath, np.array([group.r, group.chir_mag]).T) + +def generate_feff_fitting_refs(): + test_dir = os.path.join(current_dir, "../testfiles/") + feff_path1 = os.path.join(test_dir, "feffcu01.dat") + feff_path2 = os.path.join(test_dir, "feff0002.dat") + + k = 0.05 * (np.arange(280) + 1.0) + pars = param_group( + amp=param(0.92, vary=False), + de0=param(1.4, vary=False), + sig2=param(0.0031, vary=False), + dr=param(0.011, vary=False), + amp2=param(0.35, vary=False), + dr2=param(0.0025, vary=False), + ) + + path1 = feffpath(feff_path1, s02="amp", e0="de0", sigma2="sig2", deltar="dr") + path2chi(path1, params=pars, k=k) + np.savetxt( + os.path.join(test_dir, "feff_path_chi_larch_ref.txt"), + np.column_stack([path1.k, path1.chi]), + ) + + path2 = feffpath(feff_path2, s02="amp2", e0="de0", sigma2="sig2", deltar="dr2") + out = Group() + ff2chi([path1, path2], params=pars, k=k, group=out) + np.savetxt( + os.path.join(test_dir, "feff_ff2chi_larch_ref.txt"), + np.column_stack([k, out.chi]), + ) + + fit_target_pars = param_group( + amp=param(0.88, vary=False), + de0=param(1.2, vary=False), + sig2=param(0.0032, vary=False), + dr=param(0.012, vary=False), + ) + fit_target_path = feffpath(feff_path1, s02="amp", e0="de0", sigma2="sig2", deltar="dr") + path2chi(fit_target_path, params=fit_target_pars, k=k) + np.savetxt( + os.path.join(test_dir, "feff_fit_target_larch.txt"), + np.column_stack([k, fit_target_path.chi]), + ) + +TARGETS = { + "smooth": generate_test_smooth, + "preedge": generate_preedge, + "window": generate_window_function, + "autobk": generate_autobk, + "xftf": generate_xftf, + "feff": generate_feff_fitting_refs, +} + + if __name__ == "__main__": - - generate_test_smooth() - - generate_preedge() - - generate_window_function() - - generate_autobk() - - generate_xftf() \ No newline at end of file + parser = argparse.ArgumentParser() + parser.add_argument( + "--target", + choices=["all", *TARGETS.keys()], + default="all", + help="Select one fixture group to generate; default updates all fixture groups.", + ) + args = parser.parse_args() + + if args.target == "all": + for fn in TARGETS.values(): + fn() + else: + TARGETS[args.target]() diff --git a/crates/xraytsubaki/tests/pythonscript/pyproject.toml b/crates/xraytsubaki/tests/pythonscript/pyproject.toml new file mode 100644 index 0000000..03b0b33 --- /dev/null +++ b/crates/xraytsubaki/tests/pythonscript/pyproject.toml @@ -0,0 +1,8 @@ +[project] +name = "xraytsubaki-larch-fixtures" +version = "0.1.0" +requires-python = ">=3.11" +dependencies = [ + "numpy>=2.4.2", + "xraylarch>=2026.1.1", +] diff --git a/crates/xraytsubaki/tests/pythonscript/uv.lock b/crates/xraytsubaki/tests/pythonscript/uv.lock new file mode 100644 index 0000000..95460cd --- /dev/null +++ b/crates/xraytsubaki/tests/pythonscript/uv.lock @@ -0,0 +1,2368 @@ +version = 1 +revision = 3 +requires-python = ">=3.11" +resolution-markers = [ + "python_full_version >= '3.14' and sys_platform == 'win32'", + "python_full_version < '3.14' and sys_platform == 'win32'", + "python_full_version >= '3.14' and sys_platform != 'win32'", + "python_full_version < '3.14' and sys_platform != 'win32'", +] + +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, +] + +[[package]] +name = "asteval" +version = "1.0.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8f/d4/c19cac7814b8ec273804ebee3c5d3c69ee2084cb75f25297cb4177a6aa85/asteval-1.0.8.tar.gz", hash = "sha256:7175134331726df0e1569f4ab5fa59266192cf1b365db0ff463c978842075cbb", size = 53989, upload-time = "2025-12-17T20:56:08.383Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/99/31/6cf181011dc738c33bf6ba7aea2e8e1d3c1f71b7dab1942f3054f66f6202/asteval-1.0.8-py3-none-any.whl", hash = "sha256:6c64385c6ff859a474953c124987c7ee8354d781c76509b2c598741c4d1d28e9", size = 22968, upload-time = "2025-12-17T20:56:07.457Z" }, +] + +[[package]] +name = "bibtexparser" +version = "1.4.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyparsing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/44/1c/577d3ce406e88f370e80a6ebf76ae52a2866521e0b585e8ec612759894f1/bibtexparser-1.4.4.tar.gz", hash = "sha256:093b6c824f7a71d3a748867c4057b71f77c55b8dbc07efc993b781771520d8fb", size = 55594, upload-time = "2026-01-29T18:58:01.366Z" } + +[[package]] +name = "blake3" +version = "1.0.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.12'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/75/aa/abcd75e9600987a0bc6cfe9b6b2ff3f0e2cb08c170addc6e76035b5c4cb3/blake3-1.0.8.tar.gz", hash = "sha256:513cc7f0f5a7c035812604c2c852a0c1468311345573de647e310aca4ab165ba", size = 117308, upload-time = "2025-10-14T06:47:48.83Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7d/e1/1df74c915fde3c48940247ad64984f40f5968191d7b5230bcc7b31402e7c/blake3-1.0.8-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:9a8946cb6b1d2b2096daaaa89856f39887bce2b78503fa31b78173e3a86fa281", size = 350481, upload-time = "2025-10-14T06:45:26.625Z" }, + { url = "https://files.pythonhosted.org/packages/bb/0d/7c47ae1f5f8d60783ce6234a8b31db351fc62be243006a6276284ca3d40d/blake3-1.0.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:adccc3a139207e02bb7d7bb0715fe0b87069685aad5f3afff820b2f829467904", size = 328039, upload-time = "2025-10-14T06:45:32.844Z" }, + { url = "https://files.pythonhosted.org/packages/f4/0a/515209b0c282c360e249b89cd85350d97cfd55fadbb4df736c67b77b27a1/blake3-1.0.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7fcfe81b3ae3fb5d2e88be0d3259603ff95f0d5ed69f655c28fdaef31e49a470", size = 371092, upload-time = "2025-10-14T06:45:34.062Z" }, + { url = "https://files.pythonhosted.org/packages/a0/33/9d342a2bf5817f006bbe947335e5d387327541ea47590854947befd01251/blake3-1.0.8-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:58ce8d45a5bb5326482de72ea1969a378634236186a970fef63058a5b7b8b435", size = 374859, upload-time = "2025-10-14T06:45:35.262Z" }, + { url = "https://files.pythonhosted.org/packages/5b/fc/ea4bef850a7ec9fbb383503fd3c56056dd9fa44e10c3bc61050ab7b2bac0/blake3-1.0.8-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:83605dbf43f581d8b7175b7f3bfe5388bad5a7c6ac175c9c11d669da31133f4b", size = 448585, upload-time = "2025-10-14T06:45:36.542Z" }, + { url = "https://files.pythonhosted.org/packages/a5/67/167a65a4c431715407d07b1b8b1367698a3ad88e7260edb85f0c5293f08a/blake3-1.0.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b5573b052777142b2cecc453d022c3f21aa4aba75011258410bb98f41c1a727", size = 507519, upload-time = "2025-10-14T06:45:37.814Z" }, + { url = "https://files.pythonhosted.org/packages/32/e2/0886e192d634b264c613b0fbf380745b39992b424a0effc00ef08783644e/blake3-1.0.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe1b02ab49bfd969ef50b9f17482a2011c77536654af21807ba5c2674e0bb2a0", size = 393645, upload-time = "2025-10-14T06:45:39.146Z" }, + { url = "https://files.pythonhosted.org/packages/fc/3b/7fb2fe615448caaa5f6632b2c7551117b38ccac747a3a5769181e9751641/blake3-1.0.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c7780666dc6be809b49442d6d5ce06fdbe33024a87560b58471103ec17644682", size = 387640, upload-time = "2025-10-14T06:45:40.546Z" }, + { url = "https://files.pythonhosted.org/packages/bc/8c/2bfc942c6c97cb3d20f341859343bb86ee20af723fedfc886373e606079b/blake3-1.0.8-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:af394b50c6aa0b1b957a99453d1ee440ef67cd2d1b5669c731647dc723de8a3a", size = 550316, upload-time = "2025-10-14T06:45:42.003Z" }, + { url = "https://files.pythonhosted.org/packages/7e/75/0252be37620699b79dbaa799c9b402d63142a131d16731df4ef09d135dd7/blake3-1.0.8-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c63ece266a43014cf29e772a82857cd8e90315ae3ed53e3c5204851596edd5f2", size = 554463, upload-time = "2025-10-14T06:45:43.22Z" }, + { url = "https://files.pythonhosted.org/packages/8c/6d/d698ae2d5ddd25976fd2c11b079ca071334aecbba6414da8c9cc8e19d833/blake3-1.0.8-cp311-cp311-win32.whl", hash = "sha256:44c2815d4616fad7e2d757d121c0a11780f70ffc817547b3059b5c7e224031a7", size = 228375, upload-time = "2025-10-14T06:45:44.425Z" }, + { url = "https://files.pythonhosted.org/packages/34/d7/33b01e27dc3542dc9ec44132684506f880cd0257b04da0bf7f4b2afa41c8/blake3-1.0.8-cp311-cp311-win_amd64.whl", hash = "sha256:8f2ef8527a7a8afd99b16997d015851ccc0fe2a409082cebb980af2554e5c74c", size = 215733, upload-time = "2025-10-14T06:45:46.049Z" }, + { url = "https://files.pythonhosted.org/packages/ed/a0/b7b6dff04012cfd6e665c09ee446f749bd8ea161b00f730fe1bdecd0f033/blake3-1.0.8-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:d8da4233984d51471bd4e4366feda1d90d781e712e0a504ea54b1f2b3577557b", size = 347983, upload-time = "2025-10-14T06:45:47.214Z" }, + { url = "https://files.pythonhosted.org/packages/5b/a2/264091cac31d7ae913f1f296abc20b8da578b958ffb86100a7ce80e8bf5c/blake3-1.0.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1257be19f2d381c868a34cc822fc7f12f817ddc49681b6d1a2790bfbda1a9865", size = 325415, upload-time = "2025-10-14T06:45:48.482Z" }, + { url = "https://files.pythonhosted.org/packages/ee/7d/85a4c0782f613de23d114a7a78fcce270f75b193b3ff3493a0de24ba104a/blake3-1.0.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:269f255b110840e52b6ce9db02217e39660ebad3e34ddd5bca8b8d378a77e4e1", size = 371296, upload-time = "2025-10-14T06:45:49.674Z" }, + { url = "https://files.pythonhosted.org/packages/e3/20/488475254976ed93fab57c67aa80d3b40df77f7d9db6528c9274bff53e08/blake3-1.0.8-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:66ca28a673025c40db3eba21a9cac52f559f83637efa675b3f6bd8683f0415f3", size = 374516, upload-time = "2025-10-14T06:45:51.23Z" }, + { url = "https://files.pythonhosted.org/packages/7b/21/2a1c47fedb77fb396512677ec6d46caf42ac6e9a897db77edd0a2a46f7bb/blake3-1.0.8-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bcb04966537777af56c1f399b35525aa70a1225816e121ff95071c33c0f7abca", size = 447911, upload-time = "2025-10-14T06:45:52.637Z" }, + { url = "https://files.pythonhosted.org/packages/cb/7d/db0626df16029713e7e61b67314c4835e85c296d82bd907c21c6ea271da2/blake3-1.0.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e5b5da177d62cc4b7edf0cea08fe4dec960c9ac27f916131efa890a01f747b93", size = 505420, upload-time = "2025-10-14T06:45:54.445Z" }, + { url = "https://files.pythonhosted.org/packages/5b/55/6e737850c2d58a6d9de8a76dad2ae0f75b852a23eb4ecb07a0b165e6e436/blake3-1.0.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:38209b10482c97e151681ea3e91cc7141f56adbbf4820a7d701a923124b41e6a", size = 394189, upload-time = "2025-10-14T06:45:55.719Z" }, + { url = "https://files.pythonhosted.org/packages/5b/94/eafaa5cdddadc0c9c603a6a6d8339433475e1a9f60c8bb9c2eed2d8736b6/blake3-1.0.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:504d1399b7fb91dfe5c25722d2807990493185faa1917456455480c36867adb5", size = 388001, upload-time = "2025-10-14T06:45:57.067Z" }, + { url = "https://files.pythonhosted.org/packages/17/81/735fa00d13de7f68b25e1b9cb36ff08c6f165e688d85d8ec2cbfcdedccc5/blake3-1.0.8-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c84af132aa09abeadf9a0118c8fb26f4528f3f42c10ef8be0fcf31c478774ec4", size = 550302, upload-time = "2025-10-14T06:45:58.657Z" }, + { url = "https://files.pythonhosted.org/packages/0e/c6/d1fe8bdea4a6088bd54b5a58bc40aed89a4e784cd796af7722a06f74bae7/blake3-1.0.8-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a25db3d36b55f5ed6a86470155cc749fc9c5b91c949b8d14f48658f9d960d9ec", size = 554211, upload-time = "2025-10-14T06:46:00.269Z" }, + { url = "https://files.pythonhosted.org/packages/55/d1/ca74aa450cbe10e396e061f26f7a043891ffa1485537d6b30d3757e20995/blake3-1.0.8-cp312-cp312-win32.whl", hash = "sha256:e0fee93d5adcd44378b008c147e84f181f23715307a64f7b3db432394bbfce8b", size = 228343, upload-time = "2025-10-14T06:46:01.533Z" }, + { url = "https://files.pythonhosted.org/packages/4d/42/bbd02647169e3fbed27558555653ac2578c6f17ccacf7d1956c58ef1d214/blake3-1.0.8-cp312-cp312-win_amd64.whl", hash = "sha256:6a6eafc29e4f478d365a87d2f25782a521870c8514bb43734ac85ae9be71caf7", size = 215704, upload-time = "2025-10-14T06:46:02.79Z" }, + { url = "https://files.pythonhosted.org/packages/55/b8/11de9528c257f7f1633f957ccaff253b706838d22c5d2908e4735798ec01/blake3-1.0.8-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:46dc20976bd6c235959ef0246ec73420d1063c3da2839a9c87ca395cf1fd7943", size = 347771, upload-time = "2025-10-14T06:46:04.248Z" }, + { url = "https://files.pythonhosted.org/packages/50/26/f7668be55c909678b001ecacff11ad7016cd9b4e9c7cc87b5971d638c5a9/blake3-1.0.8-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d17eb6382634b3a5bc0c0e0454d5265b0becaeeadb6801ed25150b39a999d0cc", size = 325431, upload-time = "2025-10-14T06:46:06.136Z" }, + { url = "https://files.pythonhosted.org/packages/77/57/e8a85fa261894bf7ce7af928ff3408aab60287ab8d58b55d13a3f700b619/blake3-1.0.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19fc6f2b7edab8acff6895fc6e38c19bd79f4c089e21153020c75dfc7397d52d", size = 370994, upload-time = "2025-10-14T06:46:07.398Z" }, + { url = "https://files.pythonhosted.org/packages/62/cd/765b76bb48b8b294fea94c9008b0d82b4cfa0fa2f3c6008d840d01a597e4/blake3-1.0.8-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4f54cff7f15d91dc78a63a2dd02a3dccdc932946f271e2adb4130e0b4cf608ba", size = 374372, upload-time = "2025-10-14T06:46:08.698Z" }, + { url = "https://files.pythonhosted.org/packages/36/7a/32084eadbb28592bb07298f0de316d2da586c62f31500a6b1339a7e7b29b/blake3-1.0.8-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7e12a777f6b798eb8d06f875d6e108e3008bd658d274d8c676dcf98e0f10537", size = 447627, upload-time = "2025-10-14T06:46:10.002Z" }, + { url = "https://files.pythonhosted.org/packages/a7/f4/3788a1d86e17425eea147e28d7195d7053565fc279236a9fd278c2ec495e/blake3-1.0.8-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ddfc59b0176fb31168f08d5dd536e69b1f4f13b5a0f4b0c3be1003efd47f9308", size = 507536, upload-time = "2025-10-14T06:46:11.614Z" }, + { url = "https://files.pythonhosted.org/packages/fe/01/4639cba48513b94192681b4da472cdec843d3001c5344d7051ee5eaef606/blake3-1.0.8-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a2336d5b2a801a7256da21150348f41610a6c21dae885a3acb1ebbd7333d88d8", size = 394105, upload-time = "2025-10-14T06:46:12.808Z" }, + { url = "https://files.pythonhosted.org/packages/21/ae/6e55c19c8460fada86cd1306a390a09b0c5a2e2e424f9317d2edacea439f/blake3-1.0.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4072196547484c95a5a09adbb952e9bb501949f03f9e2a85e7249ef85faaba8", size = 386928, upload-time = "2025-10-14T06:46:16.284Z" }, + { url = "https://files.pythonhosted.org/packages/ee/6c/05b7a5a907df1be53a8f19e7828986fc6b608a44119641ef9c0804fbef15/blake3-1.0.8-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:0eab3318ec02f8e16fe549244791ace2ada2c259332f0c77ab22cf94dfff7130", size = 550003, upload-time = "2025-10-14T06:46:17.791Z" }, + { url = "https://files.pythonhosted.org/packages/b4/03/f0ea4adfedc1717623be6460b3710fcb725ca38082c14274369803f727e1/blake3-1.0.8-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:a33b9a1fb6d1d559a8e0d04b041e99419a6bb771311c774f6ff57ed7119c70ed", size = 553857, upload-time = "2025-10-14T06:46:19.088Z" }, + { url = "https://files.pythonhosted.org/packages/cc/6f/e5410d2e2a30c8aba8389ffc1c0061356916bf5ecd0a210344e7b69b62ab/blake3-1.0.8-cp313-cp313-win32.whl", hash = "sha256:e171b169cb7ea618e362a4dddb7a4d4c173bbc08b9ba41ea3086dd1265530d4f", size = 228315, upload-time = "2025-10-14T06:46:20.391Z" }, + { url = "https://files.pythonhosted.org/packages/79/ef/d9c297956dfecd893f29f59e7b22445aba5b47b7f6815d9ba5dcd73fcae6/blake3-1.0.8-cp313-cp313-win_amd64.whl", hash = "sha256:3168c457255b5d2a2fc356ba696996fcaff5d38284f968210d54376312107662", size = 215477, upload-time = "2025-10-14T06:46:21.542Z" }, + { url = "https://files.pythonhosted.org/packages/20/ba/eaa7723d66dd8ab762a3e85e139bb9c46167b751df6e950ad287adb8fb61/blake3-1.0.8-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:b4d672c24dc15ec617d212a338a4ca14b449829b6072d09c96c63b6e6b621aed", size = 347289, upload-time = "2025-10-14T06:46:22.772Z" }, + { url = "https://files.pythonhosted.org/packages/47/b3/6957f6ee27f0d5b8c4efdfda68a1298926a88c099f4dd89c711049d16526/blake3-1.0.8-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:1af0e5a29aa56d4fba904452ae784740997440afd477a15e583c38338e641f41", size = 324444, upload-time = "2025-10-14T06:46:24.729Z" }, + { url = "https://files.pythonhosted.org/packages/13/da/722cebca11238f3b24d3cefd2361c9c9ea47cfa0ad9288eeb4d1e0b7cf93/blake3-1.0.8-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef153c5860d5bf1cc71aece69b28097d2a392913eb323d6b52555c875d0439fc", size = 370441, upload-time = "2025-10-14T06:46:26.29Z" }, + { url = "https://files.pythonhosted.org/packages/2e/d5/2f7440c8e41c0af995bad3a159e042af0f4ed1994710af5b4766ca918f65/blake3-1.0.8-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e8ae3689f0c7bfa6ce6ae45cab110e4c3442125c4c23b28f1f097856de26e4d1", size = 374312, upload-time = "2025-10-14T06:46:27.451Z" }, + { url = "https://files.pythonhosted.org/packages/a6/6c/fb6a7812e60ce3e110bcbbb11f167caf3e975c589572c41e1271f35f2c41/blake3-1.0.8-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3fb83532f7456ddeb68dae1b36e1f7c52f9cb72852ac01159bbcb1a12b0f8be0", size = 447007, upload-time = "2025-10-14T06:46:29.056Z" }, + { url = "https://files.pythonhosted.org/packages/13/3b/c99b43fae5047276ea9d944077c190fc1e5f22f57528b9794e21f7adedc6/blake3-1.0.8-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6ae7754c7d96e92a70a52e07c732d594cf9924d780f49fffd3a1e9235e0f5ba7", size = 507323, upload-time = "2025-10-14T06:46:30.661Z" }, + { url = "https://files.pythonhosted.org/packages/fc/bb/ba90eddd592f8c074a0694cb0a744b6bd76bfe67a14c2b490c8bdfca3119/blake3-1.0.8-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4bacaae75e98dee3b7da6c5ee3b81ee21a3352dd2477d6f1d1dbfd38cdbf158a", size = 393449, upload-time = "2025-10-14T06:46:31.805Z" }, + { url = "https://files.pythonhosted.org/packages/25/ed/58a2acd0b9e14459cdaef4344db414d4a36e329b9720921b442a454dd443/blake3-1.0.8-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9456c829601d72852d8ba0af8dae0610f7def1d59f5942efde1e2ef93e8a8b57", size = 386844, upload-time = "2025-10-14T06:46:33.195Z" }, + { url = "https://files.pythonhosted.org/packages/4a/04/fed09845b18d90862100c8e48308261e2f663aab25d3c71a6a0bdda6618b/blake3-1.0.8-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:497ef8096ec4ac1ffba9a66152cee3992337cebf8ea434331d8fd9ce5423d227", size = 549550, upload-time = "2025-10-14T06:46:35.23Z" }, + { url = "https://files.pythonhosted.org/packages/d6/65/1859fddfabc1cc72548c2269d988819aad96d854e25eae00531517925901/blake3-1.0.8-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:511133bab85ff60ed143424ce484d08c60894ff7323f685d7a6095f43f0c85c3", size = 553805, upload-time = "2025-10-14T06:46:36.532Z" }, + { url = "https://files.pythonhosted.org/packages/c1/c7/2969352017f62378e388bb07bb2191bc9a953f818dc1cd6b9dd5c24916e1/blake3-1.0.8-cp313-cp313t-win32.whl", hash = "sha256:9c9fbdacfdeb68f7ca53bb5a7a5a593ec996eaf21155ad5b08d35e6f97e60877", size = 228068, upload-time = "2025-10-14T06:46:37.826Z" }, + { url = "https://files.pythonhosted.org/packages/d8/fc/923e25ac9cadfff1cd20038bcc0854d0f98061eb6bc78e42c43615f5982d/blake3-1.0.8-cp313-cp313t-win_amd64.whl", hash = "sha256:3cec94ed5676821cf371e9c9d25a41b4f3ebdb5724719b31b2749653b7cc1dfa", size = 215369, upload-time = "2025-10-14T06:46:39.054Z" }, + { url = "https://files.pythonhosted.org/packages/2e/2a/9f13ea01b03b1b4751a1cc2b6c1ef4b782e19433a59cf35b59cafb2a2696/blake3-1.0.8-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:2c33dac2c6112bc23f961a7ca305c7e34702c8177040eb98d0389d13a347b9e1", size = 347016, upload-time = "2025-10-14T06:46:40.318Z" }, + { url = "https://files.pythonhosted.org/packages/06/8e/8458c4285fbc5de76414f243e4e0fcab795d71a8b75324e14959aee699da/blake3-1.0.8-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c445eff665d21c3b3b44f864f849a2225b1164c08654beb23224a02f087b7ff1", size = 324496, upload-time = "2025-10-14T06:46:42.355Z" }, + { url = "https://files.pythonhosted.org/packages/49/fa/b913eb9cc4af708c03e01e6b88a8bb3a74833ba4ae4b16b87e2829198e06/blake3-1.0.8-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a47939f04b89c5c6ff1e51e883e5efab1ea1bf01a02f4d208d216dddd63d0dd8", size = 370654, upload-time = "2025-10-14T06:46:43.907Z" }, + { url = "https://files.pythonhosted.org/packages/7f/4f/245e0800c33b99c8f2b570d9a7199b51803694913ee4897f339648502933/blake3-1.0.8-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:73e0b4fa25f6e3078526a592fb38fca85ef204fd02eced6731e1cdd9396552d4", size = 374693, upload-time = "2025-10-14T06:46:45.186Z" }, + { url = "https://files.pythonhosted.org/packages/a2/a6/8cb182c8e482071dbdfcc6ec0048271fd48bcb78782d346119ff54993700/blake3-1.0.8-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b0543c57eb9d6dac9d4bced63e9f7f7b546886ac04cec8da3c3d9c8f30cbbb7", size = 447673, upload-time = "2025-10-14T06:46:46.358Z" }, + { url = "https://files.pythonhosted.org/packages/06/b7/1cbbb5574d2a9436d1b15e7eb5b9d82e178adcaca71a97b0fddaca4bfe3a/blake3-1.0.8-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ed972ebd553c0c25363459e9fc71a38c045d8419e365b59acd8cd791eff13981", size = 507233, upload-time = "2025-10-14T06:46:48.109Z" }, + { url = "https://files.pythonhosted.org/packages/9c/45/b55825d90af353b3e26c653bab278da9d6563afcf66736677f9397e465be/blake3-1.0.8-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3bafdec95dfffa3f6571e529644744e280337df15ddd9728f224ba70c5779b23", size = 393852, upload-time = "2025-10-14T06:46:49.511Z" }, + { url = "https://files.pythonhosted.org/packages/34/73/9058a1a457dd20491d1b37de53d6876eff125e1520d9b2dd7d0acbc88de2/blake3-1.0.8-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d78f06f3fb838b34c330e2987090376145cbe5944d8608a0c4779c779618f7b", size = 386442, upload-time = "2025-10-14T06:46:51.205Z" }, + { url = "https://files.pythonhosted.org/packages/30/6d/561d537ffc17985e276e08bf4513f1c106f1fdbef571e782604dc4e44070/blake3-1.0.8-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:dd03ff08d1b6e4fdda1cd03826f971ae8966ef6f683a8c68aa27fb21904b5aa9", size = 549929, upload-time = "2025-10-14T06:46:52.494Z" }, + { url = "https://files.pythonhosted.org/packages/03/2f/dbe20d2c57f1a67c63be4ba310bcebc707b945c902a0bde075d2a8f5cd5c/blake3-1.0.8-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:4e02a3c499e35bf51fc15b2738aca1a76410804c877bcd914752cac4f71f052a", size = 553750, upload-time = "2025-10-14T06:46:54.194Z" }, + { url = "https://files.pythonhosted.org/packages/6b/da/c6cb712663c869b2814870c2798e57289c4268c5ac5fb12d467fce244860/blake3-1.0.8-cp314-cp314-win32.whl", hash = "sha256:a585357d5d8774aad9ffc12435de457f9e35cde55e0dc8bc43ab590a6929e59f", size = 228404, upload-time = "2025-10-14T06:46:56.807Z" }, + { url = "https://files.pythonhosted.org/packages/dc/b6/c7dcd8bc3094bba1c4274e432f9e77a7df703532ca000eaa550bd066b870/blake3-1.0.8-cp314-cp314-win_amd64.whl", hash = "sha256:9ab5998e2abd9754819753bc2f1cf3edf82d95402bff46aeef45ed392a5468bf", size = 215460, upload-time = "2025-10-14T06:46:58.15Z" }, + { url = "https://files.pythonhosted.org/packages/75/3c/6c8afd856c353176836daa5cc33a7989e8f54569e9d53eb1c53fc8f80c34/blake3-1.0.8-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:e2df12f295f95a804338bd300e8fad4a6f54fd49bd4d9c5893855a230b5188a8", size = 347482, upload-time = "2025-10-14T06:47:00.189Z" }, + { url = "https://files.pythonhosted.org/packages/6a/35/92cd5501ce8e1f5cabdc0c3ac62d69fdb13ff0b60b62abbb2b6d0a53a790/blake3-1.0.8-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:63379be58438878eeb76ebe4f0efbeaabf42b79f2cff23b6126b7991588ced67", size = 324376, upload-time = "2025-10-14T06:47:01.413Z" }, + { url = "https://files.pythonhosted.org/packages/11/33/503b37220a3e2e31917ef13722efd00055af51c5e88ae30974c733d7ece6/blake3-1.0.8-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88d527c247f9609dc1d45a08fd243e39f0d5300d54c57e048de24d4fa9240ebb", size = 370220, upload-time = "2025-10-14T06:47:02.573Z" }, + { url = "https://files.pythonhosted.org/packages/3e/df/fe817843adf59516c04d44387bd643b422a3b0400ea95c6ede6a49920737/blake3-1.0.8-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:506a47897a11ebe8f3cdeb52f1365d6a2f83959e98ccb0c830f8f73277d4d358", size = 373454, upload-time = "2025-10-14T06:47:03.784Z" }, + { url = "https://files.pythonhosted.org/packages/d1/4d/90a2a623575373dfc9b683f1bad1bf017feafa5a6d65d94fb09543050740/blake3-1.0.8-cp314-cp314t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5122a61b3b004bbbd979bdf83a3aaab432da3e2a842d7ddf1c273f2503b4884", size = 447102, upload-time = "2025-10-14T06:47:04.958Z" }, + { url = "https://files.pythonhosted.org/packages/93/ff/4e8ce314f60115c4c657b1fdbe9225b991da4f5bcc5d1c1f1d151e2f39d6/blake3-1.0.8-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0171e85d56dec1219abdae5f49a0ed12cb3f86a454c29160a64fd8a8166bba37", size = 506791, upload-time = "2025-10-14T06:47:06.82Z" }, + { url = "https://files.pythonhosted.org/packages/44/88/2963a1f18aab52bdcf35379b2b48c34bbc462320c37e76960636b8602c36/blake3-1.0.8-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:003f61e8c41dd9931edddf1cc6a1bb680fb2ac0ad15493ef4a1df9adc59ce9df", size = 393717, upload-time = "2025-10-14T06:47:09.085Z" }, + { url = "https://files.pythonhosted.org/packages/45/d1/a848ed8e8d4e236b9b16381768c9ae99d92890c24886bb4505aa9c3d2033/blake3-1.0.8-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2c3151955efb09ba58cd3e1263521e15e9e3866a40d6bd3556d86fc968e8f95", size = 386150, upload-time = "2025-10-14T06:47:10.363Z" }, + { url = "https://files.pythonhosted.org/packages/96/09/e3eb5d60f97c01de23d9f434e6e1fc117efb466eaa1f6ddbbbcb62580d6e/blake3-1.0.8-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:5eb25bca3cee2e0dd746a214784fb36be6a43640c01c55b6b4e26196e72d076c", size = 549120, upload-time = "2025-10-14T06:47:11.713Z" }, + { url = "https://files.pythonhosted.org/packages/14/ad/3d9661c710febb8957dd685fdb3e5a861aa0ac918eda3031365ce45789e2/blake3-1.0.8-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:ab4e1dea4fa857944944db78e8f20d99ee2e16b2dea5a14f514fb0607753ac83", size = 553264, upload-time = "2025-10-14T06:47:13.317Z" }, + { url = "https://files.pythonhosted.org/packages/11/55/e332a5b49edf377d0690e95951cca21a00c568f6e37315f9749efee52617/blake3-1.0.8-cp314-cp314t-win32.whl", hash = "sha256:67f1bc11bf59464ef092488c707b13dd4e872db36e25c453dfb6e0c7498df9f1", size = 228116, upload-time = "2025-10-14T06:47:14.516Z" }, + { url = "https://files.pythonhosted.org/packages/b0/5c/dbd00727a3dd165d7e0e8af40e630cd7e45d77b525a3218afaff8a87358e/blake3-1.0.8-cp314-cp314t-win_amd64.whl", hash = "sha256:421b99cdf1ff2d1bf703bc56c454f4b286fce68454dd8711abbcb5a0df90c19a", size = 215133, upload-time = "2025-10-14T06:47:16.069Z" }, +] + +[[package]] +name = "boto3" +version = "1.42.44" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "botocore" }, + { name = "jmespath" }, + { name = "s3transfer" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1d/88/de5c2a0ce069973345f9fac81200de5b58f503e231dbd566357a5b8c9109/boto3-1.42.44.tar.gz", hash = "sha256:d5601ea520d30674c1d15791a1f98b5c055e973c775e1d9952ccc09ee5913c4e", size = 112865, upload-time = "2026-02-06T20:28:05.647Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/fb/0341da1482f7fa256d257cfba89383f6692570b741598d4e26d879b26c57/boto3-1.42.44-py3-none-any.whl", hash = "sha256:32e995b0d56e19422cff22f586f698e8924c792eb00943de9c517ff4607e4e18", size = 140604, upload-time = "2026-02-06T20:28:03.598Z" }, +] + +[[package]] +name = "botocore" +version = "1.42.44" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jmespath" }, + { name = "python-dateutil" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/29/ff/54cef2c5ff4e1c77fabc0ed68781e48eb36f33433f82bba3605e9c0e45ce/botocore-1.42.44.tar.gz", hash = "sha256:47ba27360f2afd2c2721545d8909217f7be05fdee16dd8fc0b09589535a0701c", size = 14936071, upload-time = "2026-02-06T20:27:53.654Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/9e/b45c54abfbb902ff174444a48558f97f9917143bc2e996729220f2631db1/botocore-1.42.44-py3-none-any.whl", hash = "sha256:ba406b9243a20591ee87d53abdb883d46416705cebccb639a7f1c923f9dd82df", size = 14611152, upload-time = "2026-02-06T20:27:49.565Z" }, +] + +[[package]] +name = "certifi" +version = "2026.1.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/2d/a891ca51311197f6ad14a7ef42e2399f36cf2f9bd44752b3dc4eab60fdc5/certifi-2026.1.4.tar.gz", hash = "sha256:ac726dd470482006e014ad384921ed6438c457018f4b3d204aea4281258b2120", size = 154268, upload-time = "2026-01-04T02:42:41.825Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/ad/3cc14f097111b4de0040c83a525973216457bbeeb63739ef1ed275c1c021/certifi-2026.1.4-py3-none-any.whl", hash = "sha256:9943707519e4add1115f44c2bc244f782c0249876bf51b6599fee1ffbedd685c", size = 152900, upload-time = "2026-01-04T02:42:40.15Z" }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/13/69/33ddede1939fdd074bce5434295f38fae7136463422fe4fd3e0e89b98062/charset_normalizer-3.4.4.tar.gz", hash = "sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a", size = 129418, upload-time = "2025-10-14T04:42:32.879Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/27/c6491ff4954e58a10f69ad90aca8a1b6fe9c5d3c6f380907af3c37435b59/charset_normalizer-3.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6e1fcf0720908f200cd21aa4e6750a48ff6ce4afe7ff5a79a90d5ed8a08296f8", size = 206988, upload-time = "2025-10-14T04:40:33.79Z" }, + { url = "https://files.pythonhosted.org/packages/94/59/2e87300fe67ab820b5428580a53cad894272dbb97f38a7a814a2a1ac1011/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f819d5fe9234f9f82d75bdfa9aef3a3d72c4d24a6e57aeaebba32a704553aa0", size = 147324, upload-time = "2025-10-14T04:40:34.961Z" }, + { url = "https://files.pythonhosted.org/packages/07/fb/0cf61dc84b2b088391830f6274cb57c82e4da8bbc2efeac8c025edb88772/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:a59cb51917aa591b1c4e6a43c132f0cdc3c76dbad6155df4e28ee626cc77a0a3", size = 142742, upload-time = "2025-10-14T04:40:36.105Z" }, + { url = "https://files.pythonhosted.org/packages/62/8b/171935adf2312cd745d290ed93cf16cf0dfe320863ab7cbeeae1dcd6535f/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8ef3c867360f88ac904fd3f5e1f902f13307af9052646963ee08ff4f131adafc", size = 160863, upload-time = "2025-10-14T04:40:37.188Z" }, + { url = "https://files.pythonhosted.org/packages/09/73/ad875b192bda14f2173bfc1bc9a55e009808484a4b256748d931b6948442/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d9e45d7faa48ee908174d8fe84854479ef838fc6a705c9315372eacbc2f02897", size = 157837, upload-time = "2025-10-14T04:40:38.435Z" }, + { url = "https://files.pythonhosted.org/packages/6d/fc/de9cce525b2c5b94b47c70a4b4fb19f871b24995c728e957ee68ab1671ea/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:840c25fb618a231545cbab0564a799f101b63b9901f2569faecd6b222ac72381", size = 151550, upload-time = "2025-10-14T04:40:40.053Z" }, + { url = "https://files.pythonhosted.org/packages/55/c2/43edd615fdfba8c6f2dfbd459b25a6b3b551f24ea21981e23fb768503ce1/charset_normalizer-3.4.4-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ca5862d5b3928c4940729dacc329aa9102900382fea192fc5e52eb69d6093815", size = 149162, upload-time = "2025-10-14T04:40:41.163Z" }, + { url = "https://files.pythonhosted.org/packages/03/86/bde4ad8b4d0e9429a4e82c1e8f5c659993a9a863ad62c7df05cf7b678d75/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d9c7f57c3d666a53421049053eaacdd14bbd0a528e2186fcb2e672effd053bb0", size = 150019, upload-time = "2025-10-14T04:40:42.276Z" }, + { url = "https://files.pythonhosted.org/packages/1f/86/a151eb2af293a7e7bac3a739b81072585ce36ccfb4493039f49f1d3cae8c/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:277e970e750505ed74c832b4bf75dac7476262ee2a013f5574dd49075879e161", size = 143310, upload-time = "2025-10-14T04:40:43.439Z" }, + { url = "https://files.pythonhosted.org/packages/b5/fe/43dae6144a7e07b87478fdfc4dbe9efd5defb0e7ec29f5f58a55aeef7bf7/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:31fd66405eaf47bb62e8cd575dc621c56c668f27d46a61d975a249930dd5e2a4", size = 162022, upload-time = "2025-10-14T04:40:44.547Z" }, + { url = "https://files.pythonhosted.org/packages/80/e6/7aab83774f5d2bca81f42ac58d04caf44f0cc2b65fc6db2b3b2e8a05f3b3/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:0d3d8f15c07f86e9ff82319b3d9ef6f4bf907608f53fe9d92b28ea9ae3d1fd89", size = 149383, upload-time = "2025-10-14T04:40:46.018Z" }, + { url = "https://files.pythonhosted.org/packages/4f/e8/b289173b4edae05c0dde07f69f8db476a0b511eac556dfe0d6bda3c43384/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:9f7fcd74d410a36883701fafa2482a6af2ff5ba96b9a620e9e0721e28ead5569", size = 159098, upload-time = "2025-10-14T04:40:47.081Z" }, + { url = "https://files.pythonhosted.org/packages/d8/df/fe699727754cae3f8478493c7f45f777b17c3ef0600e28abfec8619eb49c/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ebf3e58c7ec8a8bed6d66a75d7fb37b55e5015b03ceae72a8e7c74495551e224", size = 152991, upload-time = "2025-10-14T04:40:48.246Z" }, + { url = "https://files.pythonhosted.org/packages/1a/86/584869fe4ddb6ffa3bd9f491b87a01568797fb9bd8933f557dba9771beaf/charset_normalizer-3.4.4-cp311-cp311-win32.whl", hash = "sha256:eecbc200c7fd5ddb9a7f16c7decb07b566c29fa2161a16cf67b8d068bd21690a", size = 99456, upload-time = "2025-10-14T04:40:49.376Z" }, + { url = "https://files.pythonhosted.org/packages/65/f6/62fdd5feb60530f50f7e38b4f6a1d5203f4d16ff4f9f0952962c044e919a/charset_normalizer-3.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:5ae497466c7901d54b639cf42d5b8c1b6a4fead55215500d2f486d34db48d016", size = 106978, upload-time = "2025-10-14T04:40:50.844Z" }, + { url = "https://files.pythonhosted.org/packages/7a/9d/0710916e6c82948b3be62d9d398cb4fcf4e97b56d6a6aeccd66c4b2f2bd5/charset_normalizer-3.4.4-cp311-cp311-win_arm64.whl", hash = "sha256:65e2befcd84bc6f37095f5961e68a6f077bf44946771354a28ad434c2cce0ae1", size = 99969, upload-time = "2025-10-14T04:40:52.272Z" }, + { url = "https://files.pythonhosted.org/packages/f3/85/1637cd4af66fa687396e757dec650f28025f2a2f5a5531a3208dc0ec43f2/charset_normalizer-3.4.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0a98e6759f854bd25a58a73fa88833fba3b7c491169f86ce1180c948ab3fd394", size = 208425, upload-time = "2025-10-14T04:40:53.353Z" }, + { url = "https://files.pythonhosted.org/packages/9d/6a/04130023fef2a0d9c62d0bae2649b69f7b7d8d24ea5536feef50551029df/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b5b290ccc2a263e8d185130284f8501e3e36c5e02750fc6b6bdeb2e9e96f1e25", size = 148162, upload-time = "2025-10-14T04:40:54.558Z" }, + { url = "https://files.pythonhosted.org/packages/78/29/62328d79aa60da22c9e0b9a66539feae06ca0f5a4171ac4f7dc285b83688/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74bb723680f9f7a6234dcf67aea57e708ec1fbdf5699fb91dfd6f511b0a320ef", size = 144558, upload-time = "2025-10-14T04:40:55.677Z" }, + { url = "https://files.pythonhosted.org/packages/86/bb/b32194a4bf15b88403537c2e120b817c61cd4ecffa9b6876e941c3ee38fe/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f1e34719c6ed0b92f418c7c780480b26b5d9c50349e9a9af7d76bf757530350d", size = 161497, upload-time = "2025-10-14T04:40:57.217Z" }, + { url = "https://files.pythonhosted.org/packages/19/89/a54c82b253d5b9b111dc74aca196ba5ccfcca8242d0fb64146d4d3183ff1/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2437418e20515acec67d86e12bf70056a33abdacb5cb1655042f6538d6b085a8", size = 159240, upload-time = "2025-10-14T04:40:58.358Z" }, + { url = "https://files.pythonhosted.org/packages/c0/10/d20b513afe03acc89ec33948320a5544d31f21b05368436d580dec4e234d/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:11d694519d7f29d6cd09f6ac70028dba10f92f6cdd059096db198c283794ac86", size = 153471, upload-time = "2025-10-14T04:40:59.468Z" }, + { url = "https://files.pythonhosted.org/packages/61/fa/fbf177b55bdd727010f9c0a3c49eefa1d10f960e5f09d1d887bf93c2e698/charset_normalizer-3.4.4-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ac1c4a689edcc530fc9d9aa11f5774b9e2f33f9a0c6a57864e90908f5208d30a", size = 150864, upload-time = "2025-10-14T04:41:00.623Z" }, + { url = "https://files.pythonhosted.org/packages/05/12/9fbc6a4d39c0198adeebbde20b619790e9236557ca59fc40e0e3cebe6f40/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:21d142cc6c0ec30d2efee5068ca36c128a30b0f2c53c1c07bd78cb6bc1d3be5f", size = 150647, upload-time = "2025-10-14T04:41:01.754Z" }, + { url = "https://files.pythonhosted.org/packages/ad/1f/6a9a593d52e3e8c5d2b167daf8c6b968808efb57ef4c210acb907c365bc4/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:5dbe56a36425d26d6cfb40ce79c314a2e4dd6211d51d6d2191c00bed34f354cc", size = 145110, upload-time = "2025-10-14T04:41:03.231Z" }, + { url = "https://files.pythonhosted.org/packages/30/42/9a52c609e72471b0fc54386dc63c3781a387bb4fe61c20231a4ebcd58bdd/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5bfbb1b9acf3334612667b61bd3002196fe2a1eb4dd74d247e0f2a4d50ec9bbf", size = 162839, upload-time = "2025-10-14T04:41:04.715Z" }, + { url = "https://files.pythonhosted.org/packages/c4/5b/c0682bbf9f11597073052628ddd38344a3d673fda35a36773f7d19344b23/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:d055ec1e26e441f6187acf818b73564e6e6282709e9bcb5b63f5b23068356a15", size = 150667, upload-time = "2025-10-14T04:41:05.827Z" }, + { url = "https://files.pythonhosted.org/packages/e4/24/a41afeab6f990cf2daf6cb8c67419b63b48cf518e4f56022230840c9bfb2/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:af2d8c67d8e573d6de5bc30cdb27e9b95e49115cd9baad5ddbd1a6207aaa82a9", size = 160535, upload-time = "2025-10-14T04:41:06.938Z" }, + { url = "https://files.pythonhosted.org/packages/2a/e5/6a4ce77ed243c4a50a1fecca6aaaab419628c818a49434be428fe24c9957/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:780236ac706e66881f3b7f2f32dfe90507a09e67d1d454c762cf642e6e1586e0", size = 154816, upload-time = "2025-10-14T04:41:08.101Z" }, + { url = "https://files.pythonhosted.org/packages/a8/ef/89297262b8092b312d29cdb2517cb1237e51db8ecef2e9af5edbe7b683b1/charset_normalizer-3.4.4-cp312-cp312-win32.whl", hash = "sha256:5833d2c39d8896e4e19b689ffc198f08ea58116bee26dea51e362ecc7cd3ed26", size = 99694, upload-time = "2025-10-14T04:41:09.23Z" }, + { url = "https://files.pythonhosted.org/packages/3d/2d/1e5ed9dd3b3803994c155cd9aacb60c82c331bad84daf75bcb9c91b3295e/charset_normalizer-3.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:a79cfe37875f822425b89a82333404539ae63dbdddf97f84dcbc3d339aae9525", size = 107131, upload-time = "2025-10-14T04:41:10.467Z" }, + { url = "https://files.pythonhosted.org/packages/d0/d9/0ed4c7098a861482a7b6a95603edce4c0d9db2311af23da1fb2b75ec26fc/charset_normalizer-3.4.4-cp312-cp312-win_arm64.whl", hash = "sha256:376bec83a63b8021bb5c8ea75e21c4ccb86e7e45ca4eb81146091b56599b80c3", size = 100390, upload-time = "2025-10-14T04:41:11.915Z" }, + { url = "https://files.pythonhosted.org/packages/97/45/4b3a1239bbacd321068ea6e7ac28875b03ab8bc0aa0966452db17cd36714/charset_normalizer-3.4.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e1f185f86a6f3403aa2420e815904c67b2f9ebc443f045edd0de921108345794", size = 208091, upload-time = "2025-10-14T04:41:13.346Z" }, + { url = "https://files.pythonhosted.org/packages/7d/62/73a6d7450829655a35bb88a88fca7d736f9882a27eacdca2c6d505b57e2e/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b39f987ae8ccdf0d2642338faf2abb1862340facc796048b604ef14919e55ed", size = 147936, upload-time = "2025-10-14T04:41:14.461Z" }, + { url = "https://files.pythonhosted.org/packages/89/c5/adb8c8b3d6625bef6d88b251bbb0d95f8205831b987631ab0c8bb5d937c2/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3162d5d8ce1bb98dd51af660f2121c55d0fa541b46dff7bb9b9f86ea1d87de72", size = 144180, upload-time = "2025-10-14T04:41:15.588Z" }, + { url = "https://files.pythonhosted.org/packages/91/ed/9706e4070682d1cc219050b6048bfd293ccf67b3d4f5a4f39207453d4b99/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:81d5eb2a312700f4ecaa977a8235b634ce853200e828fbadf3a9c50bab278328", size = 161346, upload-time = "2025-10-14T04:41:16.738Z" }, + { url = "https://files.pythonhosted.org/packages/d5/0d/031f0d95e4972901a2f6f09ef055751805ff541511dc1252ba3ca1f80cf5/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5bd2293095d766545ec1a8f612559f6b40abc0eb18bb2f5d1171872d34036ede", size = 158874, upload-time = "2025-10-14T04:41:17.923Z" }, + { url = "https://files.pythonhosted.org/packages/f5/83/6ab5883f57c9c801ce5e5677242328aa45592be8a00644310a008d04f922/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a8a8b89589086a25749f471e6a900d3f662d1d3b6e2e59dcecf787b1cc3a1894", size = 153076, upload-time = "2025-10-14T04:41:19.106Z" }, + { url = "https://files.pythonhosted.org/packages/75/1e/5ff781ddf5260e387d6419959ee89ef13878229732732ee73cdae01800f2/charset_normalizer-3.4.4-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc7637e2f80d8530ee4a78e878bce464f70087ce73cf7c1caf142416923b98f1", size = 150601, upload-time = "2025-10-14T04:41:20.245Z" }, + { url = "https://files.pythonhosted.org/packages/d7/57/71be810965493d3510a6ca79b90c19e48696fb1ff964da319334b12677f0/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f8bf04158c6b607d747e93949aa60618b61312fe647a6369f88ce2ff16043490", size = 150376, upload-time = "2025-10-14T04:41:21.398Z" }, + { url = "https://files.pythonhosted.org/packages/e5/d5/c3d057a78c181d007014feb7e9f2e65905a6c4ef182c0ddf0de2924edd65/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:554af85e960429cf30784dd47447d5125aaa3b99a6f0683589dbd27e2f45da44", size = 144825, upload-time = "2025-10-14T04:41:22.583Z" }, + { url = "https://files.pythonhosted.org/packages/e6/8c/d0406294828d4976f275ffbe66f00266c4b3136b7506941d87c00cab5272/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:74018750915ee7ad843a774364e13a3db91682f26142baddf775342c3f5b1133", size = 162583, upload-time = "2025-10-14T04:41:23.754Z" }, + { url = "https://files.pythonhosted.org/packages/d7/24/e2aa1f18c8f15c4c0e932d9287b8609dd30ad56dbe41d926bd846e22fb8d/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:c0463276121fdee9c49b98908b3a89c39be45d86d1dbaa22957e38f6321d4ce3", size = 150366, upload-time = "2025-10-14T04:41:25.27Z" }, + { url = "https://files.pythonhosted.org/packages/e4/5b/1e6160c7739aad1e2df054300cc618b06bf784a7a164b0f238360721ab86/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:362d61fd13843997c1c446760ef36f240cf81d3ebf74ac62652aebaf7838561e", size = 160300, upload-time = "2025-10-14T04:41:26.725Z" }, + { url = "https://files.pythonhosted.org/packages/7a/10/f882167cd207fbdd743e55534d5d9620e095089d176d55cb22d5322f2afd/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9a26f18905b8dd5d685d6d07b0cdf98a79f3c7a918906af7cc143ea2e164c8bc", size = 154465, upload-time = "2025-10-14T04:41:28.322Z" }, + { url = "https://files.pythonhosted.org/packages/89/66/c7a9e1b7429be72123441bfdbaf2bc13faab3f90b933f664db506dea5915/charset_normalizer-3.4.4-cp313-cp313-win32.whl", hash = "sha256:9b35f4c90079ff2e2edc5b26c0c77925e5d2d255c42c74fdb70fb49b172726ac", size = 99404, upload-time = "2025-10-14T04:41:29.95Z" }, + { url = "https://files.pythonhosted.org/packages/c4/26/b9924fa27db384bdcd97ab83b4f0a8058d96ad9626ead570674d5e737d90/charset_normalizer-3.4.4-cp313-cp313-win_amd64.whl", hash = "sha256:b435cba5f4f750aa6c0a0d92c541fb79f69a387c91e61f1795227e4ed9cece14", size = 107092, upload-time = "2025-10-14T04:41:31.188Z" }, + { url = "https://files.pythonhosted.org/packages/af/8f/3ed4bfa0c0c72a7ca17f0380cd9e4dd842b09f664e780c13cff1dcf2ef1b/charset_normalizer-3.4.4-cp313-cp313-win_arm64.whl", hash = "sha256:542d2cee80be6f80247095cc36c418f7bddd14f4a6de45af91dfad36d817bba2", size = 100408, upload-time = "2025-10-14T04:41:32.624Z" }, + { url = "https://files.pythonhosted.org/packages/2a/35/7051599bd493e62411d6ede36fd5af83a38f37c4767b92884df7301db25d/charset_normalizer-3.4.4-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:da3326d9e65ef63a817ecbcc0df6e94463713b754fe293eaa03da99befb9a5bd", size = 207746, upload-time = "2025-10-14T04:41:33.773Z" }, + { url = "https://files.pythonhosted.org/packages/10/9a/97c8d48ef10d6cd4fcead2415523221624bf58bcf68a802721a6bc807c8f/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8af65f14dc14a79b924524b1e7fffe304517b2bff5a58bf64f30b98bbc5079eb", size = 147889, upload-time = "2025-10-14T04:41:34.897Z" }, + { url = "https://files.pythonhosted.org/packages/10/bf/979224a919a1b606c82bd2c5fa49b5c6d5727aa47b4312bb27b1734f53cd/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74664978bb272435107de04e36db5a9735e78232b85b77d45cfb38f758efd33e", size = 143641, upload-time = "2025-10-14T04:41:36.116Z" }, + { url = "https://files.pythonhosted.org/packages/ba/33/0ad65587441fc730dc7bd90e9716b30b4702dc7b617e6ba4997dc8651495/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:752944c7ffbfdd10c074dc58ec2d5a8a4cd9493b314d367c14d24c17684ddd14", size = 160779, upload-time = "2025-10-14T04:41:37.229Z" }, + { url = "https://files.pythonhosted.org/packages/67/ed/331d6b249259ee71ddea93f6f2f0a56cfebd46938bde6fcc6f7b9a3d0e09/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d1f13550535ad8cff21b8d757a3257963e951d96e20ec82ab44bc64aeb62a191", size = 159035, upload-time = "2025-10-14T04:41:38.368Z" }, + { url = "https://files.pythonhosted.org/packages/67/ff/f6b948ca32e4f2a4576aa129d8bed61f2e0543bf9f5f2b7fc3758ed005c9/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ecaae4149d99b1c9e7b88bb03e3221956f68fd6d50be2ef061b2381b61d20838", size = 152542, upload-time = "2025-10-14T04:41:39.862Z" }, + { url = "https://files.pythonhosted.org/packages/16/85/276033dcbcc369eb176594de22728541a925b2632f9716428c851b149e83/charset_normalizer-3.4.4-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:cb6254dc36b47a990e59e1068afacdcd02958bdcce30bb50cc1700a8b9d624a6", size = 149524, upload-time = "2025-10-14T04:41:41.319Z" }, + { url = "https://files.pythonhosted.org/packages/9e/f2/6a2a1f722b6aba37050e626530a46a68f74e63683947a8acff92569f979a/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c8ae8a0f02f57a6e61203a31428fa1d677cbe50c93622b4149d5c0f319c1d19e", size = 150395, upload-time = "2025-10-14T04:41:42.539Z" }, + { url = "https://files.pythonhosted.org/packages/60/bb/2186cb2f2bbaea6338cad15ce23a67f9b0672929744381e28b0592676824/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:47cc91b2f4dd2833fddaedd2893006b0106129d4b94fdb6af1f4ce5a9965577c", size = 143680, upload-time = "2025-10-14T04:41:43.661Z" }, + { url = "https://files.pythonhosted.org/packages/7d/a5/bf6f13b772fbb2a90360eb620d52ed8f796f3c5caee8398c3b2eb7b1c60d/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:82004af6c302b5d3ab2cfc4cc5f29db16123b1a8417f2e25f9066f91d4411090", size = 162045, upload-time = "2025-10-14T04:41:44.821Z" }, + { url = "https://files.pythonhosted.org/packages/df/c5/d1be898bf0dc3ef9030c3825e5d3b83f2c528d207d246cbabe245966808d/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:2b7d8f6c26245217bd2ad053761201e9f9680f8ce52f0fcd8d0755aeae5b2152", size = 149687, upload-time = "2025-10-14T04:41:46.442Z" }, + { url = "https://files.pythonhosted.org/packages/a5/42/90c1f7b9341eef50c8a1cb3f098ac43b0508413f33affd762855f67a410e/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:799a7a5e4fb2d5898c60b640fd4981d6a25f1c11790935a44ce38c54e985f828", size = 160014, upload-time = "2025-10-14T04:41:47.631Z" }, + { url = "https://files.pythonhosted.org/packages/76/be/4d3ee471e8145d12795ab655ece37baed0929462a86e72372fd25859047c/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:99ae2cffebb06e6c22bdc25801d7b30f503cc87dbd283479e7b606f70aff57ec", size = 154044, upload-time = "2025-10-14T04:41:48.81Z" }, + { url = "https://files.pythonhosted.org/packages/b0/6f/8f7af07237c34a1defe7defc565a9bc1807762f672c0fde711a4b22bf9c0/charset_normalizer-3.4.4-cp314-cp314-win32.whl", hash = "sha256:f9d332f8c2a2fcbffe1378594431458ddbef721c1769d78e2cbc06280d8155f9", size = 99940, upload-time = "2025-10-14T04:41:49.946Z" }, + { url = "https://files.pythonhosted.org/packages/4b/51/8ade005e5ca5b0d80fb4aff72a3775b325bdc3d27408c8113811a7cbe640/charset_normalizer-3.4.4-cp314-cp314-win_amd64.whl", hash = "sha256:8a6562c3700cce886c5be75ade4a5db4214fda19fede41d9792d100288d8f94c", size = 107104, upload-time = "2025-10-14T04:41:51.051Z" }, + { url = "https://files.pythonhosted.org/packages/da/5f/6b8f83a55bb8278772c5ae54a577f3099025f9ade59d0136ac24a0df4bde/charset_normalizer-3.4.4-cp314-cp314-win_arm64.whl", hash = "sha256:de00632ca48df9daf77a2c65a484531649261ec9f25489917f09e455cb09ddb2", size = 100743, upload-time = "2025-10-14T04:41:52.122Z" }, + { url = "https://files.pythonhosted.org/packages/0a/4c/925909008ed5a988ccbb72dcc897407e5d6d3bd72410d69e051fc0c14647/charset_normalizer-3.4.4-py3-none-any.whl", hash = "sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f", size = 53402, upload-time = "2025-10-14T04:42:31.76Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "contourpy" +version = "1.3.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/58/01/1253e6698a07380cd31a736d248a3f2a50a7c88779a1813da27503cadc2a/contourpy-1.3.3.tar.gz", hash = "sha256:083e12155b210502d0bca491432bb04d56dc3432f95a979b429f2848c3dbe880", size = 13466174, upload-time = "2025-07-26T12:03:12.549Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/91/2e/c4390a31919d8a78b90e8ecf87cd4b4c4f05a5b48d05ec17db8e5404c6f4/contourpy-1.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:709a48ef9a690e1343202916450bc48b9e51c049b089c7f79a267b46cffcdaa1", size = 288773, upload-time = "2025-07-26T12:01:02.277Z" }, + { url = "https://files.pythonhosted.org/packages/0d/44/c4b0b6095fef4dc9c420e041799591e3b63e9619e3044f7f4f6c21c0ab24/contourpy-1.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:23416f38bfd74d5d28ab8429cc4d63fa67d5068bd711a85edb1c3fb0c3e2f381", size = 270149, upload-time = "2025-07-26T12:01:04.072Z" }, + { url = "https://files.pythonhosted.org/packages/30/2e/dd4ced42fefac8470661d7cb7e264808425e6c5d56d175291e93890cce09/contourpy-1.3.3-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:929ddf8c4c7f348e4c0a5a3a714b5c8542ffaa8c22954862a46ca1813b667ee7", size = 329222, upload-time = "2025-07-26T12:01:05.688Z" }, + { url = "https://files.pythonhosted.org/packages/f2/74/cc6ec2548e3d276c71389ea4802a774b7aa3558223b7bade3f25787fafc2/contourpy-1.3.3-cp311-cp311-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9e999574eddae35f1312c2b4b717b7885d4edd6cb46700e04f7f02db454e67c1", size = 377234, upload-time = "2025-07-26T12:01:07.054Z" }, + { url = "https://files.pythonhosted.org/packages/03/b3/64ef723029f917410f75c09da54254c5f9ea90ef89b143ccadb09df14c15/contourpy-1.3.3-cp311-cp311-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0bf67e0e3f482cb69779dd3061b534eb35ac9b17f163d851e2a547d56dba0a3a", size = 380555, upload-time = "2025-07-26T12:01:08.801Z" }, + { url = "https://files.pythonhosted.org/packages/5f/4b/6157f24ca425b89fe2eb7e7be642375711ab671135be21e6faa100f7448c/contourpy-1.3.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:51e79c1f7470158e838808d4a996fa9bac72c498e93d8ebe5119bc1e6becb0db", size = 355238, upload-time = "2025-07-26T12:01:10.319Z" }, + { url = "https://files.pythonhosted.org/packages/98/56/f914f0dd678480708a04cfd2206e7c382533249bc5001eb9f58aa693e200/contourpy-1.3.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:598c3aaece21c503615fd59c92a3598b428b2f01bfb4b8ca9c4edeecc2438620", size = 1326218, upload-time = "2025-07-26T12:01:12.659Z" }, + { url = "https://files.pythonhosted.org/packages/fb/d7/4a972334a0c971acd5172389671113ae82aa7527073980c38d5868ff1161/contourpy-1.3.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:322ab1c99b008dad206d406bb61d014cf0174df491ae9d9d0fac6a6fda4f977f", size = 1392867, upload-time = "2025-07-26T12:01:15.533Z" }, + { url = "https://files.pythonhosted.org/packages/75/3e/f2cc6cd56dc8cff46b1a56232eabc6feea52720083ea71ab15523daab796/contourpy-1.3.3-cp311-cp311-win32.whl", hash = "sha256:fd907ae12cd483cd83e414b12941c632a969171bf90fc937d0c9f268a31cafff", size = 183677, upload-time = "2025-07-26T12:01:17.088Z" }, + { url = "https://files.pythonhosted.org/packages/98/4b/9bd370b004b5c9d8045c6c33cf65bae018b27aca550a3f657cdc99acdbd8/contourpy-1.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:3519428f6be58431c56581f1694ba8e50626f2dd550af225f82fb5f5814d2a42", size = 225234, upload-time = "2025-07-26T12:01:18.256Z" }, + { url = "https://files.pythonhosted.org/packages/d9/b6/71771e02c2e004450c12b1120a5f488cad2e4d5b590b1af8bad060360fe4/contourpy-1.3.3-cp311-cp311-win_arm64.whl", hash = "sha256:15ff10bfada4bf92ec8b31c62bf7c1834c244019b4a33095a68000d7075df470", size = 193123, upload-time = "2025-07-26T12:01:19.848Z" }, + { url = "https://files.pythonhosted.org/packages/be/45/adfee365d9ea3d853550b2e735f9d66366701c65db7855cd07621732ccfc/contourpy-1.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b08a32ea2f8e42cf1d4be3169a98dd4be32bafe4f22b6c4cb4ba810fa9e5d2cb", size = 293419, upload-time = "2025-07-26T12:01:21.16Z" }, + { url = "https://files.pythonhosted.org/packages/53/3e/405b59cfa13021a56bba395a6b3aca8cec012b45bf177b0eaf7a202cde2c/contourpy-1.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:556dba8fb6f5d8742f2923fe9457dbdd51e1049c4a43fd3986a0b14a1d815fc6", size = 273979, upload-time = "2025-07-26T12:01:22.448Z" }, + { url = "https://files.pythonhosted.org/packages/d4/1c/a12359b9b2ca3a845e8f7f9ac08bdf776114eb931392fcad91743e2ea17b/contourpy-1.3.3-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:92d9abc807cf7d0e047b95ca5d957cf4792fcd04e920ca70d48add15c1a90ea7", size = 332653, upload-time = "2025-07-26T12:01:24.155Z" }, + { url = "https://files.pythonhosted.org/packages/63/12/897aeebfb475b7748ea67b61e045accdfcf0d971f8a588b67108ed7f5512/contourpy-1.3.3-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b2e8faa0ed68cb29af51edd8e24798bb661eac3bd9f65420c1887b6ca89987c8", size = 379536, upload-time = "2025-07-26T12:01:25.91Z" }, + { url = "https://files.pythonhosted.org/packages/43/8a/a8c584b82deb248930ce069e71576fc09bd7174bbd35183b7943fb1064fd/contourpy-1.3.3-cp312-cp312-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:626d60935cf668e70a5ce6ff184fd713e9683fb458898e4249b63be9e28286ea", size = 384397, upload-time = "2025-07-26T12:01:27.152Z" }, + { url = "https://files.pythonhosted.org/packages/cc/8f/ec6289987824b29529d0dfda0d74a07cec60e54b9c92f3c9da4c0ac732de/contourpy-1.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4d00e655fcef08aba35ec9610536bfe90267d7ab5ba944f7032549c55a146da1", size = 362601, upload-time = "2025-07-26T12:01:28.808Z" }, + { url = "https://files.pythonhosted.org/packages/05/0a/a3fe3be3ee2dceb3e615ebb4df97ae6f3828aa915d3e10549ce016302bd1/contourpy-1.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:451e71b5a7d597379ef572de31eeb909a87246974d960049a9848c3bc6c41bf7", size = 1331288, upload-time = "2025-07-26T12:01:31.198Z" }, + { url = "https://files.pythonhosted.org/packages/33/1d/acad9bd4e97f13f3e2b18a3977fe1b4a37ecf3d38d815333980c6c72e963/contourpy-1.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:459c1f020cd59fcfe6650180678a9993932d80d44ccde1fa1868977438f0b411", size = 1403386, upload-time = "2025-07-26T12:01:33.947Z" }, + { url = "https://files.pythonhosted.org/packages/cf/8f/5847f44a7fddf859704217a99a23a4f6417b10e5ab1256a179264561540e/contourpy-1.3.3-cp312-cp312-win32.whl", hash = "sha256:023b44101dfe49d7d53932be418477dba359649246075c996866106da069af69", size = 185018, upload-time = "2025-07-26T12:01:35.64Z" }, + { url = "https://files.pythonhosted.org/packages/19/e8/6026ed58a64563186a9ee3f29f41261fd1828f527dd93d33b60feca63352/contourpy-1.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:8153b8bfc11e1e4d75bcb0bff1db232f9e10b274e0929de9d608027e0d34ff8b", size = 226567, upload-time = "2025-07-26T12:01:36.804Z" }, + { url = "https://files.pythonhosted.org/packages/d1/e2/f05240d2c39a1ed228d8328a78b6f44cd695f7ef47beb3e684cf93604f86/contourpy-1.3.3-cp312-cp312-win_arm64.whl", hash = "sha256:07ce5ed73ecdc4a03ffe3e1b3e3c1166db35ae7584be76f65dbbe28a7791b0cc", size = 193655, upload-time = "2025-07-26T12:01:37.999Z" }, + { url = "https://files.pythonhosted.org/packages/68/35/0167aad910bbdb9599272bd96d01a9ec6852f36b9455cf2ca67bd4cc2d23/contourpy-1.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:177fb367556747a686509d6fef71d221a4b198a3905fe824430e5ea0fda54eb5", size = 293257, upload-time = "2025-07-26T12:01:39.367Z" }, + { url = "https://files.pythonhosted.org/packages/96/e4/7adcd9c8362745b2210728f209bfbcf7d91ba868a2c5f40d8b58f54c509b/contourpy-1.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d002b6f00d73d69333dac9d0b8d5e84d9724ff9ef044fd63c5986e62b7c9e1b1", size = 274034, upload-time = "2025-07-26T12:01:40.645Z" }, + { url = "https://files.pythonhosted.org/packages/73/23/90e31ceeed1de63058a02cb04b12f2de4b40e3bef5e082a7c18d9c8ae281/contourpy-1.3.3-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:348ac1f5d4f1d66d3322420f01d42e43122f43616e0f194fc1c9f5d830c5b286", size = 334672, upload-time = "2025-07-26T12:01:41.942Z" }, + { url = "https://files.pythonhosted.org/packages/ed/93/b43d8acbe67392e659e1d984700e79eb67e2acb2bd7f62012b583a7f1b55/contourpy-1.3.3-cp313-cp313-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:655456777ff65c2c548b7c454af9c6f33f16c8884f11083244b5819cc214f1b5", size = 381234, upload-time = "2025-07-26T12:01:43.499Z" }, + { url = "https://files.pythonhosted.org/packages/46/3b/bec82a3ea06f66711520f75a40c8fc0b113b2a75edb36aa633eb11c4f50f/contourpy-1.3.3-cp313-cp313-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:644a6853d15b2512d67881586bd03f462c7ab755db95f16f14d7e238f2852c67", size = 385169, upload-time = "2025-07-26T12:01:45.219Z" }, + { url = "https://files.pythonhosted.org/packages/4b/32/e0f13a1c5b0f8572d0ec6ae2f6c677b7991fafd95da523159c19eff0696a/contourpy-1.3.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4debd64f124ca62069f313a9cb86656ff087786016d76927ae2cf37846b006c9", size = 362859, upload-time = "2025-07-26T12:01:46.519Z" }, + { url = "https://files.pythonhosted.org/packages/33/71/e2a7945b7de4e58af42d708a219f3b2f4cff7386e6b6ab0a0fa0033c49a9/contourpy-1.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a15459b0f4615b00bbd1e91f1b9e19b7e63aea7483d03d804186f278c0af2659", size = 1332062, upload-time = "2025-07-26T12:01:48.964Z" }, + { url = "https://files.pythonhosted.org/packages/12/fc/4e87ac754220ccc0e807284f88e943d6d43b43843614f0a8afa469801db0/contourpy-1.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ca0fdcd73925568ca027e0b17ab07aad764be4706d0a925b89227e447d9737b7", size = 1403932, upload-time = "2025-07-26T12:01:51.979Z" }, + { url = "https://files.pythonhosted.org/packages/a6/2e/adc197a37443f934594112222ac1aa7dc9a98faf9c3842884df9a9d8751d/contourpy-1.3.3-cp313-cp313-win32.whl", hash = "sha256:b20c7c9a3bf701366556e1b1984ed2d0cedf999903c51311417cf5f591d8c78d", size = 185024, upload-time = "2025-07-26T12:01:53.245Z" }, + { url = "https://files.pythonhosted.org/packages/18/0b/0098c214843213759692cc638fce7de5c289200a830e5035d1791d7a2338/contourpy-1.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:1cadd8b8969f060ba45ed7c1b714fe69185812ab43bd6b86a9123fe8f99c3263", size = 226578, upload-time = "2025-07-26T12:01:54.422Z" }, + { url = "https://files.pythonhosted.org/packages/8a/9a/2f6024a0c5995243cd63afdeb3651c984f0d2bc727fd98066d40e141ad73/contourpy-1.3.3-cp313-cp313-win_arm64.whl", hash = "sha256:fd914713266421b7536de2bfa8181aa8c699432b6763a0ea64195ebe28bff6a9", size = 193524, upload-time = "2025-07-26T12:01:55.73Z" }, + { url = "https://files.pythonhosted.org/packages/c0/b3/f8a1a86bd3298513f500e5b1f5fd92b69896449f6cab6a146a5d52715479/contourpy-1.3.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:88df9880d507169449d434c293467418b9f6cbe82edd19284aa0409e7fdb933d", size = 306730, upload-time = "2025-07-26T12:01:57.051Z" }, + { url = "https://files.pythonhosted.org/packages/3f/11/4780db94ae62fc0c2053909b65dc3246bd7cecfc4f8a20d957ad43aa4ad8/contourpy-1.3.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:d06bb1f751ba5d417047db62bca3c8fde202b8c11fb50742ab3ab962c81e8216", size = 287897, upload-time = "2025-07-26T12:01:58.663Z" }, + { url = "https://files.pythonhosted.org/packages/ae/15/e59f5f3ffdd6f3d4daa3e47114c53daabcb18574a26c21f03dc9e4e42ff0/contourpy-1.3.3-cp313-cp313t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e4e6b05a45525357e382909a4c1600444e2a45b4795163d3b22669285591c1ae", size = 326751, upload-time = "2025-07-26T12:02:00.343Z" }, + { url = "https://files.pythonhosted.org/packages/0f/81/03b45cfad088e4770b1dcf72ea78d3802d04200009fb364d18a493857210/contourpy-1.3.3-cp313-cp313t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ab3074b48c4e2cf1a960e6bbeb7f04566bf36b1861d5c9d4d8ac04b82e38ba20", size = 375486, upload-time = "2025-07-26T12:02:02.128Z" }, + { url = "https://files.pythonhosted.org/packages/0c/ba/49923366492ffbdd4486e970d421b289a670ae8cf539c1ea9a09822b371a/contourpy-1.3.3-cp313-cp313t-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6c3d53c796f8647d6deb1abe867daeb66dcc8a97e8455efa729516b997b8ed99", size = 388106, upload-time = "2025-07-26T12:02:03.615Z" }, + { url = "https://files.pythonhosted.org/packages/9f/52/5b00ea89525f8f143651f9f03a0df371d3cbd2fccd21ca9b768c7a6500c2/contourpy-1.3.3-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:50ed930df7289ff2a8d7afeb9603f8289e5704755c7e5c3bbd929c90c817164b", size = 352548, upload-time = "2025-07-26T12:02:05.165Z" }, + { url = "https://files.pythonhosted.org/packages/32/1d/a209ec1a3a3452d490f6b14dd92e72280c99ae3d1e73da74f8277d4ee08f/contourpy-1.3.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4feffb6537d64b84877da813a5c30f1422ea5739566abf0bd18065ac040e120a", size = 1322297, upload-time = "2025-07-26T12:02:07.379Z" }, + { url = "https://files.pythonhosted.org/packages/bc/9e/46f0e8ebdd884ca0e8877e46a3f4e633f6c9c8c4f3f6e72be3fe075994aa/contourpy-1.3.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:2b7e9480ffe2b0cd2e787e4df64270e3a0440d9db8dc823312e2c940c167df7e", size = 1391023, upload-time = "2025-07-26T12:02:10.171Z" }, + { url = "https://files.pythonhosted.org/packages/b9/70/f308384a3ae9cd2209e0849f33c913f658d3326900d0ff5d378d6a1422d2/contourpy-1.3.3-cp313-cp313t-win32.whl", hash = "sha256:283edd842a01e3dcd435b1c5116798d661378d83d36d337b8dde1d16a5fc9ba3", size = 196157, upload-time = "2025-07-26T12:02:11.488Z" }, + { url = "https://files.pythonhosted.org/packages/b2/dd/880f890a6663b84d9e34a6f88cded89d78f0091e0045a284427cb6b18521/contourpy-1.3.3-cp313-cp313t-win_amd64.whl", hash = "sha256:87acf5963fc2b34825e5b6b048f40e3635dd547f590b04d2ab317c2619ef7ae8", size = 240570, upload-time = "2025-07-26T12:02:12.754Z" }, + { url = "https://files.pythonhosted.org/packages/80/99/2adc7d8ffead633234817ef8e9a87115c8a11927a94478f6bb3d3f4d4f7d/contourpy-1.3.3-cp313-cp313t-win_arm64.whl", hash = "sha256:3c30273eb2a55024ff31ba7d052dde990d7d8e5450f4bbb6e913558b3d6c2301", size = 199713, upload-time = "2025-07-26T12:02:14.4Z" }, + { url = "https://files.pythonhosted.org/packages/72/8b/4546f3ab60f78c514ffb7d01a0bd743f90de36f0019d1be84d0a708a580a/contourpy-1.3.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fde6c716d51c04b1c25d0b90364d0be954624a0ee9d60e23e850e8d48353d07a", size = 292189, upload-time = "2025-07-26T12:02:16.095Z" }, + { url = "https://files.pythonhosted.org/packages/fd/e1/3542a9cb596cadd76fcef413f19c79216e002623158befe6daa03dbfa88c/contourpy-1.3.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:cbedb772ed74ff5be440fa8eee9bd49f64f6e3fc09436d9c7d8f1c287b121d77", size = 273251, upload-time = "2025-07-26T12:02:17.524Z" }, + { url = "https://files.pythonhosted.org/packages/b1/71/f93e1e9471d189f79d0ce2497007731c1e6bf9ef6d1d61b911430c3db4e5/contourpy-1.3.3-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:22e9b1bd7a9b1d652cd77388465dc358dafcd2e217d35552424aa4f996f524f5", size = 335810, upload-time = "2025-07-26T12:02:18.9Z" }, + { url = "https://files.pythonhosted.org/packages/91/f9/e35f4c1c93f9275d4e38681a80506b5510e9327350c51f8d4a5a724d178c/contourpy-1.3.3-cp314-cp314-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a22738912262aa3e254e4f3cb079a95a67132fc5a063890e224393596902f5a4", size = 382871, upload-time = "2025-07-26T12:02:20.418Z" }, + { url = "https://files.pythonhosted.org/packages/b5/71/47b512f936f66a0a900d81c396a7e60d73419868fba959c61efed7a8ab46/contourpy-1.3.3-cp314-cp314-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:afe5a512f31ee6bd7d0dda52ec9864c984ca3d66664444f2d72e0dc4eb832e36", size = 386264, upload-time = "2025-07-26T12:02:21.916Z" }, + { url = "https://files.pythonhosted.org/packages/04/5f/9ff93450ba96b09c7c2b3f81c94de31c89f92292f1380261bd7195bea4ea/contourpy-1.3.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f64836de09927cba6f79dcd00fdd7d5329f3fccc633468507079c829ca4db4e3", size = 363819, upload-time = "2025-07-26T12:02:23.759Z" }, + { url = "https://files.pythonhosted.org/packages/3e/a6/0b185d4cc480ee494945cde102cb0149ae830b5fa17bf855b95f2e70ad13/contourpy-1.3.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1fd43c3be4c8e5fd6e4f2baeae35ae18176cf2e5cced681cca908addf1cdd53b", size = 1333650, upload-time = "2025-07-26T12:02:26.181Z" }, + { url = "https://files.pythonhosted.org/packages/43/d7/afdc95580ca56f30fbcd3060250f66cedbde69b4547028863abd8aa3b47e/contourpy-1.3.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:6afc576f7b33cf00996e5c1102dc2a8f7cc89e39c0b55df93a0b78c1bd992b36", size = 1404833, upload-time = "2025-07-26T12:02:28.782Z" }, + { url = "https://files.pythonhosted.org/packages/e2/e2/366af18a6d386f41132a48f033cbd2102e9b0cf6345d35ff0826cd984566/contourpy-1.3.3-cp314-cp314-win32.whl", hash = "sha256:66c8a43a4f7b8df8b71ee1840e4211a3c8d93b214b213f590e18a1beca458f7d", size = 189692, upload-time = "2025-07-26T12:02:30.128Z" }, + { url = "https://files.pythonhosted.org/packages/7d/c2/57f54b03d0f22d4044b8afb9ca0e184f8b1afd57b4f735c2fa70883dc601/contourpy-1.3.3-cp314-cp314-win_amd64.whl", hash = "sha256:cf9022ef053f2694e31d630feaacb21ea24224be1c3ad0520b13d844274614fd", size = 232424, upload-time = "2025-07-26T12:02:31.395Z" }, + { url = "https://files.pythonhosted.org/packages/18/79/a9416650df9b525737ab521aa181ccc42d56016d2123ddcb7b58e926a42c/contourpy-1.3.3-cp314-cp314-win_arm64.whl", hash = "sha256:95b181891b4c71de4bb404c6621e7e2390745f887f2a026b2d99e92c17892339", size = 198300, upload-time = "2025-07-26T12:02:32.956Z" }, + { url = "https://files.pythonhosted.org/packages/1f/42/38c159a7d0f2b7b9c04c64ab317042bb6952b713ba875c1681529a2932fe/contourpy-1.3.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:33c82d0138c0a062380332c861387650c82e4cf1747aaa6938b9b6516762e772", size = 306769, upload-time = "2025-07-26T12:02:34.2Z" }, + { url = "https://files.pythonhosted.org/packages/c3/6c/26a8205f24bca10974e77460de68d3d7c63e282e23782f1239f226fcae6f/contourpy-1.3.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:ea37e7b45949df430fe649e5de8351c423430046a2af20b1c1961cae3afcda77", size = 287892, upload-time = "2025-07-26T12:02:35.807Z" }, + { url = "https://files.pythonhosted.org/packages/66/06/8a475c8ab718ebfd7925661747dbb3c3ee9c82ac834ccb3570be49d129f4/contourpy-1.3.3-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d304906ecc71672e9c89e87c4675dc5c2645e1f4269a5063b99b0bb29f232d13", size = 326748, upload-time = "2025-07-26T12:02:37.193Z" }, + { url = "https://files.pythonhosted.org/packages/b4/a3/c5ca9f010a44c223f098fccd8b158bb1cb287378a31ac141f04730dc49be/contourpy-1.3.3-cp314-cp314t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ca658cd1a680a5c9ea96dc61cdbae1e85c8f25849843aa799dfd3cb370ad4fbe", size = 375554, upload-time = "2025-07-26T12:02:38.894Z" }, + { url = "https://files.pythonhosted.org/packages/80/5b/68bd33ae63fac658a4145088c1e894405e07584a316738710b636c6d0333/contourpy-1.3.3-cp314-cp314t-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ab2fd90904c503739a75b7c8c5c01160130ba67944a7b77bbf36ef8054576e7f", size = 388118, upload-time = "2025-07-26T12:02:40.642Z" }, + { url = "https://files.pythonhosted.org/packages/40/52/4c285a6435940ae25d7410a6c36bda5145839bc3f0beb20c707cda18b9d2/contourpy-1.3.3-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7301b89040075c30e5768810bc96a8e8d78085b47d8be6e4c3f5a0b4ed478a0", size = 352555, upload-time = "2025-07-26T12:02:42.25Z" }, + { url = "https://files.pythonhosted.org/packages/24/ee/3e81e1dd174f5c7fefe50e85d0892de05ca4e26ef1c9a59c2a57e43b865a/contourpy-1.3.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:2a2a8b627d5cc6b7c41a4beff6c5ad5eb848c88255fda4a8745f7e901b32d8e4", size = 1322295, upload-time = "2025-07-26T12:02:44.668Z" }, + { url = "https://files.pythonhosted.org/packages/3c/b2/6d913d4d04e14379de429057cd169e5e00f6c2af3bb13e1710bcbdb5da12/contourpy-1.3.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:fd6ec6be509c787f1caf6b247f0b1ca598bef13f4ddeaa126b7658215529ba0f", size = 1391027, upload-time = "2025-07-26T12:02:47.09Z" }, + { url = "https://files.pythonhosted.org/packages/93/8a/68a4ec5c55a2971213d29a9374913f7e9f18581945a7a31d1a39b5d2dfe5/contourpy-1.3.3-cp314-cp314t-win32.whl", hash = "sha256:e74a9a0f5e3fff48fb5a7f2fd2b9b70a3fe014a67522f79b7cca4c0c7e43c9ae", size = 202428, upload-time = "2025-07-26T12:02:48.691Z" }, + { url = "https://files.pythonhosted.org/packages/fa/96/fd9f641ffedc4fa3ace923af73b9d07e869496c9cc7a459103e6e978992f/contourpy-1.3.3-cp314-cp314t-win_amd64.whl", hash = "sha256:13b68d6a62db8eafaebb8039218921399baf6e47bf85006fd8529f2a08ef33fc", size = 250331, upload-time = "2025-07-26T12:02:50.137Z" }, + { url = "https://files.pythonhosted.org/packages/ae/8c/469afb6465b853afff216f9528ffda78a915ff880ed58813ba4faf4ba0b6/contourpy-1.3.3-cp314-cp314t-win_arm64.whl", hash = "sha256:b7448cb5a725bb1e35ce88771b86fba35ef418952474492cf7c764059933ff8b", size = 203831, upload-time = "2025-07-26T12:02:51.449Z" }, + { url = "https://files.pythonhosted.org/packages/a5/29/8dcfe16f0107943fa92388c23f6e05cff0ba58058c4c95b00280d4c75a14/contourpy-1.3.3-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:cd5dfcaeb10f7b7f9dc8941717c6c2ade08f587be2226222c12b25f0483ed497", size = 278809, upload-time = "2025-07-26T12:02:52.74Z" }, + { url = "https://files.pythonhosted.org/packages/85/a9/8b37ef4f7dafeb335daee3c8254645ef5725be4d9c6aa70b50ec46ef2f7e/contourpy-1.3.3-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:0c1fc238306b35f246d61a1d416a627348b5cf0648648a031e14bb8705fcdfe8", size = 261593, upload-time = "2025-07-26T12:02:54.037Z" }, + { url = "https://files.pythonhosted.org/packages/0a/59/ebfb8c677c75605cc27f7122c90313fd2f375ff3c8d19a1694bda74aaa63/contourpy-1.3.3-pp311-pypy311_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:70f9aad7de812d6541d29d2bbf8feb22ff7e1c299523db288004e3157ff4674e", size = 302202, upload-time = "2025-07-26T12:02:55.947Z" }, + { url = "https://files.pythonhosted.org/packages/3c/37/21972a15834d90bfbfb009b9d004779bd5a07a0ec0234e5ba8f64d5736f4/contourpy-1.3.3-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5ed3657edf08512fc3fe81b510e35c2012fbd3081d2e26160f27ca28affec989", size = 329207, upload-time = "2025-07-26T12:02:57.468Z" }, + { url = "https://files.pythonhosted.org/packages/0c/58/bd257695f39d05594ca4ad60df5bcb7e32247f9951fd09a9b8edb82d1daa/contourpy-1.3.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:3d1a3799d62d45c18bafd41c5fa05120b96a28079f2393af559b843d1a966a77", size = 225315, upload-time = "2025-07-26T12:02:58.801Z" }, +] + +[[package]] +name = "cycler" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a9/95/a3dbbb5028f35eafb79008e7522a75244477d2838f38cbb722248dabc2a8/cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c", size = 7615, upload-time = "2023-10-07T05:32:18.335Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321, upload-time = "2023-10-07T05:32:16.783Z" }, +] + +[[package]] +name = "dill" +version = "0.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/81/e1/56027a71e31b02ddc53c7d65b01e68edf64dea2932122fe7746a516f75d5/dill-0.4.1.tar.gz", hash = "sha256:423092df4182177d4d8ba8290c8a5b640c66ab35ec7da59ccfa00f6fa3eea5fa", size = 187315, upload-time = "2026-01-19T02:36:56.85Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/77/dc8c558f7593132cf8fefec57c4f60c83b16941c574ac5f619abb3ae7933/dill-0.4.1-py3-none-any.whl", hash = "sha256:1e1ce33e978ae97fcfcff5638477032b801c46c7c65cf717f95fbc2248f79a9d", size = 120019, upload-time = "2026-01-19T02:36:55.663Z" }, +] + +[[package]] +name = "emmet-core" +version = "0.86.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "blake3" }, + { name = "monty" }, + { name = "pybtex" }, + { name = "pydantic" }, + { name = "pydantic-settings" }, + { name = "pymatgen" }, + { name = "pymatgen-io-validation" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6a/07/9979ae29d4b2bc643e870aca427a546ea2e8cf3819cdfe39179e2e983b5e/emmet_core-0.86.3.tar.gz", hash = "sha256:f3b30560f4461db7073e846c7c484713176b7fc01d1450ddb01451979ed5fb9c", size = 308021, upload-time = "2026-01-30T18:11:55.934Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c6/c7/a2b98de578ec870cd40d6c4b944465daeda48062f2ee086a0ee429fcde5c/emmet_core-0.86.3-py3-none-any.whl", hash = "sha256:00689d9102f1621d8889a50707a55e8cfcf16467ec74789350d36daa9e2c7884", size = 308806, upload-time = "2026-01-30T18:11:53.039Z" }, +] + +[[package]] +name = "fabio" +version = "2025.10.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "h5py" }, + { name = "hdf5plugin" }, + { name = "lxml" }, + { name = "numpy" }, + { name = "pillow" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/26/de/1e20900502b8a04b095fa44affc368ecffbad800dfce34f4e47a4910e2ef/fabio-2025.10.0.tar.gz", hash = "sha256:c19763bcfa02a78a507f3d914b564a8997c88a6aa7b4f87f9db4ce7fa397d256", size = 907037, upload-time = "2025-10-29T15:39:00.195Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/71/63/6423124a02b0c38c619b48f13bf87bb60b75733c3cbe4ff513fafe51ecba/fabio-2025.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:44aa4b724ac5d3fa861afaf43f634501caaa52063b68a6e023829c563d2d8645", size = 1021057, upload-time = "2025-10-29T15:38:05.032Z" }, + { url = "https://files.pythonhosted.org/packages/b2/a8/9e7dbb35e1e2f0b10a5a8c0cff5f11e229d822f1996b0bf50b6e87a14e9f/fabio-2025.10.0-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:0d492c3d4353d2900c2bcf30744f32331c81071283a1ede8b8c1f775f874e0d4", size = 1079562, upload-time = "2025-10-29T15:38:06.608Z" }, + { url = "https://files.pythonhosted.org/packages/94/54/3590c90b8d7f500d6f8ae17fec703fe11419fdb1139ab23bce91d91014e5/fabio-2025.10.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:602da1ca8df271e13d6a321e753bde05f3dd38acf41b6e5e5d5b075df17cc815", size = 1279948, upload-time = "2025-10-29T15:38:09.287Z" }, + { url = "https://files.pythonhosted.org/packages/90/c5/a07b2822081f8550095e720118ead5b9cde52f75b499e1a4e17c87824066/fabio-2025.10.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:61fb5183f491c6ad3b89ea23bdb1d3488f4093b292753b1485fe809db9d1aedf", size = 1417613, upload-time = "2025-10-29T15:38:10.758Z" }, + { url = "https://files.pythonhosted.org/packages/17/fa/3859496b47674865d5669175a9e4457c8bc5801704da531101cb79570741/fabio-2025.10.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:be0811e015fe5fe4e5f9b9b0a42223ab07998cb8ab288f80dc04bc2475f8cee2", size = 1329892, upload-time = "2025-10-29T15:38:12.559Z" }, + { url = "https://files.pythonhosted.org/packages/a8/d0/7a4bd8d6486ce0ce119b6eec4e15f07e36f66b244dad0f10004c8c737735/fabio-2025.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82b4f5576da95a8ccb05f42a35a2e8e646d26ae440a66e25c30bc7c568e5b269", size = 1218586, upload-time = "2025-10-29T15:38:14.009Z" }, + { url = "https://files.pythonhosted.org/packages/73/7b/0cf465181832d2169572c884a9803f913f964d2e09336cf12221f3cf6f57/fabio-2025.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17ed28a5938836dcee78a905952f6b9d4cde9020674fe416ac5ba0bb7d80942a", size = 1292785, upload-time = "2025-10-29T15:38:15.506Z" }, + { url = "https://files.pythonhosted.org/packages/de/02/fa52f926cd2bb56bc25291be4b3c66daa13163cd7fa04c304e8fd863798d/fabio-2025.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:0ebd2ca5337bf45215afa1509b53c047055086098ef6a314190bd5088c62b37e", size = 1335509, upload-time = "2025-10-29T15:38:17.196Z" }, + { url = "https://files.pythonhosted.org/packages/07/ce/83b588f9345c86db2ea4cf4bf7dca139c8c49b84d101bbe630f83a171d6b/fabio-2025.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:994ab2adbdcae777d74500ffab36ff3324a756b90baf611cf078429a142d0e2f", size = 1016834, upload-time = "2025-10-29T15:38:18.53Z" }, + { url = "https://files.pythonhosted.org/packages/b8/97/aafdfb70d82be7b6dabbb85586c6f41b73227c71585d8470fb1d51c2503f/fabio-2025.10.0-cp312-cp312-macosx_11_0_x86_64.whl", hash = "sha256:52128420ea2c5603adc16401c039e0c0a6c28bd5c4e8f8dccf9a2ecb52af4d3a", size = 1080636, upload-time = "2025-10-29T15:38:19.948Z" }, + { url = "https://files.pythonhosted.org/packages/ad/33/4bd2a28621b4657711bdaf244b2e5d330b25a0bcc86f9688e3ec0c76e659/fabio-2025.10.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2c52436ad4dc80acbcee8d4d97bedcd21a5e15d3630f0fdcce7c503e95611499", size = 1256578, upload-time = "2025-10-29T15:38:21.342Z" }, + { url = "https://files.pythonhosted.org/packages/75/38/1bd19a30174dcadcb78c31cf629868ae1576c1f12f7ffed552cf70f99bc9/fabio-2025.10.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:4a2136afe60bb770c822bf44ddd37e22fdd0333d5f01e0ee30d9231e17a4340a", size = 1367295, upload-time = "2025-10-29T15:38:23.191Z" }, + { url = "https://files.pythonhosted.org/packages/3b/90/87c30193cf3bb8fd4b5ec5c1dcb65cc295209157de19bf1bbbdf3298d85a/fabio-2025.10.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7865d42e9e1d804d2331631b61c6c0b2990ad763bf4434636bfd4b327cc43640", size = 1292806, upload-time = "2025-10-29T15:38:25.381Z" }, + { url = "https://files.pythonhosted.org/packages/a9/e7/2d8b8f3ee76c97a0828132c0d686ec6fc53994376d0be1524570bb3f2674/fabio-2025.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d4eb2906efa401a9b18f6ebab7e170e8aea96524fe1dcb5bdb61c0643601b8e", size = 1173223, upload-time = "2025-10-29T15:38:27.037Z" }, + { url = "https://files.pythonhosted.org/packages/11/94/b25b355deb0009e000ab241e3ebf3012922190677b92bd406ed8e35f319c/fabio-2025.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f4227832896fbe612182210913e7075cbac95f4b4d31da7dd52f665fc09d618", size = 1261591, upload-time = "2025-10-29T15:38:28.859Z" }, + { url = "https://files.pythonhosted.org/packages/e7/80/5142bd3046749b2c637436c35f303ad01a85fd4303a0e906a71c4409a085/fabio-2025.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:ec78dafac82704f5c2ba46356fc11cf84306375e2600738427eba86f66949007", size = 1322897, upload-time = "2025-10-29T15:38:30.379Z" }, + { url = "https://files.pythonhosted.org/packages/1d/b5/f5a6bd0979823525682b2fcc281a6cc3241d24e8dde548d2b0217b7f63e7/fabio-2025.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a9abf462a5f6bece4baeafe55131a244d7c2e4062ec7696a8ee8b33882db4236", size = 1011585, upload-time = "2025-10-29T15:38:32.123Z" }, + { url = "https://files.pythonhosted.org/packages/3b/25/0ae6c5e926b5a84fb084133d0635dbe937f93d963f0ac565c9e5b13e9e66/fabio-2025.10.0-cp313-cp313-macosx_11_0_x86_64.whl", hash = "sha256:539f01831c80efc759e37685fed1f52ad5d665030402c30ef4c53ec3f3bc887e", size = 1074540, upload-time = "2025-10-29T15:38:33.508Z" }, + { url = "https://files.pythonhosted.org/packages/c8/26/5ad12294add55d4311cd25c70acf15014e53709ca1b099e43dd31b24103b/fabio-2025.10.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3edfdbcd06ddee14a71bf141b73c9117a37bf73f0910b89b1bb8aa1df38b9490", size = 1242895, upload-time = "2025-10-29T15:38:35.356Z" }, + { url = "https://files.pythonhosted.org/packages/eb/3c/ae90d7f4499430670e69520931d99c9661d98aaccfbf63ff7a89816f5eef/fabio-2025.10.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ab0432675a1cb42af28bc2fafea4f9c8433247ae81043a510a3c137623624f5a", size = 1354690, upload-time = "2025-10-29T15:38:37.31Z" }, + { url = "https://files.pythonhosted.org/packages/00/1c/3197e50a98df530bfc61c592449a1575642bb9903df5c286e39aec794778/fabio-2025.10.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fb6ba775ba07945ff147c6bc552fecfa80bca633e0a45de590ee1efd92088099", size = 1292588, upload-time = "2025-10-29T15:38:39.386Z" }, + { url = "https://files.pythonhosted.org/packages/49/eb/bbd940158c57ded120b1edc291d5592f1888b9e8c691e68a1814e95e4cf8/fabio-2025.10.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:136ec116345d5cbdb7fdb07a933a0613054d04a0f9c57144d18da7cbecf0c561", size = 1171332, upload-time = "2025-10-29T15:38:42.289Z" }, + { url = "https://files.pythonhosted.org/packages/43/9d/d5df7723dcc376f628f86c96fc7422272c8056710e321d27a4e87094b390/fabio-2025.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e03d6b9745d71ea476b586baa06bdf177ab14902ca99d6aade234e9d461def6", size = 1255134, upload-time = "2025-10-29T15:38:43.75Z" }, + { url = "https://files.pythonhosted.org/packages/10/9a/506e645f2b116f0a5fa1735fafac8bf832e25941d5314e44d2dae8762310/fabio-2025.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:53436e907776d6bba7e0128b8984969268ae26b41bb817cb012c38d8583529c5", size = 1320074, upload-time = "2025-10-29T15:38:45.44Z" }, + { url = "https://files.pythonhosted.org/packages/7a/7b/a3576e2dfe79ced39c25a6e05859f163b50ef9cebe7a82be5259b816e0eb/fabio-2025.10.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1fa95b7cc27ddea38f3af06509dab68a01f03f5db5bd91ce032f61c012fd9b2e", size = 1015034, upload-time = "2025-10-29T15:38:46.75Z" }, + { url = "https://files.pythonhosted.org/packages/24/5c/f2e823498621e18c556adf479df8640bd134ca50adc1cc22a7d1d3084b34/fabio-2025.10.0-cp314-cp314-macosx_11_0_x86_64.whl", hash = "sha256:a04e1ee0c3122916a1a88867ea59a8d01dca38912c2b1f75318809d3dd2b86b2", size = 1075175, upload-time = "2025-10-29T15:38:52.206Z" }, + { url = "https://files.pythonhosted.org/packages/56/a7/534ba416cbbcb199800821d800fdf7d4804f3cf80298f87164d539782d19/fabio-2025.10.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d7f187772acfcf74b501328b64b0755b0788dff59b143f58fd2cb1cdbdd1396d", size = 1267110, upload-time = "2025-10-29T15:38:54.051Z" }, + { url = "https://files.pythonhosted.org/packages/0c/35/891502025d003ef3d64499206840ed69eca16ea106f94a88384360ae7bda/fabio-2025.10.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9abd3d30b6fb5a2cd9cdd18945f20d0e0db858ff0ceb07e41e20a67da6a2f52b", size = 1364147, upload-time = "2025-10-29T15:38:55.763Z" }, + { url = "https://files.pythonhosted.org/packages/7a/0a/d39ab66fb8be334524dc29b18f08b64ba2efe3190f8997d7266d748afd1f/fabio-2025.10.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e96fc52f9e1e795b0ba82de848e6cbe19e711b58d45d78b0a69ff2a4c29dba77", size = 1298652, upload-time = "2025-10-29T15:38:57.15Z" }, + { url = "https://files.pythonhosted.org/packages/6e/b7/973ac208818b5864375318af6658ab9d647f1c561aed053db366acf54bb2/fabio-2025.10.0-cp314-cp314-win_amd64.whl", hash = "sha256:c2134ecfb24e67393f47913f3c41a427d0a9bc5af9130fe23c61eb04c7400a0e", size = 1347184, upload-time = "2025-10-29T15:38:58.71Z" }, +] + +[[package]] +name = "fonttools" +version = "4.61.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ec/ca/cf17b88a8df95691275a3d77dc0a5ad9907f328ae53acbe6795da1b2f5ed/fonttools-4.61.1.tar.gz", hash = "sha256:6675329885c44657f826ef01d9e4fb33b9158e9d93c537d84ad8399539bc6f69", size = 3565756, upload-time = "2025-12-12T17:31:24.246Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/12/bf9f4eaa2fad039356cc627587e30ed008c03f1cebd3034376b5ee8d1d44/fonttools-4.61.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c6604b735bb12fef8e0efd5578c9fb5d3d8532d5001ea13a19cddf295673ee09", size = 2852213, upload-time = "2025-12-12T17:29:46.675Z" }, + { url = "https://files.pythonhosted.org/packages/ac/49/4138d1acb6261499bedde1c07f8c2605d1d8f9d77a151e5507fd3ef084b6/fonttools-4.61.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5ce02f38a754f207f2f06557523cd39a06438ba3aafc0639c477ac409fc64e37", size = 2401689, upload-time = "2025-12-12T17:29:48.769Z" }, + { url = "https://files.pythonhosted.org/packages/e5/fe/e6ce0fe20a40e03aef906af60aa87668696f9e4802fa283627d0b5ed777f/fonttools-4.61.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:77efb033d8d7ff233385f30c62c7c79271c8885d5c9657d967ede124671bbdfb", size = 5058809, upload-time = "2025-12-12T17:29:51.701Z" }, + { url = "https://files.pythonhosted.org/packages/79/61/1ca198af22f7dd22c17ab86e9024ed3c06299cfdb08170640e9996d501a0/fonttools-4.61.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:75c1a6dfac6abd407634420c93864a1e274ebc1c7531346d9254c0d8f6ca00f9", size = 5036039, upload-time = "2025-12-12T17:29:53.659Z" }, + { url = "https://files.pythonhosted.org/packages/99/cc/fa1801e408586b5fce4da9f5455af8d770f4fc57391cd5da7256bb364d38/fonttools-4.61.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0de30bfe7745c0d1ffa2b0b7048fb7123ad0d71107e10ee090fa0b16b9452e87", size = 5034714, upload-time = "2025-12-12T17:29:55.592Z" }, + { url = "https://files.pythonhosted.org/packages/bf/aa/b7aeafe65adb1b0a925f8f25725e09f078c635bc22754f3fecb7456955b0/fonttools-4.61.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:58b0ee0ab5b1fc9921eccfe11d1435added19d6494dde14e323f25ad2bc30c56", size = 5158648, upload-time = "2025-12-12T17:29:57.861Z" }, + { url = "https://files.pythonhosted.org/packages/99/f9/08ea7a38663328881384c6e7777bbefc46fd7d282adfd87a7d2b84ec9d50/fonttools-4.61.1-cp311-cp311-win32.whl", hash = "sha256:f79b168428351d11e10c5aeb61a74e1851ec221081299f4cf56036a95431c43a", size = 2280681, upload-time = "2025-12-12T17:29:59.943Z" }, + { url = "https://files.pythonhosted.org/packages/07/ad/37dd1ae5fa6e01612a1fbb954f0927681f282925a86e86198ccd7b15d515/fonttools-4.61.1-cp311-cp311-win_amd64.whl", hash = "sha256:fe2efccb324948a11dd09d22136fe2ac8a97d6c1347cf0b58a911dcd529f66b7", size = 2331951, upload-time = "2025-12-12T17:30:02.254Z" }, + { url = "https://files.pythonhosted.org/packages/6f/16/7decaa24a1bd3a70c607b2e29f0adc6159f36a7e40eaba59846414765fd4/fonttools-4.61.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f3cb4a569029b9f291f88aafc927dd53683757e640081ca8c412781ea144565e", size = 2851593, upload-time = "2025-12-12T17:30:04.225Z" }, + { url = "https://files.pythonhosted.org/packages/94/98/3c4cb97c64713a8cf499b3245c3bf9a2b8fd16a3e375feff2aed78f96259/fonttools-4.61.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41a7170d042e8c0024703ed13b71893519a1a6d6e18e933e3ec7507a2c26a4b2", size = 2400231, upload-time = "2025-12-12T17:30:06.47Z" }, + { url = "https://files.pythonhosted.org/packages/b7/37/82dbef0f6342eb01f54bca073ac1498433d6ce71e50c3c3282b655733b31/fonttools-4.61.1-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:10d88e55330e092940584774ee5e8a6971b01fc2f4d3466a1d6c158230880796", size = 4954103, upload-time = "2025-12-12T17:30:08.432Z" }, + { url = "https://files.pythonhosted.org/packages/6c/44/f3aeac0fa98e7ad527f479e161aca6c3a1e47bb6996b053d45226fe37bf2/fonttools-4.61.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:15acc09befd16a0fb8a8f62bc147e1a82817542d72184acca9ce6e0aeda9fa6d", size = 5004295, upload-time = "2025-12-12T17:30:10.56Z" }, + { url = "https://files.pythonhosted.org/packages/14/e8/7424ced75473983b964d09f6747fa09f054a6d656f60e9ac9324cf40c743/fonttools-4.61.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e6bcdf33aec38d16508ce61fd81838f24c83c90a1d1b8c68982857038673d6b8", size = 4944109, upload-time = "2025-12-12T17:30:12.874Z" }, + { url = "https://files.pythonhosted.org/packages/c8/8b/6391b257fa3d0b553d73e778f953a2f0154292a7a7a085e2374b111e5410/fonttools-4.61.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5fade934607a523614726119164ff621e8c30e8fa1ffffbbd358662056ba69f0", size = 5093598, upload-time = "2025-12-12T17:30:15.79Z" }, + { url = "https://files.pythonhosted.org/packages/d9/71/fd2ea96cdc512d92da5678a1c98c267ddd4d8c5130b76d0f7a80f9a9fde8/fonttools-4.61.1-cp312-cp312-win32.whl", hash = "sha256:75da8f28eff26defba42c52986de97b22106cb8f26515b7c22443ebc9c2d3261", size = 2269060, upload-time = "2025-12-12T17:30:18.058Z" }, + { url = "https://files.pythonhosted.org/packages/80/3b/a3e81b71aed5a688e89dfe0e2694b26b78c7d7f39a5ffd8a7d75f54a12a8/fonttools-4.61.1-cp312-cp312-win_amd64.whl", hash = "sha256:497c31ce314219888c0e2fce5ad9178ca83fe5230b01a5006726cdf3ac9f24d9", size = 2319078, upload-time = "2025-12-12T17:30:22.862Z" }, + { url = "https://files.pythonhosted.org/packages/4b/cf/00ba28b0990982530addb8dc3e9e6f2fa9cb5c20df2abdda7baa755e8fe1/fonttools-4.61.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8c56c488ab471628ff3bfa80964372fc13504ece601e0d97a78ee74126b2045c", size = 2846454, upload-time = "2025-12-12T17:30:24.938Z" }, + { url = "https://files.pythonhosted.org/packages/5a/ca/468c9a8446a2103ae645d14fee3f610567b7042aba85031c1c65e3ef7471/fonttools-4.61.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:dc492779501fa723b04d0ab1f5be046797fee17d27700476edc7ee9ae535a61e", size = 2398191, upload-time = "2025-12-12T17:30:27.343Z" }, + { url = "https://files.pythonhosted.org/packages/a3/4b/d67eedaed19def5967fade3297fed8161b25ba94699efc124b14fb68cdbc/fonttools-4.61.1-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:64102ca87e84261419c3747a0d20f396eb024bdbeb04c2bfb37e2891f5fadcb5", size = 4928410, upload-time = "2025-12-12T17:30:29.771Z" }, + { url = "https://files.pythonhosted.org/packages/b0/8d/6fb3494dfe61a46258cd93d979cf4725ded4eb46c2a4ca35e4490d84daea/fonttools-4.61.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4c1b526c8d3f615a7b1867f38a9410849c8f4aef078535742198e942fba0e9bd", size = 4984460, upload-time = "2025-12-12T17:30:32.073Z" }, + { url = "https://files.pythonhosted.org/packages/f7/f1/a47f1d30b3dc00d75e7af762652d4cbc3dff5c2697a0dbd5203c81afd9c3/fonttools-4.61.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:41ed4b5ec103bd306bb68f81dc166e77409e5209443e5773cb4ed837bcc9b0d3", size = 4925800, upload-time = "2025-12-12T17:30:34.339Z" }, + { url = "https://files.pythonhosted.org/packages/a7/01/e6ae64a0981076e8a66906fab01539799546181e32a37a0257b77e4aa88b/fonttools-4.61.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b501c862d4901792adaec7c25b1ecc749e2662543f68bb194c42ba18d6eec98d", size = 5067859, upload-time = "2025-12-12T17:30:36.593Z" }, + { url = "https://files.pythonhosted.org/packages/73/aa/28e40b8d6809a9b5075350a86779163f074d2b617c15d22343fce81918db/fonttools-4.61.1-cp313-cp313-win32.whl", hash = "sha256:4d7092bb38c53bbc78e9255a59158b150bcdc115a1e3b3ce0b5f267dc35dd63c", size = 2267821, upload-time = "2025-12-12T17:30:38.478Z" }, + { url = "https://files.pythonhosted.org/packages/1a/59/453c06d1d83dc0951b69ef692d6b9f1846680342927df54e9a1ca91c6f90/fonttools-4.61.1-cp313-cp313-win_amd64.whl", hash = "sha256:21e7c8d76f62ab13c9472ccf74515ca5b9a761d1bde3265152a6dc58700d895b", size = 2318169, upload-time = "2025-12-12T17:30:40.951Z" }, + { url = "https://files.pythonhosted.org/packages/32/8f/4e7bf82c0cbb738d3c2206c920ca34ca74ef9dabde779030145d28665104/fonttools-4.61.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:fff4f534200a04b4a36e7ae3cb74493afe807b517a09e99cb4faa89a34ed6ecd", size = 2846094, upload-time = "2025-12-12T17:30:43.511Z" }, + { url = "https://files.pythonhosted.org/packages/71/09/d44e45d0a4f3a651f23a1e9d42de43bc643cce2971b19e784cc67d823676/fonttools-4.61.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:d9203500f7c63545b4ce3799319fe4d9feb1a1b89b28d3cb5abd11b9dd64147e", size = 2396589, upload-time = "2025-12-12T17:30:45.681Z" }, + { url = "https://files.pythonhosted.org/packages/89/18/58c64cafcf8eb677a99ef593121f719e6dcbdb7d1c594ae5a10d4997ca8a/fonttools-4.61.1-cp314-cp314-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:fa646ecec9528bef693415c79a86e733c70a4965dd938e9a226b0fc64c9d2e6c", size = 4877892, upload-time = "2025-12-12T17:30:47.709Z" }, + { url = "https://files.pythonhosted.org/packages/8a/ec/9e6b38c7ba1e09eb51db849d5450f4c05b7e78481f662c3b79dbde6f3d04/fonttools-4.61.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:11f35ad7805edba3aac1a3710d104592df59f4b957e30108ae0ba6c10b11dd75", size = 4972884, upload-time = "2025-12-12T17:30:49.656Z" }, + { url = "https://files.pythonhosted.org/packages/5e/87/b5339da8e0256734ba0dbbf5b6cdebb1dd79b01dc8c270989b7bcd465541/fonttools-4.61.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b931ae8f62db78861b0ff1ac017851764602288575d65b8e8ff1963fed419063", size = 4924405, upload-time = "2025-12-12T17:30:51.735Z" }, + { url = "https://files.pythonhosted.org/packages/0b/47/e3409f1e1e69c073a3a6fd8cb886eb18c0bae0ee13db2c8d5e7f8495e8b7/fonttools-4.61.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b148b56f5de675ee16d45e769e69f87623a4944f7443850bf9a9376e628a89d2", size = 5035553, upload-time = "2025-12-12T17:30:54.823Z" }, + { url = "https://files.pythonhosted.org/packages/bf/b6/1f6600161b1073a984294c6c031e1a56ebf95b6164249eecf30012bb2e38/fonttools-4.61.1-cp314-cp314-win32.whl", hash = "sha256:9b666a475a65f4e839d3d10473fad6d47e0a9db14a2f4a224029c5bfde58ad2c", size = 2271915, upload-time = "2025-12-12T17:30:57.913Z" }, + { url = "https://files.pythonhosted.org/packages/52/7b/91e7b01e37cc8eb0e1f770d08305b3655e4f002fc160fb82b3390eabacf5/fonttools-4.61.1-cp314-cp314-win_amd64.whl", hash = "sha256:4f5686e1fe5fce75d82d93c47a438a25bf0d1319d2843a926f741140b2b16e0c", size = 2323487, upload-time = "2025-12-12T17:30:59.804Z" }, + { url = "https://files.pythonhosted.org/packages/39/5c/908ad78e46c61c3e3ed70c3b58ff82ab48437faf84ec84f109592cabbd9f/fonttools-4.61.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:e76ce097e3c57c4bcb67c5aa24a0ecdbd9f74ea9219997a707a4061fbe2707aa", size = 2929571, upload-time = "2025-12-12T17:31:02.574Z" }, + { url = "https://files.pythonhosted.org/packages/bd/41/975804132c6dea64cdbfbaa59f3518a21c137a10cccf962805b301ac6ab2/fonttools-4.61.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:9cfef3ab326780c04d6646f68d4b4742aae222e8b8ea1d627c74e38afcbc9d91", size = 2435317, upload-time = "2025-12-12T17:31:04.974Z" }, + { url = "https://files.pythonhosted.org/packages/b0/5a/aef2a0a8daf1ebaae4cfd83f84186d4a72ee08fd6a8451289fcd03ffa8a4/fonttools-4.61.1-cp314-cp314t-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:a75c301f96db737e1c5ed5fd7d77d9c34466de16095a266509e13da09751bd19", size = 4882124, upload-time = "2025-12-12T17:31:07.456Z" }, + { url = "https://files.pythonhosted.org/packages/80/33/d6db3485b645b81cea538c9d1c9219d5805f0877fda18777add4671c5240/fonttools-4.61.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:91669ccac46bbc1d09e9273546181919064e8df73488ea087dcac3e2968df9ba", size = 5100391, upload-time = "2025-12-12T17:31:09.732Z" }, + { url = "https://files.pythonhosted.org/packages/6c/d6/675ba631454043c75fcf76f0ca5463eac8eb0666ea1d7badae5fea001155/fonttools-4.61.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:c33ab3ca9d3ccd581d58e989d67554e42d8d4ded94ab3ade3508455fe70e65f7", size = 4978800, upload-time = "2025-12-12T17:31:11.681Z" }, + { url = "https://files.pythonhosted.org/packages/7f/33/d3ec753d547a8d2bdaedd390d4a814e8d5b45a093d558f025c6b990b554c/fonttools-4.61.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:664c5a68ec406f6b1547946683008576ef8b38275608e1cee6c061828171c118", size = 5006426, upload-time = "2025-12-12T17:31:13.764Z" }, + { url = "https://files.pythonhosted.org/packages/b4/40/cc11f378b561a67bea850ab50063366a0d1dd3f6d0a30ce0f874b0ad5664/fonttools-4.61.1-cp314-cp314t-win32.whl", hash = "sha256:aed04cabe26f30c1647ef0e8fbb207516fd40fe9472e9439695f5c6998e60ac5", size = 2335377, upload-time = "2025-12-12T17:31:16.49Z" }, + { url = "https://files.pythonhosted.org/packages/e4/ff/c9a2b66b39f8628531ea58b320d66d951267c98c6a38684daa8f50fb02f8/fonttools-4.61.1-cp314-cp314t-win_amd64.whl", hash = "sha256:2180f14c141d2f0f3da43f3a81bc8aa4684860f6b0e6f9e165a4831f24e6a23b", size = 2400613, upload-time = "2025-12-12T17:31:18.769Z" }, + { url = "https://files.pythonhosted.org/packages/c7/4e/ce75a57ff3aebf6fc1f4e9d508b8e5810618a33d900ad6c19eb30b290b97/fonttools-4.61.1-py3-none-any.whl", hash = "sha256:17d2bf5d541add43822bcf0c43d7d847b160c9bb01d15d5007d84e2217aaa371", size = 1148996, upload-time = "2025-12-12T17:31:21.03Z" }, +] + +[[package]] +name = "greenlet" +version = "3.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8a/99/1cd3411c56a410994669062bd73dd58270c00cc074cac15f385a1fd91f8a/greenlet-3.3.1.tar.gz", hash = "sha256:41848f3230b58c08bb43dee542e74a2a2e34d3c59dc3076cec9151aeeedcae98", size = 184690, upload-time = "2026-01-23T15:31:02.076Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/e8/2e1462c8fdbe0f210feb5ac7ad2d9029af8be3bf45bd9fa39765f821642f/greenlet-3.3.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:5fd23b9bc6d37b563211c6abbb1b3cab27db385a4449af5c32e932f93017080c", size = 274974, upload-time = "2026-01-23T15:31:02.891Z" }, + { url = "https://files.pythonhosted.org/packages/7e/a8/530a401419a6b302af59f67aaf0b9ba1015855ea7e56c036b5928793c5bd/greenlet-3.3.1-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:09f51496a0bfbaa9d74d36a52d2580d1ef5ed4fdfcff0a73730abfbbbe1403dd", size = 577175, upload-time = "2026-01-23T16:00:56.213Z" }, + { url = "https://files.pythonhosted.org/packages/8e/89/7e812bb9c05e1aaef9b597ac1d0962b9021d2c6269354966451e885c4e6b/greenlet-3.3.1-cp311-cp311-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:cb0feb07fe6e6a74615ee62a880007d976cf739b6669cce95daa7373d4fc69c5", size = 590401, upload-time = "2026-01-23T16:05:26.365Z" }, + { url = "https://files.pythonhosted.org/packages/5c/ae/8d472e1f5ac5efe55c563f3eabb38c98a44b832602e12910750a7c025802/greenlet-3.3.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:39eda9ba259cc9801da05351eaa8576e9aa83eb9411e8f0c299e05d712a210f2", size = 590272, upload-time = "2026-01-23T15:32:49.411Z" }, + { url = "https://files.pythonhosted.org/packages/a8/51/0fde34bebfcadc833550717eade64e35ec8738e6b097d5d248274a01258b/greenlet-3.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e2e7e882f83149f0a71ac822ebf156d902e7a5d22c9045e3e0d1daf59cee2cc9", size = 1550729, upload-time = "2026-01-23T16:04:20.867Z" }, + { url = "https://files.pythonhosted.org/packages/16/c9/2fb47bee83b25b119d5a35d580807bb8b92480a54b68fef009a02945629f/greenlet-3.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:80aa4d79eb5564f2e0a6144fcc744b5a37c56c4a92d60920720e99210d88db0f", size = 1615552, upload-time = "2026-01-23T15:33:45.743Z" }, + { url = "https://files.pythonhosted.org/packages/1f/54/dcf9f737b96606f82f8dd05becfb8d238db0633dd7397d542a296fe9cad3/greenlet-3.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:32e4ca9777c5addcbf42ff3915d99030d8e00173a56f80001fb3875998fe410b", size = 226462, upload-time = "2026-01-23T15:36:50.422Z" }, + { url = "https://files.pythonhosted.org/packages/91/37/61e1015cf944ddd2337447d8e97fb423ac9bc21f9963fb5f206b53d65649/greenlet-3.3.1-cp311-cp311-win_arm64.whl", hash = "sha256:da19609432f353fed186cc1b85e9440db93d489f198b4bdf42ae19cc9d9ac9b4", size = 225715, upload-time = "2026-01-23T15:33:17.298Z" }, + { url = "https://files.pythonhosted.org/packages/f9/c8/9d76a66421d1ae24340dfae7e79c313957f6e3195c144d2c73333b5bfe34/greenlet-3.3.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:7e806ca53acf6d15a888405880766ec84721aa4181261cd11a457dfe9a7a4975", size = 276443, upload-time = "2026-01-23T15:30:10.066Z" }, + { url = "https://files.pythonhosted.org/packages/81/99/401ff34bb3c032d1f10477d199724f5e5f6fbfb59816ad1455c79c1eb8e7/greenlet-3.3.1-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d842c94b9155f1c9b3058036c24ffb8ff78b428414a19792b2380be9cecf4f36", size = 597359, upload-time = "2026-01-23T16:00:57.394Z" }, + { url = "https://files.pythonhosted.org/packages/2b/bc/4dcc0871ed557792d304f50be0f7487a14e017952ec689effe2180a6ff35/greenlet-3.3.1-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:20fedaadd422fa02695f82093f9a98bad3dab5fcda793c658b945fcde2ab27ba", size = 607805, upload-time = "2026-01-23T16:05:28.068Z" }, + { url = "https://files.pythonhosted.org/packages/cf/05/821587cf19e2ce1f2b24945d890b164401e5085f9d09cbd969b0c193cd20/greenlet-3.3.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:14194f5f4305800ff329cbf02c5fcc88f01886cadd29941b807668a45f0d2336", size = 609947, upload-time = "2026-01-23T15:32:51.004Z" }, + { url = "https://files.pythonhosted.org/packages/a4/52/ee8c46ed9f8babaa93a19e577f26e3d28a519feac6350ed6f25f1afee7e9/greenlet-3.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7b2fe4150a0cf59f847a67db8c155ac36aed89080a6a639e9f16df5d6c6096f1", size = 1567487, upload-time = "2026-01-23T16:04:22.125Z" }, + { url = "https://files.pythonhosted.org/packages/8f/7c/456a74f07029597626f3a6db71b273a3632aecb9afafeeca452cfa633197/greenlet-3.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:49f4ad195d45f4a66a0eb9c1ba4832bb380570d361912fa3554746830d332149", size = 1636087, upload-time = "2026-01-23T15:33:47.486Z" }, + { url = "https://files.pythonhosted.org/packages/34/2f/5e0e41f33c69655300a5e54aeb637cf8ff57f1786a3aba374eacc0228c1d/greenlet-3.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:cc98b9c4e4870fa983436afa999d4eb16b12872fab7071423d5262fa7120d57a", size = 227156, upload-time = "2026-01-23T15:34:34.808Z" }, + { url = "https://files.pythonhosted.org/packages/c8/ab/717c58343cf02c5265b531384b248787e04d8160b8afe53d9eec053d7b44/greenlet-3.3.1-cp312-cp312-win_arm64.whl", hash = "sha256:bfb2d1763d777de5ee495c85309460f6fd8146e50ec9d0ae0183dbf6f0a829d1", size = 226403, upload-time = "2026-01-23T15:31:39.372Z" }, + { url = "https://files.pythonhosted.org/packages/ec/ab/d26750f2b7242c2b90ea2ad71de70cfcd73a948a49513188a0fc0d6fc15a/greenlet-3.3.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:7ab327905cabb0622adca5971e488064e35115430cec2c35a50fd36e72a315b3", size = 275205, upload-time = "2026-01-23T15:30:24.556Z" }, + { url = "https://files.pythonhosted.org/packages/10/d3/be7d19e8fad7c5a78eeefb2d896a08cd4643e1e90c605c4be3b46264998f/greenlet-3.3.1-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:65be2f026ca6a176f88fb935ee23c18333ccea97048076aef4db1ef5bc0713ac", size = 599284, upload-time = "2026-01-23T16:00:58.584Z" }, + { url = "https://files.pythonhosted.org/packages/ae/21/fe703aaa056fdb0f17e5afd4b5c80195bbdab701208918938bd15b00d39b/greenlet-3.3.1-cp313-cp313-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7a3ae05b3d225b4155bda56b072ceb09d05e974bc74be6c3fc15463cf69f33fd", size = 610274, upload-time = "2026-01-23T16:05:29.312Z" }, + { url = "https://files.pythonhosted.org/packages/cb/86/5c6ab23bb3c28c21ed6bebad006515cfe08b04613eb105ca0041fecca852/greenlet-3.3.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6423481193bbbe871313de5fd06a082f2649e7ce6e08015d2a76c1e9186ca5b3", size = 612904, upload-time = "2026-01-23T15:32:52.317Z" }, + { url = "https://files.pythonhosted.org/packages/c2/f3/7949994264e22639e40718c2daf6f6df5169bf48fb038c008a489ec53a50/greenlet-3.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:33a956fe78bbbda82bfc95e128d61129b32d66bcf0a20a1f0c08aa4839ffa951", size = 1567316, upload-time = "2026-01-23T16:04:23.316Z" }, + { url = "https://files.pythonhosted.org/packages/8d/6e/d73c94d13b6465e9f7cd6231c68abde838bb22408596c05d9059830b7872/greenlet-3.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4b065d3284be43728dd280f6f9a13990b56470b81be20375a207cdc814a983f2", size = 1636549, upload-time = "2026-01-23T15:33:48.643Z" }, + { url = "https://files.pythonhosted.org/packages/5e/b3/c9c23a6478b3bcc91f979ce4ca50879e4d0b2bd7b9a53d8ecded719b92e2/greenlet-3.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:27289986f4e5b0edec7b5a91063c109f0276abb09a7e9bdab08437525977c946", size = 227042, upload-time = "2026-01-23T15:33:58.216Z" }, + { url = "https://files.pythonhosted.org/packages/90/e7/824beda656097edee36ab15809fd063447b200cc03a7f6a24c34d520bc88/greenlet-3.3.1-cp313-cp313-win_arm64.whl", hash = "sha256:2f080e028001c5273e0b42690eaf359aeef9cb1389da0f171ea51a5dc3c7608d", size = 226294, upload-time = "2026-01-23T15:30:52.73Z" }, + { url = "https://files.pythonhosted.org/packages/ae/fb/011c7c717213182caf78084a9bea51c8590b0afda98001f69d9f853a495b/greenlet-3.3.1-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:bd59acd8529b372775cd0fcbc5f420ae20681c5b045ce25bd453ed8455ab99b5", size = 275737, upload-time = "2026-01-23T15:32:16.889Z" }, + { url = "https://files.pythonhosted.org/packages/41/2e/a3a417d620363fdbb08a48b1dd582956a46a61bf8fd27ee8164f9dfe87c2/greenlet-3.3.1-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b31c05dd84ef6871dd47120386aed35323c944d86c3d91a17c4b8d23df62f15b", size = 646422, upload-time = "2026-01-23T16:01:00.354Z" }, + { url = "https://files.pythonhosted.org/packages/b4/09/c6c4a0db47defafd2d6bab8ddfe47ad19963b4e30f5bed84d75328059f8c/greenlet-3.3.1-cp314-cp314-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:02925a0bfffc41e542c70aa14c7eda3593e4d7e274bfcccca1827e6c0875902e", size = 658219, upload-time = "2026-01-23T16:05:30.956Z" }, + { url = "https://files.pythonhosted.org/packages/80/38/9d42d60dffb04b45f03dbab9430898352dba277758640751dc5cc316c521/greenlet-3.3.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:34a729e2e4e4ffe9ae2408d5ecaf12f944853f40ad724929b7585bca808a9d6f", size = 660237, upload-time = "2026-01-23T15:32:53.967Z" }, + { url = "https://files.pythonhosted.org/packages/96/61/373c30b7197f9e756e4c81ae90a8d55dc3598c17673f91f4d31c3c689c3f/greenlet-3.3.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:aec9ab04e82918e623415947921dea15851b152b822661cce3f8e4393c3df683", size = 1615261, upload-time = "2026-01-23T16:04:25.066Z" }, + { url = "https://files.pythonhosted.org/packages/fd/d3/ca534310343f5945316f9451e953dcd89b36fe7a19de652a1dc5a0eeef3f/greenlet-3.3.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:71c767cf281a80d02b6c1bdc41c9468e1f5a494fb11bc8688c360524e273d7b1", size = 1683719, upload-time = "2026-01-23T15:33:50.61Z" }, + { url = "https://files.pythonhosted.org/packages/52/cb/c21a3fd5d2c9c8b622e7bede6d6d00e00551a5ee474ea6d831b5f567a8b4/greenlet-3.3.1-cp314-cp314-win_amd64.whl", hash = "sha256:96aff77af063b607f2489473484e39a0bbae730f2ea90c9e5606c9b73c44174a", size = 228125, upload-time = "2026-01-23T15:32:45.265Z" }, + { url = "https://files.pythonhosted.org/packages/6a/8e/8a2db6d11491837af1de64b8aff23707c6e85241be13c60ed399a72e2ef8/greenlet-3.3.1-cp314-cp314-win_arm64.whl", hash = "sha256:b066e8b50e28b503f604fa538adc764a638b38cf8e81e025011d26e8a627fa79", size = 227519, upload-time = "2026-01-23T15:31:47.284Z" }, + { url = "https://files.pythonhosted.org/packages/28/24/cbbec49bacdcc9ec652a81d3efef7b59f326697e7edf6ed775a5e08e54c2/greenlet-3.3.1-cp314-cp314t-macosx_11_0_universal2.whl", hash = "sha256:3e63252943c921b90abb035ebe9de832c436401d9c45f262d80e2d06cc659242", size = 282706, upload-time = "2026-01-23T15:33:05.525Z" }, + { url = "https://files.pythonhosted.org/packages/86/2e/4f2b9323c144c4fe8842a4e0d92121465485c3c2c5b9e9b30a52e80f523f/greenlet-3.3.1-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:76e39058e68eb125de10c92524573924e827927df5d3891fbc97bd55764a8774", size = 651209, upload-time = "2026-01-23T16:01:01.517Z" }, + { url = "https://files.pythonhosted.org/packages/d9/87/50ca60e515f5bb55a2fbc5f0c9b5b156de7d2fc51a0a69abc9d23914a237/greenlet-3.3.1-cp314-cp314t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c9f9d5e7a9310b7a2f416dd13d2e3fd8b42d803968ea580b7c0f322ccb389b97", size = 654300, upload-time = "2026-01-23T16:05:32.199Z" }, + { url = "https://files.pythonhosted.org/packages/1d/94/74310866dfa2b73dd08659a3d18762f83985ad3281901ba0ee9a815194fb/greenlet-3.3.1-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:92497c78adf3ac703b57f1e3813c2d874f27f71a178f9ea5887855da413cd6d2", size = 653842, upload-time = "2026-01-23T15:32:55.671Z" }, + { url = "https://files.pythonhosted.org/packages/97/43/8bf0ffa3d498eeee4c58c212a3905dd6146c01c8dc0b0a046481ca29b18c/greenlet-3.3.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:ed6b402bc74d6557a705e197d47f9063733091ed6357b3de33619d8a8d93ac53", size = 1614917, upload-time = "2026-01-23T16:04:26.276Z" }, + { url = "https://files.pythonhosted.org/packages/89/90/a3be7a5f378fc6e84abe4dcfb2ba32b07786861172e502388b4c90000d1b/greenlet-3.3.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:59913f1e5ada20fde795ba906916aea25d442abcc0593fba7e26c92b7ad76249", size = 1676092, upload-time = "2026-01-23T15:33:52.176Z" }, + { url = "https://files.pythonhosted.org/packages/e1/2b/98c7f93e6db9977aaee07eb1e51ca63bd5f779b900d362791d3252e60558/greenlet-3.3.1-cp314-cp314t-win_amd64.whl", hash = "sha256:301860987846c24cb8964bdec0e31a96ad4a2a801b41b4ef40963c1b44f33451", size = 233181, upload-time = "2026-01-23T15:33:00.29Z" }, +] + +[[package]] +name = "h5py" +version = "3.15.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4d/6a/0d79de0b025aa85dc8864de8e97659c94cf3d23148394a954dc5ca52f8c8/h5py-3.15.1.tar.gz", hash = "sha256:c86e3ed45c4473564de55aa83b6fc9e5ead86578773dfbd93047380042e26b69", size = 426236, upload-time = "2025-10-16T10:35:27.404Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/41/fd/8349b48b15b47768042cff06ad6e1c229f0a4bd89225bf6b6894fea27e6d/h5py-3.15.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5aaa330bcbf2830150c50897ea5dcbed30b5b6d56897289846ac5b9e529ec243", size = 3434135, upload-time = "2025-10-16T10:33:47.954Z" }, + { url = "https://files.pythonhosted.org/packages/c1/b0/1c628e26a0b95858f54aba17e1599e7f6cd241727596cc2580b72cb0a9bf/h5py-3.15.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c970fb80001fffabb0109eaf95116c8e7c0d3ca2de854e0901e8a04c1f098509", size = 2870958, upload-time = "2025-10-16T10:33:50.907Z" }, + { url = "https://files.pythonhosted.org/packages/f9/e3/c255cafc9b85e6ea04e2ad1bba1416baa1d7f57fc98a214be1144087690c/h5py-3.15.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:80e5bb5b9508d5d9da09f81fd00abbb3f85da8143e56b1585d59bc8ceb1dba8b", size = 4504770, upload-time = "2025-10-16T10:33:54.357Z" }, + { url = "https://files.pythonhosted.org/packages/8b/23/4ab1108e87851ccc69694b03b817d92e142966a6c4abd99e17db77f2c066/h5py-3.15.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5b849ba619a066196169763c33f9f0f02e381156d61c03e000bb0100f9950faf", size = 4700329, upload-time = "2025-10-16T10:33:57.616Z" }, + { url = "https://files.pythonhosted.org/packages/a4/e4/932a3a8516e4e475b90969bf250b1924dbe3612a02b897e426613aed68f4/h5py-3.15.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e7f6c841efd4e6e5b7e82222eaf90819927b6d256ab0f3aca29675601f654f3c", size = 4152456, upload-time = "2025-10-16T10:34:00.843Z" }, + { url = "https://files.pythonhosted.org/packages/2a/0a/f74d589883b13737021b2049ac796328f188dbb60c2ed35b101f5b95a3fc/h5py-3.15.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ca8a3a22458956ee7b40d8e39c9a9dc01f82933e4c030c964f8b875592f4d831", size = 4617295, upload-time = "2025-10-16T10:34:04.154Z" }, + { url = "https://files.pythonhosted.org/packages/23/95/499b4e56452ef8b6c95a271af0dde08dac4ddb70515a75f346d4f400579b/h5py-3.15.1-cp311-cp311-win_amd64.whl", hash = "sha256:550e51131376889656feec4aff2170efc054a7fe79eb1da3bb92e1625d1ac878", size = 2882129, upload-time = "2025-10-16T10:34:06.886Z" }, + { url = "https://files.pythonhosted.org/packages/ce/bb/cfcc70b8a42222ba3ad4478bcef1791181ea908e2adbd7d53c66395edad5/h5py-3.15.1-cp311-cp311-win_arm64.whl", hash = "sha256:b39239947cb36a819147fc19e86b618dcb0953d1cd969f5ed71fc0de60392427", size = 2477121, upload-time = "2025-10-16T10:34:09.579Z" }, + { url = "https://files.pythonhosted.org/packages/62/b8/c0d9aa013ecfa8b7057946c080c0c07f6fa41e231d2e9bd306a2f8110bdc/h5py-3.15.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:316dd0f119734f324ca7ed10b5627a2de4ea42cc4dfbcedbee026aaa361c238c", size = 3399089, upload-time = "2025-10-16T10:34:12.135Z" }, + { url = "https://files.pythonhosted.org/packages/a4/5e/3c6f6e0430813c7aefe784d00c6711166f46225f5d229546eb53032c3707/h5py-3.15.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b51469890e58e85d5242e43aab29f5e9c7e526b951caab354f3ded4ac88e7b76", size = 2847803, upload-time = "2025-10-16T10:34:14.564Z" }, + { url = "https://files.pythonhosted.org/packages/00/69/ba36273b888a4a48d78f9268d2aee05787e4438557450a8442946ab8f3ec/h5py-3.15.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8a33bfd5dfcea037196f7778534b1ff7e36a7f40a89e648c8f2967292eb6898e", size = 4914884, upload-time = "2025-10-16T10:34:18.452Z" }, + { url = "https://files.pythonhosted.org/packages/3a/30/d1c94066343a98bb2cea40120873193a4fed68c4ad7f8935c11caf74c681/h5py-3.15.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:25c8843fec43b2cc368aa15afa1cdf83fc5e17b1c4e10cd3771ef6c39b72e5ce", size = 5109965, upload-time = "2025-10-16T10:34:21.853Z" }, + { url = "https://files.pythonhosted.org/packages/81/3d/d28172116eafc3bc9f5991b3cb3fd2c8a95f5984f50880adfdf991de9087/h5py-3.15.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a308fd8681a864c04423c0324527237a0484e2611e3441f8089fd00ed56a8171", size = 4561870, upload-time = "2025-10-16T10:34:26.69Z" }, + { url = "https://files.pythonhosted.org/packages/a5/83/393a7226024238b0f51965a7156004eaae1fcf84aa4bfecf7e582676271b/h5py-3.15.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f4a016df3f4a8a14d573b496e4d1964deb380e26031fc85fb40e417e9131888a", size = 5037161, upload-time = "2025-10-16T10:34:30.383Z" }, + { url = "https://files.pythonhosted.org/packages/cf/51/329e7436bf87ca6b0fe06dd0a3795c34bebe4ed8d6c44450a20565d57832/h5py-3.15.1-cp312-cp312-win_amd64.whl", hash = "sha256:59b25cf02411bf12e14f803fef0b80886444c7fe21a5ad17c6a28d3f08098a1e", size = 2874165, upload-time = "2025-10-16T10:34:33.461Z" }, + { url = "https://files.pythonhosted.org/packages/09/a8/2d02b10a66747c54446e932171dd89b8b4126c0111b440e6bc05a7c852ec/h5py-3.15.1-cp312-cp312-win_arm64.whl", hash = "sha256:61d5a58a9851e01ee61c932bbbb1c98fe20aba0a5674776600fb9a361c0aa652", size = 2458214, upload-time = "2025-10-16T10:34:35.733Z" }, + { url = "https://files.pythonhosted.org/packages/88/b3/40207e0192415cbff7ea1d37b9f24b33f6d38a5a2f5d18a678de78f967ae/h5py-3.15.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c8440fd8bee9500c235ecb7aa1917a0389a2adb80c209fa1cc485bd70e0d94a5", size = 3376511, upload-time = "2025-10-16T10:34:38.596Z" }, + { url = "https://files.pythonhosted.org/packages/31/96/ba99a003c763998035b0de4c299598125df5fc6c9ccf834f152ddd60e0fb/h5py-3.15.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ab2219dbc6fcdb6932f76b548e2b16f34a1f52b7666e998157a4dfc02e2c4123", size = 2826143, upload-time = "2025-10-16T10:34:41.342Z" }, + { url = "https://files.pythonhosted.org/packages/6a/c2/fc6375d07ea3962df7afad7d863fe4bde18bb88530678c20d4c90c18de1d/h5py-3.15.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d8cb02c3a96255149ed3ac811eeea25b655d959c6dd5ce702c9a95ff11859eb5", size = 4908316, upload-time = "2025-10-16T10:34:44.619Z" }, + { url = "https://files.pythonhosted.org/packages/d9/69/4402ea66272dacc10b298cca18ed73e1c0791ff2ae9ed218d3859f9698ac/h5py-3.15.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:121b2b7a4c1915d63737483b7bff14ef253020f617c2fb2811f67a4bed9ac5e8", size = 5103710, upload-time = "2025-10-16T10:34:48.639Z" }, + { url = "https://files.pythonhosted.org/packages/e0/f6/11f1e2432d57d71322c02a97a5567829a75f223a8c821764a0e71a65cde8/h5py-3.15.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:59b0d63b318bf3cc06687def2b45afd75926bbc006f7b8cd2b1a231299fc8599", size = 4556042, upload-time = "2025-10-16T10:34:51.841Z" }, + { url = "https://files.pythonhosted.org/packages/18/88/3eda3ef16bfe7a7dbc3d8d6836bbaa7986feb5ff091395e140dc13927bcc/h5py-3.15.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e02fe77a03f652500d8bff288cbf3675f742fc0411f5a628fa37116507dc7cc0", size = 5030639, upload-time = "2025-10-16T10:34:55.257Z" }, + { url = "https://files.pythonhosted.org/packages/e5/ea/fbb258a98863f99befb10ed727152b4ae659f322e1d9c0576f8a62754e81/h5py-3.15.1-cp313-cp313-win_amd64.whl", hash = "sha256:dea78b092fd80a083563ed79a3171258d4a4d307492e7cf8b2313d464c82ba52", size = 2864363, upload-time = "2025-10-16T10:34:58.099Z" }, + { url = "https://files.pythonhosted.org/packages/5d/c9/35021cc9cd2b2915a7da3026e3d77a05bed1144a414ff840953b33937fb9/h5py-3.15.1-cp313-cp313-win_arm64.whl", hash = "sha256:c256254a8a81e2bddc0d376e23e2a6d2dc8a1e8a2261835ed8c1281a0744cd97", size = 2449570, upload-time = "2025-10-16T10:35:00.473Z" }, + { url = "https://files.pythonhosted.org/packages/a0/2c/926eba1514e4d2e47d0e9eb16c784e717d8b066398ccfca9b283917b1bfb/h5py-3.15.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:5f4fb0567eb8517c3ecd6b3c02c4f4e9da220c8932604960fd04e24ee1254763", size = 3380368, upload-time = "2025-10-16T10:35:03.117Z" }, + { url = "https://files.pythonhosted.org/packages/65/4b/d715ed454d3baa5f6ae1d30b7eca4c7a1c1084f6a2edead9e801a1541d62/h5py-3.15.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:954e480433e82d3872503104f9b285d369048c3a788b2b1a00e53d1c47c98dd2", size = 2833793, upload-time = "2025-10-16T10:35:05.623Z" }, + { url = "https://files.pythonhosted.org/packages/ef/d4/ef386c28e4579314610a8bffebbee3b69295b0237bc967340b7c653c6c10/h5py-3.15.1-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fd125c131889ebbef0849f4a0e29cf363b48aba42f228d08b4079913b576bb3a", size = 4903199, upload-time = "2025-10-16T10:35:08.972Z" }, + { url = "https://files.pythonhosted.org/packages/33/5d/65c619e195e0b5e54ea5a95c1bb600c8ff8715e0d09676e4cce56d89f492/h5py-3.15.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:28a20e1a4082a479b3d7db2169f3a5034af010b90842e75ebbf2e9e49eb4183e", size = 5097224, upload-time = "2025-10-16T10:35:12.808Z" }, + { url = "https://files.pythonhosted.org/packages/30/30/5273218400bf2da01609e1292f562c94b461fcb73c7a9e27fdadd43abc0a/h5py-3.15.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:fa8df5267f545b4946df8ca0d93d23382191018e4cda2deda4c2cedf9a010e13", size = 4551207, upload-time = "2025-10-16T10:35:16.24Z" }, + { url = "https://files.pythonhosted.org/packages/d3/39/a7ef948ddf4d1c556b0b2b9559534777bccc318543b3f5a1efdf6b556c9c/h5py-3.15.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:99d374a21f7321a4c6ab327c4ab23bd925ad69821aeb53a1e75dd809d19f67fa", size = 5025426, upload-time = "2025-10-16T10:35:19.831Z" }, + { url = "https://files.pythonhosted.org/packages/b6/d8/7368679b8df6925b8415f9dcc9ab1dab01ddc384d2b2c24aac9191bd9ceb/h5py-3.15.1-cp314-cp314-win_amd64.whl", hash = "sha256:9c73d1d7cdb97d5b17ae385153472ce118bed607e43be11e9a9deefaa54e0734", size = 2865704, upload-time = "2025-10-16T10:35:22.658Z" }, + { url = "https://files.pythonhosted.org/packages/d3/b7/4a806f85d62c20157e62e58e03b27513dc9c55499768530acc4f4c5ce4be/h5py-3.15.1-cp314-cp314-win_arm64.whl", hash = "sha256:a6d8c5a05a76aca9a494b4c53ce8a9c29023b7f64f625c6ce1841e92a362ccdf", size = 2465544, upload-time = "2025-10-16T10:35:25.695Z" }, +] + +[[package]] +name = "hdf5plugin" +version = "6.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "h5py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a1/4f/9130151e3aa475b3e4e9a611bf608107fe5c72d277d74c4cf36f164b7c81/hdf5plugin-6.0.0.tar.gz", hash = "sha256:847ed9e96b451367a110f0ba64a3b260d38d64bbf3f25751858d3b56e094cfe0", size = 66372085, upload-time = "2025-10-08T18:16:28.423Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9c/13/15017f6210bfea843316d62f0f121e364e17bb129444ed803a256a213036/hdf5plugin-6.0.0-py3-none-macosx_10_13_universal2.whl", hash = "sha256:a59fbd5d4290a8a5334d82ccb4c6b9bfc7aaf586de7fedb88762e8601bc05fd4", size = 13339413, upload-time = "2025-10-08T18:16:10.656Z" }, + { url = "https://files.pythonhosted.org/packages/40/bf/d1f3765fb879820d7331e30e860b684f5b78d3ec17324e8f54130cbe560b/hdf5plugin-6.0.0-py3-none-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d301f4b9295872bacf277c70628d4c5e965ee47db762d8fde2d4849f201b9897", size = 42858563, upload-time = "2025-10-08T18:16:14.106Z" }, + { url = "https://files.pythonhosted.org/packages/0a/67/37d0b84fbbf26bf0d6a99a8f98bcd82bb6d437dc8cabee259fb3d7506ec7/hdf5plugin-6.0.0-py3-none-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:78b082ea355fe46bf5b396024de1fb662a1aaf9a5e11861ad61a5a2a6316d59d", size = 45126124, upload-time = "2025-10-08T18:16:17.992Z" }, + { url = "https://files.pythonhosted.org/packages/ed/2f/1046d464ad1db29a4f6c70ba4e19b39baa8a6542c719eaa4e765108f07f1/hdf5plugin-6.0.0-py3-none-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:79e0524d18ddc41c0cf2e1bb2e529d4e154c286f6a1bd85f3d44019d2a17574a", size = 44857273, upload-time = "2025-10-08T18:16:22.007Z" }, + { url = "https://files.pythonhosted.org/packages/61/b3/75478bdfee85533777de4204373f563aa7a1074355300743c3aedc33cac5/hdf5plugin-6.0.0-py3-none-win_amd64.whl", hash = "sha256:99866f90be1ceac5519e6e038669564be326c233618d59ba1f38c9dd8c32099e", size = 3379316, upload-time = "2025-10-08T18:16:25.007Z" }, +] + +[[package]] +name = "idna" +version = "3.11" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902", size = 194582, upload-time = "2025-10-12T14:55:20.501Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" }, +] + +[[package]] +name = "imageio" +version = "2.37.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "pillow" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a3/6f/606be632e37bf8d05b253e8626c2291d74c691ddc7bcdf7d6aaf33b32f6a/imageio-2.37.2.tar.gz", hash = "sha256:0212ef2727ac9caa5ca4b2c75ae89454312f440a756fcfc8ef1993e718f50f8a", size = 389600, upload-time = "2025-11-04T14:29:39.898Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fb/fe/301e0936b79bcab4cacc7548bf2853fc28dced0a578bab1f7ef53c9aa75b/imageio-2.37.2-py3-none-any.whl", hash = "sha256:ad9adfb20335d718c03de457358ed69f141021a333c40a53e57273d8a5bd0b9b", size = 317646, upload-time = "2025-11-04T14:29:37.948Z" }, +] + +[[package]] +name = "jmespath" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d3/59/322338183ecda247fb5d1763a6cbe46eff7222eaeebafd9fa65d4bf5cb11/jmespath-1.1.0.tar.gz", hash = "sha256:472c87d80f36026ae83c6ddd0f1d05d4e510134ed462851fd5f754c8c3cbb88d", size = 27377, upload-time = "2026-01-22T16:35:26.279Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/14/2f/967ba146e6d58cf6a652da73885f52fc68001525b4197effc174321d70b4/jmespath-1.1.0-py3-none-any.whl", hash = "sha256:a5663118de4908c91729bea0acadca56526eb2698e83de10cd116ae0f4e97c64", size = 20419, upload-time = "2026-01-22T16:35:24.919Z" }, +] + +[[package]] +name = "joblib" +version = "1.5.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/41/f2/d34e8b3a08a9cc79a50b2208a93dce981fe615b64d5a4d4abee421d898df/joblib-1.5.3.tar.gz", hash = "sha256:8561a3269e6801106863fd0d6d84bb737be9e7631e33aaed3fb9ce5953688da3", size = 331603, upload-time = "2025-12-15T08:41:46.427Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/91/984aca2ec129e2757d1e4e3c81c3fcda9d0f85b74670a094cc443d9ee949/joblib-1.5.3-py3-none-any.whl", hash = "sha256:5fc3c5039fc5ca8c0276333a188bbd59d6b7ab37fe6632daa76bc7f9ec18e713", size = 309071, upload-time = "2025-12-15T08:41:44.973Z" }, +] + +[[package]] +name = "kiwisolver" +version = "1.4.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5c/3c/85844f1b0feb11ee581ac23fe5fce65cd049a200c1446708cc1b7f922875/kiwisolver-1.4.9.tar.gz", hash = "sha256:c3b22c26c6fd6811b0ae8363b95ca8ce4ea3c202d3d0975b2914310ceb1bcc4d", size = 97564, upload-time = "2025-08-10T21:27:49.279Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6f/ab/c80b0d5a9d8a1a65f4f815f2afff9798b12c3b9f31f1d304dd233dd920e2/kiwisolver-1.4.9-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:eb14a5da6dc7642b0f3a18f13654847cd8b7a2550e2645a5bda677862b03ba16", size = 124167, upload-time = "2025-08-10T21:25:53.403Z" }, + { url = "https://files.pythonhosted.org/packages/a0/c0/27fe1a68a39cf62472a300e2879ffc13c0538546c359b86f149cc19f6ac3/kiwisolver-1.4.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:39a219e1c81ae3b103643d2aedb90f1ef22650deb266ff12a19e7773f3e5f089", size = 66579, upload-time = "2025-08-10T21:25:54.79Z" }, + { url = "https://files.pythonhosted.org/packages/31/a2/a12a503ac1fd4943c50f9822678e8015a790a13b5490354c68afb8489814/kiwisolver-1.4.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2405a7d98604b87f3fc28b1716783534b1b4b8510d8142adca34ee0bc3c87543", size = 65309, upload-time = "2025-08-10T21:25:55.76Z" }, + { url = "https://files.pythonhosted.org/packages/66/e1/e533435c0be77c3f64040d68d7a657771194a63c279f55573188161e81ca/kiwisolver-1.4.9-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:dc1ae486f9abcef254b5618dfb4113dd49f94c68e3e027d03cf0143f3f772b61", size = 1435596, upload-time = "2025-08-10T21:25:56.861Z" }, + { url = "https://files.pythonhosted.org/packages/67/1e/51b73c7347f9aabdc7215aa79e8b15299097dc2f8e67dee2b095faca9cb0/kiwisolver-1.4.9-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8a1f570ce4d62d718dce3f179ee78dac3b545ac16c0c04bb363b7607a949c0d1", size = 1246548, upload-time = "2025-08-10T21:25:58.246Z" }, + { url = "https://files.pythonhosted.org/packages/21/aa/72a1c5d1e430294f2d32adb9542719cfb441b5da368d09d268c7757af46c/kiwisolver-1.4.9-cp311-cp311-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:cb27e7b78d716c591e88e0a09a2139c6577865d7f2e152488c2cc6257f460872", size = 1263618, upload-time = "2025-08-10T21:25:59.857Z" }, + { url = "https://files.pythonhosted.org/packages/a3/af/db1509a9e79dbf4c260ce0cfa3903ea8945f6240e9e59d1e4deb731b1a40/kiwisolver-1.4.9-cp311-cp311-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:15163165efc2f627eb9687ea5f3a28137217d217ac4024893d753f46bce9de26", size = 1317437, upload-time = "2025-08-10T21:26:01.105Z" }, + { url = "https://files.pythonhosted.org/packages/e0/f2/3ea5ee5d52abacdd12013a94130436e19969fa183faa1e7c7fbc89e9a42f/kiwisolver-1.4.9-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bdee92c56a71d2b24c33a7d4c2856bd6419d017e08caa7802d2963870e315028", size = 2195742, upload-time = "2025-08-10T21:26:02.675Z" }, + { url = "https://files.pythonhosted.org/packages/6f/9b/1efdd3013c2d9a2566aa6a337e9923a00590c516add9a1e89a768a3eb2fc/kiwisolver-1.4.9-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:412f287c55a6f54b0650bd9b6dce5aceddb95864a1a90c87af16979d37c89771", size = 2290810, upload-time = "2025-08-10T21:26:04.009Z" }, + { url = "https://files.pythonhosted.org/packages/fb/e5/cfdc36109ae4e67361f9bc5b41323648cb24a01b9ade18784657e022e65f/kiwisolver-1.4.9-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2c93f00dcba2eea70af2be5f11a830a742fe6b579a1d4e00f47760ef13be247a", size = 2461579, upload-time = "2025-08-10T21:26:05.317Z" }, + { url = "https://files.pythonhosted.org/packages/62/86/b589e5e86c7610842213994cdea5add00960076bef4ae290c5fa68589cac/kiwisolver-1.4.9-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f117e1a089d9411663a3207ba874f31be9ac8eaa5b533787024dc07aeb74f464", size = 2268071, upload-time = "2025-08-10T21:26:06.686Z" }, + { url = "https://files.pythonhosted.org/packages/3b/c6/f8df8509fd1eee6c622febe54384a96cfaf4d43bf2ccec7a0cc17e4715c9/kiwisolver-1.4.9-cp311-cp311-win_amd64.whl", hash = "sha256:be6a04e6c79819c9a8c2373317d19a96048e5a3f90bec587787e86a1153883c2", size = 73840, upload-time = "2025-08-10T21:26:07.94Z" }, + { url = "https://files.pythonhosted.org/packages/e2/2d/16e0581daafd147bc11ac53f032a2b45eabac897f42a338d0a13c1e5c436/kiwisolver-1.4.9-cp311-cp311-win_arm64.whl", hash = "sha256:0ae37737256ba2de764ddc12aed4956460277f00c4996d51a197e72f62f5eec7", size = 65159, upload-time = "2025-08-10T21:26:09.048Z" }, + { url = "https://files.pythonhosted.org/packages/86/c9/13573a747838aeb1c76e3267620daa054f4152444d1f3d1a2324b78255b5/kiwisolver-1.4.9-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ac5a486ac389dddcc5bef4f365b6ae3ffff2c433324fb38dd35e3fab7c957999", size = 123686, upload-time = "2025-08-10T21:26:10.034Z" }, + { url = "https://files.pythonhosted.org/packages/51/ea/2ecf727927f103ffd1739271ca19c424d0e65ea473fbaeea1c014aea93f6/kiwisolver-1.4.9-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f2ba92255faa7309d06fe44c3a4a97efe1c8d640c2a79a5ef728b685762a6fd2", size = 66460, upload-time = "2025-08-10T21:26:11.083Z" }, + { url = "https://files.pythonhosted.org/packages/5b/5a/51f5464373ce2aeb5194508298a508b6f21d3867f499556263c64c621914/kiwisolver-1.4.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a2899935e724dd1074cb568ce7ac0dce28b2cd6ab539c8e001a8578eb106d14", size = 64952, upload-time = "2025-08-10T21:26:12.058Z" }, + { url = "https://files.pythonhosted.org/packages/70/90/6d240beb0f24b74371762873e9b7f499f1e02166a2d9c5801f4dbf8fa12e/kiwisolver-1.4.9-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f6008a4919fdbc0b0097089f67a1eb55d950ed7e90ce2cc3e640abadd2757a04", size = 1474756, upload-time = "2025-08-10T21:26:13.096Z" }, + { url = "https://files.pythonhosted.org/packages/12/42/f36816eaf465220f683fb711efdd1bbf7a7005a2473d0e4ed421389bd26c/kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:67bb8b474b4181770f926f7b7d2f8c0248cbcb78b660fdd41a47054b28d2a752", size = 1276404, upload-time = "2025-08-10T21:26:14.457Z" }, + { url = "https://files.pythonhosted.org/packages/2e/64/bc2de94800adc830c476dce44e9b40fd0809cddeef1fde9fcf0f73da301f/kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2327a4a30d3ee07d2fbe2e7933e8a37c591663b96ce42a00bc67461a87d7df77", size = 1294410, upload-time = "2025-08-10T21:26:15.73Z" }, + { url = "https://files.pythonhosted.org/packages/5f/42/2dc82330a70aa8e55b6d395b11018045e58d0bb00834502bf11509f79091/kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7a08b491ec91b1d5053ac177afe5290adacf1f0f6307d771ccac5de30592d198", size = 1343631, upload-time = "2025-08-10T21:26:17.045Z" }, + { url = "https://files.pythonhosted.org/packages/22/fd/f4c67a6ed1aab149ec5a8a401c323cee7a1cbe364381bb6c9c0d564e0e20/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d8fc5c867c22b828001b6a38d2eaeb88160bf5783c6cb4a5e440efc981ce286d", size = 2224963, upload-time = "2025-08-10T21:26:18.737Z" }, + { url = "https://files.pythonhosted.org/packages/45/aa/76720bd4cb3713314677d9ec94dcc21ced3f1baf4830adde5bb9b2430a5f/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:3b3115b2581ea35bb6d1f24a4c90af37e5d9b49dcff267eeed14c3893c5b86ab", size = 2321295, upload-time = "2025-08-10T21:26:20.11Z" }, + { url = "https://files.pythonhosted.org/packages/80/19/d3ec0d9ab711242f56ae0dc2fc5d70e298bb4a1f9dfab44c027668c673a1/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:858e4c22fb075920b96a291928cb7dea5644e94c0ee4fcd5af7e865655e4ccf2", size = 2487987, upload-time = "2025-08-10T21:26:21.49Z" }, + { url = "https://files.pythonhosted.org/packages/39/e9/61e4813b2c97e86b6fdbd4dd824bf72d28bcd8d4849b8084a357bc0dd64d/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ed0fecd28cc62c54b262e3736f8bb2512d8dcfdc2bcf08be5f47f96bf405b145", size = 2291817, upload-time = "2025-08-10T21:26:22.812Z" }, + { url = "https://files.pythonhosted.org/packages/a0/41/85d82b0291db7504da3c2defe35c9a8a5c9803a730f297bd823d11d5fb77/kiwisolver-1.4.9-cp312-cp312-win_amd64.whl", hash = "sha256:f68208a520c3d86ea51acf688a3e3002615a7f0238002cccc17affecc86a8a54", size = 73895, upload-time = "2025-08-10T21:26:24.37Z" }, + { url = "https://files.pythonhosted.org/packages/e2/92/5f3068cf15ee5cb624a0c7596e67e2a0bb2adee33f71c379054a491d07da/kiwisolver-1.4.9-cp312-cp312-win_arm64.whl", hash = "sha256:2c1a4f57df73965f3f14df20b80ee29e6a7930a57d2d9e8491a25f676e197c60", size = 64992, upload-time = "2025-08-10T21:26:25.732Z" }, + { url = "https://files.pythonhosted.org/packages/31/c1/c2686cda909742ab66c7388e9a1a8521a59eb89f8bcfbee28fc980d07e24/kiwisolver-1.4.9-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a5d0432ccf1c7ab14f9949eec60c5d1f924f17c037e9f8b33352fa05799359b8", size = 123681, upload-time = "2025-08-10T21:26:26.725Z" }, + { url = "https://files.pythonhosted.org/packages/ca/f0/f44f50c9f5b1a1860261092e3bc91ecdc9acda848a8b8c6abfda4a24dd5c/kiwisolver-1.4.9-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efb3a45b35622bb6c16dbfab491a8f5a391fe0e9d45ef32f4df85658232ca0e2", size = 66464, upload-time = "2025-08-10T21:26:27.733Z" }, + { url = "https://files.pythonhosted.org/packages/2d/7a/9d90a151f558e29c3936b8a47ac770235f436f2120aca41a6d5f3d62ae8d/kiwisolver-1.4.9-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1a12cf6398e8a0a001a059747a1cbf24705e18fe413bc22de7b3d15c67cffe3f", size = 64961, upload-time = "2025-08-10T21:26:28.729Z" }, + { url = "https://files.pythonhosted.org/packages/e9/e9/f218a2cb3a9ffbe324ca29a9e399fa2d2866d7f348ec3a88df87fc248fc5/kiwisolver-1.4.9-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b67e6efbf68e077dd71d1a6b37e43e1a99d0bff1a3d51867d45ee8908b931098", size = 1474607, upload-time = "2025-08-10T21:26:29.798Z" }, + { url = "https://files.pythonhosted.org/packages/d9/28/aac26d4c882f14de59041636292bc838db8961373825df23b8eeb807e198/kiwisolver-1.4.9-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5656aa670507437af0207645273ccdfee4f14bacd7f7c67a4306d0dcaeaf6eed", size = 1276546, upload-time = "2025-08-10T21:26:31.401Z" }, + { url = "https://files.pythonhosted.org/packages/8b/ad/8bfc1c93d4cc565e5069162f610ba2f48ff39b7de4b5b8d93f69f30c4bed/kiwisolver-1.4.9-cp313-cp313-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:bfc08add558155345129c7803b3671cf195e6a56e7a12f3dde7c57d9b417f525", size = 1294482, upload-time = "2025-08-10T21:26:32.721Z" }, + { url = "https://files.pythonhosted.org/packages/da/f1/6aca55ff798901d8ce403206d00e033191f63d82dd708a186e0ed2067e9c/kiwisolver-1.4.9-cp313-cp313-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:40092754720b174e6ccf9e845d0d8c7d8e12c3d71e7fc35f55f3813e96376f78", size = 1343720, upload-time = "2025-08-10T21:26:34.032Z" }, + { url = "https://files.pythonhosted.org/packages/d1/91/eed031876c595c81d90d0f6fc681ece250e14bf6998c3d7c419466b523b7/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:497d05f29a1300d14e02e6441cf0f5ee81c1ff5a304b0d9fb77423974684e08b", size = 2224907, upload-time = "2025-08-10T21:26:35.824Z" }, + { url = "https://files.pythonhosted.org/packages/e9/ec/4d1925f2e49617b9cca9c34bfa11adefad49d00db038e692a559454dfb2e/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:bdd1a81a1860476eb41ac4bc1e07b3f07259e6d55bbf739b79c8aaedcf512799", size = 2321334, upload-time = "2025-08-10T21:26:37.534Z" }, + { url = "https://files.pythonhosted.org/packages/43/cb/450cd4499356f68802750c6ddc18647b8ea01ffa28f50d20598e0befe6e9/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:e6b93f13371d341afee3be9f7c5964e3fe61d5fa30f6a30eb49856935dfe4fc3", size = 2488313, upload-time = "2025-08-10T21:26:39.191Z" }, + { url = "https://files.pythonhosted.org/packages/71/67/fc76242bd99f885651128a5d4fa6083e5524694b7c88b489b1b55fdc491d/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d75aa530ccfaa593da12834b86a0724f58bff12706659baa9227c2ccaa06264c", size = 2291970, upload-time = "2025-08-10T21:26:40.828Z" }, + { url = "https://files.pythonhosted.org/packages/75/bd/f1a5d894000941739f2ae1b65a32892349423ad49c2e6d0771d0bad3fae4/kiwisolver-1.4.9-cp313-cp313-win_amd64.whl", hash = "sha256:dd0a578400839256df88c16abddf9ba14813ec5f21362e1fe65022e00c883d4d", size = 73894, upload-time = "2025-08-10T21:26:42.33Z" }, + { url = "https://files.pythonhosted.org/packages/95/38/dce480814d25b99a391abbddadc78f7c117c6da34be68ca8b02d5848b424/kiwisolver-1.4.9-cp313-cp313-win_arm64.whl", hash = "sha256:d4188e73af84ca82468f09cadc5ac4db578109e52acb4518d8154698d3a87ca2", size = 64995, upload-time = "2025-08-10T21:26:43.889Z" }, + { url = "https://files.pythonhosted.org/packages/e2/37/7d218ce5d92dadc5ebdd9070d903e0c7cf7edfe03f179433ac4d13ce659c/kiwisolver-1.4.9-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:5a0f2724dfd4e3b3ac5a82436a8e6fd16baa7d507117e4279b660fe8ca38a3a1", size = 126510, upload-time = "2025-08-10T21:26:44.915Z" }, + { url = "https://files.pythonhosted.org/packages/23/b0/e85a2b48233daef4b648fb657ebbb6f8367696a2d9548a00b4ee0eb67803/kiwisolver-1.4.9-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:1b11d6a633e4ed84fc0ddafd4ebfd8ea49b3f25082c04ad12b8315c11d504dc1", size = 67903, upload-time = "2025-08-10T21:26:45.934Z" }, + { url = "https://files.pythonhosted.org/packages/44/98/f2425bc0113ad7de24da6bb4dae1343476e95e1d738be7c04d31a5d037fd/kiwisolver-1.4.9-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61874cdb0a36016354853593cffc38e56fc9ca5aa97d2c05d3dcf6922cd55a11", size = 66402, upload-time = "2025-08-10T21:26:47.101Z" }, + { url = "https://files.pythonhosted.org/packages/98/d8/594657886df9f34c4177cc353cc28ca7e6e5eb562d37ccc233bff43bbe2a/kiwisolver-1.4.9-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:60c439763a969a6af93b4881db0eed8fadf93ee98e18cbc35bc8da868d0c4f0c", size = 1582135, upload-time = "2025-08-10T21:26:48.665Z" }, + { url = "https://files.pythonhosted.org/packages/5c/c6/38a115b7170f8b306fc929e166340c24958347308ea3012c2b44e7e295db/kiwisolver-1.4.9-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:92a2f997387a1b79a75e7803aa7ded2cfbe2823852ccf1ba3bcf613b62ae3197", size = 1389409, upload-time = "2025-08-10T21:26:50.335Z" }, + { url = "https://files.pythonhosted.org/packages/bf/3b/e04883dace81f24a568bcee6eb3001da4ba05114afa622ec9b6fafdc1f5e/kiwisolver-1.4.9-cp313-cp313t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a31d512c812daea6d8b3be3b2bfcbeb091dbb09177706569bcfc6240dcf8b41c", size = 1401763, upload-time = "2025-08-10T21:26:51.867Z" }, + { url = "https://files.pythonhosted.org/packages/9f/80/20ace48e33408947af49d7d15c341eaee69e4e0304aab4b7660e234d6288/kiwisolver-1.4.9-cp313-cp313t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:52a15b0f35dad39862d376df10c5230155243a2c1a436e39eb55623ccbd68185", size = 1453643, upload-time = "2025-08-10T21:26:53.592Z" }, + { url = "https://files.pythonhosted.org/packages/64/31/6ce4380a4cd1f515bdda976a1e90e547ccd47b67a1546d63884463c92ca9/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a30fd6fdef1430fd9e1ba7b3398b5ee4e2887783917a687d86ba69985fb08748", size = 2330818, upload-time = "2025-08-10T21:26:55.051Z" }, + { url = "https://files.pythonhosted.org/packages/fa/e9/3f3fcba3bcc7432c795b82646306e822f3fd74df0ee81f0fa067a1f95668/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:cc9617b46837c6468197b5945e196ee9ca43057bb7d9d1ae688101e4e1dddf64", size = 2419963, upload-time = "2025-08-10T21:26:56.421Z" }, + { url = "https://files.pythonhosted.org/packages/99/43/7320c50e4133575c66e9f7dadead35ab22d7c012a3b09bb35647792b2a6d/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:0ab74e19f6a2b027ea4f845a78827969af45ce790e6cb3e1ebab71bdf9f215ff", size = 2594639, upload-time = "2025-08-10T21:26:57.882Z" }, + { url = "https://files.pythonhosted.org/packages/65/d6/17ae4a270d4a987ef8a385b906d2bdfc9fce502d6dc0d3aea865b47f548c/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dba5ee5d3981160c28d5490f0d1b7ed730c22470ff7f6cc26cfcfaacb9896a07", size = 2391741, upload-time = "2025-08-10T21:26:59.237Z" }, + { url = "https://files.pythonhosted.org/packages/2a/8f/8f6f491d595a9e5912971f3f863d81baddccc8a4d0c3749d6a0dd9ffc9df/kiwisolver-1.4.9-cp313-cp313t-win_arm64.whl", hash = "sha256:0749fd8f4218ad2e851e11cc4dc05c7cbc0cbc4267bdfdb31782e65aace4ee9c", size = 68646, upload-time = "2025-08-10T21:27:00.52Z" }, + { url = "https://files.pythonhosted.org/packages/6b/32/6cc0fbc9c54d06c2969faa9c1d29f5751a2e51809dd55c69055e62d9b426/kiwisolver-1.4.9-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:9928fe1eb816d11ae170885a74d074f57af3a0d65777ca47e9aeb854a1fba386", size = 123806, upload-time = "2025-08-10T21:27:01.537Z" }, + { url = "https://files.pythonhosted.org/packages/b2/dd/2bfb1d4a4823d92e8cbb420fe024b8d2167f72079b3bb941207c42570bdf/kiwisolver-1.4.9-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:d0005b053977e7b43388ddec89fa567f43d4f6d5c2c0affe57de5ebf290dc552", size = 66605, upload-time = "2025-08-10T21:27:03.335Z" }, + { url = "https://files.pythonhosted.org/packages/f7/69/00aafdb4e4509c2ca6064646cba9cd4b37933898f426756adb2cb92ebbed/kiwisolver-1.4.9-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:2635d352d67458b66fd0667c14cb1d4145e9560d503219034a18a87e971ce4f3", size = 64925, upload-time = "2025-08-10T21:27:04.339Z" }, + { url = "https://files.pythonhosted.org/packages/43/dc/51acc6791aa14e5cb6d8a2e28cefb0dc2886d8862795449d021334c0df20/kiwisolver-1.4.9-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:767c23ad1c58c9e827b649a9ab7809fd5fd9db266a9cf02b0e926ddc2c680d58", size = 1472414, upload-time = "2025-08-10T21:27:05.437Z" }, + { url = "https://files.pythonhosted.org/packages/3d/bb/93fa64a81db304ac8a246f834d5094fae4b13baf53c839d6bb6e81177129/kiwisolver-1.4.9-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:72d0eb9fba308b8311685c2268cf7d0a0639a6cd027d8128659f72bdd8a024b4", size = 1281272, upload-time = "2025-08-10T21:27:07.063Z" }, + { url = "https://files.pythonhosted.org/packages/70/e6/6df102916960fb8d05069d4bd92d6d9a8202d5a3e2444494e7cd50f65b7a/kiwisolver-1.4.9-cp314-cp314-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f68e4f3eeca8fb22cc3d731f9715a13b652795ef657a13df1ad0c7dc0e9731df", size = 1298578, upload-time = "2025-08-10T21:27:08.452Z" }, + { url = "https://files.pythonhosted.org/packages/7c/47/e142aaa612f5343736b087864dbaebc53ea8831453fb47e7521fa8658f30/kiwisolver-1.4.9-cp314-cp314-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d84cd4061ae292d8ac367b2c3fa3aad11cb8625a95d135fe93f286f914f3f5a6", size = 1345607, upload-time = "2025-08-10T21:27:10.125Z" }, + { url = "https://files.pythonhosted.org/packages/54/89/d641a746194a0f4d1a3670fb900d0dbaa786fb98341056814bc3f058fa52/kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:a60ea74330b91bd22a29638940d115df9dc00af5035a9a2a6ad9399ffb4ceca5", size = 2230150, upload-time = "2025-08-10T21:27:11.484Z" }, + { url = "https://files.pythonhosted.org/packages/aa/6b/5ee1207198febdf16ac11f78c5ae40861b809cbe0e6d2a8d5b0b3044b199/kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:ce6a3a4e106cf35c2d9c4fa17c05ce0b180db622736845d4315519397a77beaf", size = 2325979, upload-time = "2025-08-10T21:27:12.917Z" }, + { url = "https://files.pythonhosted.org/packages/fc/ff/b269eefd90f4ae14dcc74973d5a0f6d28d3b9bb1afd8c0340513afe6b39a/kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:77937e5e2a38a7b48eef0585114fe7930346993a88060d0bf886086d2aa49ef5", size = 2491456, upload-time = "2025-08-10T21:27:14.353Z" }, + { url = "https://files.pythonhosted.org/packages/fc/d4/10303190bd4d30de547534601e259a4fbf014eed94aae3e5521129215086/kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:24c175051354f4a28c5d6a31c93906dc653e2bf234e8a4bbfb964892078898ce", size = 2294621, upload-time = "2025-08-10T21:27:15.808Z" }, + { url = "https://files.pythonhosted.org/packages/28/e0/a9a90416fce5c0be25742729c2ea52105d62eda6c4be4d803c2a7be1fa50/kiwisolver-1.4.9-cp314-cp314-win_amd64.whl", hash = "sha256:0763515d4df10edf6d06a3c19734e2566368980d21ebec439f33f9eb936c07b7", size = 75417, upload-time = "2025-08-10T21:27:17.436Z" }, + { url = "https://files.pythonhosted.org/packages/1f/10/6949958215b7a9a264299a7db195564e87900f709db9245e4ebdd3c70779/kiwisolver-1.4.9-cp314-cp314-win_arm64.whl", hash = "sha256:0e4e2bf29574a6a7b7f6cb5fa69293b9f96c928949ac4a53ba3f525dffb87f9c", size = 66582, upload-time = "2025-08-10T21:27:18.436Z" }, + { url = "https://files.pythonhosted.org/packages/ec/79/60e53067903d3bc5469b369fe0dfc6b3482e2133e85dae9daa9527535991/kiwisolver-1.4.9-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:d976bbb382b202f71c67f77b0ac11244021cfa3f7dfd9e562eefcea2df711548", size = 126514, upload-time = "2025-08-10T21:27:19.465Z" }, + { url = "https://files.pythonhosted.org/packages/25/d1/4843d3e8d46b072c12a38c97c57fab4608d36e13fe47d47ee96b4d61ba6f/kiwisolver-1.4.9-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:2489e4e5d7ef9a1c300a5e0196e43d9c739f066ef23270607d45aba368b91f2d", size = 67905, upload-time = "2025-08-10T21:27:20.51Z" }, + { url = "https://files.pythonhosted.org/packages/8c/ae/29ffcbd239aea8b93108de1278271ae764dfc0d803a5693914975f200596/kiwisolver-1.4.9-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:e2ea9f7ab7fbf18fffb1b5434ce7c69a07582f7acc7717720f1d69f3e806f90c", size = 66399, upload-time = "2025-08-10T21:27:21.496Z" }, + { url = "https://files.pythonhosted.org/packages/a1/ae/d7ba902aa604152c2ceba5d352d7b62106bedbccc8e95c3934d94472bfa3/kiwisolver-1.4.9-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b34e51affded8faee0dfdb705416153819d8ea9250bbbf7ea1b249bdeb5f1122", size = 1582197, upload-time = "2025-08-10T21:27:22.604Z" }, + { url = "https://files.pythonhosted.org/packages/f2/41/27c70d427eddb8bc7e4f16420a20fefc6f480312122a59a959fdfe0445ad/kiwisolver-1.4.9-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d8aacd3d4b33b772542b2e01beb50187536967b514b00003bdda7589722d2a64", size = 1390125, upload-time = "2025-08-10T21:27:24.036Z" }, + { url = "https://files.pythonhosted.org/packages/41/42/b3799a12bafc76d962ad69083f8b43b12bf4fe78b097b12e105d75c9b8f1/kiwisolver-1.4.9-cp314-cp314t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7cf974dd4e35fa315563ac99d6287a1024e4dc2077b8a7d7cd3d2fb65d283134", size = 1402612, upload-time = "2025-08-10T21:27:25.773Z" }, + { url = "https://files.pythonhosted.org/packages/d2/b5/a210ea073ea1cfaca1bb5c55a62307d8252f531beb364e18aa1e0888b5a0/kiwisolver-1.4.9-cp314-cp314t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:85bd218b5ecfbee8c8a82e121802dcb519a86044c9c3b2e4aef02fa05c6da370", size = 1453990, upload-time = "2025-08-10T21:27:27.089Z" }, + { url = "https://files.pythonhosted.org/packages/5f/ce/a829eb8c033e977d7ea03ed32fb3c1781b4fa0433fbadfff29e39c676f32/kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:0856e241c2d3df4efef7c04a1e46b1936b6120c9bcf36dd216e3acd84bc4fb21", size = 2331601, upload-time = "2025-08-10T21:27:29.343Z" }, + { url = "https://files.pythonhosted.org/packages/e0/4b/b5e97eb142eb9cd0072dacfcdcd31b1c66dc7352b0f7c7255d339c0edf00/kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:9af39d6551f97d31a4deebeac6f45b156f9755ddc59c07b402c148f5dbb6482a", size = 2422041, upload-time = "2025-08-10T21:27:30.754Z" }, + { url = "https://files.pythonhosted.org/packages/40/be/8eb4cd53e1b85ba4edc3a9321666f12b83113a178845593307a3e7891f44/kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:bb4ae2b57fc1d8cbd1cf7b1d9913803681ffa903e7488012be5b76dedf49297f", size = 2594897, upload-time = "2025-08-10T21:27:32.803Z" }, + { url = "https://files.pythonhosted.org/packages/99/dd/841e9a66c4715477ea0abc78da039832fbb09dac5c35c58dc4c41a407b8a/kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:aedff62918805fb62d43a4aa2ecd4482c380dc76cd31bd7c8878588a61bd0369", size = 2391835, upload-time = "2025-08-10T21:27:34.23Z" }, + { url = "https://files.pythonhosted.org/packages/0c/28/4b2e5c47a0da96896fdfdb006340ade064afa1e63675d01ea5ac222b6d52/kiwisolver-1.4.9-cp314-cp314t-win_amd64.whl", hash = "sha256:1fa333e8b2ce4d9660f2cda9c0e1b6bafcfb2457a9d259faa82289e73ec24891", size = 79988, upload-time = "2025-08-10T21:27:35.587Z" }, + { url = "https://files.pythonhosted.org/packages/80/be/3578e8afd18c88cdf9cb4cffde75a96d2be38c5a903f1ed0ceec061bd09e/kiwisolver-1.4.9-cp314-cp314t-win_arm64.whl", hash = "sha256:4a48a2ce79d65d363597ef7b567ce3d14d68783d2b2263d98db3d9477805ba32", size = 70260, upload-time = "2025-08-10T21:27:36.606Z" }, + { url = "https://files.pythonhosted.org/packages/a3/0f/36d89194b5a32c054ce93e586d4049b6c2c22887b0eb229c61c68afd3078/kiwisolver-1.4.9-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:720e05574713db64c356e86732c0f3c5252818d05f9df320f0ad8380641acea5", size = 60104, upload-time = "2025-08-10T21:27:43.287Z" }, + { url = "https://files.pythonhosted.org/packages/52/ba/4ed75f59e4658fd21fe7dde1fee0ac397c678ec3befba3fe6482d987af87/kiwisolver-1.4.9-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:17680d737d5335b552994a2008fab4c851bcd7de33094a82067ef3a576ff02fa", size = 58592, upload-time = "2025-08-10T21:27:44.314Z" }, + { url = "https://files.pythonhosted.org/packages/33/01/a8ea7c5ea32a9b45ceeaee051a04c8ed4320f5add3c51bfa20879b765b70/kiwisolver-1.4.9-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:85b5352f94e490c028926ea567fc569c52ec79ce131dadb968d3853e809518c2", size = 80281, upload-time = "2025-08-10T21:27:45.369Z" }, + { url = "https://files.pythonhosted.org/packages/da/e3/dbd2ecdce306f1d07a1aaf324817ee993aab7aee9db47ceac757deabafbe/kiwisolver-1.4.9-pp311-pypy311_pp73-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:464415881e4801295659462c49461a24fb107c140de781d55518c4b80cb6790f", size = 78009, upload-time = "2025-08-10T21:27:46.376Z" }, + { url = "https://files.pythonhosted.org/packages/da/e9/0d4add7873a73e462aeb45c036a2dead2562b825aa46ba326727b3f31016/kiwisolver-1.4.9-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:fb940820c63a9590d31d88b815e7a3aa5915cad3ce735ab45f0c730b39547de1", size = 73929, upload-time = "2025-08-10T21:27:48.236Z" }, +] + +[[package]] +name = "larixite" +version = "2025.5.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "emmet-core" }, + { name = "mp-api" }, + { name = "pymatgen" }, + { name = "sqlalchemy" }, + { name = "xraydb" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/54/61/772fe247fb162a5f27425e9850961073c7d0c65070961212c55e67e56f9c/larixite-2025.5.1.tar.gz", hash = "sha256:69c159ed24568a65dc3968766721a36cdbc261ea124e367d67f1fb785b4cabf5", size = 3829489, upload-time = "2025-09-05T03:24:19.856Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4f/71/c38a1e0aa04bbd35a53799b5bf0accb95a2e896f704c6d4d8d45b29c2c0a/larixite-2025.5.1-py3-none-any.whl", hash = "sha256:29fcd7179e16624f4a6f0fe5459a4b094bb00ca012e974ab1eb1806c1c877173", size = 3842313, upload-time = "2025-09-05T03:24:18.1Z" }, +] + +[[package]] +name = "latexcodec" +version = "3.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/27/dd/4270b2c5e2ee49316c3859e62293bd2ea8e382339d63ab7bbe9f39c0ec3b/latexcodec-3.0.1.tar.gz", hash = "sha256:e78a6911cd72f9dec35031c6ec23584de6842bfbc4610a9678868d14cdfb0357", size = 31222, upload-time = "2025-06-17T18:47:34.051Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b5/40/23569737873cc9637fd488606347e9dd92b9fa37ba4fcda1f98ee5219a97/latexcodec-3.0.1-py3-none-any.whl", hash = "sha256:a9eb8200bff693f0437a69581f7579eb6bca25c4193515c09900ce76451e452e", size = 18532, upload-time = "2025-06-17T18:47:30.726Z" }, +] + +[[package]] +name = "lazy-loader" +version = "0.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6f/6b/c875b30a1ba490860c93da4cabf479e03f584eba06fe5963f6f6644653d8/lazy_loader-0.4.tar.gz", hash = "sha256:47c75182589b91a4e1a85a136c074285a5ad4d9f39c63e0d7fb76391c4574cd1", size = 15431, upload-time = "2024-04-05T13:03:12.261Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/83/60/d497a310bde3f01cb805196ac61b7ad6dc5dcf8dce66634dc34364b20b4f/lazy_loader-0.4-py3-none-any.whl", hash = "sha256:342aa8e14d543a154047afb4ba8ef17f5563baad3fc610d7b15b213b0f119efc", size = 12097, upload-time = "2024-04-05T13:03:10.514Z" }, +] + +[[package]] +name = "lmfit" +version = "1.3.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asteval" }, + { name = "dill" }, + { name = "numpy" }, + { name = "scipy" }, + { name = "uncertainties" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5a/e5/a35942aed2de95e228728c34609b51fe3ec9182398eac50d288eef313aa2/lmfit-1.3.4.tar.gz", hash = "sha256:3c22c28c43f717f6c5b4a3bd81e893a2149739c26a592c046f2e33c23cfbe497", size = 630720, upload-time = "2025-07-19T20:09:01.876Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/7e/7b91c89a4cf0f543a83be978657afb20c86af6d725253e319589dcc4ce52/lmfit-1.3.4-py3-none-any.whl", hash = "sha256:afce1593b42324d37ae2908249b0c55445e2f4c1a0474ff706a8e2f7b5d949fa", size = 97662, upload-time = "2025-07-19T20:09:00.32Z" }, +] + +[[package]] +name = "lxml" +version = "6.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/aa/88/262177de60548e5a2bfc46ad28232c9e9cbde697bd94132aeb80364675cb/lxml-6.0.2.tar.gz", hash = "sha256:cd79f3367bd74b317dda655dc8fcfa304d9eb6e4fb06b7168c5cf27f96e0cd62", size = 4073426, upload-time = "2025-09-22T04:04:59.287Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/d5/becbe1e2569b474a23f0c672ead8a29ac50b2dc1d5b9de184831bda8d14c/lxml-6.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:13e35cbc684aadf05d8711a5d1b5857c92e5e580efa9a0d2be197199c8def607", size = 8634365, upload-time = "2025-09-22T04:00:45.672Z" }, + { url = "https://files.pythonhosted.org/packages/28/66/1ced58f12e804644426b85d0bb8a4478ca77bc1761455da310505f1a3526/lxml-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3b1675e096e17c6fe9c0e8c81434f5736c0739ff9ac6123c87c2d452f48fc938", size = 4650793, upload-time = "2025-09-22T04:00:47.783Z" }, + { url = "https://files.pythonhosted.org/packages/11/84/549098ffea39dfd167e3f174b4ce983d0eed61f9d8d25b7bf2a57c3247fc/lxml-6.0.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8ac6e5811ae2870953390452e3476694196f98d447573234592d30488147404d", size = 4944362, upload-time = "2025-09-22T04:00:49.845Z" }, + { url = "https://files.pythonhosted.org/packages/ac/bd/f207f16abf9749d2037453d56b643a7471d8fde855a231a12d1e095c4f01/lxml-6.0.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5aa0fc67ae19d7a64c3fe725dc9a1bb11f80e01f78289d05c6f62545affec438", size = 5083152, upload-time = "2025-09-22T04:00:51.709Z" }, + { url = "https://files.pythonhosted.org/packages/15/ae/bd813e87d8941d52ad5b65071b1affb48da01c4ed3c9c99e40abb266fbff/lxml-6.0.2-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:de496365750cc472b4e7902a485d3f152ecf57bd3ba03ddd5578ed8ceb4c5964", size = 5023539, upload-time = "2025-09-22T04:00:53.593Z" }, + { url = "https://files.pythonhosted.org/packages/02/cd/9bfef16bd1d874fbe0cb51afb00329540f30a3283beb9f0780adbb7eec03/lxml-6.0.2-cp311-cp311-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:200069a593c5e40b8f6fc0d84d86d970ba43138c3e68619ffa234bc9bb806a4d", size = 5344853, upload-time = "2025-09-22T04:00:55.524Z" }, + { url = "https://files.pythonhosted.org/packages/b8/89/ea8f91594bc5dbb879734d35a6f2b0ad50605d7fb419de2b63d4211765cc/lxml-6.0.2-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7d2de809c2ee3b888b59f995625385f74629707c9355e0ff856445cdcae682b7", size = 5225133, upload-time = "2025-09-22T04:00:57.269Z" }, + { url = "https://files.pythonhosted.org/packages/b9/37/9c735274f5dbec726b2db99b98a43950395ba3d4a1043083dba2ad814170/lxml-6.0.2-cp311-cp311-manylinux_2_31_armv7l.whl", hash = "sha256:b2c3da8d93cf5db60e8858c17684c47d01fee6405e554fb55018dd85fc23b178", size = 4677944, upload-time = "2025-09-22T04:00:59.052Z" }, + { url = "https://files.pythonhosted.org/packages/20/28/7dfe1ba3475d8bfca3878365075abe002e05d40dfaaeb7ec01b4c587d533/lxml-6.0.2-cp311-cp311-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:442de7530296ef5e188373a1ea5789a46ce90c4847e597856570439621d9c553", size = 5284535, upload-time = "2025-09-22T04:01:01.335Z" }, + { url = "https://files.pythonhosted.org/packages/e7/cf/5f14bc0de763498fc29510e3532bf2b4b3a1c1d5d0dff2e900c16ba021ef/lxml-6.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2593c77efde7bfea7f6389f1ab249b15ed4aa5bc5cb5131faa3b843c429fbedb", size = 5067343, upload-time = "2025-09-22T04:01:03.13Z" }, + { url = "https://files.pythonhosted.org/packages/1c/b0/bb8275ab5472f32b28cfbbcc6db7c9d092482d3439ca279d8d6fa02f7025/lxml-6.0.2-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:3e3cb08855967a20f553ff32d147e14329b3ae70ced6edc2f282b94afbc74b2a", size = 4725419, upload-time = "2025-09-22T04:01:05.013Z" }, + { url = "https://files.pythonhosted.org/packages/25/4c/7c222753bc72edca3b99dbadba1b064209bc8ed4ad448af990e60dcce462/lxml-6.0.2-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:2ed6c667fcbb8c19c6791bbf40b7268ef8ddf5a96940ba9404b9f9a304832f6c", size = 5275008, upload-time = "2025-09-22T04:01:07.327Z" }, + { url = "https://files.pythonhosted.org/packages/6c/8c/478a0dc6b6ed661451379447cdbec77c05741a75736d97e5b2b729687828/lxml-6.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b8f18914faec94132e5b91e69d76a5c1d7b0c73e2489ea8929c4aaa10b76bbf7", size = 5248906, upload-time = "2025-09-22T04:01:09.452Z" }, + { url = "https://files.pythonhosted.org/packages/2d/d9/5be3a6ab2784cdf9accb0703b65e1b64fcdd9311c9f007630c7db0cfcce1/lxml-6.0.2-cp311-cp311-win32.whl", hash = "sha256:6605c604e6daa9e0d7f0a2137bdc47a2e93b59c60a65466353e37f8272f47c46", size = 3610357, upload-time = "2025-09-22T04:01:11.102Z" }, + { url = "https://files.pythonhosted.org/packages/e2/7d/ca6fb13349b473d5732fb0ee3eec8f6c80fc0688e76b7d79c1008481bf1f/lxml-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e5867f2651016a3afd8dd2c8238baa66f1e2802f44bc17e236f547ace6647078", size = 4036583, upload-time = "2025-09-22T04:01:12.766Z" }, + { url = "https://files.pythonhosted.org/packages/ab/a2/51363b5ecd3eab46563645f3a2c3836a2fc67d01a1b87c5017040f39f567/lxml-6.0.2-cp311-cp311-win_arm64.whl", hash = "sha256:4197fb2534ee05fd3e7afaab5d8bfd6c2e186f65ea7f9cd6a82809c887bd1285", size = 3680591, upload-time = "2025-09-22T04:01:14.874Z" }, + { url = "https://files.pythonhosted.org/packages/f3/c8/8ff2bc6b920c84355146cd1ab7d181bc543b89241cfb1ebee824a7c81457/lxml-6.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a59f5448ba2ceccd06995c95ea59a7674a10de0810f2ce90c9006f3cbc044456", size = 8661887, upload-time = "2025-09-22T04:01:17.265Z" }, + { url = "https://files.pythonhosted.org/packages/37/6f/9aae1008083bb501ef63284220ce81638332f9ccbfa53765b2b7502203cf/lxml-6.0.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e8113639f3296706fbac34a30813929e29247718e88173ad849f57ca59754924", size = 4667818, upload-time = "2025-09-22T04:01:19.688Z" }, + { url = "https://files.pythonhosted.org/packages/f1/ca/31fb37f99f37f1536c133476674c10b577e409c0a624384147653e38baf2/lxml-6.0.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a8bef9b9825fa8bc816a6e641bb67219489229ebc648be422af695f6e7a4fa7f", size = 4950807, upload-time = "2025-09-22T04:01:21.487Z" }, + { url = "https://files.pythonhosted.org/packages/da/87/f6cb9442e4bada8aab5ae7e1046264f62fdbeaa6e3f6211b93f4c0dd97f1/lxml-6.0.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:65ea18d710fd14e0186c2f973dc60bb52039a275f82d3c44a0e42b43440ea534", size = 5109179, upload-time = "2025-09-22T04:01:23.32Z" }, + { url = "https://files.pythonhosted.org/packages/c8/20/a7760713e65888db79bbae4f6146a6ae5c04e4a204a3c48896c408cd6ed2/lxml-6.0.2-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c371aa98126a0d4c739ca93ceffa0fd7a5d732e3ac66a46e74339acd4d334564", size = 5023044, upload-time = "2025-09-22T04:01:25.118Z" }, + { url = "https://files.pythonhosted.org/packages/a2/b0/7e64e0460fcb36471899f75831509098f3fd7cd02a3833ac517433cb4f8f/lxml-6.0.2-cp312-cp312-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:700efd30c0fa1a3581d80a748157397559396090a51d306ea59a70020223d16f", size = 5359685, upload-time = "2025-09-22T04:01:27.398Z" }, + { url = "https://files.pythonhosted.org/packages/b9/e1/e5df362e9ca4e2f48ed6411bd4b3a0ae737cc842e96877f5bf9428055ab4/lxml-6.0.2-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c33e66d44fe60e72397b487ee92e01da0d09ba2d66df8eae42d77b6d06e5eba0", size = 5654127, upload-time = "2025-09-22T04:01:29.629Z" }, + { url = "https://files.pythonhosted.org/packages/c6/d1/232b3309a02d60f11e71857778bfcd4acbdb86c07db8260caf7d008b08f8/lxml-6.0.2-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:90a345bbeaf9d0587a3aaffb7006aa39ccb6ff0e96a57286c0cb2fd1520ea192", size = 5253958, upload-time = "2025-09-22T04:01:31.535Z" }, + { url = "https://files.pythonhosted.org/packages/35/35/d955a070994725c4f7d80583a96cab9c107c57a125b20bb5f708fe941011/lxml-6.0.2-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:064fdadaf7a21af3ed1dcaa106b854077fbeada827c18f72aec9346847cd65d0", size = 4711541, upload-time = "2025-09-22T04:01:33.801Z" }, + { url = "https://files.pythonhosted.org/packages/1e/be/667d17363b38a78c4bd63cfd4b4632029fd68d2c2dc81f25ce9eb5224dd5/lxml-6.0.2-cp312-cp312-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fbc74f42c3525ac4ffa4b89cbdd00057b6196bcefe8bce794abd42d33a018092", size = 5267426, upload-time = "2025-09-22T04:01:35.639Z" }, + { url = "https://files.pythonhosted.org/packages/ea/47/62c70aa4a1c26569bc958c9ca86af2bb4e1f614e8c04fb2989833874f7ae/lxml-6.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6ddff43f702905a4e32bc24f3f2e2edfe0f8fde3277d481bffb709a4cced7a1f", size = 5064917, upload-time = "2025-09-22T04:01:37.448Z" }, + { url = "https://files.pythonhosted.org/packages/bd/55/6ceddaca353ebd0f1908ef712c597f8570cc9c58130dbb89903198e441fd/lxml-6.0.2-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:6da5185951d72e6f5352166e3da7b0dc27aa70bd1090b0eb3f7f7212b53f1bb8", size = 4788795, upload-time = "2025-09-22T04:01:39.165Z" }, + { url = "https://files.pythonhosted.org/packages/cf/e8/fd63e15da5e3fd4c2146f8bbb3c14e94ab850589beab88e547b2dbce22e1/lxml-6.0.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:57a86e1ebb4020a38d295c04fc79603c7899e0df71588043eb218722dabc087f", size = 5676759, upload-time = "2025-09-22T04:01:41.506Z" }, + { url = "https://files.pythonhosted.org/packages/76/47/b3ec58dc5c374697f5ba37412cd2728f427d056315d124dd4b61da381877/lxml-6.0.2-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:2047d8234fe735ab77802ce5f2297e410ff40f5238aec569ad7c8e163d7b19a6", size = 5255666, upload-time = "2025-09-22T04:01:43.363Z" }, + { url = "https://files.pythonhosted.org/packages/19/93/03ba725df4c3d72afd9596eef4a37a837ce8e4806010569bedfcd2cb68fd/lxml-6.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6f91fd2b2ea15a6800c8e24418c0775a1694eefc011392da73bc6cef2623b322", size = 5277989, upload-time = "2025-09-22T04:01:45.215Z" }, + { url = "https://files.pythonhosted.org/packages/c6/80/c06de80bfce881d0ad738576f243911fccf992687ae09fd80b734712b39c/lxml-6.0.2-cp312-cp312-win32.whl", hash = "sha256:3ae2ce7d6fedfb3414a2b6c5e20b249c4c607f72cb8d2bb7cc9c6ec7c6f4e849", size = 3611456, upload-time = "2025-09-22T04:01:48.243Z" }, + { url = "https://files.pythonhosted.org/packages/f7/d7/0cdfb6c3e30893463fb3d1e52bc5f5f99684a03c29a0b6b605cfae879cd5/lxml-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:72c87e5ee4e58a8354fb9c7c84cbf95a1c8236c127a5d1b7683f04bed8361e1f", size = 4011793, upload-time = "2025-09-22T04:01:50.042Z" }, + { url = "https://files.pythonhosted.org/packages/ea/7b/93c73c67db235931527301ed3785f849c78991e2e34f3fd9a6663ffda4c5/lxml-6.0.2-cp312-cp312-win_arm64.whl", hash = "sha256:61cb10eeb95570153e0c0e554f58df92ecf5109f75eacad4a95baa709e26c3d6", size = 3672836, upload-time = "2025-09-22T04:01:52.145Z" }, + { url = "https://files.pythonhosted.org/packages/53/fd/4e8f0540608977aea078bf6d79f128e0e2c2bba8af1acf775c30baa70460/lxml-6.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:9b33d21594afab46f37ae58dfadd06636f154923c4e8a4d754b0127554eb2e77", size = 8648494, upload-time = "2025-09-22T04:01:54.242Z" }, + { url = "https://files.pythonhosted.org/packages/5d/f4/2a94a3d3dfd6c6b433501b8d470a1960a20ecce93245cf2db1706adf6c19/lxml-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6c8963287d7a4c5c9a432ff487c52e9c5618667179c18a204bdedb27310f022f", size = 4661146, upload-time = "2025-09-22T04:01:56.282Z" }, + { url = "https://files.pythonhosted.org/packages/25/2e/4efa677fa6b322013035d38016f6ae859d06cac67437ca7dc708a6af7028/lxml-6.0.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1941354d92699fb5ffe6ed7b32f9649e43c2feb4b97205f75866f7d21aa91452", size = 4946932, upload-time = "2025-09-22T04:01:58.989Z" }, + { url = "https://files.pythonhosted.org/packages/ce/0f/526e78a6d38d109fdbaa5049c62e1d32fdd70c75fb61c4eadf3045d3d124/lxml-6.0.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:bb2f6ca0ae2d983ded09357b84af659c954722bbf04dea98030064996d156048", size = 5100060, upload-time = "2025-09-22T04:02:00.812Z" }, + { url = "https://files.pythonhosted.org/packages/81/76/99de58d81fa702cc0ea7edae4f4640416c2062813a00ff24bd70ac1d9c9b/lxml-6.0.2-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eb2a12d704f180a902d7fa778c6d71f36ceb7b0d317f34cdc76a5d05aa1dd1df", size = 5019000, upload-time = "2025-09-22T04:02:02.671Z" }, + { url = "https://files.pythonhosted.org/packages/b5/35/9e57d25482bc9a9882cb0037fdb9cc18f4b79d85df94fa9d2a89562f1d25/lxml-6.0.2-cp313-cp313-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:6ec0e3f745021bfed19c456647f0298d60a24c9ff86d9d051f52b509663feeb1", size = 5348496, upload-time = "2025-09-22T04:02:04.904Z" }, + { url = "https://files.pythonhosted.org/packages/a6/8e/cb99bd0b83ccc3e8f0f528e9aa1f7a9965dfec08c617070c5db8d63a87ce/lxml-6.0.2-cp313-cp313-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:846ae9a12d54e368933b9759052d6206a9e8b250291109c48e350c1f1f49d916", size = 5643779, upload-time = "2025-09-22T04:02:06.689Z" }, + { url = "https://files.pythonhosted.org/packages/d0/34/9e591954939276bb679b73773836c6684c22e56d05980e31d52a9a8deb18/lxml-6.0.2-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ef9266d2aa545d7374938fb5c484531ef5a2ec7f2d573e62f8ce722c735685fd", size = 5244072, upload-time = "2025-09-22T04:02:08.587Z" }, + { url = "https://files.pythonhosted.org/packages/8d/27/b29ff065f9aaca443ee377aff699714fcbffb371b4fce5ac4ca759e436d5/lxml-6.0.2-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:4077b7c79f31755df33b795dc12119cb557a0106bfdab0d2c2d97bd3cf3dffa6", size = 4718675, upload-time = "2025-09-22T04:02:10.783Z" }, + { url = "https://files.pythonhosted.org/packages/2b/9f/f756f9c2cd27caa1a6ef8c32ae47aadea697f5c2c6d07b0dae133c244fbe/lxml-6.0.2-cp313-cp313-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a7c5d5e5f1081955358533be077166ee97ed2571d6a66bdba6ec2f609a715d1a", size = 5255171, upload-time = "2025-09-22T04:02:12.631Z" }, + { url = "https://files.pythonhosted.org/packages/61/46/bb85ea42d2cb1bd8395484fd72f38e3389611aa496ac7772da9205bbda0e/lxml-6.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:8f8d0cbd0674ee89863a523e6994ac25fd5be9c8486acfc3e5ccea679bad2679", size = 5057175, upload-time = "2025-09-22T04:02:14.718Z" }, + { url = "https://files.pythonhosted.org/packages/95/0c/443fc476dcc8e41577f0af70458c50fe299a97bb6b7505bb1ae09aa7f9ac/lxml-6.0.2-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:2cbcbf6d6e924c28f04a43f3b6f6e272312a090f269eff68a2982e13e5d57659", size = 4785688, upload-time = "2025-09-22T04:02:16.957Z" }, + { url = "https://files.pythonhosted.org/packages/48/78/6ef0b359d45bb9697bc5a626e1992fa5d27aa3f8004b137b2314793b50a0/lxml-6.0.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:dfb874cfa53340009af6bdd7e54ebc0d21012a60a4e65d927c2e477112e63484", size = 5660655, upload-time = "2025-09-22T04:02:18.815Z" }, + { url = "https://files.pythonhosted.org/packages/ff/ea/e1d33808f386bc1339d08c0dcada6e4712d4ed8e93fcad5f057070b7988a/lxml-6.0.2-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:fb8dae0b6b8b7f9e96c26fdd8121522ce5de9bb5538010870bd538683d30e9a2", size = 5247695, upload-time = "2025-09-22T04:02:20.593Z" }, + { url = "https://files.pythonhosted.org/packages/4f/47/eba75dfd8183673725255247a603b4ad606f4ae657b60c6c145b381697da/lxml-6.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:358d9adae670b63e95bc59747c72f4dc97c9ec58881d4627fe0120da0f90d314", size = 5269841, upload-time = "2025-09-22T04:02:22.489Z" }, + { url = "https://files.pythonhosted.org/packages/76/04/5c5e2b8577bc936e219becb2e98cdb1aca14a4921a12995b9d0c523502ae/lxml-6.0.2-cp313-cp313-win32.whl", hash = "sha256:e8cd2415f372e7e5a789d743d133ae474290a90b9023197fd78f32e2dc6873e2", size = 3610700, upload-time = "2025-09-22T04:02:24.465Z" }, + { url = "https://files.pythonhosted.org/packages/fe/0a/4643ccc6bb8b143e9f9640aa54e38255f9d3b45feb2cbe7ae2ca47e8782e/lxml-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:b30d46379644fbfc3ab81f8f82ae4de55179414651f110a1514f0b1f8f6cb2d7", size = 4010347, upload-time = "2025-09-22T04:02:26.286Z" }, + { url = "https://files.pythonhosted.org/packages/31/ef/dcf1d29c3f530577f61e5fe2f1bd72929acf779953668a8a47a479ae6f26/lxml-6.0.2-cp313-cp313-win_arm64.whl", hash = "sha256:13dcecc9946dca97b11b7c40d29fba63b55ab4170d3c0cf8c0c164343b9bfdcf", size = 3671248, upload-time = "2025-09-22T04:02:27.918Z" }, + { url = "https://files.pythonhosted.org/packages/03/15/d4a377b385ab693ce97b472fe0c77c2b16ec79590e688b3ccc71fba19884/lxml-6.0.2-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:b0c732aa23de8f8aec23f4b580d1e52905ef468afb4abeafd3fec77042abb6fe", size = 8659801, upload-time = "2025-09-22T04:02:30.113Z" }, + { url = "https://files.pythonhosted.org/packages/c8/e8/c128e37589463668794d503afaeb003987373c5f94d667124ffd8078bbd9/lxml-6.0.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:4468e3b83e10e0317a89a33d28f7aeba1caa4d1a6fd457d115dd4ffe90c5931d", size = 4659403, upload-time = "2025-09-22T04:02:32.119Z" }, + { url = "https://files.pythonhosted.org/packages/00/ce/74903904339decdf7da7847bb5741fc98a5451b42fc419a86c0c13d26fe2/lxml-6.0.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:abd44571493973bad4598a3be7e1d807ed45aa2adaf7ab92ab7c62609569b17d", size = 4966974, upload-time = "2025-09-22T04:02:34.155Z" }, + { url = "https://files.pythonhosted.org/packages/1f/d3/131dec79ce61c5567fecf82515bd9bc36395df42501b50f7f7f3bd065df0/lxml-6.0.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:370cd78d5855cfbffd57c422851f7d3864e6ae72d0da615fca4dad8c45d375a5", size = 5102953, upload-time = "2025-09-22T04:02:36.054Z" }, + { url = "https://files.pythonhosted.org/packages/3a/ea/a43ba9bb750d4ffdd885f2cd333572f5bb900cd2408b67fdda07e85978a0/lxml-6.0.2-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:901e3b4219fa04ef766885fb40fa516a71662a4c61b80c94d25336b4934b71c0", size = 5055054, upload-time = "2025-09-22T04:02:38.154Z" }, + { url = "https://files.pythonhosted.org/packages/60/23/6885b451636ae286c34628f70a7ed1fcc759f8d9ad382d132e1c8d3d9bfd/lxml-6.0.2-cp314-cp314-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:a4bf42d2e4cf52c28cc1812d62426b9503cdb0c87a6de81442626aa7d69707ba", size = 5352421, upload-time = "2025-09-22T04:02:40.413Z" }, + { url = "https://files.pythonhosted.org/packages/48/5b/fc2ddfc94ddbe3eebb8e9af6e3fd65e2feba4967f6a4e9683875c394c2d8/lxml-6.0.2-cp314-cp314-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b2c7fdaa4d7c3d886a42534adec7cfac73860b89b4e5298752f60aa5984641a0", size = 5673684, upload-time = "2025-09-22T04:02:42.288Z" }, + { url = "https://files.pythonhosted.org/packages/29/9c/47293c58cc91769130fbf85531280e8cc7868f7fbb6d92f4670071b9cb3e/lxml-6.0.2-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:98a5e1660dc7de2200b00d53fa00bcd3c35a3608c305d45a7bbcaf29fa16e83d", size = 5252463, upload-time = "2025-09-22T04:02:44.165Z" }, + { url = "https://files.pythonhosted.org/packages/9b/da/ba6eceb830c762b48e711ded880d7e3e89fc6c7323e587c36540b6b23c6b/lxml-6.0.2-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:dc051506c30b609238d79eda75ee9cab3e520570ec8219844a72a46020901e37", size = 4698437, upload-time = "2025-09-22T04:02:46.524Z" }, + { url = "https://files.pythonhosted.org/packages/a5/24/7be3f82cb7990b89118d944b619e53c656c97dc89c28cfb143fdb7cd6f4d/lxml-6.0.2-cp314-cp314-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:8799481bbdd212470d17513a54d568f44416db01250f49449647b5ab5b5dccb9", size = 5269890, upload-time = "2025-09-22T04:02:48.812Z" }, + { url = "https://files.pythonhosted.org/packages/1b/bd/dcfb9ea1e16c665efd7538fc5d5c34071276ce9220e234217682e7d2c4a5/lxml-6.0.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:9261bb77c2dab42f3ecd9103951aeca2c40277701eb7e912c545c1b16e0e4917", size = 5097185, upload-time = "2025-09-22T04:02:50.746Z" }, + { url = "https://files.pythonhosted.org/packages/21/04/a60b0ff9314736316f28316b694bccbbabe100f8483ad83852d77fc7468e/lxml-6.0.2-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:65ac4a01aba353cfa6d5725b95d7aed6356ddc0a3cd734de00124d285b04b64f", size = 4745895, upload-time = "2025-09-22T04:02:52.968Z" }, + { url = "https://files.pythonhosted.org/packages/d6/bd/7d54bd1846e5a310d9c715921c5faa71cf5c0853372adf78aee70c8d7aa2/lxml-6.0.2-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:b22a07cbb82fea98f8a2fd814f3d1811ff9ed76d0fc6abc84eb21527596e7cc8", size = 5695246, upload-time = "2025-09-22T04:02:54.798Z" }, + { url = "https://files.pythonhosted.org/packages/fd/32/5643d6ab947bc371da21323acb2a6e603cedbe71cb4c99c8254289ab6f4e/lxml-6.0.2-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:d759cdd7f3e055d6bc8d9bec3ad905227b2e4c785dc16c372eb5b5e83123f48a", size = 5260797, upload-time = "2025-09-22T04:02:57.058Z" }, + { url = "https://files.pythonhosted.org/packages/33/da/34c1ec4cff1eea7d0b4cd44af8411806ed943141804ac9c5d565302afb78/lxml-6.0.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:945da35a48d193d27c188037a05fec5492937f66fb1958c24fc761fb9d40d43c", size = 5277404, upload-time = "2025-09-22T04:02:58.966Z" }, + { url = "https://files.pythonhosted.org/packages/82/57/4eca3e31e54dc89e2c3507e1cd411074a17565fa5ffc437c4ae0a00d439e/lxml-6.0.2-cp314-cp314-win32.whl", hash = "sha256:be3aaa60da67e6153eb15715cc2e19091af5dc75faef8b8a585aea372507384b", size = 3670072, upload-time = "2025-09-22T04:03:38.05Z" }, + { url = "https://files.pythonhosted.org/packages/e3/e0/c96cf13eccd20c9421ba910304dae0f619724dcf1702864fd59dd386404d/lxml-6.0.2-cp314-cp314-win_amd64.whl", hash = "sha256:fa25afbadead523f7001caf0c2382afd272c315a033a7b06336da2637d92d6ed", size = 4080617, upload-time = "2025-09-22T04:03:39.835Z" }, + { url = "https://files.pythonhosted.org/packages/d5/5d/b3f03e22b3d38d6f188ef044900a9b29b2fe0aebb94625ce9fe244011d34/lxml-6.0.2-cp314-cp314-win_arm64.whl", hash = "sha256:063eccf89df5b24e361b123e257e437f9e9878f425ee9aae3144c77faf6da6d8", size = 3754930, upload-time = "2025-09-22T04:03:41.565Z" }, + { url = "https://files.pythonhosted.org/packages/5e/5c/42c2c4c03554580708fc738d13414801f340c04c3eff90d8d2d227145275/lxml-6.0.2-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:6162a86d86893d63084faaf4ff937b3daea233e3682fb4474db07395794fa80d", size = 8910380, upload-time = "2025-09-22T04:03:01.645Z" }, + { url = "https://files.pythonhosted.org/packages/bf/4f/12df843e3e10d18d468a7557058f8d3733e8b6e12401f30b1ef29360740f/lxml-6.0.2-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:414aaa94e974e23a3e92e7ca5b97d10c0cf37b6481f50911032c69eeb3991bba", size = 4775632, upload-time = "2025-09-22T04:03:03.814Z" }, + { url = "https://files.pythonhosted.org/packages/e4/0c/9dc31e6c2d0d418483cbcb469d1f5a582a1cd00a1f4081953d44051f3c50/lxml-6.0.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:48461bd21625458dd01e14e2c38dd0aea69addc3c4f960c30d9f59d7f93be601", size = 4975171, upload-time = "2025-09-22T04:03:05.651Z" }, + { url = "https://files.pythonhosted.org/packages/e7/2b/9b870c6ca24c841bdd887504808f0417aa9d8d564114689266f19ddf29c8/lxml-6.0.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:25fcc59afc57d527cfc78a58f40ab4c9b8fd096a9a3f964d2781ffb6eb33f4ed", size = 5110109, upload-time = "2025-09-22T04:03:07.452Z" }, + { url = "https://files.pythonhosted.org/packages/bf/0c/4f5f2a4dd319a178912751564471355d9019e220c20d7db3fb8307ed8582/lxml-6.0.2-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5179c60288204e6ddde3f774a93350177e08876eaf3ab78aa3a3649d43eb7d37", size = 5041061, upload-time = "2025-09-22T04:03:09.297Z" }, + { url = "https://files.pythonhosted.org/packages/12/64/554eed290365267671fe001a20d72d14f468ae4e6acef1e179b039436967/lxml-6.0.2-cp314-cp314t-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:967aab75434de148ec80597b75062d8123cadf2943fb4281f385141e18b21338", size = 5306233, upload-time = "2025-09-22T04:03:11.651Z" }, + { url = "https://files.pythonhosted.org/packages/7a/31/1d748aa275e71802ad9722df32a7a35034246b42c0ecdd8235412c3396ef/lxml-6.0.2-cp314-cp314t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d100fcc8930d697c6561156c6810ab4a508fb264c8b6779e6e61e2ed5e7558f9", size = 5604739, upload-time = "2025-09-22T04:03:13.592Z" }, + { url = "https://files.pythonhosted.org/packages/8f/41/2c11916bcac09ed561adccacceaedd2bf0e0b25b297ea92aab99fd03d0fa/lxml-6.0.2-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ca59e7e13e5981175b8b3e4ab84d7da57993eeff53c07764dcebda0d0e64ecd", size = 5225119, upload-time = "2025-09-22T04:03:15.408Z" }, + { url = "https://files.pythonhosted.org/packages/99/05/4e5c2873d8f17aa018e6afde417c80cc5d0c33be4854cce3ef5670c49367/lxml-6.0.2-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:957448ac63a42e2e49531b9d6c0fa449a1970dbc32467aaad46f11545be9af1d", size = 4633665, upload-time = "2025-09-22T04:03:17.262Z" }, + { url = "https://files.pythonhosted.org/packages/0f/c9/dcc2da1bebd6275cdc723b515f93edf548b82f36a5458cca3578bc899332/lxml-6.0.2-cp314-cp314t-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b7fc49c37f1786284b12af63152fe1d0990722497e2d5817acfe7a877522f9a9", size = 5234997, upload-time = "2025-09-22T04:03:19.14Z" }, + { url = "https://files.pythonhosted.org/packages/9c/e2/5172e4e7468afca64a37b81dba152fc5d90e30f9c83c7c3213d6a02a5ce4/lxml-6.0.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e19e0643cc936a22e837f79d01a550678da8377d7d801a14487c10c34ee49c7e", size = 5090957, upload-time = "2025-09-22T04:03:21.436Z" }, + { url = "https://files.pythonhosted.org/packages/a5/b3/15461fd3e5cd4ddcb7938b87fc20b14ab113b92312fc97afe65cd7c85de1/lxml-6.0.2-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:1db01e5cf14345628e0cbe71067204db658e2fb8e51e7f33631f5f4735fefd8d", size = 4764372, upload-time = "2025-09-22T04:03:23.27Z" }, + { url = "https://files.pythonhosted.org/packages/05/33/f310b987c8bf9e61c4dd8e8035c416bd3230098f5e3cfa69fc4232de7059/lxml-6.0.2-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:875c6b5ab39ad5291588aed6925fac99d0097af0dd62f33c7b43736043d4a2ec", size = 5634653, upload-time = "2025-09-22T04:03:25.767Z" }, + { url = "https://files.pythonhosted.org/packages/70/ff/51c80e75e0bc9382158133bdcf4e339b5886c6ee2418b5199b3f1a61ed6d/lxml-6.0.2-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:cdcbed9ad19da81c480dfd6dd161886db6096083c9938ead313d94b30aadf272", size = 5233795, upload-time = "2025-09-22T04:03:27.62Z" }, + { url = "https://files.pythonhosted.org/packages/56/4d/4856e897df0d588789dd844dbed9d91782c4ef0b327f96ce53c807e13128/lxml-6.0.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:80dadc234ebc532e09be1975ff538d154a7fa61ea5031c03d25178855544728f", size = 5257023, upload-time = "2025-09-22T04:03:30.056Z" }, + { url = "https://files.pythonhosted.org/packages/0f/85/86766dfebfa87bea0ab78e9ff7a4b4b45225df4b4d3b8cc3c03c5cd68464/lxml-6.0.2-cp314-cp314t-win32.whl", hash = "sha256:da08e7bb297b04e893d91087df19638dc7a6bb858a954b0cc2b9f5053c922312", size = 3911420, upload-time = "2025-09-22T04:03:32.198Z" }, + { url = "https://files.pythonhosted.org/packages/fe/1a/b248b355834c8e32614650b8008c69ffeb0ceb149c793961dd8c0b991bb3/lxml-6.0.2-cp314-cp314t-win_amd64.whl", hash = "sha256:252a22982dca42f6155125ac76d3432e548a7625d56f5a273ee78a5057216eca", size = 4406837, upload-time = "2025-09-22T04:03:34.027Z" }, + { url = "https://files.pythonhosted.org/packages/92/aa/df863bcc39c5e0946263454aba394de8a9084dbaff8ad143846b0d844739/lxml-6.0.2-cp314-cp314t-win_arm64.whl", hash = "sha256:bb4c1847b303835d89d785a18801a883436cdfd5dc3d62947f9c49e24f0f5a2c", size = 3822205, upload-time = "2025-09-22T04:03:36.249Z" }, + { url = "https://files.pythonhosted.org/packages/0b/11/29d08bc103a62c0eba8016e7ed5aeebbf1e4312e83b0b1648dd203b0e87d/lxml-6.0.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:1c06035eafa8404b5cf475bb37a9f6088b0aca288d4ccc9d69389750d5543700", size = 3949829, upload-time = "2025-09-22T04:04:45.608Z" }, + { url = "https://files.pythonhosted.org/packages/12/b3/52ab9a3b31e5ab8238da241baa19eec44d2ab426532441ee607165aebb52/lxml-6.0.2-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c7d13103045de1bdd6fe5d61802565f1a3537d70cd3abf596aa0af62761921ee", size = 4226277, upload-time = "2025-09-22T04:04:47.754Z" }, + { url = "https://files.pythonhosted.org/packages/a0/33/1eaf780c1baad88224611df13b1c2a9dfa460b526cacfe769103ff50d845/lxml-6.0.2-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0a3c150a95fbe5ac91de323aa756219ef9cf7fde5a3f00e2281e30f33fa5fa4f", size = 4330433, upload-time = "2025-09-22T04:04:49.907Z" }, + { url = "https://files.pythonhosted.org/packages/7a/c1/27428a2ff348e994ab4f8777d3a0ad510b6b92d37718e5887d2da99952a2/lxml-6.0.2-pp311-pypy311_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:60fa43be34f78bebb27812ed90f1925ec99560b0fa1decdb7d12b84d857d31e9", size = 4272119, upload-time = "2025-09-22T04:04:51.801Z" }, + { url = "https://files.pythonhosted.org/packages/f0/d0/3020fa12bcec4ab62f97aab026d57c2f0cfd480a558758d9ca233bb6a79d/lxml-6.0.2-pp311-pypy311_pp73-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:21c73b476d3cfe836be731225ec3421fa2f048d84f6df6a8e70433dff1376d5a", size = 4417314, upload-time = "2025-09-22T04:04:55.024Z" }, + { url = "https://files.pythonhosted.org/packages/6c/77/d7f491cbc05303ac6801651aabeb262d43f319288c1ea96c66b1d2692ff3/lxml-6.0.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:27220da5be049e936c3aca06f174e8827ca6445a4353a1995584311487fc4e3e", size = 3518768, upload-time = "2025-09-22T04:04:57.097Z" }, +] + +[[package]] +name = "matplotlib" +version = "3.10.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "contourpy" }, + { name = "cycler" }, + { name = "fonttools" }, + { name = "kiwisolver" }, + { name = "numpy" }, + { name = "packaging" }, + { name = "pillow" }, + { name = "pyparsing" }, + { name = "python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8a/76/d3c6e3a13fe484ebe7718d14e269c9569c4eb0020a968a327acb3b9a8fe6/matplotlib-3.10.8.tar.gz", hash = "sha256:2299372c19d56bcd35cf05a2738308758d32b9eaed2371898d8f5bd33f084aa3", size = 34806269, upload-time = "2025-12-10T22:56:51.155Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/86/de7e3a1cdcfc941483af70609edc06b83e7c8a0e0dc9ac325200a3f4d220/matplotlib-3.10.8-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:6be43b667360fef5c754dda5d25a32e6307a03c204f3c0fc5468b78fa87b4160", size = 8251215, upload-time = "2025-12-10T22:55:16.175Z" }, + { url = "https://files.pythonhosted.org/packages/fd/14/baad3222f424b19ce6ad243c71de1ad9ec6b2e4eb1e458a48fdc6d120401/matplotlib-3.10.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a2b336e2d91a3d7006864e0990c83b216fcdca64b5a6484912902cef87313d78", size = 8139625, upload-time = "2025-12-10T22:55:17.712Z" }, + { url = "https://files.pythonhosted.org/packages/8f/a0/7024215e95d456de5883e6732e708d8187d9753a21d32f8ddb3befc0c445/matplotlib-3.10.8-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:efb30e3baaea72ce5928e32bab719ab4770099079d66726a62b11b1ef7273be4", size = 8712614, upload-time = "2025-12-10T22:55:20.8Z" }, + { url = "https://files.pythonhosted.org/packages/5a/f4/b8347351da9a5b3f41e26cf547252d861f685c6867d179a7c9d60ad50189/matplotlib-3.10.8-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d56a1efd5bfd61486c8bc968fa18734464556f0fb8e51690f4ac25d85cbbbbc2", size = 9540997, upload-time = "2025-12-10T22:55:23.258Z" }, + { url = "https://files.pythonhosted.org/packages/9e/c0/c7b914e297efe0bc36917bf216b2acb91044b91e930e878ae12981e461e5/matplotlib-3.10.8-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:238b7ce5717600615c895050239ec955d91f321c209dd110db988500558e70d6", size = 9596825, upload-time = "2025-12-10T22:55:25.217Z" }, + { url = "https://files.pythonhosted.org/packages/6f/d3/a4bbc01c237ab710a1f22b4da72f4ff6d77eb4c7735ea9811a94ae239067/matplotlib-3.10.8-cp311-cp311-win_amd64.whl", hash = "sha256:18821ace09c763ec93aef5eeff087ee493a24051936d7b9ebcad9662f66501f9", size = 8135090, upload-time = "2025-12-10T22:55:27.162Z" }, + { url = "https://files.pythonhosted.org/packages/89/dd/a0b6588f102beab33ca6f5218b31725216577b2a24172f327eaf6417d5c9/matplotlib-3.10.8-cp311-cp311-win_arm64.whl", hash = "sha256:bab485bcf8b1c7d2060b4fcb6fc368a9e6f4cd754c9c2fea281f4be21df394a2", size = 8012377, upload-time = "2025-12-10T22:55:29.185Z" }, + { url = "https://files.pythonhosted.org/packages/9e/67/f997cdcbb514012eb0d10cd2b4b332667997fb5ebe26b8d41d04962fa0e6/matplotlib-3.10.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:64fcc24778ca0404ce0cb7b6b77ae1f4c7231cdd60e6778f999ee05cbd581b9a", size = 8260453, upload-time = "2025-12-10T22:55:30.709Z" }, + { url = "https://files.pythonhosted.org/packages/7e/65/07d5f5c7f7c994f12c768708bd2e17a4f01a2b0f44a1c9eccad872433e2e/matplotlib-3.10.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b9a5ca4ac220a0cdd1ba6bcba3608547117d30468fefce49bb26f55c1a3d5c58", size = 8148321, upload-time = "2025-12-10T22:55:33.265Z" }, + { url = "https://files.pythonhosted.org/packages/3e/f3/c5195b1ae57ef85339fd7285dfb603b22c8b4e79114bae5f4f0fcf688677/matplotlib-3.10.8-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3ab4aabc72de4ff77b3ec33a6d78a68227bf1123465887f9905ba79184a1cc04", size = 8716944, upload-time = "2025-12-10T22:55:34.922Z" }, + { url = "https://files.pythonhosted.org/packages/00/f9/7638f5cc82ec8a7aa005de48622eecc3ed7c9854b96ba15bd76b7fd27574/matplotlib-3.10.8-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:24d50994d8c5816ddc35411e50a86ab05f575e2530c02752e02538122613371f", size = 9550099, upload-time = "2025-12-10T22:55:36.789Z" }, + { url = "https://files.pythonhosted.org/packages/57/61/78cd5920d35b29fd2a0fe894de8adf672ff52939d2e9b43cb83cd5ce1bc7/matplotlib-3.10.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:99eefd13c0dc3b3c1b4d561c1169e65fe47aab7b8158754d7c084088e2329466", size = 9613040, upload-time = "2025-12-10T22:55:38.715Z" }, + { url = "https://files.pythonhosted.org/packages/30/4e/c10f171b6e2f44d9e3a2b96efa38b1677439d79c99357600a62cc1e9594e/matplotlib-3.10.8-cp312-cp312-win_amd64.whl", hash = "sha256:dd80ecb295460a5d9d260df63c43f4afbdd832d725a531f008dad1664f458adf", size = 8142717, upload-time = "2025-12-10T22:55:41.103Z" }, + { url = "https://files.pythonhosted.org/packages/f1/76/934db220026b5fef85f45d51a738b91dea7d70207581063cd9bd8fafcf74/matplotlib-3.10.8-cp312-cp312-win_arm64.whl", hash = "sha256:3c624e43ed56313651bc18a47f838b60d7b8032ed348911c54906b130b20071b", size = 8012751, upload-time = "2025-12-10T22:55:42.684Z" }, + { url = "https://files.pythonhosted.org/packages/3d/b9/15fd5541ef4f5b9a17eefd379356cf12175fe577424e7b1d80676516031a/matplotlib-3.10.8-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:3f2e409836d7f5ac2f1c013110a4d50b9f7edc26328c108915f9075d7d7a91b6", size = 8261076, upload-time = "2025-12-10T22:55:44.648Z" }, + { url = "https://files.pythonhosted.org/packages/8d/a0/2ba3473c1b66b9c74dc7107c67e9008cb1782edbe896d4c899d39ae9cf78/matplotlib-3.10.8-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:56271f3dac49a88d7fca5060f004d9d22b865f743a12a23b1e937a0be4818ee1", size = 8148794, upload-time = "2025-12-10T22:55:46.252Z" }, + { url = "https://files.pythonhosted.org/packages/75/97/a471f1c3eb1fd6f6c24a31a5858f443891d5127e63a7788678d14e249aea/matplotlib-3.10.8-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a0a7f52498f72f13d4a25ea70f35f4cb60642b466cbb0a9be951b5bc3f45a486", size = 8718474, upload-time = "2025-12-10T22:55:47.864Z" }, + { url = "https://files.pythonhosted.org/packages/01/be/cd478f4b66f48256f42927d0acbcd63a26a893136456cd079c0cc24fbabf/matplotlib-3.10.8-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:646d95230efb9ca614a7a594d4fcacde0ac61d25e37dd51710b36477594963ce", size = 9549637, upload-time = "2025-12-10T22:55:50.048Z" }, + { url = "https://files.pythonhosted.org/packages/5d/7c/8dc289776eae5109e268c4fb92baf870678dc048a25d4ac903683b86d5bf/matplotlib-3.10.8-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f89c151aab2e2e23cb3fe0acad1e8b82841fd265379c4cecd0f3fcb34c15e0f6", size = 9613678, upload-time = "2025-12-10T22:55:52.21Z" }, + { url = "https://files.pythonhosted.org/packages/64/40/37612487cc8a437d4dd261b32ca21fe2d79510fe74af74e1f42becb1bdb8/matplotlib-3.10.8-cp313-cp313-win_amd64.whl", hash = "sha256:e8ea3e2d4066083e264e75c829078f9e149fa119d27e19acd503de65e0b13149", size = 8142686, upload-time = "2025-12-10T22:55:54.253Z" }, + { url = "https://files.pythonhosted.org/packages/66/52/8d8a8730e968185514680c2a6625943f70269509c3dcfc0dcf7d75928cb8/matplotlib-3.10.8-cp313-cp313-win_arm64.whl", hash = "sha256:c108a1d6fa78a50646029cb6d49808ff0fc1330fda87fa6f6250c6b5369b6645", size = 8012917, upload-time = "2025-12-10T22:55:56.268Z" }, + { url = "https://files.pythonhosted.org/packages/b5/27/51fe26e1062f298af5ef66343d8ef460e090a27fea73036c76c35821df04/matplotlib-3.10.8-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:ad3d9833a64cf48cc4300f2b406c3d0f4f4724a91c0bd5640678a6ba7c102077", size = 8305679, upload-time = "2025-12-10T22:55:57.856Z" }, + { url = "https://files.pythonhosted.org/packages/2c/1e/4de865bc591ac8e3062e835f42dd7fe7a93168d519557837f0e37513f629/matplotlib-3.10.8-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:eb3823f11823deade26ce3b9f40dcb4a213da7a670013929f31d5f5ed1055b22", size = 8198336, upload-time = "2025-12-10T22:55:59.371Z" }, + { url = "https://files.pythonhosted.org/packages/c6/cb/2f7b6e75fb4dce87ef91f60cac4f6e34f4c145ab036a22318ec837971300/matplotlib-3.10.8-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d9050fee89a89ed57b4fb2c1bfac9a3d0c57a0d55aed95949eedbc42070fea39", size = 8731653, upload-time = "2025-12-10T22:56:01.032Z" }, + { url = "https://files.pythonhosted.org/packages/46/b3/bd9c57d6ba670a37ab31fb87ec3e8691b947134b201f881665b28cc039ff/matplotlib-3.10.8-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b44d07310e404ba95f8c25aa5536f154c0a8ec473303535949e52eb71d0a1565", size = 9561356, upload-time = "2025-12-10T22:56:02.95Z" }, + { url = "https://files.pythonhosted.org/packages/c0/3d/8b94a481456dfc9dfe6e39e93b5ab376e50998cddfd23f4ae3b431708f16/matplotlib-3.10.8-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:0a33deb84c15ede243aead39f77e990469fff93ad1521163305095b77b72ce4a", size = 9614000, upload-time = "2025-12-10T22:56:05.411Z" }, + { url = "https://files.pythonhosted.org/packages/bd/cd/bc06149fe5585ba800b189a6a654a75f1f127e8aab02fd2be10df7fa500c/matplotlib-3.10.8-cp313-cp313t-win_amd64.whl", hash = "sha256:3a48a78d2786784cc2413e57397981fb45c79e968d99656706018d6e62e57958", size = 8220043, upload-time = "2025-12-10T22:56:07.551Z" }, + { url = "https://files.pythonhosted.org/packages/e3/de/b22cf255abec916562cc04eef457c13e58a1990048de0c0c3604d082355e/matplotlib-3.10.8-cp313-cp313t-win_arm64.whl", hash = "sha256:15d30132718972c2c074cd14638c7f4592bd98719e2308bccea40e0538bc0cb5", size = 8062075, upload-time = "2025-12-10T22:56:09.178Z" }, + { url = "https://files.pythonhosted.org/packages/3c/43/9c0ff7a2f11615e516c3b058e1e6e8f9614ddeca53faca06da267c48345d/matplotlib-3.10.8-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:b53285e65d4fa4c86399979e956235deb900be5baa7fc1218ea67fbfaeaadd6f", size = 8262481, upload-time = "2025-12-10T22:56:10.885Z" }, + { url = "https://files.pythonhosted.org/packages/6f/ca/e8ae28649fcdf039fda5ef554b40a95f50592a3c47e6f7270c9561c12b07/matplotlib-3.10.8-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:32f8dce744be5569bebe789e46727946041199030db8aeb2954d26013a0eb26b", size = 8151473, upload-time = "2025-12-10T22:56:12.377Z" }, + { url = "https://files.pythonhosted.org/packages/f1/6f/009d129ae70b75e88cbe7e503a12a4c0670e08ed748a902c2568909e9eb5/matplotlib-3.10.8-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4cf267add95b1c88300d96ca837833d4112756045364f5c734a2276038dae27d", size = 9553896, upload-time = "2025-12-10T22:56:14.432Z" }, + { url = "https://files.pythonhosted.org/packages/f5/26/4221a741eb97967bc1fd5e4c52b9aa5a91b2f4ec05b59f6def4d820f9df9/matplotlib-3.10.8-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2cf5bd12cecf46908f286d7838b2abc6c91cda506c0445b8223a7c19a00df008", size = 9824193, upload-time = "2025-12-10T22:56:16.29Z" }, + { url = "https://files.pythonhosted.org/packages/1f/f3/3abf75f38605772cf48a9daf5821cd4f563472f38b4b828c6fba6fa6d06e/matplotlib-3.10.8-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:41703cc95688f2516b480f7f339d8851a6035f18e100ee6a32bc0b8536a12a9c", size = 9615444, upload-time = "2025-12-10T22:56:18.155Z" }, + { url = "https://files.pythonhosted.org/packages/93/a5/de89ac80f10b8dc615807ee1133cd99ac74082581196d4d9590bea10690d/matplotlib-3.10.8-cp314-cp314-win_amd64.whl", hash = "sha256:83d282364ea9f3e52363da262ce32a09dfe241e4080dcedda3c0db059d3c1f11", size = 8272719, upload-time = "2025-12-10T22:56:20.366Z" }, + { url = "https://files.pythonhosted.org/packages/69/ce/b006495c19ccc0a137b48083168a37bd056392dee02f87dba0472f2797fe/matplotlib-3.10.8-cp314-cp314-win_arm64.whl", hash = "sha256:2c1998e92cd5999e295a731bcb2911c75f597d937341f3030cc24ef2733d78a8", size = 8144205, upload-time = "2025-12-10T22:56:22.239Z" }, + { url = "https://files.pythonhosted.org/packages/68/d9/b31116a3a855bd313c6fcdb7226926d59b041f26061c6c5b1be66a08c826/matplotlib-3.10.8-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:b5a2b97dbdc7d4f353ebf343744f1d1f1cca8aa8bfddb4262fcf4306c3761d50", size = 8305785, upload-time = "2025-12-10T22:56:24.218Z" }, + { url = "https://files.pythonhosted.org/packages/1e/90/6effe8103f0272685767ba5f094f453784057072f49b393e3ea178fe70a5/matplotlib-3.10.8-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:3f5c3e4da343bba819f0234186b9004faba952cc420fbc522dc4e103c1985908", size = 8198361, upload-time = "2025-12-10T22:56:26.787Z" }, + { url = "https://files.pythonhosted.org/packages/d7/65/a73188711bea603615fc0baecca1061429ac16940e2385433cc778a9d8e7/matplotlib-3.10.8-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f62550b9a30afde8c1c3ae450e5eb547d579dd69b25c2fc7a1c67f934c1717a", size = 9561357, upload-time = "2025-12-10T22:56:28.953Z" }, + { url = "https://files.pythonhosted.org/packages/f4/3d/b5c5d5d5be8ce63292567f0e2c43dde9953d3ed86ac2de0a72e93c8f07a1/matplotlib-3.10.8-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:495672de149445ec1b772ff2c9ede9b769e3cb4f0d0aa7fa730d7f59e2d4e1c1", size = 9823610, upload-time = "2025-12-10T22:56:31.455Z" }, + { url = "https://files.pythonhosted.org/packages/4d/4b/e7beb6bbd49f6bae727a12b270a2654d13c397576d25bd6786e47033300f/matplotlib-3.10.8-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:595ba4d8fe983b88f0eec8c26a241e16d6376fe1979086232f481f8f3f67494c", size = 9614011, upload-time = "2025-12-10T22:56:33.85Z" }, + { url = "https://files.pythonhosted.org/packages/7c/e6/76f2813d31f032e65f6f797e3f2f6e4aab95b65015924b1c51370395c28a/matplotlib-3.10.8-cp314-cp314t-win_amd64.whl", hash = "sha256:25d380fe8b1dc32cf8f0b1b448470a77afb195438bafdf1d858bfb876f3edf7b", size = 8362801, upload-time = "2025-12-10T22:56:36.107Z" }, + { url = "https://files.pythonhosted.org/packages/5d/49/d651878698a0b67f23aa28e17f45a6d6dd3d3f933fa29087fa4ce5947b5a/matplotlib-3.10.8-cp314-cp314t-win_arm64.whl", hash = "sha256:113bb52413ea508ce954a02c10ffd0d565f9c3bc7f2eddc27dfe1731e71c7b5f", size = 8192560, upload-time = "2025-12-10T22:56:38.008Z" }, + { url = "https://files.pythonhosted.org/packages/04/30/3afaa31c757f34b7725ab9d2ba8b48b5e89c2019c003e7d0ead143aabc5a/matplotlib-3.10.8-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:6da7c2ce169267d0d066adcf63758f0604aa6c3eebf67458930f9d9b79ad1db1", size = 8249198, upload-time = "2025-12-10T22:56:45.584Z" }, + { url = "https://files.pythonhosted.org/packages/48/2f/6334aec331f57485a642a7c8be03cb286f29111ae71c46c38b363230063c/matplotlib-3.10.8-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:9153c3292705be9f9c64498a8872118540c3f4123d1a1c840172edf262c8be4a", size = 8136817, upload-time = "2025-12-10T22:56:47.339Z" }, + { url = "https://files.pythonhosted.org/packages/73/e4/6d6f14b2a759c622f191b2d67e9075a3f56aaccb3be4bb9bb6890030d0a0/matplotlib-3.10.8-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1ae029229a57cd1e8fe542485f27e7ca7b23aa9e8944ddb4985d0bc444f1eca2", size = 8713867, upload-time = "2025-12-10T22:56:48.954Z" }, +] + +[[package]] +name = "monty" +version = "2025.3.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "ruamel-yaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/89/54/a1b2b4c9b16ebc5ea72cf22b1a6bb7ceaa79187fbf22a404c9677c8f90dd/monty-2025.3.3.tar.gz", hash = "sha256:16c1eb54b2372e765c2f3f14cff01cc76ab55c3cc12b27d49962fb8072310ae0", size = 85592, upload-time = "2025-03-03T21:12:44.541Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/eb/df/b3a36544734be3ac0eacf11bcfb8609464dd07d8bad0dff6e46109c68002/monty-2025.3.3-py3-none-any.whl", hash = "sha256:5eadb6d748c007bc63c34eceb2d80faff18f3996121d261dbceeea22adc58775", size = 51925, upload-time = "2025-03-03T21:12:42.598Z" }, +] + +[[package]] +name = "mp-api" +version = "0.46.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "boto3" }, + { name = "emmet-core" }, + { name = "monty" }, + { name = "orjson" }, + { name = "pymatgen" }, + { name = "requests" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7d/ac/05b01988f1a45203fa494bcdbbd8528d5e4eb8b6968bf2427b2b14819142/mp_api-0.46.0.tar.gz", hash = "sha256:045588cfdcd1c3b68a3611b971e29a8f5be05d0cfd6776db702dc67fb90cf2c1", size = 113171, upload-time = "2026-01-30T19:29:48.848Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/d1/c360e357d177489f13f9fb46daa586a83e927e4d3d254c3aa87c17088012/mp_api-0.46.0-py3-none-any.whl", hash = "sha256:7aa01f7864f5f81e97a829e5643bc98bb88b5e4e4ea9b6b0bd43f0745ce38ad5", size = 119380, upload-time = "2026-01-30T19:29:46.925Z" }, +] + +[[package]] +name = "mpmath" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/47/dd32fa426cc72114383ac549964eecb20ecfd886d1e5ccf5340b55b02f57/mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f", size = 508106, upload-time = "2023-03-07T16:47:11.061Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c", size = 536198, upload-time = "2023-03-07T16:47:09.197Z" }, +] + +[[package]] +name = "narwhals" +version = "2.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fc/6f/713be67779028d482c6e0f2dde5bc430021b2578a4808c1c9f6d7ad48257/narwhals-2.16.0.tar.gz", hash = "sha256:155bb45132b370941ba0396d123cf9ed192bf25f39c4cea726f2da422ca4e145", size = 618268, upload-time = "2026-02-02T10:31:00.545Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/03/cc/7cb74758e6df95e0c4e1253f203b6dd7f348bf2f29cf89e9210a2416d535/narwhals-2.16.0-py3-none-any.whl", hash = "sha256:846f1fd7093ac69d63526e50732033e86c30ea0026a44d9b23991010c7d1485d", size = 443951, upload-time = "2026-02-02T10:30:58.635Z" }, +] + +[[package]] +name = "networkx" +version = "3.6.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6a/51/63fe664f3908c97be9d2e4f1158eb633317598cfa6e1fc14af5383f17512/networkx-3.6.1.tar.gz", hash = "sha256:26b7c357accc0c8cde558ad486283728b65b6a95d85ee1cd66bafab4c8168509", size = 2517025, upload-time = "2025-12-08T17:02:39.908Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl", hash = "sha256:d47fbf302e7d9cbbb9e2555a0d267983d2aa476bac30e90dfbe5669bd57f3762", size = 2068504, upload-time = "2025-12-08T17:02:38.159Z" }, +] + +[[package]] +name = "numdifftools" +version = "0.9.42" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "scipy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/17/94/7c83677dddc78f93230f4c8a6a5faa06c92699a76eb019386a3aed8a9762/numdifftools-0.9.42.tar.gz", hash = "sha256:866675171f293c4bf2f1e1c5bf9b88a07d5396903e3b3e7fcc3879e2a01cfbc1", size = 79612, upload-time = "2025-12-11T12:06:10.54Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/60/60/c7504633e9fe53dc823db5d83dc15651c595cf35d668781832b4d2748272/numdifftools-0.9.42-py3-none-any.whl", hash = "sha256:22f926b8de24aa44f740bc26744a74555c1c80413068b1dee2edb3c3d10566f6", size = 94252, upload-time = "2025-12-11T12:06:09.322Z" }, +] + +[[package]] +name = "numexpr" +version = "2.14.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cb/2f/fdba158c9dbe5caca9c3eca3eaffffb251f2fb8674bf8e2d0aed5f38d319/numexpr-2.14.1.tar.gz", hash = "sha256:4be00b1086c7b7a5c32e31558122b7b80243fe098579b170967da83f3152b48b", size = 119400, upload-time = "2025-10-13T16:17:27.351Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b2/a3/67999bdd1ed1f938d38f3fedd4969632f2f197b090e50505f7cc1fa82510/numexpr-2.14.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2d03fcb4644a12f70a14d74006f72662824da5b6128bf1bcd10cc3ed80e64c34", size = 163195, upload-time = "2025-10-13T16:16:31.212Z" }, + { url = "https://files.pythonhosted.org/packages/25/95/d64f680ea1fc56d165457287e0851d6708800f9fcea346fc1b9957942ee6/numexpr-2.14.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2773ee1133f77009a1fc2f34fe236f3d9823779f5f75450e183137d49f00499f", size = 152088, upload-time = "2025-10-13T16:16:33.186Z" }, + { url = "https://files.pythonhosted.org/packages/0e/7f/3bae417cb13ae08afd86d08bb0301c32440fe0cae4e6262b530e0819aeda/numexpr-2.14.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ebe4980f9494b9f94d10d2e526edc29e72516698d3bf95670ba79415492212a4", size = 451126, upload-time = "2025-10-13T16:13:22.248Z" }, + { url = "https://files.pythonhosted.org/packages/4c/1a/edbe839109518364ac0bd9e918cf874c755bb2c128040e920f198c494263/numexpr-2.14.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2a381e5e919a745c9503bcefffc1c7f98c972c04ec58fc8e999ed1a929e01ba6", size = 442012, upload-time = "2025-10-13T16:14:51.416Z" }, + { url = "https://files.pythonhosted.org/packages/66/b1/be4ce99bff769a5003baddac103f34681997b31d4640d5a75c0e8ed59c78/numexpr-2.14.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d08856cfc1b440eb1caaa60515235369654321995dd68eb9377577392020f6cb", size = 1415975, upload-time = "2025-10-13T16:13:26.088Z" }, + { url = "https://files.pythonhosted.org/packages/e7/33/b33b8fdc032a05d9ebb44a51bfcd4b92c178a2572cd3e6c1b03d8a4b45b2/numexpr-2.14.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:03130afa04edf83a7b590d207444f05a00363c9b9ea5d81c0f53b1ea13fad55a", size = 1464683, upload-time = "2025-10-13T16:14:58.87Z" }, + { url = "https://files.pythonhosted.org/packages/d0/b2/ddcf0ac6cf0a1d605e5aecd4281507fd79a9628a67896795ab2e975de5df/numexpr-2.14.1-cp311-cp311-win32.whl", hash = "sha256:db78fa0c9fcbaded3ae7453faf060bd7a18b0dc10299d7fcd02d9362be1213ed", size = 166838, upload-time = "2025-10-13T16:17:06.765Z" }, + { url = "https://files.pythonhosted.org/packages/64/72/4ca9bd97b2eb6dce9f5e70a3b6acec1a93e1fb9b079cb4cba2cdfbbf295d/numexpr-2.14.1-cp311-cp311-win_amd64.whl", hash = "sha256:e9b2f957798c67a2428be96b04bce85439bed05efe78eb78e4c2ca43737578e7", size = 160069, upload-time = "2025-10-13T16:17:08.752Z" }, + { url = "https://files.pythonhosted.org/packages/9d/20/c473fc04a371f5e2f8c5749e04505c13e7a8ede27c09e9f099b2ad6f43d6/numexpr-2.14.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:91ebae0ab18c799b0e6b8c5a8d11e1fa3848eb4011271d99848b297468a39430", size = 162790, upload-time = "2025-10-13T16:16:34.903Z" }, + { url = "https://files.pythonhosted.org/packages/45/93/b6760dd1904c2a498e5f43d1bb436f59383c3ddea3815f1461dfaa259373/numexpr-2.14.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:47041f2f7b9e69498fb311af672ba914a60e6e6d804011caacb17d66f639e659", size = 152196, upload-time = "2025-10-13T16:16:36.593Z" }, + { url = "https://files.pythonhosted.org/packages/72/94/cc921e35593b820521e464cbbeaf8212bbdb07f16dc79fe283168df38195/numexpr-2.14.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d686dfb2c1382d9e6e0ee0b7647f943c1886dba3adbf606c625479f35f1956c1", size = 452468, upload-time = "2025-10-13T16:13:29.531Z" }, + { url = "https://files.pythonhosted.org/packages/d9/43/560e9ba23c02c904b5934496486d061bcb14cd3ebba2e3cf0e2dccb6c22b/numexpr-2.14.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:eee6d4fbbbc368e6cdd0772734d6249128d957b3b8ad47a100789009f4de7083", size = 443631, upload-time = "2025-10-13T16:15:02.473Z" }, + { url = "https://files.pythonhosted.org/packages/7b/6c/78f83b6219f61c2c22d71ab6e6c2d4e5d7381334c6c29b77204e59edb039/numexpr-2.14.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3a2839efa25f3c8d4133252ea7342d8f81226c7c4dda81f97a57e090b9d87a48", size = 1417670, upload-time = "2025-10-13T16:13:33.464Z" }, + { url = "https://files.pythonhosted.org/packages/0e/bb/1ccc9dcaf46281568ce769888bf16294c40e98a5158e4b16c241de31d0d3/numexpr-2.14.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9f9137f1351b310436662b5dc6f4082a245efa8950c3b0d9008028df92fefb9b", size = 1466212, upload-time = "2025-10-13T16:15:12.828Z" }, + { url = "https://files.pythonhosted.org/packages/31/9f/203d82b9e39dadd91d64bca55b3c8ca432e981b822468dcef41a4418626b/numexpr-2.14.1-cp312-cp312-win32.whl", hash = "sha256:36f8d5c1bd1355df93b43d766790f9046cccfc1e32b7c6163f75bcde682cda07", size = 166996, upload-time = "2025-10-13T16:17:10.369Z" }, + { url = "https://files.pythonhosted.org/packages/1f/67/ffe750b5452eb66de788c34e7d21ec6d886abb4d7c43ad1dc88ceb3d998f/numexpr-2.14.1-cp312-cp312-win_amd64.whl", hash = "sha256:fdd886f4b7dbaf167633ee396478f0d0aa58ea2f9e7ccc3c6431019623e8d68f", size = 160187, upload-time = "2025-10-13T16:17:11.974Z" }, + { url = "https://files.pythonhosted.org/packages/73/b4/9f6d637fd79df42be1be29ee7ba1f050fab63b7182cb922a0e08adc12320/numexpr-2.14.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:09078ba73cffe94745abfbcc2d81ab8b4b4e9d7bfbbde6cac2ee5dbf38eee222", size = 162794, upload-time = "2025-10-13T16:16:38.291Z" }, + { url = "https://files.pythonhosted.org/packages/35/ae/d58558d8043de0c49f385ea2fa789e3cfe4d436c96be80200c5292f45f15/numexpr-2.14.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:dce0b5a0447baa7b44bc218ec2d7dcd175b8eee6083605293349c0c1d9b82fb6", size = 152203, upload-time = "2025-10-13T16:16:39.907Z" }, + { url = "https://files.pythonhosted.org/packages/13/65/72b065f9c75baf8f474fd5d2b768350935989d4917db1c6c75b866d4067c/numexpr-2.14.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:06855053de7a3a8425429bd996e8ae3c50b57637ad3e757e0fa0602a7874be30", size = 455860, upload-time = "2025-10-13T16:13:35.811Z" }, + { url = "https://files.pythonhosted.org/packages/fc/f9/c9457652dfe28e2eb898372da2fe786c6db81af9540c0f853ee04a0699cc/numexpr-2.14.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:05f9366d23a2e991fd5a8b5e61a17558f028ba86158a4552f8f239b005cdf83c", size = 446574, upload-time = "2025-10-13T16:15:17.367Z" }, + { url = "https://files.pythonhosted.org/packages/b6/99/8d3879c4d67d3db5560cf2de65ce1778b80b75f6fa415eb5c3e7bd37ba27/numexpr-2.14.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c5f1b1605695778896534dfc6e130d54a65cd52be7ed2cd0cfee3981fd676bf5", size = 1417306, upload-time = "2025-10-13T16:13:42.813Z" }, + { url = "https://files.pythonhosted.org/packages/ea/05/6bddac9f18598ba94281e27a6943093f7d0976544b0cb5d92272c64719bd/numexpr-2.14.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a4ba71db47ea99c659d88ee6233fa77b6dc83392f1d324e0c90ddf617ae3f421", size = 1466145, upload-time = "2025-10-13T16:15:27.464Z" }, + { url = "https://files.pythonhosted.org/packages/24/5d/cbeb67aca0c5a76ead13df7e8bd8dd5e0d49145f90da697ba1d9f07005b0/numexpr-2.14.1-cp313-cp313-win32.whl", hash = "sha256:638dce8320f4a1483d5ca4fda69f60a70ed7e66be6e68bc23fb9f1a6b78a9e3b", size = 166996, upload-time = "2025-10-13T16:17:13.803Z" }, + { url = "https://files.pythonhosted.org/packages/cc/23/9281bceaeb282cead95f0aa5f7f222ffc895670ea689cc1398355f6e3001/numexpr-2.14.1-cp313-cp313-win_amd64.whl", hash = "sha256:9fdcd4735121658a313f878fd31136d1bfc6a5b913219e7274e9fca9f8dac3bb", size = 160189, upload-time = "2025-10-13T16:17:15.417Z" }, + { url = "https://files.pythonhosted.org/packages/f3/76/7aac965fd93a56803cbe502aee2adcad667253ae34b0badf6c5af7908b6c/numexpr-2.14.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:557887ad7f5d3c2a40fd7310e50597045a68e66b20a77b3f44d7bc7608523b4b", size = 163524, upload-time = "2025-10-13T16:16:42.213Z" }, + { url = "https://files.pythonhosted.org/packages/58/65/79d592d5e63fbfab3b59a60c386853d9186a44a3fa3c87ba26bdc25b6195/numexpr-2.14.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:af111c8fe6fc55d15e4c7cab11920fc50740d913636d486545b080192cd0ad73", size = 152919, upload-time = "2025-10-13T16:16:44.229Z" }, + { url = "https://files.pythonhosted.org/packages/84/78/3c8335f713d4aeb99fa758d7c62f0be1482d4947ce5b508e2052bb7aeee9/numexpr-2.14.1-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:33265294376e7e2ae4d264d75b798a915d2acf37b9dd2b9405e8b04f84d05cfc", size = 465972, upload-time = "2025-10-13T16:13:45.061Z" }, + { url = "https://files.pythonhosted.org/packages/35/81/9ee5f69b811e8f18746c12d6f71848617684edd3161927f95eee7a305631/numexpr-2.14.1-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:83647d846d3eeeb9a9255311236135286728b398d0d41d35dedb532dca807fe9", size = 456953, upload-time = "2025-10-13T16:15:31.186Z" }, + { url = "https://files.pythonhosted.org/packages/6d/39/9b8bc6e294d85cbb54a634e47b833e9f3276a8bdf7ce92aa808718a0212d/numexpr-2.14.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6e575fd3ad41ddf3355d0c7ef6bd0168619dc1779a98fe46693cad5e95d25e6e", size = 1426199, upload-time = "2025-10-13T16:13:48.231Z" }, + { url = "https://files.pythonhosted.org/packages/1e/ce/0d4fcd31ab49319740d934fba1734d7dad13aa485532ca754e555ca16c8b/numexpr-2.14.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:67ea4771029ce818573b1998f5ca416bd255156feea017841b86176a938f7d19", size = 1474214, upload-time = "2025-10-13T16:15:38.893Z" }, + { url = "https://files.pythonhosted.org/packages/b7/47/b2a93cbdb3ba4e009728ad1b9ef1550e2655ea2c86958ebaf03b9615f275/numexpr-2.14.1-cp313-cp313t-win32.whl", hash = "sha256:15015d47d3d1487072d58c0e7682ef2eb608321e14099c39d52e2dd689483611", size = 167676, upload-time = "2025-10-13T16:17:17.351Z" }, + { url = "https://files.pythonhosted.org/packages/86/99/ee3accc589ed032eea68e12172515ed96a5568534c213ad109e1f4411df1/numexpr-2.14.1-cp313-cp313t-win_amd64.whl", hash = "sha256:94c711f6d8f17dfb4606842b403699603aa591ab9f6bf23038b488ea9cfb0f09", size = 161096, upload-time = "2025-10-13T16:17:19.174Z" }, + { url = "https://files.pythonhosted.org/packages/ac/36/9db78dfbfdfa1f8bf0872993f1a334cdd8fca5a5b6567e47dcb128bcb7c2/numexpr-2.14.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:ede79f7ff06629f599081de644546ce7324f1581c09b0ac174da88a470d39c21", size = 162848, upload-time = "2025-10-13T16:16:46.216Z" }, + { url = "https://files.pythonhosted.org/packages/13/c1/a5c78ae637402c5550e2e0ba175275d2515d432ec28af0cdc23c9b476e65/numexpr-2.14.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:2eac7a5a2f70b3768c67056445d1ceb4ecd9b853c8eda9563823b551aeaa5082", size = 152270, upload-time = "2025-10-13T16:16:47.92Z" }, + { url = "https://files.pythonhosted.org/packages/9a/ed/aabd8678077848dd9a751c5558c2057839f5a09e2a176d8dfcd0850ee00e/numexpr-2.14.1-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5aedf38d4c0c19d3cecfe0334c3f4099fb496f54c146223d30fa930084bc8574", size = 455918, upload-time = "2025-10-13T16:13:50.338Z" }, + { url = "https://files.pythonhosted.org/packages/88/e1/3db65117f02cdefb0e5e4c440daf1c30beb45051b7f47aded25b7f4f2f34/numexpr-2.14.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:439ec4d57b853792ebe5456e3160312281c3a7071ecac5532ded3278ede614de", size = 446512, upload-time = "2025-10-13T16:15:42.313Z" }, + { url = "https://files.pythonhosted.org/packages/9a/fb/7ceb9ee55b5f67e4a3e4d73d5af4c7e37e3c9f37f54bee90361b64b17e3f/numexpr-2.14.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:e23b87f744e04e302d82ac5e2189ae20a533566aec76a46885376e20b0645bf8", size = 1417845, upload-time = "2025-10-13T16:13:53.836Z" }, + { url = "https://files.pythonhosted.org/packages/45/2d/9b5764d0eafbbb2889288f80de773791358acf6fad1a55767538d8b79599/numexpr-2.14.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:44f84e0e5af219dbb62a081606156420815890e041b87252fbcea5df55214c4c", size = 1466211, upload-time = "2025-10-13T16:15:48.985Z" }, + { url = "https://files.pythonhosted.org/packages/5d/21/204db708eccd71aa8bc55bcad55bc0fc6c5a4e01ad78e14ee5714a749386/numexpr-2.14.1-cp314-cp314-win32.whl", hash = "sha256:1f1a5e817c534539351aa75d26088e9e1e0ef1b3a6ab484047618a652ccc4fc3", size = 168835, upload-time = "2025-10-13T16:17:20.82Z" }, + { url = "https://files.pythonhosted.org/packages/4f/3e/d83e9401a1c3449a124f7d4b3fb44084798e0d30f7c11e60712d9b94cf11/numexpr-2.14.1-cp314-cp314-win_amd64.whl", hash = "sha256:587c41509bc373dfb1fe6086ba55a73147297247bedb6d588cda69169fc412f2", size = 162608, upload-time = "2025-10-13T16:17:22.228Z" }, + { url = "https://files.pythonhosted.org/packages/7f/d6/ec947806bb57836d6379a8c8a253c2aeaa602b12fef2336bfd2462bb4ed5/numexpr-2.14.1-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:ec368819502b64f190c3f71be14a304780b5935c42aae5bf22c27cc2cbba70b5", size = 163525, upload-time = "2025-10-13T16:16:50.133Z" }, + { url = "https://files.pythonhosted.org/packages/0d/77/048f30dcf661a3d52963a88c29b52b6d5ce996d38e9313a56a922451c1e0/numexpr-2.14.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7e87f6d203ac57239de32261c941e9748f9309cbc0da6295eabd0c438b920d3a", size = 152917, upload-time = "2025-10-13T16:16:52.055Z" }, + { url = "https://files.pythonhosted.org/packages/9e/d3/956a13e628d722d649fbf2fded615134a308c082e122a48bad0e90a99ce9/numexpr-2.14.1-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:dd72d8c2a165fe45ea7650b16eb8cc1792a94a722022006bb97c86fe51fd2091", size = 466242, upload-time = "2025-10-13T16:13:55.795Z" }, + { url = "https://files.pythonhosted.org/packages/d6/dd/abe848678d82486940892f2cacf39e82eec790e8930d4d713d3f9191063b/numexpr-2.14.1-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:70d80fcb418a54ca208e9a38e58ddc425c07f66485176b261d9a67c7f2864f73", size = 457149, upload-time = "2025-10-13T16:15:52.036Z" }, + { url = "https://files.pythonhosted.org/packages/fd/bb/797b583b5fb9da5700a5708ca6eb4f889c94d81abb28de4d642c0f4b3258/numexpr-2.14.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:edea2f20c2040df8b54ee8ca8ebda63de9545b2112872466118e9df4d0ae99f3", size = 1426493, upload-time = "2025-10-13T16:13:59.244Z" }, + { url = "https://files.pythonhosted.org/packages/77/c4/0519ab028fdc35e3e7ee700def7f2b4631b175cd9e1202bd7966c1695c33/numexpr-2.14.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:790447be6879a6c51b9545f79612d24c9ea0a41d537a84e15e6a8ddef0b6268e", size = 1474413, upload-time = "2025-10-13T16:15:59.211Z" }, + { url = "https://files.pythonhosted.org/packages/d4/4a/33044878c8f4a75213cfe9c11d4c02058bb710a7a063fe14f362e8de1077/numexpr-2.14.1-cp314-cp314t-win32.whl", hash = "sha256:538961096c2300ea44240209181e31fae82759d26b51713b589332b9f2a4117e", size = 169502, upload-time = "2025-10-13T16:17:23.829Z" }, + { url = "https://files.pythonhosted.org/packages/41/a2/5a1a2c72528b429337f49911b18c302ecd36eeab00f409147e1aa4ae4519/numexpr-2.14.1-cp314-cp314t-win_amd64.whl", hash = "sha256:a40b350cd45b4446076fa11843fa32bbe07024747aeddf6d467290bf9011b392", size = 163589, upload-time = "2025-10-13T16:17:25.696Z" }, +] + +[[package]] +name = "numpy" +version = "2.4.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/57/fd/0005efbd0af48e55eb3c7208af93f2862d4b1a56cd78e84309a2d959208d/numpy-2.4.2.tar.gz", hash = "sha256:659a6107e31a83c4e33f763942275fd278b21d095094044eb35569e86a21ddae", size = 20723651, upload-time = "2026-01-31T23:13:10.135Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d3/44/71852273146957899753e69986246d6a176061ea183407e95418c2aa4d9a/numpy-2.4.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e7e88598032542bd49af7c4747541422884219056c268823ef6e5e89851c8825", size = 16955478, upload-time = "2026-01-31T23:10:25.623Z" }, + { url = "https://files.pythonhosted.org/packages/74/41/5d17d4058bd0cd96bcbd4d9ff0fb2e21f52702aab9a72e4a594efa18692f/numpy-2.4.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7edc794af8b36ca37ef5fcb5e0d128c7e0595c7b96a2318d1badb6fcd8ee86b1", size = 14965467, upload-time = "2026-01-31T23:10:28.186Z" }, + { url = "https://files.pythonhosted.org/packages/49/48/fb1ce8136c19452ed15f033f8aee91d5defe515094e330ce368a0647846f/numpy-2.4.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:6e9f61981ace1360e42737e2bae58b27bf28a1b27e781721047d84bd754d32e7", size = 5475172, upload-time = "2026-01-31T23:10:30.848Z" }, + { url = "https://files.pythonhosted.org/packages/40/a9/3feb49f17bbd1300dd2570432961f5c8a4ffeff1db6f02c7273bd020a4c9/numpy-2.4.2-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:cb7bbb88aa74908950d979eeaa24dbdf1a865e3c7e45ff0121d8f70387b55f73", size = 6805145, upload-time = "2026-01-31T23:10:32.352Z" }, + { url = "https://files.pythonhosted.org/packages/3f/39/fdf35cbd6d6e2fcad42fcf85ac04a85a0d0fbfbf34b30721c98d602fd70a/numpy-2.4.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4f069069931240b3fc703f1e23df63443dbd6390614c8c44a87d96cd0ec81eb1", size = 15966084, upload-time = "2026-01-31T23:10:34.502Z" }, + { url = "https://files.pythonhosted.org/packages/1b/46/6fa4ea94f1ddf969b2ee941290cca6f1bfac92b53c76ae5f44afe17ceb69/numpy-2.4.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c02ef4401a506fb60b411467ad501e1429a3487abca4664871d9ae0b46c8ba32", size = 16899477, upload-time = "2026-01-31T23:10:37.075Z" }, + { url = "https://files.pythonhosted.org/packages/09/a1/2a424e162b1a14a5bd860a464ab4e07513916a64ab1683fae262f735ccd2/numpy-2.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2653de5c24910e49c2b106499803124dde62a5a1fe0eedeaecf4309a5f639390", size = 17323429, upload-time = "2026-01-31T23:10:39.704Z" }, + { url = "https://files.pythonhosted.org/packages/ce/a2/73014149ff250628df72c58204822ac01d768697913881aacf839ff78680/numpy-2.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1ae241bbfc6ae276f94a170b14785e561cb5e7f626b6688cf076af4110887413", size = 18635109, upload-time = "2026-01-31T23:10:41.924Z" }, + { url = "https://files.pythonhosted.org/packages/6c/0c/73e8be2f1accd56df74abc1c5e18527822067dced5ec0861b5bb882c2ce0/numpy-2.4.2-cp311-cp311-win32.whl", hash = "sha256:df1b10187212b198dd45fa943d8985a3c8cf854aed4923796e0e019e113a1bda", size = 6237915, upload-time = "2026-01-31T23:10:45.26Z" }, + { url = "https://files.pythonhosted.org/packages/76/ae/e0265e0163cf127c24c3969d29f1c4c64551a1e375d95a13d32eab25d364/numpy-2.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:b9c618d56a29c9cb1c4da979e9899be7578d2e0b3c24d52079c166324c9e8695", size = 12607972, upload-time = "2026-01-31T23:10:47.021Z" }, + { url = "https://files.pythonhosted.org/packages/29/a5/c43029af9b8014d6ea157f192652c50042e8911f4300f8f6ed3336bf437f/numpy-2.4.2-cp311-cp311-win_arm64.whl", hash = "sha256:47c5a6ed21d9452b10227e5e8a0e1c22979811cad7dcc19d8e3e2fb8fa03f1a3", size = 10485763, upload-time = "2026-01-31T23:10:50.087Z" }, + { url = "https://files.pythonhosted.org/packages/51/6e/6f394c9c77668153e14d4da83bcc247beb5952f6ead7699a1a2992613bea/numpy-2.4.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:21982668592194c609de53ba4933a7471880ccbaadcc52352694a59ecc860b3a", size = 16667963, upload-time = "2026-01-31T23:10:52.147Z" }, + { url = "https://files.pythonhosted.org/packages/1f/f8/55483431f2b2fd015ae6ed4fe62288823ce908437ed49db5a03d15151678/numpy-2.4.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40397bda92382fcec844066efb11f13e1c9a3e2a8e8f318fb72ed8b6db9f60f1", size = 14693571, upload-time = "2026-01-31T23:10:54.789Z" }, + { url = "https://files.pythonhosted.org/packages/2f/20/18026832b1845cdc82248208dd929ca14c9d8f2bac391f67440707fff27c/numpy-2.4.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:b3a24467af63c67829bfaa61eecf18d5432d4f11992688537be59ecd6ad32f5e", size = 5203469, upload-time = "2026-01-31T23:10:57.343Z" }, + { url = "https://files.pythonhosted.org/packages/7d/33/2eb97c8a77daaba34eaa3fa7241a14ac5f51c46a6bd5911361b644c4a1e2/numpy-2.4.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:805cc8de9fd6e7a22da5aed858e0ab16be5a4db6c873dde1d7451c541553aa27", size = 6550820, upload-time = "2026-01-31T23:10:59.429Z" }, + { url = "https://files.pythonhosted.org/packages/b1/91/b97fdfd12dc75b02c44e26c6638241cc004d4079a0321a69c62f51470c4c/numpy-2.4.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6d82351358ffbcdcd7b686b90742a9b86632d6c1c051016484fa0b326a0a1548", size = 15663067, upload-time = "2026-01-31T23:11:01.291Z" }, + { url = "https://files.pythonhosted.org/packages/f5/c6/a18e59f3f0b8071cc85cbc8d80cd02d68aa9710170b2553a117203d46936/numpy-2.4.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e35d3e0144137d9fdae62912e869136164534d64a169f86438bc9561b6ad49f", size = 16619782, upload-time = "2026-01-31T23:11:03.669Z" }, + { url = "https://files.pythonhosted.org/packages/b7/83/9751502164601a79e18847309f5ceec0b1446d7b6aa12305759b72cf98b2/numpy-2.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:adb6ed2ad29b9e15321d167d152ee909ec73395901b70936f029c3bc6d7f4460", size = 17013128, upload-time = "2026-01-31T23:11:05.913Z" }, + { url = "https://files.pythonhosted.org/packages/61/c4/c4066322256ec740acc1c8923a10047818691d2f8aec254798f3dd90f5f2/numpy-2.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8906e71fd8afcb76580404e2a950caef2685df3d2a57fe82a86ac8d33cc007ba", size = 18345324, upload-time = "2026-01-31T23:11:08.248Z" }, + { url = "https://files.pythonhosted.org/packages/ab/af/6157aa6da728fa4525a755bfad486ae7e3f76d4c1864138003eb84328497/numpy-2.4.2-cp312-cp312-win32.whl", hash = "sha256:ec055f6dae239a6299cace477b479cca2fc125c5675482daf1dd886933a1076f", size = 5960282, upload-time = "2026-01-31T23:11:10.497Z" }, + { url = "https://files.pythonhosted.org/packages/92/0f/7ceaaeaacb40567071e94dbf2c9480c0ae453d5bb4f52bea3892c39dc83c/numpy-2.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:209fae046e62d0ce6435fcfe3b1a10537e858249b3d9b05829e2a05218296a85", size = 12314210, upload-time = "2026-01-31T23:11:12.176Z" }, + { url = "https://files.pythonhosted.org/packages/2f/a3/56c5c604fae6dd40fa2ed3040d005fca97e91bd320d232ac9931d77ba13c/numpy-2.4.2-cp312-cp312-win_arm64.whl", hash = "sha256:fbde1b0c6e81d56f5dccd95dd4a711d9b95df1ae4009a60887e56b27e8d903fa", size = 10220171, upload-time = "2026-01-31T23:11:14.684Z" }, + { url = "https://files.pythonhosted.org/packages/a1/22/815b9fe25d1d7ae7d492152adbc7226d3eff731dffc38fe970589fcaaa38/numpy-2.4.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:25f2059807faea4b077a2b6837391b5d830864b3543627f381821c646f31a63c", size = 16663696, upload-time = "2026-01-31T23:11:17.516Z" }, + { url = "https://files.pythonhosted.org/packages/09/f0/817d03a03f93ba9c6c8993de509277d84e69f9453601915e4a69554102a1/numpy-2.4.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bd3a7a9f5847d2fb8c2c6d1c862fa109c31a9abeca1a3c2bd5a64572955b2979", size = 14688322, upload-time = "2026-01-31T23:11:19.883Z" }, + { url = "https://files.pythonhosted.org/packages/da/b4/f805ab79293c728b9a99438775ce51885fd4f31b76178767cfc718701a39/numpy-2.4.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:8e4549f8a3c6d13d55041925e912bfd834285ef1dd64d6bc7d542583355e2e98", size = 5198157, upload-time = "2026-01-31T23:11:22.375Z" }, + { url = "https://files.pythonhosted.org/packages/74/09/826e4289844eccdcd64aac27d13b0fd3f32039915dd5b9ba01baae1f436c/numpy-2.4.2-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:aea4f66ff44dfddf8c2cffd66ba6538c5ec67d389285292fe428cb2c738c8aef", size = 6546330, upload-time = "2026-01-31T23:11:23.958Z" }, + { url = "https://files.pythonhosted.org/packages/19/fb/cbfdbfa3057a10aea5422c558ac57538e6acc87ec1669e666d32ac198da7/numpy-2.4.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c3cd545784805de05aafe1dde61752ea49a359ccba9760c1e5d1c88a93bbf2b7", size = 15660968, upload-time = "2026-01-31T23:11:25.713Z" }, + { url = "https://files.pythonhosted.org/packages/04/dc/46066ce18d01645541f0186877377b9371b8fa8017fa8262002b4ef22612/numpy-2.4.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d0d9b7c93578baafcbc5f0b83eaf17b79d345c6f36917ba0c67f45226911d499", size = 16607311, upload-time = "2026-01-31T23:11:28.117Z" }, + { url = "https://files.pythonhosted.org/packages/14/d9/4b5adfc39a43fa6bf918c6d544bc60c05236cc2f6339847fc5b35e6cb5b0/numpy-2.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f74f0f7779cc7ae07d1810aab8ac6b1464c3eafb9e283a40da7309d5e6e48fbb", size = 17012850, upload-time = "2026-01-31T23:11:30.888Z" }, + { url = "https://files.pythonhosted.org/packages/b7/20/adb6e6adde6d0130046e6fdfb7675cc62bc2f6b7b02239a09eb58435753d/numpy-2.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c7ac672d699bf36275c035e16b65539931347d68b70667d28984c9fb34e07fa7", size = 18334210, upload-time = "2026-01-31T23:11:33.214Z" }, + { url = "https://files.pythonhosted.org/packages/78/0e/0a73b3dff26803a8c02baa76398015ea2a5434d9b8265a7898a6028c1591/numpy-2.4.2-cp313-cp313-win32.whl", hash = "sha256:8e9afaeb0beff068b4d9cd20d322ba0ee1cecfb0b08db145e4ab4dd44a6b5110", size = 5958199, upload-time = "2026-01-31T23:11:35.385Z" }, + { url = "https://files.pythonhosted.org/packages/43/bc/6352f343522fcb2c04dbaf94cb30cca6fd32c1a750c06ad6231b4293708c/numpy-2.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:7df2de1e4fba69a51c06c28f5a3de36731eb9639feb8e1cf7e4a7b0daf4cf622", size = 12310848, upload-time = "2026-01-31T23:11:38.001Z" }, + { url = "https://files.pythonhosted.org/packages/6e/8d/6da186483e308da5da1cc6918ce913dcfe14ffde98e710bfeff2a6158d4e/numpy-2.4.2-cp313-cp313-win_arm64.whl", hash = "sha256:0fece1d1f0a89c16b03442eae5c56dc0be0c7883b5d388e0c03f53019a4bfd71", size = 10221082, upload-time = "2026-01-31T23:11:40.392Z" }, + { url = "https://files.pythonhosted.org/packages/25/a1/9510aa43555b44781968935c7548a8926274f815de42ad3997e9e83680dd/numpy-2.4.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5633c0da313330fd20c484c78cdd3f9b175b55e1a766c4a174230c6b70ad8262", size = 14815866, upload-time = "2026-01-31T23:11:42.495Z" }, + { url = "https://files.pythonhosted.org/packages/36/30/6bbb5e76631a5ae46e7923dd16ca9d3f1c93cfa8d4ed79a129814a9d8db3/numpy-2.4.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d9f64d786b3b1dd742c946c42d15b07497ed14af1a1f3ce840cce27daa0ce913", size = 5325631, upload-time = "2026-01-31T23:11:44.7Z" }, + { url = "https://files.pythonhosted.org/packages/46/00/3a490938800c1923b567b3a15cd17896e68052e2145d8662aaf3e1ffc58f/numpy-2.4.2-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:b21041e8cb6a1eb5312dd1d2f80a94d91efffb7a06b70597d44f1bd2dfc315ab", size = 6646254, upload-time = "2026-01-31T23:11:46.341Z" }, + { url = "https://files.pythonhosted.org/packages/d3/e9/fac0890149898a9b609caa5af7455a948b544746e4b8fe7c212c8edd71f8/numpy-2.4.2-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:00ab83c56211a1d7c07c25e3217ea6695e50a3e2f255053686b081dc0b091a82", size = 15720138, upload-time = "2026-01-31T23:11:48.082Z" }, + { url = "https://files.pythonhosted.org/packages/ea/5c/08887c54e68e1e28df53709f1893ce92932cc6f01f7c3d4dc952f61ffd4e/numpy-2.4.2-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2fb882da679409066b4603579619341c6d6898fc83a8995199d5249f986e8e8f", size = 16655398, upload-time = "2026-01-31T23:11:50.293Z" }, + { url = "https://files.pythonhosted.org/packages/4d/89/253db0fa0e66e9129c745e4ef25631dc37d5f1314dad2b53e907b8538e6d/numpy-2.4.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:66cb9422236317f9d44b67b4d18f44efe6e9c7f8794ac0462978513359461554", size = 17079064, upload-time = "2026-01-31T23:11:52.927Z" }, + { url = "https://files.pythonhosted.org/packages/2a/d5/cbade46ce97c59c6c3da525e8d95b7abe8a42974a1dc5c1d489c10433e88/numpy-2.4.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:0f01dcf33e73d80bd8dc0f20a71303abbafa26a19e23f6b68d1aa9990af90257", size = 18379680, upload-time = "2026-01-31T23:11:55.22Z" }, + { url = "https://files.pythonhosted.org/packages/40/62/48f99ae172a4b63d981babe683685030e8a3df4f246c893ea5c6ef99f018/numpy-2.4.2-cp313-cp313t-win32.whl", hash = "sha256:52b913ec40ff7ae845687b0b34d8d93b60cb66dcee06996dd5c99f2fc9328657", size = 6082433, upload-time = "2026-01-31T23:11:58.096Z" }, + { url = "https://files.pythonhosted.org/packages/07/38/e054a61cfe48ad9f1ed0d188e78b7e26859d0b60ef21cd9de4897cdb5326/numpy-2.4.2-cp313-cp313t-win_amd64.whl", hash = "sha256:5eea80d908b2c1f91486eb95b3fb6fab187e569ec9752ab7d9333d2e66bf2d6b", size = 12451181, upload-time = "2026-01-31T23:11:59.782Z" }, + { url = "https://files.pythonhosted.org/packages/6e/a4/a05c3a6418575e185dd84d0b9680b6bb2e2dc3e4202f036b7b4e22d6e9dc/numpy-2.4.2-cp313-cp313t-win_arm64.whl", hash = "sha256:fd49860271d52127d61197bb50b64f58454e9f578cb4b2c001a6de8b1f50b0b1", size = 10290756, upload-time = "2026-01-31T23:12:02.438Z" }, + { url = "https://files.pythonhosted.org/packages/18/88/b7df6050bf18fdcfb7046286c6535cabbdd2064a3440fca3f069d319c16e/numpy-2.4.2-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:444be170853f1f9d528428eceb55f12918e4fda5d8805480f36a002f1415e09b", size = 16663092, upload-time = "2026-01-31T23:12:04.521Z" }, + { url = "https://files.pythonhosted.org/packages/25/7a/1fee4329abc705a469a4afe6e69b1ef7e915117747886327104a8493a955/numpy-2.4.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:d1240d50adff70c2a88217698ca844723068533f3f5c5fa6ee2e3220e3bdb000", size = 14698770, upload-time = "2026-01-31T23:12:06.96Z" }, + { url = "https://files.pythonhosted.org/packages/fb/0b/f9e49ba6c923678ad5bc38181c08ac5e53b7a5754dbca8e581aa1a56b1ff/numpy-2.4.2-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:7cdde6de52fb6664b00b056341265441192d1291c130e99183ec0d4b110ff8b1", size = 5208562, upload-time = "2026-01-31T23:12:09.632Z" }, + { url = "https://files.pythonhosted.org/packages/7d/12/d7de8f6f53f9bb76997e5e4c069eda2051e3fe134e9181671c4391677bb2/numpy-2.4.2-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:cda077c2e5b780200b6b3e09d0b42205a3d1c68f30c6dceb90401c13bff8fe74", size = 6543710, upload-time = "2026-01-31T23:12:11.969Z" }, + { url = "https://files.pythonhosted.org/packages/09/63/c66418c2e0268a31a4cf8a8b512685748200f8e8e8ec6c507ce14e773529/numpy-2.4.2-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d30291931c915b2ab5717c2974bb95ee891a1cf22ebc16a8006bd59cd210d40a", size = 15677205, upload-time = "2026-01-31T23:12:14.33Z" }, + { url = "https://files.pythonhosted.org/packages/5d/6c/7f237821c9642fb2a04d2f1e88b4295677144ca93285fd76eff3bcba858d/numpy-2.4.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bba37bc29d4d85761deed3954a1bc62be7cf462b9510b51d367b769a8c8df325", size = 16611738, upload-time = "2026-01-31T23:12:16.525Z" }, + { url = "https://files.pythonhosted.org/packages/c2/a7/39c4cdda9f019b609b5c473899d87abff092fc908cfe4d1ecb2fcff453b0/numpy-2.4.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b2f0073ed0868db1dcd86e052d37279eef185b9c8db5bf61f30f46adac63c909", size = 17028888, upload-time = "2026-01-31T23:12:19.306Z" }, + { url = "https://files.pythonhosted.org/packages/da/b3/e84bb64bdfea967cc10950d71090ec2d84b49bc691df0025dddb7c26e8e3/numpy-2.4.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:7f54844851cdb630ceb623dcec4db3240d1ac13d4990532446761baede94996a", size = 18339556, upload-time = "2026-01-31T23:12:21.816Z" }, + { url = "https://files.pythonhosted.org/packages/88/f5/954a291bc1192a27081706862ac62bb5920fbecfbaa302f64682aa90beed/numpy-2.4.2-cp314-cp314-win32.whl", hash = "sha256:12e26134a0331d8dbd9351620f037ec470b7c75929cb8a1537f6bfe411152a1a", size = 6006899, upload-time = "2026-01-31T23:12:24.14Z" }, + { url = "https://files.pythonhosted.org/packages/05/cb/eff72a91b2efdd1bc98b3b8759f6a1654aa87612fc86e3d87d6fe4f948c4/numpy-2.4.2-cp314-cp314-win_amd64.whl", hash = "sha256:068cdb2d0d644cdb45670810894f6a0600797a69c05f1ac478e8d31670b8ee75", size = 12443072, upload-time = "2026-01-31T23:12:26.33Z" }, + { url = "https://files.pythonhosted.org/packages/37/75/62726948db36a56428fce4ba80a115716dc4fad6a3a4352487f8bb950966/numpy-2.4.2-cp314-cp314-win_arm64.whl", hash = "sha256:6ed0be1ee58eef41231a5c943d7d1375f093142702d5723ca2eb07db9b934b05", size = 10494886, upload-time = "2026-01-31T23:12:28.488Z" }, + { url = "https://files.pythonhosted.org/packages/36/2f/ee93744f1e0661dc267e4b21940870cabfae187c092e1433b77b09b50ac4/numpy-2.4.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:98f16a80e917003a12c0580f97b5f875853ebc33e2eaa4bccfc8201ac6869308", size = 14818567, upload-time = "2026-01-31T23:12:30.709Z" }, + { url = "https://files.pythonhosted.org/packages/a7/24/6535212add7d76ff938d8bdc654f53f88d35cddedf807a599e180dcb8e66/numpy-2.4.2-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:20abd069b9cda45874498b245c8015b18ace6de8546bf50dfa8cea1696ed06ef", size = 5328372, upload-time = "2026-01-31T23:12:32.962Z" }, + { url = "https://files.pythonhosted.org/packages/5e/9d/c48f0a035725f925634bf6b8994253b43f2047f6778a54147d7e213bc5a7/numpy-2.4.2-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:e98c97502435b53741540a5717a6749ac2ada901056c7db951d33e11c885cc7d", size = 6649306, upload-time = "2026-01-31T23:12:34.797Z" }, + { url = "https://files.pythonhosted.org/packages/81/05/7c73a9574cd4a53a25907bad38b59ac83919c0ddc8234ec157f344d57d9a/numpy-2.4.2-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:da6cad4e82cb893db4b69105c604d805e0c3ce11501a55b5e9f9083b47d2ffe8", size = 15722394, upload-time = "2026-01-31T23:12:36.565Z" }, + { url = "https://files.pythonhosted.org/packages/35/fa/4de10089f21fc7d18442c4a767ab156b25c2a6eaf187c0db6d9ecdaeb43f/numpy-2.4.2-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e4424677ce4b47fe73c8b5556d876571f7c6945d264201180db2dc34f676ab5", size = 16653343, upload-time = "2026-01-31T23:12:39.188Z" }, + { url = "https://files.pythonhosted.org/packages/b8/f9/d33e4ffc857f3763a57aa85650f2e82486832d7492280ac21ba9efda80da/numpy-2.4.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:2b8f157c8a6f20eb657e240f8985cc135598b2b46985c5bccbde7616dc9c6b1e", size = 17078045, upload-time = "2026-01-31T23:12:42.041Z" }, + { url = "https://files.pythonhosted.org/packages/c8/b8/54bdb43b6225badbea6389fa038c4ef868c44f5890f95dd530a218706da3/numpy-2.4.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5daf6f3914a733336dab21a05cdec343144600e964d2fcdabaac0c0269874b2a", size = 18380024, upload-time = "2026-01-31T23:12:44.331Z" }, + { url = "https://files.pythonhosted.org/packages/a5/55/6e1a61ded7af8df04016d81b5b02daa59f2ea9252ee0397cb9f631efe9e5/numpy-2.4.2-cp314-cp314t-win32.whl", hash = "sha256:8c50dd1fc8826f5b26a5ee4d77ca55d88a895f4e4819c7ecc2a9f5905047a443", size = 6153937, upload-time = "2026-01-31T23:12:47.229Z" }, + { url = "https://files.pythonhosted.org/packages/45/aa/fa6118d1ed6d776b0983f3ceac9b1a5558e80df9365b1c3aa6d42bf9eee4/numpy-2.4.2-cp314-cp314t-win_amd64.whl", hash = "sha256:fcf92bee92742edd401ba41135185866f7026c502617f422eb432cfeca4fe236", size = 12631844, upload-time = "2026-01-31T23:12:48.997Z" }, + { url = "https://files.pythonhosted.org/packages/32/0a/2ec5deea6dcd158f254a7b372fb09cfba5719419c8d66343bab35237b3fb/numpy-2.4.2-cp314-cp314t-win_arm64.whl", hash = "sha256:1f92f53998a17265194018d1cc321b2e96e900ca52d54c7c77837b71b9465181", size = 10565379, upload-time = "2026-01-31T23:12:51.345Z" }, + { url = "https://files.pythonhosted.org/packages/f4/f8/50e14d36d915ef64d8f8bc4a087fc8264d82c785eda6711f80ab7e620335/numpy-2.4.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:89f7268c009bc492f506abd6f5265defa7cb3f7487dc21d357c3d290add45082", size = 16833179, upload-time = "2026-01-31T23:12:53.5Z" }, + { url = "https://files.pythonhosted.org/packages/17/17/809b5cad63812058a8189e91a1e2d55a5a18fd04611dbad244e8aeae465c/numpy-2.4.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:e6dee3bb76aa4009d5a912180bf5b2de012532998d094acee25d9cb8dee3e44a", size = 14889755, upload-time = "2026-01-31T23:12:55.933Z" }, + { url = "https://files.pythonhosted.org/packages/3e/ea/181b9bcf7627fc8371720316c24db888dcb9829b1c0270abf3d288b2e29b/numpy-2.4.2-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:cd2bd2bbed13e213d6b55dc1d035a4f91748a7d3edc9480c13898b0353708920", size = 5399500, upload-time = "2026-01-31T23:12:58.671Z" }, + { url = "https://files.pythonhosted.org/packages/33/9f/413adf3fc955541ff5536b78fcf0754680b3c6d95103230252a2c9408d23/numpy-2.4.2-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:cf28c0c1d4c4bf00f509fa7eb02c58d7caf221b50b467bcb0d9bbf1584d5c821", size = 6714252, upload-time = "2026-01-31T23:13:00.518Z" }, + { url = "https://files.pythonhosted.org/packages/91/da/643aad274e29ccbdf42ecd94dafe524b81c87bcb56b83872d54827f10543/numpy-2.4.2-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e04ae107ac591763a47398bb45b568fc38f02dbc4aa44c063f67a131f99346cb", size = 15797142, upload-time = "2026-01-31T23:13:02.219Z" }, + { url = "https://files.pythonhosted.org/packages/66/27/965b8525e9cb5dc16481b30a1b3c21e50c7ebf6e9dbd48d0c4d0d5089c7e/numpy-2.4.2-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:602f65afdef699cda27ec0b9224ae5dc43e328f4c24c689deaf77133dbee74d0", size = 16727979, upload-time = "2026-01-31T23:13:04.62Z" }, + { url = "https://files.pythonhosted.org/packages/de/e5/b7d20451657664b07986c2f6e3be564433f5dcaf3482d68eaecd79afaf03/numpy-2.4.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:be71bf1edb48ebbbf7f6337b5bfd2f895d1902f6335a5830b20141fc126ffba0", size = 12502577, upload-time = "2026-01-31T23:13:07.08Z" }, +] + +[[package]] +name = "orjson" +version = "3.11.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/53/45/b268004f745ede84e5798b48ee12b05129d19235d0e15267aa57dcdb400b/orjson-3.11.7.tar.gz", hash = "sha256:9b1a67243945819ce55d24a30b59d6a168e86220452d2c96f4d1f093e71c0c49", size = 6144992, upload-time = "2026-02-02T15:38:49.29Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/37/02/da6cb01fc6087048d7f61522c327edf4250f1683a58a839fdcc435746dd5/orjson-3.11.7-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:9487abc2c2086e7c8eb9a211d2ce8855bae0e92586279d0d27b341d5ad76c85c", size = 228664, upload-time = "2026-02-02T15:37:25.542Z" }, + { url = "https://files.pythonhosted.org/packages/c1/c2/5885e7a5881dba9a9af51bc564e8967225a642b3e03d089289a35054e749/orjson-3.11.7-cp311-cp311-macosx_15_0_arm64.whl", hash = "sha256:79cacb0b52f6004caf92405a7e1f11e6e2de8bdf9019e4f76b44ba045125cd6b", size = 125344, upload-time = "2026-02-02T15:37:26.92Z" }, + { url = "https://files.pythonhosted.org/packages/a4/1d/4e7688de0a92d1caf600dfd5fb70b4c5bfff51dfa61ac555072ef2d0d32a/orjson-3.11.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c2e85fe4698b6a56d5e2ebf7ae87544d668eb6bde1ad1226c13f44663f20ec9e", size = 128404, upload-time = "2026-02-02T15:37:28.108Z" }, + { url = "https://files.pythonhosted.org/packages/2f/b2/ec04b74ae03a125db7bd69cffd014b227b7f341e3261bf75b5eb88a1aa92/orjson-3.11.7-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b8d14b71c0b12963fe8a62aac87119f1afdf4cb88a400f61ca5ae581449efcb5", size = 123677, upload-time = "2026-02-02T15:37:30.287Z" }, + { url = "https://files.pythonhosted.org/packages/4c/69/f95bdf960605f08f827f6e3291fe243d8aa9c5c9ff017a8d7232209184c3/orjson-3.11.7-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91c81ef070c8f3220054115e1ef468b1c9ce8497b4e526cb9f68ab4dc0a7ac62", size = 128950, upload-time = "2026-02-02T15:37:31.595Z" }, + { url = "https://files.pythonhosted.org/packages/a4/1b/de59c57bae1d148ef298852abd31909ac3089cff370dfd4cd84cc99cbc42/orjson-3.11.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:411ebaf34d735e25e358a6d9e7978954a9c9d58cfb47bc6683cdc3964cd2f910", size = 141756, upload-time = "2026-02-02T15:37:32.985Z" }, + { url = "https://files.pythonhosted.org/packages/ee/9e/9decc59f4499f695f65c650f6cfa6cd4c37a3fbe8fa235a0a3614cb54386/orjson-3.11.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a16bcd08ab0bcdfc7e8801d9c4a9cc17e58418e4d48ddc6ded4e9e4b1a94062b", size = 130812, upload-time = "2026-02-02T15:37:34.204Z" }, + { url = "https://files.pythonhosted.org/packages/28/e6/59f932bcabd1eac44e334fe8e3281a92eacfcb450586e1f4bde0423728d8/orjson-3.11.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c0b51672e466fd7e56230ffbae7f1639e18d0ce023351fb75da21b71bc2c960", size = 133444, upload-time = "2026-02-02T15:37:35.446Z" }, + { url = "https://files.pythonhosted.org/packages/f1/36/b0f05c0eaa7ca30bc965e37e6a2956b0d67adb87a9872942d3568da846ae/orjson-3.11.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:136dcd6a2e796dfd9ffca9fc027d778567b0b7c9968d092842d3c323cef88aa8", size = 138609, upload-time = "2026-02-02T15:37:36.657Z" }, + { url = "https://files.pythonhosted.org/packages/b8/03/58ec7d302b8d86944c60c7b4b82975d5161fcce4c9bc8c6cb1d6741b6115/orjson-3.11.7-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:7ba61079379b0ae29e117db13bda5f28d939766e410d321ec1624afc6a0b0504", size = 408918, upload-time = "2026-02-02T15:37:38.076Z" }, + { url = "https://files.pythonhosted.org/packages/06/3a/868d65ef9a8b99be723bd510de491349618abd9f62c826cf206d962db295/orjson-3.11.7-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0527a4510c300e3b406591b0ba69b5dc50031895b0a93743526a3fc45f59d26e", size = 143998, upload-time = "2026-02-02T15:37:39.706Z" }, + { url = "https://files.pythonhosted.org/packages/5b/c7/1e18e1c83afe3349f4f6dc9e14910f0ae5f82eac756d1412ea4018938535/orjson-3.11.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a709e881723c9b18acddcfb8ba357322491ad553e277cf467e1e7e20e2d90561", size = 134802, upload-time = "2026-02-02T15:37:41.002Z" }, + { url = "https://files.pythonhosted.org/packages/d4/0b/ccb7ee1a65b37e8eeb8b267dc953561d72370e85185e459616d4345bab34/orjson-3.11.7-cp311-cp311-win32.whl", hash = "sha256:c43b8b5bab288b6b90dac410cca7e986a4fa747a2e8f94615aea407da706980d", size = 127828, upload-time = "2026-02-02T15:37:42.241Z" }, + { url = "https://files.pythonhosted.org/packages/af/9e/55c776dffda3f381e0f07d010a4f5f3902bf48eaba1bb7684d301acd4924/orjson-3.11.7-cp311-cp311-win_amd64.whl", hash = "sha256:6543001328aa857187f905308a028935864aefe9968af3848401b6fe80dbb471", size = 124941, upload-time = "2026-02-02T15:37:43.444Z" }, + { url = "https://files.pythonhosted.org/packages/aa/8e/424a620fa7d263b880162505fb107ef5e0afaa765b5b06a88312ac291560/orjson-3.11.7-cp311-cp311-win_arm64.whl", hash = "sha256:1ee5cc7160a821dfe14f130bc8e63e7611051f964b463d9e2a3a573204446a4d", size = 126245, upload-time = "2026-02-02T15:37:45.18Z" }, + { url = "https://files.pythonhosted.org/packages/80/bf/76f4f1665f6983385938f0e2a5d7efa12a58171b8456c252f3bae8a4cf75/orjson-3.11.7-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:bd03ea7606833655048dab1a00734a2875e3e86c276e1d772b2a02556f0d895f", size = 228545, upload-time = "2026-02-02T15:37:46.376Z" }, + { url = "https://files.pythonhosted.org/packages/79/53/6c72c002cb13b5a978a068add59b25a8bdf2800ac1c9c8ecdb26d6d97064/orjson-3.11.7-cp312-cp312-macosx_15_0_arm64.whl", hash = "sha256:89e440ebc74ce8ab5c7bc4ce6757b4a6b1041becb127df818f6997b5c71aa60b", size = 125224, upload-time = "2026-02-02T15:37:47.697Z" }, + { url = "https://files.pythonhosted.org/packages/2c/83/10e48852865e5dd151bdfe652c06f7da484578ed02c5fca938e3632cb0b8/orjson-3.11.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ede977b5fe5ac91b1dffc0a517ca4542d2ec8a6a4ff7b2652d94f640796342a", size = 128154, upload-time = "2026-02-02T15:37:48.954Z" }, + { url = "https://files.pythonhosted.org/packages/6e/52/a66e22a2b9abaa374b4a081d410edab6d1e30024707b87eab7c734afe28d/orjson-3.11.7-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b7b1dae39230a393df353827c855a5f176271c23434cfd2db74e0e424e693e10", size = 123548, upload-time = "2026-02-02T15:37:50.187Z" }, + { url = "https://files.pythonhosted.org/packages/de/38/605d371417021359f4910c496f764c48ceb8997605f8c25bf1dfe58c0ebe/orjson-3.11.7-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed46f17096e28fb28d2975834836a639af7278aa87c84f68ab08fbe5b8bd75fa", size = 129000, upload-time = "2026-02-02T15:37:51.426Z" }, + { url = "https://files.pythonhosted.org/packages/44/98/af32e842b0ffd2335c89714d48ca4e3917b42f5d6ee5537832e069a4b3ac/orjson-3.11.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3726be79e36e526e3d9c1aceaadbfb4a04ee80a72ab47b3f3c17fefb9812e7b8", size = 141686, upload-time = "2026-02-02T15:37:52.607Z" }, + { url = "https://files.pythonhosted.org/packages/96/0b/fc793858dfa54be6feee940c1463370ece34b3c39c1ca0aa3845f5ba9892/orjson-3.11.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0724e265bc548af1dedebd9cb3d24b4e1c1e685a343be43e87ba922a5c5fff2f", size = 130812, upload-time = "2026-02-02T15:37:53.944Z" }, + { url = "https://files.pythonhosted.org/packages/dc/91/98a52415059db3f374757d0b7f0f16e3b5cd5976c90d1c2b56acaea039e6/orjson-3.11.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7745312efa9e11c17fbd3cb3097262d079da26930ae9ae7ba28fb738367cbad", size = 133440, upload-time = "2026-02-02T15:37:55.615Z" }, + { url = "https://files.pythonhosted.org/packages/dc/b6/cb540117bda61791f46381f8c26c8f93e802892830a6055748d3bb1925ab/orjson-3.11.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f904c24bdeabd4298f7a977ef14ca2a022ca921ed670b92ecd16ab6f3d01f867", size = 138386, upload-time = "2026-02-02T15:37:56.814Z" }, + { url = "https://files.pythonhosted.org/packages/63/1a/50a3201c334a7f17c231eee5f841342190723794e3b06293f26e7cf87d31/orjson-3.11.7-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:b9fc4d0f81f394689e0814617aadc4f2ea0e8025f38c226cbf22d3b5ddbf025d", size = 408853, upload-time = "2026-02-02T15:37:58.291Z" }, + { url = "https://files.pythonhosted.org/packages/87/cd/8de1c67d0be44fdc22701e5989c0d015a2adf391498ad42c4dc589cd3013/orjson-3.11.7-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:849e38203e5be40b776ed2718e587faf204d184fc9a008ae441f9442320c0cab", size = 144130, upload-time = "2026-02-02T15:38:00.163Z" }, + { url = "https://files.pythonhosted.org/packages/0f/fe/d605d700c35dd55f51710d159fc54516a280923cd1b7e47508982fbb387d/orjson-3.11.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4682d1db3bcebd2b64757e0ddf9e87ae5f00d29d16c5cdf3a62f561d08cc3dd2", size = 134818, upload-time = "2026-02-02T15:38:01.507Z" }, + { url = "https://files.pythonhosted.org/packages/e4/e4/15ecc67edb3ddb3e2f46ae04475f2d294e8b60c1825fbe28a428b93b3fbd/orjson-3.11.7-cp312-cp312-win32.whl", hash = "sha256:f4f7c956b5215d949a1f65334cf9d7612dde38f20a95f2315deef167def91a6f", size = 127923, upload-time = "2026-02-02T15:38:02.75Z" }, + { url = "https://files.pythonhosted.org/packages/34/70/2e0855361f76198a3965273048c8e50a9695d88cd75811a5b46444895845/orjson-3.11.7-cp312-cp312-win_amd64.whl", hash = "sha256:bf742e149121dc5648ba0a08ea0871e87b660467ef168a3a5e53bc1fbd64bb74", size = 125007, upload-time = "2026-02-02T15:38:04.032Z" }, + { url = "https://files.pythonhosted.org/packages/68/40/c2051bd19fc467610fed469dc29e43ac65891571138f476834ca192bc290/orjson-3.11.7-cp312-cp312-win_arm64.whl", hash = "sha256:26c3b9132f783b7d7903bf1efb095fed8d4a3a85ec0d334ee8beff3d7a4749d5", size = 126089, upload-time = "2026-02-02T15:38:05.297Z" }, + { url = "https://files.pythonhosted.org/packages/89/25/6e0e52cac5aab51d7b6dcd257e855e1dec1c2060f6b28566c509b4665f62/orjson-3.11.7-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:1d98b30cc1313d52d4af17d9c3d307b08389752ec5f2e5febdfada70b0f8c733", size = 228390, upload-time = "2026-02-02T15:38:06.8Z" }, + { url = "https://files.pythonhosted.org/packages/a5/29/a77f48d2fc8a05bbc529e5ff481fb43d914f9e383ea2469d4f3d51df3d00/orjson-3.11.7-cp313-cp313-macosx_15_0_arm64.whl", hash = "sha256:d897e81f8d0cbd2abb82226d1860ad2e1ab3ff16d7b08c96ca00df9d45409ef4", size = 125189, upload-time = "2026-02-02T15:38:08.181Z" }, + { url = "https://files.pythonhosted.org/packages/89/25/0a16e0729a0e6a1504f9d1a13cdd365f030068aab64cec6958396b9969d7/orjson-3.11.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:814be4b49b228cfc0b3c565acf642dd7d13538f966e3ccde61f4f55be3e20785", size = 128106, upload-time = "2026-02-02T15:38:09.41Z" }, + { url = "https://files.pythonhosted.org/packages/66/da/a2e505469d60666a05ab373f1a6322eb671cb2ba3a0ccfc7d4bc97196787/orjson-3.11.7-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d06e5c5fed5caedd2e540d62e5b1c25e8c82431b9e577c33537e5fa4aa909539", size = 123363, upload-time = "2026-02-02T15:38:10.73Z" }, + { url = "https://files.pythonhosted.org/packages/23/bf/ed73f88396ea35c71b38961734ea4a4746f7ca0768bf28fd551d37e48dd0/orjson-3.11.7-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:31c80ce534ac4ea3739c5ee751270646cbc46e45aea7576a38ffec040b4029a1", size = 129007, upload-time = "2026-02-02T15:38:12.138Z" }, + { url = "https://files.pythonhosted.org/packages/73/3c/b05d80716f0225fc9008fbf8ab22841dcc268a626aa550561743714ce3bf/orjson-3.11.7-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f50979824bde13d32b4320eedd513431c921102796d86be3eee0b58e58a3ecd1", size = 141667, upload-time = "2026-02-02T15:38:13.398Z" }, + { url = "https://files.pythonhosted.org/packages/61/e8/0be9b0addd9bf86abfc938e97441dcd0375d494594b1c8ad10fe57479617/orjson-3.11.7-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9e54f3808e2b6b945078c41aa8d9b5834b28c50843846e97807e5adb75fa9705", size = 130832, upload-time = "2026-02-02T15:38:14.698Z" }, + { url = "https://files.pythonhosted.org/packages/c9/ec/c68e3b9021a31d9ec15a94931db1410136af862955854ed5dd7e7e4f5bff/orjson-3.11.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a12b80df61aab7b98b490fe9e4879925ba666fccdfcd175252ce4d9035865ace", size = 133373, upload-time = "2026-02-02T15:38:16.109Z" }, + { url = "https://files.pythonhosted.org/packages/d2/45/f3466739aaafa570cc8e77c6dbb853c48bf56e3b43738020e2661e08b0ac/orjson-3.11.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:996b65230271f1a97026fd0e6a753f51fbc0c335d2ad0c6201f711b0da32693b", size = 138307, upload-time = "2026-02-02T15:38:17.453Z" }, + { url = "https://files.pythonhosted.org/packages/e1/84/9f7f02288da1ffb31405c1be07657afd1eecbcb4b64ee2817b6fe0f785fa/orjson-3.11.7-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:ab49d4b2a6a1d415ddb9f37a21e02e0d5dbfe10b7870b21bf779fc21e9156157", size = 408695, upload-time = "2026-02-02T15:38:18.831Z" }, + { url = "https://files.pythonhosted.org/packages/18/07/9dd2f0c0104f1a0295ffbe912bc8d63307a539b900dd9e2c48ef7810d971/orjson-3.11.7-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:390a1dce0c055ddf8adb6aa94a73b45a4a7d7177b5c584b8d1c1947f2ba60fb3", size = 144099, upload-time = "2026-02-02T15:38:20.28Z" }, + { url = "https://files.pythonhosted.org/packages/a5/66/857a8e4a3292e1f7b1b202883bcdeb43a91566cf59a93f97c53b44bd6801/orjson-3.11.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:1eb80451a9c351a71dfaf5b7ccc13ad065405217726b59fdbeadbcc544f9d223", size = 134806, upload-time = "2026-02-02T15:38:22.186Z" }, + { url = "https://files.pythonhosted.org/packages/0a/5b/6ebcf3defc1aab3a338ca777214966851e92efb1f30dc7fc8285216e6d1b/orjson-3.11.7-cp313-cp313-win32.whl", hash = "sha256:7477aa6a6ec6139c5cb1cc7b214643592169a5494d200397c7fc95d740d5fcf3", size = 127914, upload-time = "2026-02-02T15:38:23.511Z" }, + { url = "https://files.pythonhosted.org/packages/00/04/c6f72daca5092e3117840a1b1e88dfc809cc1470cf0734890d0366b684a1/orjson-3.11.7-cp313-cp313-win_amd64.whl", hash = "sha256:b9f95dcdea9d4f805daa9ddf02617a89e484c6985fa03055459f90e87d7a0757", size = 124986, upload-time = "2026-02-02T15:38:24.836Z" }, + { url = "https://files.pythonhosted.org/packages/03/ba/077a0f6f1085d6b806937246860fafbd5b17f3919c70ee3f3d8d9c713f38/orjson-3.11.7-cp313-cp313-win_arm64.whl", hash = "sha256:800988273a014a0541483dc81021247d7eacb0c845a9d1a34a422bc718f41539", size = 126045, upload-time = "2026-02-02T15:38:26.216Z" }, + { url = "https://files.pythonhosted.org/packages/e9/1e/745565dca749813db9a093c5ebc4bac1a9475c64d54b95654336ac3ed961/orjson-3.11.7-cp314-cp314-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:de0a37f21d0d364954ad5de1970491d7fbd0fb1ef7417d4d56a36dc01ba0c0a0", size = 228391, upload-time = "2026-02-02T15:38:27.757Z" }, + { url = "https://files.pythonhosted.org/packages/46/19/e40f6225da4d3aa0c8dc6e5219c5e87c2063a560fe0d72a88deb59776794/orjson-3.11.7-cp314-cp314-macosx_15_0_arm64.whl", hash = "sha256:c2428d358d85e8da9d37cba18b8c4047c55222007a84f97156a5b22028dfbfc0", size = 125188, upload-time = "2026-02-02T15:38:29.241Z" }, + { url = "https://files.pythonhosted.org/packages/9d/7e/c4de2babef2c0817fd1f048fd176aa48c37bec8aef53d2fa932983032cce/orjson-3.11.7-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c4bc6c6ac52cdaa267552544c73e486fecbd710b7ac09bc024d5a78555a22f6", size = 128097, upload-time = "2026-02-02T15:38:30.618Z" }, + { url = "https://files.pythonhosted.org/packages/eb/74/233d360632bafd2197f217eee7fb9c9d0229eac0c18128aee5b35b0014fe/orjson-3.11.7-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd0d68edd7dfca1b2eca9361a44ac9f24b078de3481003159929a0573f21a6bf", size = 123364, upload-time = "2026-02-02T15:38:32.363Z" }, + { url = "https://files.pythonhosted.org/packages/79/51/af79504981dd31efe20a9e360eb49c15f06df2b40e7f25a0a52d9ae888e8/orjson-3.11.7-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:623ad1b9548ef63886319c16fa317848e465a21513b31a6ad7b57443c3e0dcf5", size = 129076, upload-time = "2026-02-02T15:38:33.68Z" }, + { url = "https://files.pythonhosted.org/packages/67/e2/da898eb68b72304f8de05ca6715870d09d603ee98d30a27e8a9629abc64b/orjson-3.11.7-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6e776b998ac37c0396093d10290e60283f59cfe0fc3fccbd0ccc4bd04dd19892", size = 141705, upload-time = "2026-02-02T15:38:34.989Z" }, + { url = "https://files.pythonhosted.org/packages/c5/89/15364d92acb3d903b029e28d834edb8780c2b97404cbf7929aa6b9abdb24/orjson-3.11.7-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:652c6c3af76716f4a9c290371ba2e390ede06f6603edb277b481daf37f6f464e", size = 130855, upload-time = "2026-02-02T15:38:36.379Z" }, + { url = "https://files.pythonhosted.org/packages/c2/8b/ecdad52d0b38d4b8f514be603e69ccd5eacf4e7241f972e37e79792212ec/orjson-3.11.7-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a56df3239294ea5964adf074c54bcc4f0ccd21636049a2cf3ca9cf03b5d03cf1", size = 133386, upload-time = "2026-02-02T15:38:37.704Z" }, + { url = "https://files.pythonhosted.org/packages/b9/0e/45e1dcf10e17d0924b7c9162f87ec7b4ca79e28a0548acf6a71788d3e108/orjson-3.11.7-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:bda117c4148e81f746655d5a3239ae9bd00cb7bc3ca178b5fc5a5997e9744183", size = 138295, upload-time = "2026-02-02T15:38:39.096Z" }, + { url = "https://files.pythonhosted.org/packages/63/d7/4d2e8b03561257af0450f2845b91fbd111d7e526ccdf737267108075e0ba/orjson-3.11.7-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:23d6c20517a97a9daf1d48b580fcdc6f0516c6f4b5038823426033690b4d2650", size = 408720, upload-time = "2026-02-02T15:38:40.634Z" }, + { url = "https://files.pythonhosted.org/packages/78/cf/d45343518282108b29c12a65892445fc51f9319dc3c552ceb51bb5905ed2/orjson-3.11.7-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:8ff206156006da5b847c9304b6308a01e8cdbc8cce824e2779a5ba71c3def141", size = 144152, upload-time = "2026-02-02T15:38:42.262Z" }, + { url = "https://files.pythonhosted.org/packages/a9/3a/d6001f51a7275aacd342e77b735c71fa04125a3f93c36fee4526bc8c654e/orjson-3.11.7-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:962d046ee1765f74a1da723f4b33e3b228fe3a48bd307acce5021dfefe0e29b2", size = 134814, upload-time = "2026-02-02T15:38:43.627Z" }, + { url = "https://files.pythonhosted.org/packages/1d/d3/f19b47ce16820cc2c480f7f1723e17f6d411b3a295c60c8ad3aa9ff1c96a/orjson-3.11.7-cp314-cp314-win32.whl", hash = "sha256:89e13dd3f89f1c38a9c9eba5fbf7cdc2d1feca82f5f290864b4b7a6aac704576", size = 127997, upload-time = "2026-02-02T15:38:45.06Z" }, + { url = "https://files.pythonhosted.org/packages/12/df/172771902943af54bf661a8d102bdf2e7f932127968080632bda6054b62c/orjson-3.11.7-cp314-cp314-win_amd64.whl", hash = "sha256:845c3e0d8ded9c9271cd79596b9b552448b885b97110f628fb687aee2eed11c1", size = 124985, upload-time = "2026-02-02T15:38:46.388Z" }, + { url = "https://files.pythonhosted.org/packages/6f/1c/f2a8d8a1b17514660a614ce5f7aac74b934e69f5abc2700cc7ced882a009/orjson-3.11.7-cp314-cp314-win_arm64.whl", hash = "sha256:4a2e9c5be347b937a2e0203866f12bba36082e89b402ddb9e927d5822e43088d", size = 126038, upload-time = "2026-02-02T15:38:47.703Z" }, +] + +[[package]] +name = "packaging" +version = "26.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/65/ee/299d360cdc32edc7d2cf530f3accf79c4fca01e96ffc950d8a52213bd8e4/packaging-26.0.tar.gz", hash = "sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4", size = 143416, upload-time = "2026-01-21T20:50:39.064Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529", size = 74366, upload-time = "2026-01-21T20:50:37.788Z" }, +] + +[[package]] +name = "palettable" +version = "3.3.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/dc/3d/a5854d60850485bff12f28abfe0e17f503e866763bed61aed4990b604530/palettable-3.3.3.tar.gz", hash = "sha256:094dd7d9a5fc1cca4854773e5c1fc6a315b33bd5b3a8f47064928facaf0490a8", size = 106639, upload-time = "2023-04-19T23:13:35.864Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cf/f7/3367feadd4ab56783b0971c9b7edfbdd68e0c70ce877949a5dd2117ed4a0/palettable-3.3.3-py2.py3-none-any.whl", hash = "sha256:74e9e7d7fe5a9be065e02397558ed1777b2df0b793a6f4ce1a5ee74f74fb0caa", size = 332251, upload-time = "2023-04-19T23:13:33.996Z" }, +] + +[[package]] +name = "pandas" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "python-dateutil" }, + { name = "tzdata", marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/de/da/b1dc0481ab8d55d0f46e343cfe67d4551a0e14fcee52bd38ca1bd73258d8/pandas-3.0.0.tar.gz", hash = "sha256:0facf7e87d38f721f0af46fe70d97373a37701b1c09f7ed7aeeb292ade5c050f", size = 4633005, upload-time = "2026-01-21T15:52:04.726Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/46/1e/b184654a856e75e975a6ee95d6577b51c271cd92cb2b020c9378f53e0032/pandas-3.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d64ce01eb9cdca96a15266aa679ae50212ec52757c79204dbc7701a222401850", size = 10313247, upload-time = "2026-01-21T15:50:15.775Z" }, + { url = "https://files.pythonhosted.org/packages/dd/5e/e04a547ad0f0183bf151fd7c7a477468e3b85ff2ad231c566389e6cc9587/pandas-3.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:613e13426069793aa1ec53bdcc3b86e8d32071daea138bbcf4fa959c9cdaa2e2", size = 9913131, upload-time = "2026-01-21T15:50:18.611Z" }, + { url = "https://files.pythonhosted.org/packages/a2/93/bb77bfa9fc2aba9f7204db807d5d3fb69832ed2854c60ba91b4c65ba9219/pandas-3.0.0-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0192fee1f1a8e743b464a6607858ee4b071deb0b118eb143d71c2a1d170996d5", size = 10741925, upload-time = "2026-01-21T15:50:21.058Z" }, + { url = "https://files.pythonhosted.org/packages/62/fb/89319812eb1d714bfc04b7f177895caeba8ab4a37ef6712db75ed786e2e0/pandas-3.0.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f0b853319dec8d5e0c8b875374c078ef17f2269986a78168d9bd57e49bf650ae", size = 11245979, upload-time = "2026-01-21T15:50:23.413Z" }, + { url = "https://files.pythonhosted.org/packages/a9/63/684120486f541fc88da3862ed31165b3b3e12b6a1c7b93be4597bc84e26c/pandas-3.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:707a9a877a876c326ae2cb640fbdc4ef63b0a7b9e2ef55c6df9942dcee8e2af9", size = 11756337, upload-time = "2026-01-21T15:50:25.932Z" }, + { url = "https://files.pythonhosted.org/packages/39/92/7eb0ad232312b59aec61550c3c81ad0743898d10af5df7f80bc5e5065416/pandas-3.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:afd0aa3d0b5cda6e0b8ffc10dbcca3b09ef3cbcd3fe2b27364f85fdc04e1989d", size = 12325517, upload-time = "2026-01-21T15:50:27.952Z" }, + { url = "https://files.pythonhosted.org/packages/51/27/bf9436dd0a4fc3130acec0828951c7ef96a0631969613a9a35744baf27f6/pandas-3.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:113b4cca2614ff7e5b9fee9b6f066618fe73c5a83e99d721ffc41217b2bf57dd", size = 9881576, upload-time = "2026-01-21T15:50:30.149Z" }, + { url = "https://files.pythonhosted.org/packages/e7/2b/c618b871fce0159fd107516336e82891b404e3f340821853c2fc28c7830f/pandas-3.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c14837eba8e99a8da1527c0280bba29b0eb842f64aa94982c5e21227966e164b", size = 9140807, upload-time = "2026-01-21T15:50:32.308Z" }, + { url = "https://files.pythonhosted.org/packages/0b/38/db33686f4b5fa64d7af40d96361f6a4615b8c6c8f1b3d334eee46ae6160e/pandas-3.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:9803b31f5039b3c3b10cc858c5e40054adb4b29b4d81cb2fd789f4121c8efbcd", size = 10334013, upload-time = "2026-01-21T15:50:34.771Z" }, + { url = "https://files.pythonhosted.org/packages/a5/7b/9254310594e9774906bacdd4e732415e1f86ab7dbb4b377ef9ede58cd8ec/pandas-3.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:14c2a4099cd38a1d18ff108168ea417909b2dea3bd1ebff2ccf28ddb6a74d740", size = 9874154, upload-time = "2026-01-21T15:50:36.67Z" }, + { url = "https://files.pythonhosted.org/packages/63/d4/726c5a67a13bc66643e66d2e9ff115cead482a44fc56991d0c4014f15aaf/pandas-3.0.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d257699b9a9960e6125686098d5714ac59d05222bef7a5e6af7a7fd87c650801", size = 10384433, upload-time = "2026-01-21T15:50:39.132Z" }, + { url = "https://files.pythonhosted.org/packages/bf/2e/9211f09bedb04f9832122942de8b051804b31a39cfbad199a819bb88d9f3/pandas-3.0.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:69780c98f286076dcafca38d8b8eee1676adf220199c0a39f0ecbf976b68151a", size = 10864519, upload-time = "2026-01-21T15:50:41.043Z" }, + { url = "https://files.pythonhosted.org/packages/00/8d/50858522cdc46ac88b9afdc3015e298959a70a08cd21e008a44e9520180c/pandas-3.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4a66384f017240f3858a4c8a7cf21b0591c3ac885cddb7758a589f0f71e87ebb", size = 11394124, upload-time = "2026-01-21T15:50:43.377Z" }, + { url = "https://files.pythonhosted.org/packages/86/3f/83b2577db02503cd93d8e95b0f794ad9d4be0ba7cb6c8bcdcac964a34a42/pandas-3.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:be8c515c9bc33989d97b89db66ea0cececb0f6e3c2a87fcc8b69443a6923e95f", size = 11920444, upload-time = "2026-01-21T15:50:45.932Z" }, + { url = "https://files.pythonhosted.org/packages/64/2d/4f8a2f192ed12c90a0aab47f5557ece0e56b0370c49de9454a09de7381b2/pandas-3.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:a453aad8c4f4e9f166436994a33884442ea62aa8b27d007311e87521b97246e1", size = 9730970, upload-time = "2026-01-21T15:50:47.962Z" }, + { url = "https://files.pythonhosted.org/packages/d4/64/ff571be435cf1e643ca98d0945d76732c0b4e9c37191a89c8550b105eed1/pandas-3.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:da768007b5a33057f6d9053563d6b74dd6d029c337d93c6d0d22a763a5c2ecc0", size = 9041950, upload-time = "2026-01-21T15:50:50.422Z" }, + { url = "https://files.pythonhosted.org/packages/6f/fa/7f0ac4ca8877c57537aaff2a842f8760e630d8e824b730eb2e859ffe96ca/pandas-3.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b78d646249b9a2bc191040988c7bb524c92fa8534fb0898a0741d7e6f2ffafa6", size = 10307129, upload-time = "2026-01-21T15:50:52.877Z" }, + { url = "https://files.pythonhosted.org/packages/6f/11/28a221815dcea4c0c9414dfc845e34a84a6a7dabc6da3194498ed5ba4361/pandas-3.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bc9cba7b355cb4162442a88ce495e01cb605f17ac1e27d6596ac963504e0305f", size = 9850201, upload-time = "2026-01-21T15:50:54.807Z" }, + { url = "https://files.pythonhosted.org/packages/ba/da/53bbc8c5363b7e5bd10f9ae59ab250fc7a382ea6ba08e4d06d8694370354/pandas-3.0.0-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3c9a1a149aed3b6c9bf246033ff91e1b02d529546c5d6fb6b74a28fea0cf4c70", size = 10354031, upload-time = "2026-01-21T15:50:57.463Z" }, + { url = "https://files.pythonhosted.org/packages/f7/a3/51e02ebc2a14974170d51e2410dfdab58870ea9bcd37cda15bd553d24dc4/pandas-3.0.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:95683af6175d884ee89471842acfca29172a85031fccdabc35e50c0984470a0e", size = 10861165, upload-time = "2026-01-21T15:50:59.32Z" }, + { url = "https://files.pythonhosted.org/packages/a5/fe/05a51e3cac11d161472b8297bd41723ea98013384dd6d76d115ce3482f9b/pandas-3.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1fbbb5a7288719e36b76b4f18d46ede46e7f916b6c8d9915b756b0a6c3f792b3", size = 11359359, upload-time = "2026-01-21T15:51:02.014Z" }, + { url = "https://files.pythonhosted.org/packages/ee/56/ba620583225f9b85a4d3e69c01df3e3870659cc525f67929b60e9f21dcd1/pandas-3.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8e8b9808590fa364416b49b2a35c1f4cf2785a6c156935879e57f826df22038e", size = 11912907, upload-time = "2026-01-21T15:51:05.175Z" }, + { url = "https://files.pythonhosted.org/packages/c9/8c/c6638d9f67e45e07656b3826405c5cc5f57f6fd07c8b2572ade328c86e22/pandas-3.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:98212a38a709feb90ae658cb6227ea3657c22ba8157d4b8f913cd4c950de5e7e", size = 9732138, upload-time = "2026-01-21T15:51:07.569Z" }, + { url = "https://files.pythonhosted.org/packages/7b/bf/bd1335c3bf1770b6d8fed2799993b11c4971af93bb1b729b9ebbc02ca2ec/pandas-3.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:177d9df10b3f43b70307a149d7ec49a1229a653f907aa60a48f1877d0e6be3be", size = 9033568, upload-time = "2026-01-21T15:51:09.484Z" }, + { url = "https://files.pythonhosted.org/packages/8e/c6/f5e2171914d5e29b9171d495344097d54e3ffe41d2d85d8115baba4dc483/pandas-3.0.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2713810ad3806767b89ad3b7b69ba153e1c6ff6d9c20f9c2140379b2a98b6c98", size = 10741936, upload-time = "2026-01-21T15:51:11.693Z" }, + { url = "https://files.pythonhosted.org/packages/51/88/9a0164f99510a1acb9f548691f022c756c2314aad0d8330a24616c14c462/pandas-3.0.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:15d59f885ee5011daf8335dff47dcb8a912a27b4ad7826dc6cbe809fd145d327", size = 10393884, upload-time = "2026-01-21T15:51:14.197Z" }, + { url = "https://files.pythonhosted.org/packages/e0/53/b34d78084d88d8ae2b848591229da8826d1e65aacf00b3abe34023467648/pandas-3.0.0-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:24e6547fb64d2c92665dd2adbfa4e85fa4fd70a9c070e7cfb03b629a0bbab5eb", size = 10310740, upload-time = "2026-01-21T15:51:16.093Z" }, + { url = "https://files.pythonhosted.org/packages/5b/d3/bee792e7c3d6930b74468d990604325701412e55d7aaf47460a22311d1a5/pandas-3.0.0-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:48ee04b90e2505c693d3f8e8f524dab8cb8aaf7ddcab52c92afa535e717c4812", size = 10700014, upload-time = "2026-01-21T15:51:18.818Z" }, + { url = "https://files.pythonhosted.org/packages/55/db/2570bc40fb13aaed1cbc3fbd725c3a60ee162477982123c3adc8971e7ac1/pandas-3.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:66f72fb172959af42a459e27a8d8d2c7e311ff4c1f7db6deb3b643dbc382ae08", size = 11323737, upload-time = "2026-01-21T15:51:20.784Z" }, + { url = "https://files.pythonhosted.org/packages/bc/2e/297ac7f21c8181b62a4cccebad0a70caf679adf3ae5e83cb676194c8acc3/pandas-3.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4a4a400ca18230976724a5066f20878af785f36c6756e498e94c2a5e5d57779c", size = 11771558, upload-time = "2026-01-21T15:51:22.977Z" }, + { url = "https://files.pythonhosted.org/packages/0a/46/e1c6876d71c14332be70239acce9ad435975a80541086e5ffba2f249bcf6/pandas-3.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:940eebffe55528074341a5a36515f3e4c5e25e958ebbc764c9502cfc35ba3faa", size = 10473771, upload-time = "2026-01-21T15:51:25.285Z" }, + { url = "https://files.pythonhosted.org/packages/c0/db/0270ad9d13c344b7a36fa77f5f8344a46501abf413803e885d22864d10bf/pandas-3.0.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:597c08fb9fef0edf1e4fa2f9828dd27f3d78f9b8c9b4a748d435ffc55732310b", size = 10312075, upload-time = "2026-01-21T15:51:28.5Z" }, + { url = "https://files.pythonhosted.org/packages/09/9f/c176f5e9717f7c91becfe0f55a52ae445d3f7326b4a2cf355978c51b7913/pandas-3.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:447b2d68ac5edcbf94655fe909113a6dba6ef09ad7f9f60c80477825b6c489fe", size = 9900213, upload-time = "2026-01-21T15:51:30.955Z" }, + { url = "https://files.pythonhosted.org/packages/d9/e7/63ad4cc10b257b143e0a5ebb04304ad806b4e1a61c5da25f55896d2ca0f4/pandas-3.0.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:debb95c77ff3ed3ba0d9aa20c3a2f19165cc7956362f9873fce1ba0a53819d70", size = 10428768, upload-time = "2026-01-21T15:51:33.018Z" }, + { url = "https://files.pythonhosted.org/packages/9e/0e/4e4c2d8210f20149fd2248ef3fff26623604922bd564d915f935a06dd63d/pandas-3.0.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fedabf175e7cd82b69b74c30adbaa616de301291a5231138d7242596fc296a8d", size = 10882954, upload-time = "2026-01-21T15:51:35.287Z" }, + { url = "https://files.pythonhosted.org/packages/c6/60/c9de8ac906ba1f4d2250f8a951abe5135b404227a55858a75ad26f84db47/pandas-3.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:412d1a89aab46889f3033a386912efcdfa0f1131c5705ff5b668dda88305e986", size = 11430293, upload-time = "2026-01-21T15:51:37.57Z" }, + { url = "https://files.pythonhosted.org/packages/a1/69/806e6637c70920e5787a6d6896fd707f8134c2c55cd761e7249a97b7dc5a/pandas-3.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:e979d22316f9350c516479dd3a92252be2937a9531ed3a26ec324198a99cdd49", size = 11952452, upload-time = "2026-01-21T15:51:39.618Z" }, + { url = "https://files.pythonhosted.org/packages/cb/de/918621e46af55164c400ab0ef389c9d969ab85a43d59ad1207d4ddbe30a5/pandas-3.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:083b11415b9970b6e7888800c43c82e81a06cd6b06755d84804444f0007d6bb7", size = 9851081, upload-time = "2026-01-21T15:51:41.758Z" }, + { url = "https://files.pythonhosted.org/packages/91/a1/3562a18dd0bd8c73344bfa26ff90c53c72f827df119d6d6b1dacc84d13e3/pandas-3.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:5db1e62cb99e739fa78a28047e861b256d17f88463c76b8dafc7c1338086dca8", size = 9174610, upload-time = "2026-01-21T15:51:44.312Z" }, + { url = "https://files.pythonhosted.org/packages/ce/26/430d91257eaf366f1737d7a1c158677caaf6267f338ec74e3a1ec444111c/pandas-3.0.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:697b8f7d346c68274b1b93a170a70974cdc7d7354429894d5927c1effdcccd73", size = 10761999, upload-time = "2026-01-21T15:51:46.899Z" }, + { url = "https://files.pythonhosted.org/packages/ec/1a/954eb47736c2b7f7fe6a9d56b0cb6987773c00faa3c6451a43db4beb3254/pandas-3.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:8cb3120f0d9467ed95e77f67a75e030b67545bcfa08964e349252d674171def2", size = 10410279, upload-time = "2026-01-21T15:51:48.89Z" }, + { url = "https://files.pythonhosted.org/packages/20/fc/b96f3a5a28b250cd1b366eb0108df2501c0f38314a00847242abab71bb3a/pandas-3.0.0-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:33fd3e6baa72899746b820c31e4b9688c8e1b7864d7aec2de7ab5035c285277a", size = 10330198, upload-time = "2026-01-21T15:51:51.015Z" }, + { url = "https://files.pythonhosted.org/packages/90/b3/d0e2952f103b4fbef1ef22d0c2e314e74fc9064b51cee30890b5e3286ee6/pandas-3.0.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a8942e333dc67ceda1095227ad0febb05a3b36535e520154085db632c40ad084", size = 10728513, upload-time = "2026-01-21T15:51:53.387Z" }, + { url = "https://files.pythonhosted.org/packages/76/81/832894f286df828993dc5fd61c63b231b0fb73377e99f6c6c369174cf97e/pandas-3.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:783ac35c4d0fe0effdb0d67161859078618b1b6587a1af15928137525217a721", size = 11345550, upload-time = "2026-01-21T15:51:55.329Z" }, + { url = "https://files.pythonhosted.org/packages/34/a0/ed160a00fb4f37d806406bc0a79a8b62fe67f29d00950f8d16203ff3409b/pandas-3.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:125eb901e233f155b268bbef9abd9afb5819db74f0e677e89a61b246228c71ac", size = 11799386, upload-time = "2026-01-21T15:51:57.457Z" }, + { url = "https://files.pythonhosted.org/packages/36/c8/2ac00d7255252c5e3cf61b35ca92ca25704b0188f7454ca4aec08a33cece/pandas-3.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:b86d113b6c109df3ce0ad5abbc259fe86a1bd4adfd4a31a89da42f84f65509bb", size = 10873041, upload-time = "2026-01-21T15:52:00.034Z" }, + { url = "https://files.pythonhosted.org/packages/e6/3f/a80ac00acbc6b35166b42850e98a4f466e2c0d9c64054161ba9620f95680/pandas-3.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:1c39eab3ad38f2d7a249095f0a3d8f8c22cc0f847e98ccf5bbe732b272e2d9fa", size = 9441003, upload-time = "2026-01-21T15:52:02.281Z" }, +] + +[[package]] +name = "pillow" +version = "12.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d0/02/d52c733a2452ef1ffcc123b68e6606d07276b0e358db70eabad7e40042b7/pillow-12.1.0.tar.gz", hash = "sha256:5c5ae0a06e9ea030ab786b0251b32c7e4ce10e58d983c0d5c56029455180b5b9", size = 46977283, upload-time = "2026-01-02T09:13:29.892Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/c4/bf8328039de6cc22182c3ef007a2abfbbdab153661c0a9aa78af8d706391/pillow-12.1.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:a83e0850cb8f5ac975291ebfc4170ba481f41a28065277f7f735c202cd8e0af3", size = 5304057, upload-time = "2026-01-02T09:10:46.627Z" }, + { url = "https://files.pythonhosted.org/packages/43/06/7264c0597e676104cc22ca73ee48f752767cd4b1fe084662620b17e10120/pillow-12.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b6e53e82ec2db0717eabb276aa56cf4e500c9a7cec2c2e189b55c24f65a3e8c0", size = 4657811, upload-time = "2026-01-02T09:10:49.548Z" }, + { url = "https://files.pythonhosted.org/packages/72/64/f9189e44474610daf83da31145fa56710b627b5c4c0b9c235e34058f6b31/pillow-12.1.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:40a8e3b9e8773876d6e30daed22f016509e3987bab61b3b7fe309d7019a87451", size = 6232243, upload-time = "2026-01-02T09:10:51.62Z" }, + { url = "https://files.pythonhosted.org/packages/ef/30/0df458009be6a4caca4ca2c52975e6275c387d4e5c95544e34138b41dc86/pillow-12.1.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:800429ac32c9b72909c671aaf17ecd13110f823ddb7db4dfef412a5587c2c24e", size = 8037872, upload-time = "2026-01-02T09:10:53.446Z" }, + { url = "https://files.pythonhosted.org/packages/e4/86/95845d4eda4f4f9557e25381d70876aa213560243ac1a6d619c46caaedd9/pillow-12.1.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0b022eaaf709541b391ee069f0022ee5b36c709df71986e3f7be312e46f42c84", size = 6345398, upload-time = "2026-01-02T09:10:55.426Z" }, + { url = "https://files.pythonhosted.org/packages/5c/1f/8e66ab9be3aaf1435bc03edd1ebdf58ffcd17f7349c1d970cafe87af27d9/pillow-12.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1f345e7bc9d7f368887c712aa5054558bad44d2a301ddf9248599f4161abc7c0", size = 7034667, upload-time = "2026-01-02T09:10:57.11Z" }, + { url = "https://files.pythonhosted.org/packages/f9/f6/683b83cb9b1db1fb52b87951b1c0b99bdcfceaa75febf11406c19f82cb5e/pillow-12.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d70347c8a5b7ccd803ec0c85c8709f036e6348f1e6a5bf048ecd9c64d3550b8b", size = 6458743, upload-time = "2026-01-02T09:10:59.331Z" }, + { url = "https://files.pythonhosted.org/packages/9a/7d/de833d63622538c1d58ce5395e7c6cb7e7dce80decdd8bde4a484e095d9f/pillow-12.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1fcc52d86ce7a34fd17cb04e87cfdb164648a3662a6f20565910a99653d66c18", size = 7159342, upload-time = "2026-01-02T09:11:01.82Z" }, + { url = "https://files.pythonhosted.org/packages/8c/40/50d86571c9e5868c42b81fe7da0c76ca26373f3b95a8dd675425f4a92ec1/pillow-12.1.0-cp311-cp311-win32.whl", hash = "sha256:3ffaa2f0659e2f740473bcf03c702c39a8d4b2b7ffc629052028764324842c64", size = 6328655, upload-time = "2026-01-02T09:11:04.556Z" }, + { url = "https://files.pythonhosted.org/packages/6c/af/b1d7e301c4cd26cd45d4af884d9ee9b6fab893b0ad2450d4746d74a6968c/pillow-12.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:806f3987ffe10e867bab0ddad45df1148a2b98221798457fa097ad85d6e8bc75", size = 7031469, upload-time = "2026-01-02T09:11:06.538Z" }, + { url = "https://files.pythonhosted.org/packages/48/36/d5716586d887fb2a810a4a61518a327a1e21c8b7134c89283af272efe84b/pillow-12.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:9f5fefaca968e700ad1a4a9de98bf0869a94e397fe3524c4c9450c1445252304", size = 2452515, upload-time = "2026-01-02T09:11:08.226Z" }, + { url = "https://files.pythonhosted.org/packages/20/31/dc53fe21a2f2996e1b7d92bf671cdb157079385183ef7c1ae08b485db510/pillow-12.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a332ac4ccb84b6dde65dbace8431f3af08874bf9770719d32a635c4ef411b18b", size = 5262642, upload-time = "2026-01-02T09:11:10.138Z" }, + { url = "https://files.pythonhosted.org/packages/ab/c1/10e45ac9cc79419cedf5121b42dcca5a50ad2b601fa080f58c22fb27626e/pillow-12.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:907bfa8a9cb790748a9aa4513e37c88c59660da3bcfffbd24a7d9e6abf224551", size = 4657464, upload-time = "2026-01-02T09:11:12.319Z" }, + { url = "https://files.pythonhosted.org/packages/ad/26/7b82c0ab7ef40ebede7a97c72d473bda5950f609f8e0c77b04af574a0ddb/pillow-12.1.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:efdc140e7b63b8f739d09a99033aa430accce485ff78e6d311973a67b6bf3208", size = 6234878, upload-time = "2026-01-02T09:11:14.096Z" }, + { url = "https://files.pythonhosted.org/packages/76/25/27abc9792615b5e886ca9411ba6637b675f1b77af3104710ac7353fe5605/pillow-12.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:bef9768cab184e7ae6e559c032e95ba8d07b3023c289f79a2bd36e8bf85605a5", size = 8044868, upload-time = "2026-01-02T09:11:15.903Z" }, + { url = "https://files.pythonhosted.org/packages/0a/ea/f200a4c36d836100e7bc738fc48cd963d3ba6372ebc8298a889e0cfc3359/pillow-12.1.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:742aea052cf5ab5034a53c3846165bc3ce88d7c38e954120db0ab867ca242661", size = 6349468, upload-time = "2026-01-02T09:11:17.631Z" }, + { url = "https://files.pythonhosted.org/packages/11/8f/48d0b77ab2200374c66d344459b8958c86693be99526450e7aee714e03e4/pillow-12.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a6dfc2af5b082b635af6e08e0d1f9f1c4e04d17d4e2ca0ef96131e85eda6eb17", size = 7041518, upload-time = "2026-01-02T09:11:19.389Z" }, + { url = "https://files.pythonhosted.org/packages/1d/23/c281182eb986b5d31f0a76d2a2c8cd41722d6fb8ed07521e802f9bba52de/pillow-12.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:609e89d9f90b581c8d16358c9087df76024cf058fa693dd3e1e1620823f39670", size = 6462829, upload-time = "2026-01-02T09:11:21.28Z" }, + { url = "https://files.pythonhosted.org/packages/25/ef/7018273e0faac099d7b00982abdcc39142ae6f3bd9ceb06de09779c4a9d6/pillow-12.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:43b4899cfd091a9693a1278c4982f3e50f7fb7cff5153b05174b4afc9593b616", size = 7166756, upload-time = "2026-01-02T09:11:23.559Z" }, + { url = "https://files.pythonhosted.org/packages/8f/c8/993d4b7ab2e341fe02ceef9576afcf5830cdec640be2ac5bee1820d693d4/pillow-12.1.0-cp312-cp312-win32.whl", hash = "sha256:aa0c9cc0b82b14766a99fbe6084409972266e82f459821cd26997a488a7261a7", size = 6328770, upload-time = "2026-01-02T09:11:25.661Z" }, + { url = "https://files.pythonhosted.org/packages/a7/87/90b358775a3f02765d87655237229ba64a997b87efa8ccaca7dd3e36e7a7/pillow-12.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:d70534cea9e7966169ad29a903b99fc507e932069a881d0965a1a84bb57f6c6d", size = 7033406, upload-time = "2026-01-02T09:11:27.474Z" }, + { url = "https://files.pythonhosted.org/packages/5d/cf/881b457eccacac9e5b2ddd97d5071fb6d668307c57cbf4e3b5278e06e536/pillow-12.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:65b80c1ee7e14a87d6a068dd3b0aea268ffcabfe0498d38661b00c5b4b22e74c", size = 2452612, upload-time = "2026-01-02T09:11:29.309Z" }, + { url = "https://files.pythonhosted.org/packages/dd/c7/2530a4aa28248623e9d7f27316b42e27c32ec410f695929696f2e0e4a778/pillow-12.1.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:7b5dd7cbae20285cdb597b10eb5a2c13aa9de6cde9bb64a3c1317427b1db1ae1", size = 4062543, upload-time = "2026-01-02T09:11:31.566Z" }, + { url = "https://files.pythonhosted.org/packages/8f/1f/40b8eae823dc1519b87d53c30ed9ef085506b05281d313031755c1705f73/pillow-12.1.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:29a4cef9cb672363926f0470afc516dbf7305a14d8c54f7abbb5c199cd8f8179", size = 4138373, upload-time = "2026-01-02T09:11:33.367Z" }, + { url = "https://files.pythonhosted.org/packages/d4/77/6fa60634cf06e52139fd0e89e5bbf055e8166c691c42fb162818b7fda31d/pillow-12.1.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:681088909d7e8fa9e31b9799aaa59ba5234c58e5e4f1951b4c4d1082a2e980e0", size = 3601241, upload-time = "2026-01-02T09:11:35.011Z" }, + { url = "https://files.pythonhosted.org/packages/4f/bf/28ab865de622e14b747f0cd7877510848252d950e43002e224fb1c9ababf/pillow-12.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:983976c2ab753166dc66d36af6e8ec15bb511e4a25856e2227e5f7e00a160587", size = 5262410, upload-time = "2026-01-02T09:11:36.682Z" }, + { url = "https://files.pythonhosted.org/packages/1c/34/583420a1b55e715937a85bd48c5c0991598247a1fd2eb5423188e765ea02/pillow-12.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:db44d5c160a90df2d24a24760bbd37607d53da0b34fb546c4c232af7192298ac", size = 4657312, upload-time = "2026-01-02T09:11:38.535Z" }, + { url = "https://files.pythonhosted.org/packages/1d/fd/f5a0896839762885b3376ff04878f86ab2b097c2f9a9cdccf4eda8ba8dc0/pillow-12.1.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:6b7a9d1db5dad90e2991645874f708e87d9a3c370c243c2d7684d28f7e133e6b", size = 6232605, upload-time = "2026-01-02T09:11:40.602Z" }, + { url = "https://files.pythonhosted.org/packages/98/aa/938a09d127ac1e70e6ed467bd03834350b33ef646b31edb7452d5de43792/pillow-12.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6258f3260986990ba2fa8a874f8b6e808cf5abb51a94015ca3dc3c68aa4f30ea", size = 8041617, upload-time = "2026-01-02T09:11:42.721Z" }, + { url = "https://files.pythonhosted.org/packages/17/e8/538b24cb426ac0186e03f80f78bc8dc7246c667f58b540bdd57c71c9f79d/pillow-12.1.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e115c15e3bc727b1ca3e641a909f77f8ca72a64fff150f666fcc85e57701c26c", size = 6346509, upload-time = "2026-01-02T09:11:44.955Z" }, + { url = "https://files.pythonhosted.org/packages/01/9a/632e58ec89a32738cabfd9ec418f0e9898a2b4719afc581f07c04a05e3c9/pillow-12.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6741e6f3074a35e47c77b23a4e4f2d90db3ed905cb1c5e6e0d49bff2045632bc", size = 7038117, upload-time = "2026-01-02T09:11:46.736Z" }, + { url = "https://files.pythonhosted.org/packages/c7/a2/d40308cf86eada842ca1f3ffa45d0ca0df7e4ab33c83f81e73f5eaed136d/pillow-12.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:935b9d1aed48fcfb3f838caac506f38e29621b44ccc4f8a64d575cb1b2a88644", size = 6460151, upload-time = "2026-01-02T09:11:48.625Z" }, + { url = "https://files.pythonhosted.org/packages/f1/88/f5b058ad6453a085c5266660a1417bdad590199da1b32fb4efcff9d33b05/pillow-12.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5fee4c04aad8932da9f8f710af2c1a15a83582cfb884152a9caa79d4efcdbf9c", size = 7164534, upload-time = "2026-01-02T09:11:50.445Z" }, + { url = "https://files.pythonhosted.org/packages/19/ce/c17334caea1db789163b5d855a5735e47995b0b5dc8745e9a3605d5f24c0/pillow-12.1.0-cp313-cp313-win32.whl", hash = "sha256:a786bf667724d84aa29b5db1c61b7bfdde380202aaca12c3461afd6b71743171", size = 6332551, upload-time = "2026-01-02T09:11:52.234Z" }, + { url = "https://files.pythonhosted.org/packages/e5/07/74a9d941fa45c90a0d9465098fe1ec85de3e2afbdc15cc4766622d516056/pillow-12.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:461f9dfdafa394c59cd6d818bdfdbab4028b83b02caadaff0ffd433faf4c9a7a", size = 7040087, upload-time = "2026-01-02T09:11:54.822Z" }, + { url = "https://files.pythonhosted.org/packages/88/09/c99950c075a0e9053d8e880595926302575bc742b1b47fe1bbcc8d388d50/pillow-12.1.0-cp313-cp313-win_arm64.whl", hash = "sha256:9212d6b86917a2300669511ed094a9406888362e085f2431a7da985a6b124f45", size = 2452470, upload-time = "2026-01-02T09:11:56.522Z" }, + { url = "https://files.pythonhosted.org/packages/b5/ba/970b7d85ba01f348dee4d65412476321d40ee04dcb51cd3735b9dc94eb58/pillow-12.1.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:00162e9ca6d22b7c3ee8e61faa3c3253cd19b6a37f126cad04f2f88b306f557d", size = 5264816, upload-time = "2026-01-02T09:11:58.227Z" }, + { url = "https://files.pythonhosted.org/packages/10/60/650f2fb55fdba7a510d836202aa52f0baac633e50ab1cf18415d332188fb/pillow-12.1.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:7d6daa89a00b58c37cb1747ec9fb7ac3bc5ffd5949f5888657dfddde6d1312e0", size = 4660472, upload-time = "2026-01-02T09:12:00.798Z" }, + { url = "https://files.pythonhosted.org/packages/2b/c0/5273a99478956a099d533c4f46cbaa19fd69d606624f4334b85e50987a08/pillow-12.1.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e2479c7f02f9d505682dc47df8c0ea1fc5e264c4d1629a5d63fe3e2334b89554", size = 6268974, upload-time = "2026-01-02T09:12:02.572Z" }, + { url = "https://files.pythonhosted.org/packages/b4/26/0bf714bc2e73d5267887d47931d53c4ceeceea6978148ed2ab2a4e6463c4/pillow-12.1.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f188d580bd870cda1e15183790d1cc2fa78f666e76077d103edf048eed9c356e", size = 8073070, upload-time = "2026-01-02T09:12:04.75Z" }, + { url = "https://files.pythonhosted.org/packages/43/cf/1ea826200de111a9d65724c54f927f3111dc5ae297f294b370a670c17786/pillow-12.1.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0fde7ec5538ab5095cc02df38ee99b0443ff0e1c847a045554cf5f9af1f4aa82", size = 6380176, upload-time = "2026-01-02T09:12:06.626Z" }, + { url = "https://files.pythonhosted.org/packages/03/e0/7938dd2b2013373fd85d96e0f38d62b7a5a262af21ac274250c7ca7847c9/pillow-12.1.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0ed07dca4a8464bada6139ab38f5382f83e5f111698caf3191cb8dbf27d908b4", size = 7067061, upload-time = "2026-01-02T09:12:08.624Z" }, + { url = "https://files.pythonhosted.org/packages/86/ad/a2aa97d37272a929a98437a8c0ac37b3cf012f4f8721e1bd5154699b2518/pillow-12.1.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:f45bd71d1fa5e5749587613037b172e0b3b23159d1c00ef2fc920da6f470e6f0", size = 6491824, upload-time = "2026-01-02T09:12:10.488Z" }, + { url = "https://files.pythonhosted.org/packages/a4/44/80e46611b288d51b115826f136fb3465653c28f491068a72d3da49b54cd4/pillow-12.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:277518bf4fe74aa91489e1b20577473b19ee70fb97c374aa50830b279f25841b", size = 7190911, upload-time = "2026-01-02T09:12:12.772Z" }, + { url = "https://files.pythonhosted.org/packages/86/77/eacc62356b4cf81abe99ff9dbc7402750044aed02cfd6a503f7c6fc11f3e/pillow-12.1.0-cp313-cp313t-win32.whl", hash = "sha256:7315f9137087c4e0ee73a761b163fc9aa3b19f5f606a7fc08d83fd3e4379af65", size = 6336445, upload-time = "2026-01-02T09:12:14.775Z" }, + { url = "https://files.pythonhosted.org/packages/e7/3c/57d81d0b74d218706dafccb87a87ea44262c43eef98eb3b164fd000e0491/pillow-12.1.0-cp313-cp313t-win_amd64.whl", hash = "sha256:0ddedfaa8b5f0b4ffbc2fa87b556dc59f6bb4ecb14a53b33f9189713ae8053c0", size = 7045354, upload-time = "2026-01-02T09:12:16.599Z" }, + { url = "https://files.pythonhosted.org/packages/ac/82/8b9b97bba2e3576a340f93b044a3a3a09841170ab4c1eb0d5c93469fd32f/pillow-12.1.0-cp313-cp313t-win_arm64.whl", hash = "sha256:80941e6d573197a0c28f394753de529bb436b1ca990ed6e765cf42426abc39f8", size = 2454547, upload-time = "2026-01-02T09:12:18.704Z" }, + { url = "https://files.pythonhosted.org/packages/8c/87/bdf971d8bbcf80a348cc3bacfcb239f5882100fe80534b0ce67a784181d8/pillow-12.1.0-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:5cb7bc1966d031aec37ddb9dcf15c2da5b2e9f7cc3ca7c54473a20a927e1eb91", size = 4062533, upload-time = "2026-01-02T09:12:20.791Z" }, + { url = "https://files.pythonhosted.org/packages/ff/4f/5eb37a681c68d605eb7034c004875c81f86ec9ef51f5be4a63eadd58859a/pillow-12.1.0-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:97e9993d5ed946aba26baf9c1e8cf18adbab584b99f452ee72f7ee8acb882796", size = 4138546, upload-time = "2026-01-02T09:12:23.664Z" }, + { url = "https://files.pythonhosted.org/packages/11/6d/19a95acb2edbace40dcd582d077b991646b7083c41b98da4ed7555b59733/pillow-12.1.0-cp314-cp314-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:414b9a78e14ffeb98128863314e62c3f24b8a86081066625700b7985b3f529bd", size = 3601163, upload-time = "2026-01-02T09:12:26.338Z" }, + { url = "https://files.pythonhosted.org/packages/fc/36/2b8138e51cb42e4cc39c3297713455548be855a50558c3ac2beebdc251dd/pillow-12.1.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:e6bdb408f7c9dd2a5ff2b14a3b0bb6d4deb29fb9961e6eb3ae2031ae9a5cec13", size = 5266086, upload-time = "2026-01-02T09:12:28.782Z" }, + { url = "https://files.pythonhosted.org/packages/53/4b/649056e4d22e1caa90816bf99cef0884aed607ed38075bd75f091a607a38/pillow-12.1.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:3413c2ae377550f5487991d444428f1a8ae92784aac79caa8b1e3b89b175f77e", size = 4657344, upload-time = "2026-01-02T09:12:31.117Z" }, + { url = "https://files.pythonhosted.org/packages/6c/6b/c5742cea0f1ade0cd61485dc3d81f05261fc2276f537fbdc00802de56779/pillow-12.1.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e5dcbe95016e88437ecf33544ba5db21ef1b8dd6e1b434a2cb2a3d605299e643", size = 6232114, upload-time = "2026-01-02T09:12:32.936Z" }, + { url = "https://files.pythonhosted.org/packages/bf/8f/9f521268ce22d63991601aafd3d48d5ff7280a246a1ef62d626d67b44064/pillow-12.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d0a7735df32ccbcc98b98a1ac785cc4b19b580be1bdf0aeb5c03223220ea09d5", size = 8042708, upload-time = "2026-01-02T09:12:34.78Z" }, + { url = "https://files.pythonhosted.org/packages/1a/eb/257f38542893f021502a1bbe0c2e883c90b5cff26cc33b1584a841a06d30/pillow-12.1.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0c27407a2d1b96774cbc4a7594129cc027339fd800cd081e44497722ea1179de", size = 6347762, upload-time = "2026-01-02T09:12:36.748Z" }, + { url = "https://files.pythonhosted.org/packages/c4/5a/8ba375025701c09b309e8d5163c5a4ce0102fa86bbf8800eb0d7ac87bc51/pillow-12.1.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:15c794d74303828eaa957ff8070846d0efe8c630901a1c753fdc63850e19ecd9", size = 7039265, upload-time = "2026-01-02T09:12:39.082Z" }, + { url = "https://files.pythonhosted.org/packages/cf/dc/cf5e4cdb3db533f539e88a7bbf9f190c64ab8a08a9bc7a4ccf55067872e4/pillow-12.1.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c990547452ee2800d8506c4150280757f88532f3de2a58e3022e9b179107862a", size = 6462341, upload-time = "2026-01-02T09:12:40.946Z" }, + { url = "https://files.pythonhosted.org/packages/d0/47/0291a25ac9550677e22eda48510cfc4fa4b2ef0396448b7fbdc0a6946309/pillow-12.1.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b63e13dd27da389ed9475b3d28510f0f954bca0041e8e551b2a4eb1eab56a39a", size = 7165395, upload-time = "2026-01-02T09:12:42.706Z" }, + { url = "https://files.pythonhosted.org/packages/4f/4c/e005a59393ec4d9416be06e6b45820403bb946a778e39ecec62f5b2b991e/pillow-12.1.0-cp314-cp314-win32.whl", hash = "sha256:1a949604f73eb07a8adab38c4fe50791f9919344398bdc8ac6b307f755fc7030", size = 6431413, upload-time = "2026-01-02T09:12:44.944Z" }, + { url = "https://files.pythonhosted.org/packages/1c/af/f23697f587ac5f9095d67e31b81c95c0249cd461a9798a061ed6709b09b5/pillow-12.1.0-cp314-cp314-win_amd64.whl", hash = "sha256:4f9f6a650743f0ddee5593ac9e954ba1bdbc5e150bc066586d4f26127853ab94", size = 7176779, upload-time = "2026-01-02T09:12:46.727Z" }, + { url = "https://files.pythonhosted.org/packages/b3/36/6a51abf8599232f3e9afbd16d52829376a68909fe14efe29084445db4b73/pillow-12.1.0-cp314-cp314-win_arm64.whl", hash = "sha256:808b99604f7873c800c4840f55ff389936ef1948e4e87645eaf3fccbc8477ac4", size = 2543105, upload-time = "2026-01-02T09:12:49.243Z" }, + { url = "https://files.pythonhosted.org/packages/82/54/2e1dd20c8749ff225080d6ba465a0cab4387f5db0d1c5fb1439e2d99923f/pillow-12.1.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:bc11908616c8a283cf7d664f77411a5ed2a02009b0097ff8abbba5e79128ccf2", size = 5268571, upload-time = "2026-01-02T09:12:51.11Z" }, + { url = "https://files.pythonhosted.org/packages/57/61/571163a5ef86ec0cf30d265ac2a70ae6fc9e28413d1dc94fa37fae6bda89/pillow-12.1.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:896866d2d436563fa2a43a9d72f417874f16b5545955c54a64941e87c1376c61", size = 4660426, upload-time = "2026-01-02T09:12:52.865Z" }, + { url = "https://files.pythonhosted.org/packages/5e/e1/53ee5163f794aef1bf84243f755ee6897a92c708505350dd1923f4afec48/pillow-12.1.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8e178e3e99d3c0ea8fc64b88447f7cac8ccf058af422a6cedc690d0eadd98c51", size = 6269908, upload-time = "2026-01-02T09:12:54.884Z" }, + { url = "https://files.pythonhosted.org/packages/bc/0b/b4b4106ff0ee1afa1dc599fde6ab230417f800279745124f6c50bcffed8e/pillow-12.1.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:079af2fb0c599c2ec144ba2c02766d1b55498e373b3ac64687e43849fbbef5bc", size = 8074733, upload-time = "2026-01-02T09:12:56.802Z" }, + { url = "https://files.pythonhosted.org/packages/19/9f/80b411cbac4a732439e629a26ad3ef11907a8c7fc5377b7602f04f6fe4e7/pillow-12.1.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bdec5e43377761c5dbca620efb69a77f6855c5a379e32ac5b158f54c84212b14", size = 6381431, upload-time = "2026-01-02T09:12:58.823Z" }, + { url = "https://files.pythonhosted.org/packages/8f/b7/d65c45db463b66ecb6abc17c6ba6917a911202a07662247e1355ce1789e7/pillow-12.1.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:565c986f4b45c020f5421a4cea13ef294dde9509a8577f29b2fc5edc7587fff8", size = 7068529, upload-time = "2026-01-02T09:13:00.885Z" }, + { url = "https://files.pythonhosted.org/packages/50/96/dfd4cd726b4a45ae6e3c669fc9e49deb2241312605d33aba50499e9d9bd1/pillow-12.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:43aca0a55ce1eefc0aefa6253661cb54571857b1a7b2964bd8a1e3ef4b729924", size = 6492981, upload-time = "2026-01-02T09:13:03.314Z" }, + { url = "https://files.pythonhosted.org/packages/4d/1c/b5dc52cf713ae46033359c5ca920444f18a6359ce1020dd3e9c553ea5bc6/pillow-12.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:0deedf2ea233722476b3a81e8cdfbad786f7adbed5d848469fa59fe52396e4ef", size = 7191878, upload-time = "2026-01-02T09:13:05.276Z" }, + { url = "https://files.pythonhosted.org/packages/53/26/c4188248bd5edaf543864fe4834aebe9c9cb4968b6f573ce014cc42d0720/pillow-12.1.0-cp314-cp314t-win32.whl", hash = "sha256:b17fbdbe01c196e7e159aacb889e091f28e61020a8abeac07b68079b6e626988", size = 6438703, upload-time = "2026-01-02T09:13:07.491Z" }, + { url = "https://files.pythonhosted.org/packages/b8/0e/69ed296de8ea05cb03ee139cee600f424ca166e632567b2d66727f08c7ed/pillow-12.1.0-cp314-cp314t-win_amd64.whl", hash = "sha256:27b9baecb428899db6c0de572d6d305cfaf38ca1596b5c0542a5182e3e74e8c6", size = 7182927, upload-time = "2026-01-02T09:13:09.841Z" }, + { url = "https://files.pythonhosted.org/packages/fc/f5/68334c015eed9b5cff77814258717dec591ded209ab5b6fb70e2ae873d1d/pillow-12.1.0-cp314-cp314t-win_arm64.whl", hash = "sha256:f61333d817698bdcdd0f9d7793e365ac3d2a21c1f1eb02b32ad6aefb8d8ea831", size = 2545104, upload-time = "2026-01-02T09:13:12.068Z" }, + { url = "https://files.pythonhosted.org/packages/8b/bc/224b1d98cffd7164b14707c91aac83c07b047fbd8f58eba4066a3e53746a/pillow-12.1.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:ca94b6aac0d7af2a10ba08c0f888b3d5114439b6b3ef39968378723622fed377", size = 5228605, upload-time = "2026-01-02T09:13:14.084Z" }, + { url = "https://files.pythonhosted.org/packages/0c/ca/49ca7769c4550107de049ed85208240ba0f330b3f2e316f24534795702ce/pillow-12.1.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:351889afef0f485b84078ea40fe33727a0492b9af3904661b0abbafee0355b72", size = 4622245, upload-time = "2026-01-02T09:13:15.964Z" }, + { url = "https://files.pythonhosted.org/packages/73/48/fac807ce82e5955bcc2718642b94b1bd22a82a6d452aea31cbb678cddf12/pillow-12.1.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:bb0984b30e973f7e2884362b7d23d0a348c7143ee559f38ef3eaab640144204c", size = 5247593, upload-time = "2026-01-02T09:13:17.913Z" }, + { url = "https://files.pythonhosted.org/packages/d2/95/3e0742fe358c4664aed4fd05d5f5373dcdad0b27af52aa0972568541e3f4/pillow-12.1.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:84cabc7095dd535ca934d57e9ce2a72ffd216e435a84acb06b2277b1de2689bd", size = 6989008, upload-time = "2026-01-02T09:13:20.083Z" }, + { url = "https://files.pythonhosted.org/packages/5a/74/fe2ac378e4e202e56d50540d92e1ef4ff34ed687f3c60f6a121bcf99437e/pillow-12.1.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53d8b764726d3af1a138dd353116f774e3862ec7e3794e0c8781e30db0f35dfc", size = 5313824, upload-time = "2026-01-02T09:13:22.405Z" }, + { url = "https://files.pythonhosted.org/packages/f3/77/2a60dee1adee4e2655ac328dd05c02a955c1cd683b9f1b82ec3feb44727c/pillow-12.1.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5da841d81b1a05ef940a8567da92decaa15bc4d7dedb540a8c219ad83d91808a", size = 5963278, upload-time = "2026-01-02T09:13:24.706Z" }, + { url = "https://files.pythonhosted.org/packages/2d/71/64e9b1c7f04ae0027f788a248e6297d7fcc29571371fe7d45495a78172c0/pillow-12.1.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:75af0b4c229ac519b155028fa1be632d812a519abba9b46b20e50c6caa184f19", size = 7029809, upload-time = "2026-01-02T09:13:26.541Z" }, +] + +[[package]] +name = "pip" +version = "26.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/48/83/0d7d4e9efe3344b8e2fe25d93be44f64b65364d3c8d7bc6dc90198d5422e/pip-26.0.1.tar.gz", hash = "sha256:c4037d8a277c89b320abe636d59f91e6d0922d08a05b60e85e53b296613346d8", size = 1812747, upload-time = "2026-02-05T02:20:18.702Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/de/f0/c81e05b613866b76d2d1066490adf1a3dbc4ee9d9c839961c3fc8a6997af/pip-26.0.1-py3-none-any.whl", hash = "sha256:bdb1b08f4274833d62c1aa29e20907365a2ceb950410df15fc9521bad440122b", size = 1787723, upload-time = "2026-02-05T02:20:16.416Z" }, +] + +[[package]] +name = "platformdirs" +version = "4.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cf/86/0248f086a84f01b37aaec0fa567b397df1a119f73c16f6c7a9aac73ea309/platformdirs-4.5.1.tar.gz", hash = "sha256:61d5cdcc6065745cdd94f0f878977f8de9437be93de97c1c12f853c9c0cdcbda", size = 21715, upload-time = "2025-12-05T13:52:58.638Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/28/3bfe2fa5a7b9c46fe7e13c97bda14c895fb10fa2ebf1d0abb90e0cea7ee1/platformdirs-4.5.1-py3-none-any.whl", hash = "sha256:d03afa3963c806a9bed9d5125c8f4cb2fdaf74a55ab60e5d59b3fde758104d31", size = 18731, upload-time = "2025-12-05T13:52:56.823Z" }, +] + +[[package]] +name = "plotly" +version = "6.5.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "narwhals" }, + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e3/4f/8a10a9b9f5192cb6fdef62f1d77fa7d834190b2c50c0cd256bd62879212b/plotly-6.5.2.tar.gz", hash = "sha256:7478555be0198562d1435dee4c308268187553cc15516a2f4dd034453699e393", size = 7015695, upload-time = "2026-01-14T21:26:51.222Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8a/67/f95b5460f127840310d2187f916cf0023b5875c0717fdf893f71e1325e87/plotly-6.5.2-py3-none-any.whl", hash = "sha256:91757653bd9c550eeea2fa2404dba6b85d1e366d54804c340b2c874e5a7eb4a4", size = 9895973, upload-time = "2026-01-14T21:26:47.135Z" }, +] + +[[package]] +name = "psutil" +version = "7.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/aa/c6/d1ddf4abb55e93cebc4f2ed8b5d6dbad109ecb8d63748dd2b20ab5e57ebe/psutil-7.2.2.tar.gz", hash = "sha256:0746f5f8d406af344fd547f1c8daa5f5c33dbc293bb8d6a16d80b4bb88f59372", size = 493740, upload-time = "2026-01-28T18:14:54.428Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/51/08/510cbdb69c25a96f4ae523f733cdc963ae654904e8db864c07585ef99875/psutil-7.2.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2edccc433cbfa046b980b0df0171cd25bcaeb3a68fe9022db0979e7aa74a826b", size = 130595, upload-time = "2026-01-28T18:14:57.293Z" }, + { url = "https://files.pythonhosted.org/packages/d6/f5/97baea3fe7a5a9af7436301f85490905379b1c6f2dd51fe3ecf24b4c5fbf/psutil-7.2.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e78c8603dcd9a04c7364f1a3e670cea95d51ee865e4efb3556a3a63adef958ea", size = 131082, upload-time = "2026-01-28T18:14:59.732Z" }, + { url = "https://files.pythonhosted.org/packages/37/d6/246513fbf9fa174af531f28412297dd05241d97a75911ac8febefa1a53c6/psutil-7.2.2-cp313-cp313t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1a571f2330c966c62aeda00dd24620425d4b0cc86881c89861fbc04549e5dc63", size = 181476, upload-time = "2026-01-28T18:15:01.884Z" }, + { url = "https://files.pythonhosted.org/packages/b8/b5/9182c9af3836cca61696dabe4fd1304e17bc56cb62f17439e1154f225dd3/psutil-7.2.2-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:917e891983ca3c1887b4ef36447b1e0873e70c933afc831c6b6da078ba474312", size = 184062, upload-time = "2026-01-28T18:15:04.436Z" }, + { url = "https://files.pythonhosted.org/packages/16/ba/0756dca669f5a9300d0cbcbfae9a4c30e446dfc7440ffe43ded5724bfd93/psutil-7.2.2-cp313-cp313t-win_amd64.whl", hash = "sha256:ab486563df44c17f5173621c7b198955bd6b613fb87c71c161f827d3fb149a9b", size = 139893, upload-time = "2026-01-28T18:15:06.378Z" }, + { url = "https://files.pythonhosted.org/packages/1c/61/8fa0e26f33623b49949346de05ec1ddaad02ed8ba64af45f40a147dbfa97/psutil-7.2.2-cp313-cp313t-win_arm64.whl", hash = "sha256:ae0aefdd8796a7737eccea863f80f81e468a1e4cf14d926bd9b6f5f2d5f90ca9", size = 135589, upload-time = "2026-01-28T18:15:08.03Z" }, + { url = "https://files.pythonhosted.org/packages/81/69/ef179ab5ca24f32acc1dac0c247fd6a13b501fd5534dbae0e05a1c48b66d/psutil-7.2.2-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:eed63d3b4d62449571547b60578c5b2c4bcccc5387148db46e0c2313dad0ee00", size = 130664, upload-time = "2026-01-28T18:15:09.469Z" }, + { url = "https://files.pythonhosted.org/packages/7b/64/665248b557a236d3fa9efc378d60d95ef56dd0a490c2cd37dafc7660d4a9/psutil-7.2.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7b6d09433a10592ce39b13d7be5a54fbac1d1228ed29abc880fb23df7cb694c9", size = 131087, upload-time = "2026-01-28T18:15:11.724Z" }, + { url = "https://files.pythonhosted.org/packages/d5/2e/e6782744700d6759ebce3043dcfa661fb61e2fb752b91cdeae9af12c2178/psutil-7.2.2-cp314-cp314t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1fa4ecf83bcdf6e6c8f4449aff98eefb5d0604bf88cb883d7da3d8d2d909546a", size = 182383, upload-time = "2026-01-28T18:15:13.445Z" }, + { url = "https://files.pythonhosted.org/packages/57/49/0a41cefd10cb7505cdc04dab3eacf24c0c2cb158a998b8c7b1d27ee2c1f5/psutil-7.2.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e452c464a02e7dc7822a05d25db4cde564444a67e58539a00f929c51eddda0cf", size = 185210, upload-time = "2026-01-28T18:15:16.002Z" }, + { url = "https://files.pythonhosted.org/packages/dd/2c/ff9bfb544f283ba5f83ba725a3c5fec6d6b10b8f27ac1dc641c473dc390d/psutil-7.2.2-cp314-cp314t-win_amd64.whl", hash = "sha256:c7663d4e37f13e884d13994247449e9f8f574bc4655d509c3b95e9ec9e2b9dc1", size = 141228, upload-time = "2026-01-28T18:15:18.385Z" }, + { url = "https://files.pythonhosted.org/packages/f2/fc/f8d9c31db14fcec13748d373e668bc3bed94d9077dbc17fb0eebc073233c/psutil-7.2.2-cp314-cp314t-win_arm64.whl", hash = "sha256:11fe5a4f613759764e79c65cf11ebdf26e33d6dd34336f8a337aa2996d71c841", size = 136284, upload-time = "2026-01-28T18:15:19.912Z" }, + { url = "https://files.pythonhosted.org/packages/e7/36/5ee6e05c9bd427237b11b3937ad82bb8ad2752d72c6969314590dd0c2f6e/psutil-7.2.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ed0cace939114f62738d808fdcecd4c869222507e266e574799e9c0faa17d486", size = 129090, upload-time = "2026-01-28T18:15:22.168Z" }, + { url = "https://files.pythonhosted.org/packages/80/c4/f5af4c1ca8c1eeb2e92ccca14ce8effdeec651d5ab6053c589b074eda6e1/psutil-7.2.2-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:1a7b04c10f32cc88ab39cbf606e117fd74721c831c98a27dc04578deb0c16979", size = 129859, upload-time = "2026-01-28T18:15:23.795Z" }, + { url = "https://files.pythonhosted.org/packages/b5/70/5d8df3b09e25bce090399cf48e452d25c935ab72dad19406c77f4e828045/psutil-7.2.2-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:076a2d2f923fd4821644f5ba89f059523da90dc9014e85f8e45a5774ca5bc6f9", size = 155560, upload-time = "2026-01-28T18:15:25.976Z" }, + { url = "https://files.pythonhosted.org/packages/63/65/37648c0c158dc222aba51c089eb3bdfa238e621674dc42d48706e639204f/psutil-7.2.2-cp36-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b0726cecd84f9474419d67252add4ac0cd9811b04d61123054b9fb6f57df6e9e", size = 156997, upload-time = "2026-01-28T18:15:27.794Z" }, + { url = "https://files.pythonhosted.org/packages/8e/13/125093eadae863ce03c6ffdbae9929430d116a246ef69866dad94da3bfbc/psutil-7.2.2-cp36-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:fd04ef36b4a6d599bbdb225dd1d3f51e00105f6d48a28f006da7f9822f2606d8", size = 148972, upload-time = "2026-01-28T18:15:29.342Z" }, + { url = "https://files.pythonhosted.org/packages/04/78/0acd37ca84ce3ddffaa92ef0f571e073faa6d8ff1f0559ab1272188ea2be/psutil-7.2.2-cp36-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b58fabe35e80b264a4e3bb23e6b96f9e45a3df7fb7eed419ac0e5947c61e47cc", size = 148266, upload-time = "2026-01-28T18:15:31.597Z" }, + { url = "https://files.pythonhosted.org/packages/b4/90/e2159492b5426be0c1fef7acba807a03511f97c5f86b3caeda6ad92351a7/psutil-7.2.2-cp37-abi3-win_amd64.whl", hash = "sha256:eb7e81434c8d223ec4a219b5fc1c47d0417b12be7ea866e24fb5ad6e84b3d988", size = 137737, upload-time = "2026-01-28T18:15:33.849Z" }, + { url = "https://files.pythonhosted.org/packages/8c/c7/7bb2e321574b10df20cbde462a94e2b71d05f9bbda251ef27d104668306a/psutil-7.2.2-cp37-abi3-win_arm64.whl", hash = "sha256:8c233660f575a5a89e6d4cb65d9f938126312bca76d8fe087b947b3a1aaac9ee", size = 134617, upload-time = "2026-01-28T18:15:36.514Z" }, +] + +[[package]] +name = "pybtex" +version = "0.25.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "latexcodec" }, + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5f/bc/c2be05ca72f8c103670e983df8be26d1e288bc6556f487fa8cccaa27779f/pybtex-0.25.1.tar.gz", hash = "sha256:9eaf90267c7e83e225af89fea65c370afbf65f458220d3946a9e3049e1eca491", size = 406157, upload-time = "2025-06-26T13:27:41.903Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/25/68/ceb5d6679baa326261f5d3e5113d9cfed6efef2810afd9f18bffb8ed312b/pybtex-0.25.1-py2.py3-none-any.whl", hash = "sha256:9053b0d619409a0a83f38abad5d9921de5f7b3ede00742beafcd9f10ad0d8c5c", size = 127437, upload-time = "2025-06-26T13:27:43.585Z" }, +] + +[[package]] +name = "pydantic" +version = "2.12.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/69/44/36f1a6e523abc58ae5f928898e4aca2e0ea509b5aa6f6f392a5d882be928/pydantic-2.12.5.tar.gz", hash = "sha256:4d351024c75c0f085a9febbb665ce8c0c6ec5d30e903bdb6394b7ede26aebb49", size = 821591, upload-time = "2025-11-26T15:11:46.471Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/87/b70ad306ebb6f9b585f114d0ac2137d792b48be34d732d60e597c2f8465a/pydantic-2.12.5-py3-none-any.whl", hash = "sha256:e561593fccf61e8a20fc46dfc2dfe075b8be7d0188df33f221ad1f0139180f9d", size = 463580, upload-time = "2025-11-26T15:11:44.605Z" }, +] + +[[package]] +name = "pydantic-core" +version = "2.41.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/71/70/23b021c950c2addd24ec408e9ab05d59b035b39d97cdc1130e1bce647bb6/pydantic_core-2.41.5.tar.gz", hash = "sha256:08daa51ea16ad373ffd5e7606252cc32f07bc72b28284b6bc9c6df804816476e", size = 460952, upload-time = "2025-11-04T13:43:49.098Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e8/72/74a989dd9f2084b3d9530b0915fdda64ac48831c30dbf7c72a41a5232db8/pydantic_core-2.41.5-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:a3a52f6156e73e7ccb0f8cced536adccb7042be67cb45f9562e12b319c119da6", size = 2105873, upload-time = "2025-11-04T13:39:31.373Z" }, + { url = "https://files.pythonhosted.org/packages/12/44/37e403fd9455708b3b942949e1d7febc02167662bf1a7da5b78ee1ea2842/pydantic_core-2.41.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7f3bf998340c6d4b0c9a2f02d6a400e51f123b59565d74dc60d252ce888c260b", size = 1899826, upload-time = "2025-11-04T13:39:32.897Z" }, + { url = "https://files.pythonhosted.org/packages/33/7f/1d5cab3ccf44c1935a359d51a8a2a9e1a654b744b5e7f80d41b88d501eec/pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:378bec5c66998815d224c9ca994f1e14c0c21cb95d2f52b6021cc0b2a58f2a5a", size = 1917869, upload-time = "2025-11-04T13:39:34.469Z" }, + { url = "https://files.pythonhosted.org/packages/6e/6a/30d94a9674a7fe4f4744052ed6c5e083424510be1e93da5bc47569d11810/pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e7b576130c69225432866fe2f4a469a85a54ade141d96fd396dffcf607b558f8", size = 2063890, upload-time = "2025-11-04T13:39:36.053Z" }, + { url = "https://files.pythonhosted.org/packages/50/be/76e5d46203fcb2750e542f32e6c371ffa9b8ad17364cf94bb0818dbfb50c/pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6cb58b9c66f7e4179a2d5e0f849c48eff5c1fca560994d6eb6543abf955a149e", size = 2229740, upload-time = "2025-11-04T13:39:37.753Z" }, + { url = "https://files.pythonhosted.org/packages/d3/ee/fed784df0144793489f87db310a6bbf8118d7b630ed07aa180d6067e653a/pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:88942d3a3dff3afc8288c21e565e476fc278902ae4d6d134f1eeda118cc830b1", size = 2350021, upload-time = "2025-11-04T13:39:40.94Z" }, + { url = "https://files.pythonhosted.org/packages/c8/be/8fed28dd0a180dca19e72c233cbf58efa36df055e5b9d90d64fd1740b828/pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f31d95a179f8d64d90f6831d71fa93290893a33148d890ba15de25642c5d075b", size = 2066378, upload-time = "2025-11-04T13:39:42.523Z" }, + { url = "https://files.pythonhosted.org/packages/b0/3b/698cf8ae1d536a010e05121b4958b1257f0b5522085e335360e53a6b1c8b/pydantic_core-2.41.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c1df3d34aced70add6f867a8cf413e299177e0c22660cc767218373d0779487b", size = 2175761, upload-time = "2025-11-04T13:39:44.553Z" }, + { url = "https://files.pythonhosted.org/packages/b8/ba/15d537423939553116dea94ce02f9c31be0fa9d0b806d427e0308ec17145/pydantic_core-2.41.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4009935984bd36bd2c774e13f9a09563ce8de4abaa7226f5108262fa3e637284", size = 2146303, upload-time = "2025-11-04T13:39:46.238Z" }, + { url = "https://files.pythonhosted.org/packages/58/7f/0de669bf37d206723795f9c90c82966726a2ab06c336deba4735b55af431/pydantic_core-2.41.5-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:34a64bc3441dc1213096a20fe27e8e128bd3ff89921706e83c0b1ac971276594", size = 2340355, upload-time = "2025-11-04T13:39:48.002Z" }, + { url = "https://files.pythonhosted.org/packages/e5/de/e7482c435b83d7e3c3ee5ee4451f6e8973cff0eb6007d2872ce6383f6398/pydantic_core-2.41.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c9e19dd6e28fdcaa5a1de679aec4141f691023916427ef9bae8584f9c2fb3b0e", size = 2319875, upload-time = "2025-11-04T13:39:49.705Z" }, + { url = "https://files.pythonhosted.org/packages/fe/e6/8c9e81bb6dd7560e33b9053351c29f30c8194b72f2d6932888581f503482/pydantic_core-2.41.5-cp311-cp311-win32.whl", hash = "sha256:2c010c6ded393148374c0f6f0bf89d206bf3217f201faa0635dcd56bd1520f6b", size = 1987549, upload-time = "2025-11-04T13:39:51.842Z" }, + { url = "https://files.pythonhosted.org/packages/11/66/f14d1d978ea94d1bc21fc98fcf570f9542fe55bfcc40269d4e1a21c19bf7/pydantic_core-2.41.5-cp311-cp311-win_amd64.whl", hash = "sha256:76ee27c6e9c7f16f47db7a94157112a2f3a00e958bc626e2f4ee8bec5c328fbe", size = 2011305, upload-time = "2025-11-04T13:39:53.485Z" }, + { url = "https://files.pythonhosted.org/packages/56/d8/0e271434e8efd03186c5386671328154ee349ff0354d83c74f5caaf096ed/pydantic_core-2.41.5-cp311-cp311-win_arm64.whl", hash = "sha256:4bc36bbc0b7584de96561184ad7f012478987882ebf9f9c389b23f432ea3d90f", size = 1972902, upload-time = "2025-11-04T13:39:56.488Z" }, + { url = "https://files.pythonhosted.org/packages/5f/5d/5f6c63eebb5afee93bcaae4ce9a898f3373ca23df3ccaef086d0233a35a7/pydantic_core-2.41.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f41a7489d32336dbf2199c8c0a215390a751c5b014c2c1c5366e817202e9cdf7", size = 2110990, upload-time = "2025-11-04T13:39:58.079Z" }, + { url = "https://files.pythonhosted.org/packages/aa/32/9c2e8ccb57c01111e0fd091f236c7b371c1bccea0fa85247ac55b1e2b6b6/pydantic_core-2.41.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:070259a8818988b9a84a449a2a7337c7f430a22acc0859c6b110aa7212a6d9c0", size = 1896003, upload-time = "2025-11-04T13:39:59.956Z" }, + { url = "https://files.pythonhosted.org/packages/68/b8/a01b53cb0e59139fbc9e4fda3e9724ede8de279097179be4ff31f1abb65a/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e96cea19e34778f8d59fe40775a7a574d95816eb150850a85a7a4c8f4b94ac69", size = 1919200, upload-time = "2025-11-04T13:40:02.241Z" }, + { url = "https://files.pythonhosted.org/packages/38/de/8c36b5198a29bdaade07b5985e80a233a5ac27137846f3bc2d3b40a47360/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed2e99c456e3fadd05c991f8f437ef902e00eedf34320ba2b0842bd1c3ca3a75", size = 2052578, upload-time = "2025-11-04T13:40:04.401Z" }, + { url = "https://files.pythonhosted.org/packages/00/b5/0e8e4b5b081eac6cb3dbb7e60a65907549a1ce035a724368c330112adfdd/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:65840751b72fbfd82c3c640cff9284545342a4f1eb1586ad0636955b261b0b05", size = 2208504, upload-time = "2025-11-04T13:40:06.072Z" }, + { url = "https://files.pythonhosted.org/packages/77/56/87a61aad59c7c5b9dc8caad5a41a5545cba3810c3e828708b3d7404f6cef/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e536c98a7626a98feb2d3eaf75944ef6f3dbee447e1f841eae16f2f0a72d8ddc", size = 2335816, upload-time = "2025-11-04T13:40:07.835Z" }, + { url = "https://files.pythonhosted.org/packages/0d/76/941cc9f73529988688a665a5c0ecff1112b3d95ab48f81db5f7606f522d3/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eceb81a8d74f9267ef4081e246ffd6d129da5d87e37a77c9bde550cb04870c1c", size = 2075366, upload-time = "2025-11-04T13:40:09.804Z" }, + { url = "https://files.pythonhosted.org/packages/d3/43/ebef01f69baa07a482844faaa0a591bad1ef129253ffd0cdaa9d8a7f72d3/pydantic_core-2.41.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d38548150c39b74aeeb0ce8ee1d8e82696f4a4e16ddc6de7b1d8823f7de4b9b5", size = 2171698, upload-time = "2025-11-04T13:40:12.004Z" }, + { url = "https://files.pythonhosted.org/packages/b1/87/41f3202e4193e3bacfc2c065fab7706ebe81af46a83d3e27605029c1f5a6/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c23e27686783f60290e36827f9c626e63154b82b116d7fe9adba1fda36da706c", size = 2132603, upload-time = "2025-11-04T13:40:13.868Z" }, + { url = "https://files.pythonhosted.org/packages/49/7d/4c00df99cb12070b6bccdef4a195255e6020a550d572768d92cc54dba91a/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:482c982f814460eabe1d3bb0adfdc583387bd4691ef00b90575ca0d2b6fe2294", size = 2329591, upload-time = "2025-11-04T13:40:15.672Z" }, + { url = "https://files.pythonhosted.org/packages/cc/6a/ebf4b1d65d458f3cda6a7335d141305dfa19bdc61140a884d165a8a1bbc7/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:bfea2a5f0b4d8d43adf9d7b8bf019fb46fdd10a2e5cde477fbcb9d1fa08c68e1", size = 2319068, upload-time = "2025-11-04T13:40:17.532Z" }, + { url = "https://files.pythonhosted.org/packages/49/3b/774f2b5cd4192d5ab75870ce4381fd89cf218af999515baf07e7206753f0/pydantic_core-2.41.5-cp312-cp312-win32.whl", hash = "sha256:b74557b16e390ec12dca509bce9264c3bbd128f8a2c376eaa68003d7f327276d", size = 1985908, upload-time = "2025-11-04T13:40:19.309Z" }, + { url = "https://files.pythonhosted.org/packages/86/45/00173a033c801cacf67c190fef088789394feaf88a98a7035b0e40d53dc9/pydantic_core-2.41.5-cp312-cp312-win_amd64.whl", hash = "sha256:1962293292865bca8e54702b08a4f26da73adc83dd1fcf26fbc875b35d81c815", size = 2020145, upload-time = "2025-11-04T13:40:21.548Z" }, + { url = "https://files.pythonhosted.org/packages/f9/22/91fbc821fa6d261b376a3f73809f907cec5ca6025642c463d3488aad22fb/pydantic_core-2.41.5-cp312-cp312-win_arm64.whl", hash = "sha256:1746d4a3d9a794cacae06a5eaaccb4b8643a131d45fbc9af23e353dc0a5ba5c3", size = 1976179, upload-time = "2025-11-04T13:40:23.393Z" }, + { url = "https://files.pythonhosted.org/packages/87/06/8806241ff1f70d9939f9af039c6c35f2360cf16e93c2ca76f184e76b1564/pydantic_core-2.41.5-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:941103c9be18ac8daf7b7adca8228f8ed6bb7a1849020f643b3a14d15b1924d9", size = 2120403, upload-time = "2025-11-04T13:40:25.248Z" }, + { url = "https://files.pythonhosted.org/packages/94/02/abfa0e0bda67faa65fef1c84971c7e45928e108fe24333c81f3bfe35d5f5/pydantic_core-2.41.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:112e305c3314f40c93998e567879e887a3160bb8689ef3d2c04b6cc62c33ac34", size = 1896206, upload-time = "2025-11-04T13:40:27.099Z" }, + { url = "https://files.pythonhosted.org/packages/15/df/a4c740c0943e93e6500f9eb23f4ca7ec9bf71b19e608ae5b579678c8d02f/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cbaad15cb0c90aa221d43c00e77bb33c93e8d36e0bf74760cd00e732d10a6a0", size = 1919307, upload-time = "2025-11-04T13:40:29.806Z" }, + { url = "https://files.pythonhosted.org/packages/9a/e3/6324802931ae1d123528988e0e86587c2072ac2e5394b4bc2bc34b61ff6e/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:03ca43e12fab6023fc79d28ca6b39b05f794ad08ec2feccc59a339b02f2b3d33", size = 2063258, upload-time = "2025-11-04T13:40:33.544Z" }, + { url = "https://files.pythonhosted.org/packages/c9/d4/2230d7151d4957dd79c3044ea26346c148c98fbf0ee6ebd41056f2d62ab5/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc799088c08fa04e43144b164feb0c13f9a0bc40503f8df3e9fde58a3c0c101e", size = 2214917, upload-time = "2025-11-04T13:40:35.479Z" }, + { url = "https://files.pythonhosted.org/packages/e6/9f/eaac5df17a3672fef0081b6c1bb0b82b33ee89aa5cec0d7b05f52fd4a1fa/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:97aeba56665b4c3235a0e52b2c2f5ae9cd071b8a8310ad27bddb3f7fb30e9aa2", size = 2332186, upload-time = "2025-11-04T13:40:37.436Z" }, + { url = "https://files.pythonhosted.org/packages/cf/4e/35a80cae583a37cf15604b44240e45c05e04e86f9cfd766623149297e971/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:406bf18d345822d6c21366031003612b9c77b3e29ffdb0f612367352aab7d586", size = 2073164, upload-time = "2025-11-04T13:40:40.289Z" }, + { url = "https://files.pythonhosted.org/packages/bf/e3/f6e262673c6140dd3305d144d032f7bd5f7497d3871c1428521f19f9efa2/pydantic_core-2.41.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b93590ae81f7010dbe380cdeab6f515902ebcbefe0b9327cc4804d74e93ae69d", size = 2179146, upload-time = "2025-11-04T13:40:42.809Z" }, + { url = "https://files.pythonhosted.org/packages/75/c7/20bd7fc05f0c6ea2056a4565c6f36f8968c0924f19b7d97bbfea55780e73/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:01a3d0ab748ee531f4ea6c3e48ad9dac84ddba4b0d82291f87248f2f9de8d740", size = 2137788, upload-time = "2025-11-04T13:40:44.752Z" }, + { url = "https://files.pythonhosted.org/packages/3a/8d/34318ef985c45196e004bc46c6eab2eda437e744c124ef0dbe1ff2c9d06b/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:6561e94ba9dacc9c61bce40e2d6bdc3bfaa0259d3ff36ace3b1e6901936d2e3e", size = 2340133, upload-time = "2025-11-04T13:40:46.66Z" }, + { url = "https://files.pythonhosted.org/packages/9c/59/013626bf8c78a5a5d9350d12e7697d3d4de951a75565496abd40ccd46bee/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:915c3d10f81bec3a74fbd4faebe8391013ba61e5a1a8d48c4455b923bdda7858", size = 2324852, upload-time = "2025-11-04T13:40:48.575Z" }, + { url = "https://files.pythonhosted.org/packages/1a/d9/c248c103856f807ef70c18a4f986693a46a8ffe1602e5d361485da502d20/pydantic_core-2.41.5-cp313-cp313-win32.whl", hash = "sha256:650ae77860b45cfa6e2cdafc42618ceafab3a2d9a3811fcfbd3bbf8ac3c40d36", size = 1994679, upload-time = "2025-11-04T13:40:50.619Z" }, + { url = "https://files.pythonhosted.org/packages/9e/8b/341991b158ddab181cff136acd2552c9f35bd30380422a639c0671e99a91/pydantic_core-2.41.5-cp313-cp313-win_amd64.whl", hash = "sha256:79ec52ec461e99e13791ec6508c722742ad745571f234ea6255bed38c6480f11", size = 2019766, upload-time = "2025-11-04T13:40:52.631Z" }, + { url = "https://files.pythonhosted.org/packages/73/7d/f2f9db34af103bea3e09735bb40b021788a5e834c81eedb541991badf8f5/pydantic_core-2.41.5-cp313-cp313-win_arm64.whl", hash = "sha256:3f84d5c1b4ab906093bdc1ff10484838aca54ef08de4afa9de0f5f14d69639cd", size = 1981005, upload-time = "2025-11-04T13:40:54.734Z" }, + { url = "https://files.pythonhosted.org/packages/ea/28/46b7c5c9635ae96ea0fbb779e271a38129df2550f763937659ee6c5dbc65/pydantic_core-2.41.5-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:3f37a19d7ebcdd20b96485056ba9e8b304e27d9904d233d7b1015db320e51f0a", size = 2119622, upload-time = "2025-11-04T13:40:56.68Z" }, + { url = "https://files.pythonhosted.org/packages/74/1a/145646e5687e8d9a1e8d09acb278c8535ebe9e972e1f162ed338a622f193/pydantic_core-2.41.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1d1d9764366c73f996edd17abb6d9d7649a7eb690006ab6adbda117717099b14", size = 1891725, upload-time = "2025-11-04T13:40:58.807Z" }, + { url = "https://files.pythonhosted.org/packages/23/04/e89c29e267b8060b40dca97bfc64a19b2a3cf99018167ea1677d96368273/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25e1c2af0fce638d5f1988b686f3b3ea8cd7de5f244ca147c777769e798a9cd1", size = 1915040, upload-time = "2025-11-04T13:41:00.853Z" }, + { url = "https://files.pythonhosted.org/packages/84/a3/15a82ac7bd97992a82257f777b3583d3e84bdb06ba6858f745daa2ec8a85/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:506d766a8727beef16b7adaeb8ee6217c64fc813646b424d0804d67c16eddb66", size = 2063691, upload-time = "2025-11-04T13:41:03.504Z" }, + { url = "https://files.pythonhosted.org/packages/74/9b/0046701313c6ef08c0c1cf0e028c67c770a4e1275ca73131563c5f2a310a/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4819fa52133c9aa3c387b3328f25c1facc356491e6135b459f1de698ff64d869", size = 2213897, upload-time = "2025-11-04T13:41:05.804Z" }, + { url = "https://files.pythonhosted.org/packages/8a/cd/6bac76ecd1b27e75a95ca3a9a559c643b3afcd2dd62086d4b7a32a18b169/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2b761d210c9ea91feda40d25b4efe82a1707da2ef62901466a42492c028553a2", size = 2333302, upload-time = "2025-11-04T13:41:07.809Z" }, + { url = "https://files.pythonhosted.org/packages/4c/d2/ef2074dc020dd6e109611a8be4449b98cd25e1b9b8a303c2f0fca2f2bcf7/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22f0fb8c1c583a3b6f24df2470833b40207e907b90c928cc8d3594b76f874375", size = 2064877, upload-time = "2025-11-04T13:41:09.827Z" }, + { url = "https://files.pythonhosted.org/packages/18/66/e9db17a9a763d72f03de903883c057b2592c09509ccfe468187f2a2eef29/pydantic_core-2.41.5-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2782c870e99878c634505236d81e5443092fba820f0373997ff75f90f68cd553", size = 2180680, upload-time = "2025-11-04T13:41:12.379Z" }, + { url = "https://files.pythonhosted.org/packages/d3/9e/3ce66cebb929f3ced22be85d4c2399b8e85b622db77dad36b73c5387f8f8/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:0177272f88ab8312479336e1d777f6b124537d47f2123f89cb37e0accea97f90", size = 2138960, upload-time = "2025-11-04T13:41:14.627Z" }, + { url = "https://files.pythonhosted.org/packages/a6/62/205a998f4327d2079326b01abee48e502ea739d174f0a89295c481a2272e/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:63510af5e38f8955b8ee5687740d6ebf7c2a0886d15a6d65c32814613681bc07", size = 2339102, upload-time = "2025-11-04T13:41:16.868Z" }, + { url = "https://files.pythonhosted.org/packages/3c/0d/f05e79471e889d74d3d88f5bd20d0ed189ad94c2423d81ff8d0000aab4ff/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:e56ba91f47764cc14f1daacd723e3e82d1a89d783f0f5afe9c364b8bb491ccdb", size = 2326039, upload-time = "2025-11-04T13:41:18.934Z" }, + { url = "https://files.pythonhosted.org/packages/ec/e1/e08a6208bb100da7e0c4b288eed624a703f4d129bde2da475721a80cab32/pydantic_core-2.41.5-cp314-cp314-win32.whl", hash = "sha256:aec5cf2fd867b4ff45b9959f8b20ea3993fc93e63c7363fe6851424c8a7e7c23", size = 1995126, upload-time = "2025-11-04T13:41:21.418Z" }, + { url = "https://files.pythonhosted.org/packages/48/5d/56ba7b24e9557f99c9237e29f5c09913c81eeb2f3217e40e922353668092/pydantic_core-2.41.5-cp314-cp314-win_amd64.whl", hash = "sha256:8e7c86f27c585ef37c35e56a96363ab8de4e549a95512445b85c96d3e2f7c1bf", size = 2015489, upload-time = "2025-11-04T13:41:24.076Z" }, + { url = "https://files.pythonhosted.org/packages/4e/bb/f7a190991ec9e3e0ba22e4993d8755bbc4a32925c0b5b42775c03e8148f9/pydantic_core-2.41.5-cp314-cp314-win_arm64.whl", hash = "sha256:e672ba74fbc2dc8eea59fb6d4aed6845e6905fc2a8afe93175d94a83ba2a01a0", size = 1977288, upload-time = "2025-11-04T13:41:26.33Z" }, + { url = "https://files.pythonhosted.org/packages/92/ed/77542d0c51538e32e15afe7899d79efce4b81eee631d99850edc2f5e9349/pydantic_core-2.41.5-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:8566def80554c3faa0e65ac30ab0932b9e3a5cd7f8323764303d468e5c37595a", size = 2120255, upload-time = "2025-11-04T13:41:28.569Z" }, + { url = "https://files.pythonhosted.org/packages/bb/3d/6913dde84d5be21e284439676168b28d8bbba5600d838b9dca99de0fad71/pydantic_core-2.41.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:b80aa5095cd3109962a298ce14110ae16b8c1aece8b72f9dafe81cf597ad80b3", size = 1863760, upload-time = "2025-11-04T13:41:31.055Z" }, + { url = "https://files.pythonhosted.org/packages/5a/f0/e5e6b99d4191da102f2b0eb9687aaa7f5bea5d9964071a84effc3e40f997/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3006c3dd9ba34b0c094c544c6006cc79e87d8612999f1a5d43b769b89181f23c", size = 1878092, upload-time = "2025-11-04T13:41:33.21Z" }, + { url = "https://files.pythonhosted.org/packages/71/48/36fb760642d568925953bcc8116455513d6e34c4beaa37544118c36aba6d/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72f6c8b11857a856bcfa48c86f5368439f74453563f951e473514579d44aa612", size = 2053385, upload-time = "2025-11-04T13:41:35.508Z" }, + { url = "https://files.pythonhosted.org/packages/20/25/92dc684dd8eb75a234bc1c764b4210cf2646479d54b47bf46061657292a8/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cb1b2f9742240e4bb26b652a5aeb840aa4b417c7748b6f8387927bc6e45e40d", size = 2218832, upload-time = "2025-11-04T13:41:37.732Z" }, + { url = "https://files.pythonhosted.org/packages/e2/09/f53e0b05023d3e30357d82eb35835d0f6340ca344720a4599cd663dca599/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bd3d54f38609ff308209bd43acea66061494157703364ae40c951f83ba99a1a9", size = 2327585, upload-time = "2025-11-04T13:41:40Z" }, + { url = "https://files.pythonhosted.org/packages/aa/4e/2ae1aa85d6af35a39b236b1b1641de73f5a6ac4d5a7509f77b814885760c/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ff4321e56e879ee8d2a879501c8e469414d948f4aba74a2d4593184eb326660", size = 2041078, upload-time = "2025-11-04T13:41:42.323Z" }, + { url = "https://files.pythonhosted.org/packages/cd/13/2e215f17f0ef326fc72afe94776edb77525142c693767fc347ed6288728d/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d0d2568a8c11bf8225044aa94409e21da0cb09dcdafe9ecd10250b2baad531a9", size = 2173914, upload-time = "2025-11-04T13:41:45.221Z" }, + { url = "https://files.pythonhosted.org/packages/02/7a/f999a6dcbcd0e5660bc348a3991c8915ce6599f4f2c6ac22f01d7a10816c/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:a39455728aabd58ceabb03c90e12f71fd30fa69615760a075b9fec596456ccc3", size = 2129560, upload-time = "2025-11-04T13:41:47.474Z" }, + { url = "https://files.pythonhosted.org/packages/3a/b1/6c990ac65e3b4c079a4fb9f5b05f5b013afa0f4ed6780a3dd236d2cbdc64/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:239edca560d05757817c13dc17c50766136d21f7cd0fac50295499ae24f90fdf", size = 2329244, upload-time = "2025-11-04T13:41:49.992Z" }, + { url = "https://files.pythonhosted.org/packages/d9/02/3c562f3a51afd4d88fff8dffb1771b30cfdfd79befd9883ee094f5b6c0d8/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:2a5e06546e19f24c6a96a129142a75cee553cc018ffee48a460059b1185f4470", size = 2331955, upload-time = "2025-11-04T13:41:54.079Z" }, + { url = "https://files.pythonhosted.org/packages/5c/96/5fb7d8c3c17bc8c62fdb031c47d77a1af698f1d7a406b0f79aaa1338f9ad/pydantic_core-2.41.5-cp314-cp314t-win32.whl", hash = "sha256:b4ececa40ac28afa90871c2cc2b9ffd2ff0bf749380fbdf57d165fd23da353aa", size = 1988906, upload-time = "2025-11-04T13:41:56.606Z" }, + { url = "https://files.pythonhosted.org/packages/22/ed/182129d83032702912c2e2d8bbe33c036f342cc735737064668585dac28f/pydantic_core-2.41.5-cp314-cp314t-win_amd64.whl", hash = "sha256:80aa89cad80b32a912a65332f64a4450ed00966111b6615ca6816153d3585a8c", size = 1981607, upload-time = "2025-11-04T13:41:58.889Z" }, + { url = "https://files.pythonhosted.org/packages/9f/ed/068e41660b832bb0b1aa5b58011dea2a3fe0ba7861ff38c4d4904c1c1a99/pydantic_core-2.41.5-cp314-cp314t-win_arm64.whl", hash = "sha256:35b44f37a3199f771c3eaa53051bc8a70cd7b54f333531c59e29fd4db5d15008", size = 1974769, upload-time = "2025-11-04T13:42:01.186Z" }, + { url = "https://files.pythonhosted.org/packages/11/72/90fda5ee3b97e51c494938a4a44c3a35a9c96c19bba12372fb9c634d6f57/pydantic_core-2.41.5-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:b96d5f26b05d03cc60f11a7761a5ded1741da411e7fe0909e27a5e6a0cb7b034", size = 2115441, upload-time = "2025-11-04T13:42:39.557Z" }, + { url = "https://files.pythonhosted.org/packages/1f/53/8942f884fa33f50794f119012dc6a1a02ac43a56407adaac20463df8e98f/pydantic_core-2.41.5-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:634e8609e89ceecea15e2d61bc9ac3718caaaa71963717bf3c8f38bfde64242c", size = 1930291, upload-time = "2025-11-04T13:42:42.169Z" }, + { url = "https://files.pythonhosted.org/packages/79/c8/ecb9ed9cd942bce09fc888ee960b52654fbdbede4ba6c2d6e0d3b1d8b49c/pydantic_core-2.41.5-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:93e8740d7503eb008aa2df04d3b9735f845d43ae845e6dcd2be0b55a2da43cd2", size = 1948632, upload-time = "2025-11-04T13:42:44.564Z" }, + { url = "https://files.pythonhosted.org/packages/2e/1b/687711069de7efa6af934e74f601e2a4307365e8fdc404703afc453eab26/pydantic_core-2.41.5-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f15489ba13d61f670dcc96772e733aad1a6f9c429cc27574c6cdaed82d0146ad", size = 2138905, upload-time = "2025-11-04T13:42:47.156Z" }, + { url = "https://files.pythonhosted.org/packages/09/32/59b0c7e63e277fa7911c2fc70ccfb45ce4b98991e7ef37110663437005af/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:7da7087d756b19037bc2c06edc6c170eeef3c3bafcb8f532ff17d64dc427adfd", size = 2110495, upload-time = "2025-11-04T13:42:49.689Z" }, + { url = "https://files.pythonhosted.org/packages/aa/81/05e400037eaf55ad400bcd318c05bb345b57e708887f07ddb2d20e3f0e98/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:aabf5777b5c8ca26f7824cb4a120a740c9588ed58df9b2d196ce92fba42ff8dc", size = 1915388, upload-time = "2025-11-04T13:42:52.215Z" }, + { url = "https://files.pythonhosted.org/packages/6e/0d/e3549b2399f71d56476b77dbf3cf8937cec5cd70536bdc0e374a421d0599/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c007fe8a43d43b3969e8469004e9845944f1a80e6acd47c150856bb87f230c56", size = 1942879, upload-time = "2025-11-04T13:42:56.483Z" }, + { url = "https://files.pythonhosted.org/packages/f7/07/34573da085946b6a313d7c42f82f16e8920bfd730665de2d11c0c37a74b5/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76d0819de158cd855d1cbb8fcafdf6f5cf1eb8e470abe056d5d161106e38062b", size = 2139017, upload-time = "2025-11-04T13:42:59.471Z" }, + { url = "https://files.pythonhosted.org/packages/5f/9b/1b3f0e9f9305839d7e84912f9e8bfbd191ed1b1ef48083609f0dabde978c/pydantic_core-2.41.5-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b2379fa7ed44ddecb5bfe4e48577d752db9fc10be00a6b7446e9663ba143de26", size = 2101980, upload-time = "2025-11-04T13:43:25.97Z" }, + { url = "https://files.pythonhosted.org/packages/a4/ed/d71fefcb4263df0da6a85b5d8a7508360f2f2e9b3bf5814be9c8bccdccc1/pydantic_core-2.41.5-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:266fb4cbf5e3cbd0b53669a6d1b039c45e3ce651fd5442eff4d07c2cc8d66808", size = 1923865, upload-time = "2025-11-04T13:43:28.763Z" }, + { url = "https://files.pythonhosted.org/packages/ce/3a/626b38db460d675f873e4444b4bb030453bbe7b4ba55df821d026a0493c4/pydantic_core-2.41.5-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58133647260ea01e4d0500089a8c4f07bd7aa6ce109682b1426394988d8aaacc", size = 2134256, upload-time = "2025-11-04T13:43:31.71Z" }, + { url = "https://files.pythonhosted.org/packages/83/d9/8412d7f06f616bbc053d30cb4e5f76786af3221462ad5eee1f202021eb4e/pydantic_core-2.41.5-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:287dad91cfb551c363dc62899a80e9e14da1f0e2b6ebde82c806612ca2a13ef1", size = 2174762, upload-time = "2025-11-04T13:43:34.744Z" }, + { url = "https://files.pythonhosted.org/packages/55/4c/162d906b8e3ba3a99354e20faa1b49a85206c47de97a639510a0e673f5da/pydantic_core-2.41.5-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:03b77d184b9eb40240ae9fd676ca364ce1085f203e1b1256f8ab9984dca80a84", size = 2143141, upload-time = "2025-11-04T13:43:37.701Z" }, + { url = "https://files.pythonhosted.org/packages/1f/f2/f11dd73284122713f5f89fc940f370d035fa8e1e078d446b3313955157fe/pydantic_core-2.41.5-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:a668ce24de96165bb239160b3d854943128f4334822900534f2fe947930e5770", size = 2330317, upload-time = "2025-11-04T13:43:40.406Z" }, + { url = "https://files.pythonhosted.org/packages/88/9d/b06ca6acfe4abb296110fb1273a4d848a0bfb2ff65f3ee92127b3244e16b/pydantic_core-2.41.5-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f14f8f046c14563f8eb3f45f499cc658ab8d10072961e07225e507adb700e93f", size = 2316992, upload-time = "2025-11-04T13:43:43.602Z" }, + { url = "https://files.pythonhosted.org/packages/36/c7/cfc8e811f061c841d7990b0201912c3556bfeb99cdcb7ed24adc8d6f8704/pydantic_core-2.41.5-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:56121965f7a4dc965bff783d70b907ddf3d57f6eba29b6d2e5dabfaf07799c51", size = 2145302, upload-time = "2025-11-04T13:43:46.64Z" }, +] + +[[package]] +name = "pydantic-settings" +version = "2.12.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pydantic" }, + { name = "python-dotenv" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/43/4b/ac7e0aae12027748076d72a8764ff1c9d82ca75a7a52622e67ed3f765c54/pydantic_settings-2.12.0.tar.gz", hash = "sha256:005538ef951e3c2a68e1c08b292b5f2e71490def8589d4221b95dab00dafcfd0", size = 194184, upload-time = "2025-11-10T14:25:47.013Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/60/5d4751ba3f4a40a6891f24eec885f51afd78d208498268c734e256fb13c4/pydantic_settings-2.12.0-py3-none-any.whl", hash = "sha256:fddb9fd99a5b18da837b29710391e945b1e30c135477f484084ee513adb93809", size = 51880, upload-time = "2025-11-10T14:25:45.546Z" }, +] + +[[package]] +name = "pyfai" +version = "2025.12.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "fabio" }, + { name = "h5py" }, + { name = "matplotlib" }, + { name = "numexpr" }, + { name = "numpy" }, + { name = "scipy" }, + { name = "silx" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1f/8b/25a4b3ec765ac65162d3c10c93850f245f536d11d2fd4a5c676999e7b564/pyfai-2025.12.1.tar.gz", hash = "sha256:88b5a7334af419de7ffba40c772896e85bd51dc1f05c099eb52c30f1d7752a2e", size = 68401729, upload-time = "2025-12-19T07:50:12.013Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/92/87fd57c44a987ae7a5e04dccb0b96da05d0ef31623bb7ca87297a4c76b7b/pyfai-2025.12.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:115b7c5b3dc4c3a618199d78e4d2589931839452fcadc24fdbf09afe4fae5d9f", size = 5818184, upload-time = "2025-12-19T08:08:20.471Z" }, + { url = "https://files.pythonhosted.org/packages/2e/51/3b8edef0dd33835e783dcc1850dc7a83c39ce68b9d374e35d22f00f72890/pyfai-2025.12.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d2d178fc30022a708065dfa4a2a4f3ee81d61f401137d8c4c697f7c65abab91b", size = 5293688, upload-time = "2025-12-19T08:08:22.766Z" }, + { url = "https://files.pythonhosted.org/packages/c1/b1/0d1d952fdd59d82a14e322ce2e5b9565f357190f05aadbdf4036b08fa4d8/pyfai-2025.12.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1c23fd9c2b70c6192f9d8cc04dc05ba6d0eebae364091e0bc9f4a4b85de84b20", size = 7274175, upload-time = "2025-12-19T08:08:24.58Z" }, + { url = "https://files.pythonhosted.org/packages/6f/4a/0c328e0e920441f3ecfce0463bb3ac0d3682d1637a45eba57bb6d913bd29/pyfai-2025.12.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:29b3dd7fc283faa5de98ef53f542646b05f4f47bf3d12174643e7f28204bdbe1", size = 7330309, upload-time = "2025-12-19T07:35:53.918Z" }, + { url = "https://files.pythonhosted.org/packages/e0/41/47146f56af9b419ddf8dcdc284a9e5cc8afaf9db9bcb05fae64881e99e7a/pyfai-2025.12.1-cp311-cp311-win_amd64.whl", hash = "sha256:932fc7fa6e59aef90d85a7f3bd9f0a08af732c69394fca6947c5c5f07dea4976", size = 5441508, upload-time = "2025-12-19T08:08:27.577Z" }, + { url = "https://files.pythonhosted.org/packages/4a/34/65f7f8afee39e5fe7c736cd404573cb27981c3f468245948748223121b84/pyfai-2025.12.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:403faa1250d9130fde290b84d7a2cc9d35bcdabf779e201cadf912b7e9f85397", size = 5599237, upload-time = "2025-12-19T08:08:29.413Z" }, + { url = "https://files.pythonhosted.org/packages/a9/a5/1a1ac47f858e1961d1f6ac1311c12e4449adf9e9a2142a60bf2846e30e68/pyfai-2025.12.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce6a2268e556e790b51fe5baa4a23d5c2e213f0b5324dc641ff1626e3a6f7cf9", size = 5186423, upload-time = "2025-12-19T08:08:32.321Z" }, + { url = "https://files.pythonhosted.org/packages/51/91/3c51be7b1ec6412b08e3b621759702303b6a61d57fb77bb71e061ca98cd4/pyfai-2025.12.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c0e102a9c6fe54862c9d56b2016e210433ab4629495381309b70c8ae62cd018a", size = 6935701, upload-time = "2025-12-19T08:08:34.296Z" }, + { url = "https://files.pythonhosted.org/packages/04/58/d830542956a6bfb24d3e7964bee06ebc17871255f1f50a7b4070a57b7f60/pyfai-2025.12.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1f582e5606a121a0d1f8102f7c0212648d84b99e76348b6999698c613d0b2a31", size = 7041230, upload-time = "2025-12-19T07:35:56.179Z" }, + { url = "https://files.pythonhosted.org/packages/b4/28/e0e425f74bd06bce57c0e58f69dbbb31b74441228eae9223525817d66131/pyfai-2025.12.1-cp312-cp312-win_amd64.whl", hash = "sha256:4a032f01dbbd0bbbdfe4bf3e24c8b50452dcc0bb5eddd16dcbacb3916d9e886d", size = 5274496, upload-time = "2025-12-19T08:08:36.772Z" }, + { url = "https://files.pythonhosted.org/packages/f7/7d/292cf095a8a6b5109ff31cf1130f70b42bc77cf7bd35fbf7440d91b36279/pyfai-2025.12.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:3f0676be03e85bb4adffd872dc0b3565fdc425a034081acf0ef3f4178b3d1367", size = 5602116, upload-time = "2025-12-19T08:08:38.668Z" }, + { url = "https://files.pythonhosted.org/packages/10/90/e9bfa09405caebd5b4e7b817ad1170955dd887520880a64ef19c302e4cbb/pyfai-2025.12.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a5a5c59ae25832998ab4fbf2cd1f583c5843f8c5940da300a4d65d715efa457b", size = 5163166, upload-time = "2025-12-19T08:08:40.578Z" }, + { url = "https://files.pythonhosted.org/packages/23/a6/7bbc8ddd8c93a62b9eeb16797aa887e2814de4370aba7939d180d3a51cb6/pyfai-2025.12.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8138dace04ac8ac5dc04a9d279970a528935dba18a16f99c26e3a8fd218ba8a4", size = 6911563, upload-time = "2025-12-19T08:08:42.792Z" }, + { url = "https://files.pythonhosted.org/packages/01/5c/af3f4236c85fd3fbc219ed1401997eb9659586076086ba3e796c0da55ea0/pyfai-2025.12.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5bb1167aafbd20e03c252d99b51743f1c1eec6da7d980a6b3fc0d255b109b824", size = 7007113, upload-time = "2025-12-19T07:35:58.505Z" }, + { url = "https://files.pythonhosted.org/packages/b9/39/0a823de16e5620ee3d605635ef6ab89ce8531a52f386fe735c0f2d0aa3ab/pyfai-2025.12.1-cp313-cp313-win_amd64.whl", hash = "sha256:905bafbbc763b41e306b756ae97d7e353e64ff0665737fc6c6f4a818090cbba8", size = 5269115, upload-time = "2025-12-19T08:08:45.646Z" }, + { url = "https://files.pythonhosted.org/packages/4a/d9/793533c5a231e9392e3ee32e471080d3100e7ebda448a0e3d630129eef33/pyfai-2025.12.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:e4c333dd344699d7da7c74b1ae7d9c135a15f306f76e50a53b011e036b7103be", size = 5193739, upload-time = "2025-12-19T08:08:47.928Z" }, + { url = "https://files.pythonhosted.org/packages/7b/06/b4e915f035c4f3d23f1f1c12b374a7e55224147db5b1c3bfcd91af3ddbec/pyfai-2025.12.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ab297f55e9d7ab6d2bedcfd8b24e10d4074a2b7bcf92702c93bdf8b6fa24266f", size = 7024334, upload-time = "2025-12-19T07:36:00.446Z" }, + { url = "https://files.pythonhosted.org/packages/28/4f/1d7577ecfad3ff2258cbc1793ab9e1bb0a81c7c9c8e1e335f06a2fa49057/pyfai-2025.12.1-cp314-cp314-win_amd64.whl", hash = "sha256:928d881adba2376c2bebade8dcbb87a49ded9b2242616d3c9d1aeae7d018e0a7", size = 5361609, upload-time = "2025-12-19T08:08:52.754Z" }, + { url = "https://files.pythonhosted.org/packages/b8/38/f49e3a6a72f7ef619e1d051f179e6c4082b55a23583b92d97fb6c825ecfa/pyfai-2025.12.1-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bc7919c31aa87de4b2706f4faaebc1e61b1558ce3717a2173df2c9ef93ca2dc9", size = 6644333, upload-time = "2025-12-19T07:36:02.8Z" }, + { url = "https://files.pythonhosted.org/packages/ec/ea/5085e6563a20e24addc4e2016873815a1c361302fe2b68c7dc64b8172947/pyfai-2025.12.1-cp314-cp314t-win_amd64.whl", hash = "sha256:e66858246ff5e55334a55925c3491e602e88cafc28d2abf24f4685d45faee36b", size = 5987214, upload-time = "2025-12-19T08:08:50.842Z" }, +] + +[[package]] +name = "pymatgen" +version = "2025.10.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "bibtexparser" }, + { name = "joblib" }, + { name = "matplotlib" }, + { name = "monty" }, + { name = "networkx" }, + { name = "numpy" }, + { name = "orjson" }, + { name = "palettable" }, + { name = "pandas" }, + { name = "plotly" }, + { name = "requests" }, + { name = "ruamel-yaml" }, + { name = "scipy" }, + { name = "spglib" }, + { name = "sympy" }, + { name = "tabulate" }, + { name = "tqdm" }, + { name = "uncertainties" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c0/6c/3e7f3f6884d3797a847a8d2441b165bb3a09979a0e40e328d2aca4fa933e/pymatgen-2025.10.7.tar.gz", hash = "sha256:11b4b4dcc847c377088984e58802d155b79237a53d586eb75f32370ed8fafda2", size = 3147848, upload-time = "2025-10-07T13:44:33.704Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f1/e5/11d97c51261461b2134816de23d5cf407fe361a9442999c0beab03e36076/pymatgen-2025.10.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:370aa89324548742ee674f1255a4daf0a4e98769f90dfdfabf97fa7c79e11f2d", size = 3588589, upload-time = "2025-10-07T13:43:55.855Z" }, + { url = "https://files.pythonhosted.org/packages/ce/09/b66966cd1db9fd13589221c1dbadfeabe40b88658f1f24c7be6b8907913a/pymatgen-2025.10.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:da25604f474f7b6725dfd54ad3aec826c5b7ae16edf794b6b66b3dc86a9931ad", size = 3591165, upload-time = "2025-10-07T13:43:57.587Z" }, + { url = "https://files.pythonhosted.org/packages/69/eb/0157a27486f3de31fcfcade34f08a5c47d470176db785caf730561592424/pymatgen-2025.10.7-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c83cc623a46121ce4482f9bec2c8deefbb8a578fb8569cccb645b732410d903d", size = 4631661, upload-time = "2025-10-07T13:43:59.76Z" }, + { url = "https://files.pythonhosted.org/packages/d1/7e/89033901e5ba97a317cf1d2646bf05ba46a31f133280d8701ea431c342f1/pymatgen-2025.10.7-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:18c3b66358c8a607d0cfcc57551a0640100024812d16217548dcdb17b42dfa3c", size = 4661416, upload-time = "2025-10-07T13:44:02.146Z" }, + { url = "https://files.pythonhosted.org/packages/1e/d1/b874b8e8700382b57846267ff39eb8e5ea827931b78e05a725cc5833dd4e/pymatgen-2025.10.7-cp311-cp311-win32.whl", hash = "sha256:45cfc87d3bf29da141e589aef150a6017262a1efbded907889ac4bf3ab3306ae", size = 3541914, upload-time = "2025-10-07T13:44:04.369Z" }, + { url = "https://files.pythonhosted.org/packages/63/e9/59c8eced18ab89a96e1f0c2396838d7522b778a5c4e0b9185b21f2c5286d/pymatgen-2025.10.7-cp311-cp311-win_amd64.whl", hash = "sha256:13103be858c333f9b23fe190d385c7b4dc0e3824e21abca85d8d274722de7bed", size = 3571879, upload-time = "2025-10-07T13:44:06.117Z" }, + { url = "https://files.pythonhosted.org/packages/c2/27/05d85f2f0ff743d9a4002a31f978a0e8f8f8e75970934d293cfb87063366/pymatgen-2025.10.7-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ff89c4b16271fba2f15cf3984f3b27daefca99fe40e222cc8dbbd8bf35c9a47b", size = 3589019, upload-time = "2025-10-07T13:44:07.84Z" }, + { url = "https://files.pythonhosted.org/packages/59/90/f3bcfb9b801360509469338095e267c85d0e23c3ea9feb2f70c015544d94/pymatgen-2025.10.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:69d5865fad4d52f0bbe00df30311d5245bcf4f0e5ed5f6e7e4e6a42b54612e4f", size = 3592345, upload-time = "2025-10-07T13:44:10.217Z" }, + { url = "https://files.pythonhosted.org/packages/8f/11/256db54fec7d0f1409f9fc972cff779d0e11d436a41ed507ffa1bca4200b/pymatgen-2025.10.7-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a3127e4e3a96e668d66ce16ef65cbb4b641950197ee3f3ab38d4b79f4fc09017", size = 4628206, upload-time = "2025-10-07T13:44:12.307Z" }, + { url = "https://files.pythonhosted.org/packages/35/cd/305378f0b0b53083fd738f0e7ad449970ad4645ef838364351ca7ef8c981/pymatgen-2025.10.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6e9e88e11509f48dc75090a874122cda19ebe59d3ed9ee2614fb712bb88943fd", size = 4663440, upload-time = "2025-10-07T13:44:14.562Z" }, + { url = "https://files.pythonhosted.org/packages/f1/78/aa88ff410fc6da6a94e8a43d91c5b26273319d68982fab9e7dda0fbfc014/pymatgen-2025.10.7-cp312-cp312-win32.whl", hash = "sha256:09e47e0899d820fccba673e6911bda850dce20ee1bcd8ffee4849082bb8b4d87", size = 3540066, upload-time = "2025-10-07T13:44:16.242Z" }, + { url = "https://files.pythonhosted.org/packages/b3/c9/def0dd1d760fdff1afa2bed833a30fc41889c01e09c99e7ce7a76a7395fc/pymatgen-2025.10.7-cp312-cp312-win_amd64.whl", hash = "sha256:b159f9abd6755be106359d77c677be8a71ce882a0ba68a063212c7c168420431", size = 3571319, upload-time = "2025-10-07T13:44:18.43Z" }, + { url = "https://files.pythonhosted.org/packages/bc/31/b3f2bd096aa44791e0c85abd76947355191be7a994830124d78471e982f1/pymatgen-2025.10.7-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8df389e96d42da0fce68b8f55d6b0a87dcb0596ee0196017e6f2edd9d0f72397", size = 3586783, upload-time = "2025-10-07T13:44:20.588Z" }, + { url = "https://files.pythonhosted.org/packages/44/1b/2010fa932fccd3aac0dffaa4525dfb5363069d73d61ac3ac15889bc4c0f5/pymatgen-2025.10.7-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:35da3f13a4bd686e2ff01c11995441fd2050c0efa58bcf2538430045ddcf85a5", size = 3590414, upload-time = "2025-10-07T13:44:22.983Z" }, + { url = "https://files.pythonhosted.org/packages/88/88/9ad16868b578873874e36829f6ce1403676f7439f0c824cddf3333156520/pymatgen-2025.10.7-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9ff0db7c9614db9c687825d1ac5e8db3655ec663578faa79ebd9091000f831a0", size = 4620258, upload-time = "2025-10-07T13:44:25.259Z" }, + { url = "https://files.pythonhosted.org/packages/ec/1e/d15005bc57bc0c307cd07dc52b1d7a94f3f18034cfcc90cfca015024633d/pymatgen-2025.10.7-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:206201d8ebc6c8a2af9748a3dfa3e1975356eb9bf18f96db7021c2e3060cc3dd", size = 4658272, upload-time = "2025-10-07T13:44:27.481Z" }, + { url = "https://files.pythonhosted.org/packages/bc/04/faf2e226f3f1e859503974d4eb7d468041b8e931c9a66a2598c82285c965/pymatgen-2025.10.7-cp313-cp313-win32.whl", hash = "sha256:f4d0c605a0b8d0573973b2eb5491e80110438fe053d16fc6d7365df951123f58", size = 3539807, upload-time = "2025-10-07T13:44:29.887Z" }, + { url = "https://files.pythonhosted.org/packages/0a/4b/52fd2c203a4e9abc610d19f4e3655995748375c1c92215f3f508386b826c/pymatgen-2025.10.7-cp313-cp313-win_amd64.whl", hash = "sha256:d03be1675d2415422fdc1dc26ac30d9e0d6badcdb6fafe0177094c45676415fb", size = 3570933, upload-time = "2025-10-07T13:44:31.939Z" }, +] + +[[package]] +name = "pymatgen-io-validation" +version = "0.1.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "pydantic" }, + { name = "pydantic-settings" }, + { name = "pymatgen" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bd/20/9a5b96d413f7678ef4fd0b689ae20aa406b512013531eec7c7fa7128f544/pymatgen_io_validation-0.1.2.tar.gz", hash = "sha256:76632878ab2269356092dab5bae08c8f42418c3e15d4610f4eb304f0102e7f24", size = 51515, upload-time = "2025-09-16T16:52:43.66Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/fa/30b0dc764abc321693d16621482d02aa13ef569ba193c443c9411ac818a8/pymatgen_io_validation-0.1.2-py3-none-any.whl", hash = "sha256:765cb7f5f98422193d46518792be76ea5683c7093b444088f21dd6d5d217dc65", size = 46381, upload-time = "2025-09-16T16:52:42.391Z" }, +] + +[[package]] +name = "pyparsing" +version = "3.3.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/91/9c6ee907786a473bf81c5f53cf703ba0957b23ab84c264080fb5a450416f/pyparsing-3.3.2.tar.gz", hash = "sha256:c777f4d763f140633dcb6d8a3eda953bf7a214dc4eff598413c070bcdc117cbc", size = 6851574, upload-time = "2026-01-21T03:57:59.36Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl", hash = "sha256:850ba148bd908d7e2411587e247a1e4f0327839c40e2e5e6d05a007ecc69911d", size = 122781, upload-time = "2026-01-21T03:57:55.912Z" }, +] + +[[package]] +name = "pyshortcuts" +version = "1.9.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "charset-normalizer" }, + { name = "pywin32", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d3/eb/38208a9c8cb76af76a0ddb7a88e3397691a98ea539fce7a78aa4d484f8e6/pyshortcuts-1.9.7.tar.gz", hash = "sha256:bf2f28d5e7e5e5d825366ff63251be5518946f1e31a672b5d17fc19909b789fb", size = 1006641, upload-time = "2026-01-06T17:19:52.576Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e1/cf/7a4a079a01cd9df26db1ebda9a1d3db6074c331c976eeecdb16dcea84e30/pyshortcuts-1.9.7-py3-none-any.whl", hash = "sha256:b5ab1d02717e8b93b3e26b56ffc9c2cb3a1e91fe3138c93dc5727c2f6c1bed9b", size = 167377, upload-time = "2026-01-06T17:19:51.574Z" }, +] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, +] + +[[package]] +name = "python-dotenv" +version = "1.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f0/26/19cadc79a718c5edbec86fd4919a6b6d3f681039a2f6d66d14be94e75fb9/python_dotenv-1.2.1.tar.gz", hash = "sha256:42667e897e16ab0d66954af0e60a9caa94f0fd4ecf3aaf6d2d260eec1aa36ad6", size = 44221, upload-time = "2025-10-26T15:12:10.434Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/14/1b/a298b06749107c305e1fe0f814c6c74aea7b2f1e10989cb30f544a1b3253/python_dotenv-1.2.1-py3-none-any.whl", hash = "sha256:b81ee9561e9ca4004139c6cbba3a238c32b03e4894671e181b671e8cb8425d61", size = 21230, upload-time = "2025-10-26T15:12:09.109Z" }, +] + +[[package]] +name = "pywin32" +version = "311" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7c/af/449a6a91e5d6db51420875c54f6aff7c97a86a3b13a0b4f1a5c13b988de3/pywin32-311-cp311-cp311-win32.whl", hash = "sha256:184eb5e436dea364dcd3d2316d577d625c0351bf237c4e9a5fabbcfa5a58b151", size = 8697031, upload-time = "2025-07-14T20:13:13.266Z" }, + { url = "https://files.pythonhosted.org/packages/51/8f/9bb81dd5bb77d22243d33c8397f09377056d5c687aa6d4042bea7fbf8364/pywin32-311-cp311-cp311-win_amd64.whl", hash = "sha256:3ce80b34b22b17ccbd937a6e78e7225d80c52f5ab9940fe0506a1a16f3dab503", size = 9508308, upload-time = "2025-07-14T20:13:15.147Z" }, + { url = "https://files.pythonhosted.org/packages/44/7b/9c2ab54f74a138c491aba1b1cd0795ba61f144c711daea84a88b63dc0f6c/pywin32-311-cp311-cp311-win_arm64.whl", hash = "sha256:a733f1388e1a842abb67ffa8e7aad0e70ac519e09b0f6a784e65a136ec7cefd2", size = 8703930, upload-time = "2025-07-14T20:13:16.945Z" }, + { url = "https://files.pythonhosted.org/packages/e7/ab/01ea1943d4eba0f850c3c61e78e8dd59757ff815ff3ccd0a84de5f541f42/pywin32-311-cp312-cp312-win32.whl", hash = "sha256:750ec6e621af2b948540032557b10a2d43b0cee2ae9758c54154d711cc852d31", size = 8706543, upload-time = "2025-07-14T20:13:20.765Z" }, + { url = "https://files.pythonhosted.org/packages/d1/a8/a0e8d07d4d051ec7502cd58b291ec98dcc0c3fff027caad0470b72cfcc2f/pywin32-311-cp312-cp312-win_amd64.whl", hash = "sha256:b8c095edad5c211ff31c05223658e71bf7116daa0ecf3ad85f3201ea3190d067", size = 9495040, upload-time = "2025-07-14T20:13:22.543Z" }, + { url = "https://files.pythonhosted.org/packages/ba/3a/2ae996277b4b50f17d61f0603efd8253cb2d79cc7ae159468007b586396d/pywin32-311-cp312-cp312-win_arm64.whl", hash = "sha256:e286f46a9a39c4a18b319c28f59b61de793654af2f395c102b4f819e584b5852", size = 8710102, upload-time = "2025-07-14T20:13:24.682Z" }, + { url = "https://files.pythonhosted.org/packages/a5/be/3fd5de0979fcb3994bfee0d65ed8ca9506a8a1260651b86174f6a86f52b3/pywin32-311-cp313-cp313-win32.whl", hash = "sha256:f95ba5a847cba10dd8c4d8fefa9f2a6cf283b8b88ed6178fa8a6c1ab16054d0d", size = 8705700, upload-time = "2025-07-14T20:13:26.471Z" }, + { url = "https://files.pythonhosted.org/packages/e3/28/e0a1909523c6890208295a29e05c2adb2126364e289826c0a8bc7297bd5c/pywin32-311-cp313-cp313-win_amd64.whl", hash = "sha256:718a38f7e5b058e76aee1c56ddd06908116d35147e133427e59a3983f703a20d", size = 9494700, upload-time = "2025-07-14T20:13:28.243Z" }, + { url = "https://files.pythonhosted.org/packages/04/bf/90339ac0f55726dce7d794e6d79a18a91265bdf3aa70b6b9ca52f35e022a/pywin32-311-cp313-cp313-win_arm64.whl", hash = "sha256:7b4075d959648406202d92a2310cb990fea19b535c7f4a78d3f5e10b926eeb8a", size = 8709318, upload-time = "2025-07-14T20:13:30.348Z" }, + { url = "https://files.pythonhosted.org/packages/c9/31/097f2e132c4f16d99a22bfb777e0fd88bd8e1c634304e102f313af69ace5/pywin32-311-cp314-cp314-win32.whl", hash = "sha256:b7a2c10b93f8986666d0c803ee19b5990885872a7de910fc460f9b0c2fbf92ee", size = 8840714, upload-time = "2025-07-14T20:13:32.449Z" }, + { url = "https://files.pythonhosted.org/packages/90/4b/07c77d8ba0e01349358082713400435347df8426208171ce297da32c313d/pywin32-311-cp314-cp314-win_amd64.whl", hash = "sha256:3aca44c046bd2ed8c90de9cb8427f581c479e594e99b5c0bb19b29c10fd6cb87", size = 9656800, upload-time = "2025-07-14T20:13:34.312Z" }, + { url = "https://files.pythonhosted.org/packages/c0/d2/21af5c535501a7233e734b8af901574572da66fcc254cb35d0609c9080dd/pywin32-311-cp314-cp314-win_arm64.whl", hash = "sha256:a508e2d9025764a8270f93111a970e1d0fbfc33f4153b388bb649b7eec4f9b42", size = 8932540, upload-time = "2025-07-14T20:13:36.379Z" }, +] + +[[package]] +name = "pyyaml" +version = "6.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6d/16/a95b6757765b7b031c9374925bb718d55e0a9ba8a1b6a12d25962ea44347/pyyaml-6.0.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:44edc647873928551a01e7a563d7452ccdebee747728c1080d881d68af7b997e", size = 185826, upload-time = "2025-09-25T21:31:58.655Z" }, + { url = "https://files.pythonhosted.org/packages/16/19/13de8e4377ed53079ee996e1ab0a9c33ec2faf808a4647b7b4c0d46dd239/pyyaml-6.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:652cb6edd41e718550aad172851962662ff2681490a8a711af6a4d288dd96824", size = 175577, upload-time = "2025-09-25T21:32:00.088Z" }, + { url = "https://files.pythonhosted.org/packages/0c/62/d2eb46264d4b157dae1275b573017abec435397aa59cbcdab6fc978a8af4/pyyaml-6.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:10892704fc220243f5305762e276552a0395f7beb4dbf9b14ec8fd43b57f126c", size = 775556, upload-time = "2025-09-25T21:32:01.31Z" }, + { url = "https://files.pythonhosted.org/packages/10/cb/16c3f2cf3266edd25aaa00d6c4350381c8b012ed6f5276675b9eba8d9ff4/pyyaml-6.0.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:850774a7879607d3a6f50d36d04f00ee69e7fc816450e5f7e58d7f17f1ae5c00", size = 882114, upload-time = "2025-09-25T21:32:03.376Z" }, + { url = "https://files.pythonhosted.org/packages/71/60/917329f640924b18ff085ab889a11c763e0b573da888e8404ff486657602/pyyaml-6.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b8bb0864c5a28024fac8a632c443c87c5aa6f215c0b126c449ae1a150412f31d", size = 806638, upload-time = "2025-09-25T21:32:04.553Z" }, + { url = "https://files.pythonhosted.org/packages/dd/6f/529b0f316a9fd167281a6c3826b5583e6192dba792dd55e3203d3f8e655a/pyyaml-6.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1d37d57ad971609cf3c53ba6a7e365e40660e3be0e5175fa9f2365a379d6095a", size = 767463, upload-time = "2025-09-25T21:32:06.152Z" }, + { url = "https://files.pythonhosted.org/packages/f2/6a/b627b4e0c1dd03718543519ffb2f1deea4a1e6d42fbab8021936a4d22589/pyyaml-6.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:37503bfbfc9d2c40b344d06b2199cf0e96e97957ab1c1b546fd4f87e53e5d3e4", size = 794986, upload-time = "2025-09-25T21:32:07.367Z" }, + { url = "https://files.pythonhosted.org/packages/45/91/47a6e1c42d9ee337c4839208f30d9f09caa9f720ec7582917b264defc875/pyyaml-6.0.3-cp311-cp311-win32.whl", hash = "sha256:8098f252adfa6c80ab48096053f512f2321f0b998f98150cea9bd23d83e1467b", size = 142543, upload-time = "2025-09-25T21:32:08.95Z" }, + { url = "https://files.pythonhosted.org/packages/da/e3/ea007450a105ae919a72393cb06f122f288ef60bba2dc64b26e2646fa315/pyyaml-6.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:9f3bfb4965eb874431221a3ff3fdcddc7e74e3b07799e0e84ca4a0f867d449bf", size = 158763, upload-time = "2025-09-25T21:32:09.96Z" }, + { url = "https://files.pythonhosted.org/packages/d1/33/422b98d2195232ca1826284a76852ad5a86fe23e31b009c9886b2d0fb8b2/pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196", size = 182063, upload-time = "2025-09-25T21:32:11.445Z" }, + { url = "https://files.pythonhosted.org/packages/89/a0/6cf41a19a1f2f3feab0e9c0b74134aa2ce6849093d5517a0c550fe37a648/pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0", size = 173973, upload-time = "2025-09-25T21:32:12.492Z" }, + { url = "https://files.pythonhosted.org/packages/ed/23/7a778b6bd0b9a8039df8b1b1d80e2e2ad78aa04171592c8a5c43a56a6af4/pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28", size = 775116, upload-time = "2025-09-25T21:32:13.652Z" }, + { url = "https://files.pythonhosted.org/packages/65/30/d7353c338e12baef4ecc1b09e877c1970bd3382789c159b4f89d6a70dc09/pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c", size = 844011, upload-time = "2025-09-25T21:32:15.21Z" }, + { url = "https://files.pythonhosted.org/packages/8b/9d/b3589d3877982d4f2329302ef98a8026e7f4443c765c46cfecc8858c6b4b/pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc", size = 807870, upload-time = "2025-09-25T21:32:16.431Z" }, + { url = "https://files.pythonhosted.org/packages/05/c0/b3be26a015601b822b97d9149ff8cb5ead58c66f981e04fedf4e762f4bd4/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e", size = 761089, upload-time = "2025-09-25T21:32:17.56Z" }, + { url = "https://files.pythonhosted.org/packages/be/8e/98435a21d1d4b46590d5459a22d88128103f8da4c2d4cb8f14f2a96504e1/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea", size = 790181, upload-time = "2025-09-25T21:32:18.834Z" }, + { url = "https://files.pythonhosted.org/packages/74/93/7baea19427dcfbe1e5a372d81473250b379f04b1bd3c4c5ff825e2327202/pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5", size = 137658, upload-time = "2025-09-25T21:32:20.209Z" }, + { url = "https://files.pythonhosted.org/packages/86/bf/899e81e4cce32febab4fb42bb97dcdf66bc135272882d1987881a4b519e9/pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b", size = 154003, upload-time = "2025-09-25T21:32:21.167Z" }, + { url = "https://files.pythonhosted.org/packages/1a/08/67bd04656199bbb51dbed1439b7f27601dfb576fb864099c7ef0c3e55531/pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd", size = 140344, upload-time = "2025-09-25T21:32:22.617Z" }, + { url = "https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8", size = 181669, upload-time = "2025-09-25T21:32:23.673Z" }, + { url = "https://files.pythonhosted.org/packages/b1/16/95309993f1d3748cd644e02e38b75d50cbc0d9561d21f390a76242ce073f/pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1", size = 173252, upload-time = "2025-09-25T21:32:25.149Z" }, + { url = "https://files.pythonhosted.org/packages/50/31/b20f376d3f810b9b2371e72ef5adb33879b25edb7a6d072cb7ca0c486398/pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c", size = 767081, upload-time = "2025-09-25T21:32:26.575Z" }, + { url = "https://files.pythonhosted.org/packages/49/1e/a55ca81e949270d5d4432fbbd19dfea5321eda7c41a849d443dc92fd1ff7/pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5", size = 841159, upload-time = "2025-09-25T21:32:27.727Z" }, + { url = "https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6", size = 801626, upload-time = "2025-09-25T21:32:28.878Z" }, + { url = "https://files.pythonhosted.org/packages/f9/11/ba845c23988798f40e52ba45f34849aa8a1f2d4af4b798588010792ebad6/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6", size = 753613, upload-time = "2025-09-25T21:32:30.178Z" }, + { url = "https://files.pythonhosted.org/packages/3d/e0/7966e1a7bfc0a45bf0a7fb6b98ea03fc9b8d84fa7f2229e9659680b69ee3/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be", size = 794115, upload-time = "2025-09-25T21:32:31.353Z" }, + { url = "https://files.pythonhosted.org/packages/de/94/980b50a6531b3019e45ddeada0626d45fa85cbe22300844a7983285bed3b/pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26", size = 137427, upload-time = "2025-09-25T21:32:32.58Z" }, + { url = "https://files.pythonhosted.org/packages/97/c9/39d5b874e8b28845e4ec2202b5da735d0199dbe5b8fb85f91398814a9a46/pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c", size = 154090, upload-time = "2025-09-25T21:32:33.659Z" }, + { url = "https://files.pythonhosted.org/packages/73/e8/2bdf3ca2090f68bb3d75b44da7bbc71843b19c9f2b9cb9b0f4ab7a5a4329/pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb", size = 140246, upload-time = "2025-09-25T21:32:34.663Z" }, + { url = "https://files.pythonhosted.org/packages/9d/8c/f4bd7f6465179953d3ac9bc44ac1a8a3e6122cf8ada906b4f96c60172d43/pyyaml-6.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac", size = 181814, upload-time = "2025-09-25T21:32:35.712Z" }, + { url = "https://files.pythonhosted.org/packages/bd/9c/4d95bb87eb2063d20db7b60faa3840c1b18025517ae857371c4dd55a6b3a/pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310", size = 173809, upload-time = "2025-09-25T21:32:36.789Z" }, + { url = "https://files.pythonhosted.org/packages/92/b5/47e807c2623074914e29dabd16cbbdd4bf5e9b2db9f8090fa64411fc5382/pyyaml-6.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7", size = 766454, upload-time = "2025-09-25T21:32:37.966Z" }, + { url = "https://files.pythonhosted.org/packages/02/9e/e5e9b168be58564121efb3de6859c452fccde0ab093d8438905899a3a483/pyyaml-6.0.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788", size = 836355, upload-time = "2025-09-25T21:32:39.178Z" }, + { url = "https://files.pythonhosted.org/packages/88/f9/16491d7ed2a919954993e48aa941b200f38040928474c9e85ea9e64222c3/pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5", size = 794175, upload-time = "2025-09-25T21:32:40.865Z" }, + { url = "https://files.pythonhosted.org/packages/dd/3f/5989debef34dc6397317802b527dbbafb2b4760878a53d4166579111411e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764", size = 755228, upload-time = "2025-09-25T21:32:42.084Z" }, + { url = "https://files.pythonhosted.org/packages/d7/ce/af88a49043cd2e265be63d083fc75b27b6ed062f5f9fd6cdc223ad62f03e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35", size = 789194, upload-time = "2025-09-25T21:32:43.362Z" }, + { url = "https://files.pythonhosted.org/packages/23/20/bb6982b26a40bb43951265ba29d4c246ef0ff59c9fdcdf0ed04e0687de4d/pyyaml-6.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac", size = 156429, upload-time = "2025-09-25T21:32:57.844Z" }, + { url = "https://files.pythonhosted.org/packages/f4/f4/a4541072bb9422c8a883ab55255f918fa378ecf083f5b85e87fc2b4eda1b/pyyaml-6.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3", size = 143912, upload-time = "2025-09-25T21:32:59.247Z" }, + { url = "https://files.pythonhosted.org/packages/7c/f9/07dd09ae774e4616edf6cda684ee78f97777bdd15847253637a6f052a62f/pyyaml-6.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3", size = 189108, upload-time = "2025-09-25T21:32:44.377Z" }, + { url = "https://files.pythonhosted.org/packages/4e/78/8d08c9fb7ce09ad8c38ad533c1191cf27f7ae1effe5bb9400a46d9437fcf/pyyaml-6.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba", size = 183641, upload-time = "2025-09-25T21:32:45.407Z" }, + { url = "https://files.pythonhosted.org/packages/7b/5b/3babb19104a46945cf816d047db2788bcaf8c94527a805610b0289a01c6b/pyyaml-6.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c", size = 831901, upload-time = "2025-09-25T21:32:48.83Z" }, + { url = "https://files.pythonhosted.org/packages/8b/cc/dff0684d8dc44da4d22a13f35f073d558c268780ce3c6ba1b87055bb0b87/pyyaml-6.0.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702", size = 861132, upload-time = "2025-09-25T21:32:50.149Z" }, + { url = "https://files.pythonhosted.org/packages/b1/5e/f77dc6b9036943e285ba76b49e118d9ea929885becb0a29ba8a7c75e29fe/pyyaml-6.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c", size = 839261, upload-time = "2025-09-25T21:32:51.808Z" }, + { url = "https://files.pythonhosted.org/packages/ce/88/a9db1376aa2a228197c58b37302f284b5617f56a5d959fd1763fb1675ce6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065", size = 805272, upload-time = "2025-09-25T21:32:52.941Z" }, + { url = "https://files.pythonhosted.org/packages/da/92/1446574745d74df0c92e6aa4a7b0b3130706a4142b2d1a5869f2eaa423c6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65", size = 829923, upload-time = "2025-09-25T21:32:54.537Z" }, + { url = "https://files.pythonhosted.org/packages/f0/7a/1c7270340330e575b92f397352af856a8c06f230aa3e76f86b39d01b416a/pyyaml-6.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9", size = 174062, upload-time = "2025-09-25T21:32:55.767Z" }, + { url = "https://files.pythonhosted.org/packages/f1/12/de94a39c2ef588c7e6455cfbe7343d3b2dc9d6b6b2f40c4c6565744c873d/pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b", size = 149341, upload-time = "2025-09-25T21:32:56.828Z" }, +] + +[[package]] +name = "requests" +version = "2.32.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf", size = 134517, upload-time = "2025-08-18T20:46:02.573Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738, upload-time = "2025-08-18T20:46:00.542Z" }, +] + +[[package]] +name = "ruamel-yaml" +version = "0.19.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c7/3b/ebda527b56beb90cb7652cb1c7e4f91f48649fbcd8d2eb2fb6e77cd3329b/ruamel_yaml-0.19.1.tar.gz", hash = "sha256:53eb66cd27849eff968ebf8f0bf61f46cdac2da1d1f3576dd4ccee9b25c31993", size = 142709, upload-time = "2026-01-02T16:50:31.84Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b8/0c/51f6841f1d84f404f92463fc2b1ba0da357ca1e3db6b7fbda26956c3b82a/ruamel_yaml-0.19.1-py3-none-any.whl", hash = "sha256:27592957fedf6e0b62f281e96effd28043345e0e66001f97683aa9a40c667c93", size = 118102, upload-time = "2026-01-02T16:50:29.201Z" }, +] + +[[package]] +name = "s3transfer" +version = "0.16.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "botocore" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/05/04/74127fc843314818edfa81b5540e26dd537353b123a4edc563109d8f17dd/s3transfer-0.16.0.tar.gz", hash = "sha256:8e990f13268025792229cd52fa10cb7163744bf56e719e0b9cb925ab79abf920", size = 153827, upload-time = "2025-12-01T02:30:59.114Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fc/51/727abb13f44c1fcf6d145979e1535a35794db0f6e450a0cb46aa24732fe2/s3transfer-0.16.0-py3-none-any.whl", hash = "sha256:18e25d66fed509e3868dc1572b3f427ff947dd2c56f844a5bf09481ad3f3b2fe", size = 86830, upload-time = "2025-12-01T02:30:57.729Z" }, +] + +[[package]] +name = "scikit-image" +version = "0.26.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "imageio" }, + { name = "lazy-loader" }, + { name = "networkx" }, + { name = "numpy" }, + { name = "packaging" }, + { name = "pillow" }, + { name = "scipy" }, + { name = "tifffile" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a1/b4/2528bb43c67d48053a7a649a9666432dc307d66ba02e3a6d5c40f46655df/scikit_image-0.26.0.tar.gz", hash = "sha256:f5f970ab04efad85c24714321fcc91613fcb64ef2a892a13167df2f3e59199fa", size = 22729739, upload-time = "2025-12-20T17:12:21.824Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/16/8a407688b607f86f81f8c649bf0d68a2a6d67375f18c2d660aba20f5b648/scikit_image-0.26.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b1ede33a0fb3731457eaf53af6361e73dd510f449dac437ab54573b26788baf0", size = 12355510, upload-time = "2025-12-20T17:10:31.628Z" }, + { url = "https://files.pythonhosted.org/packages/6b/f9/7efc088ececb6f6868fd4475e16cfafc11f242ce9ab5fc3557d78b5da0d4/scikit_image-0.26.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7af7aa331c6846bd03fa28b164c18d0c3fd419dbb888fb05e958ac4257a78fdd", size = 12056334, upload-time = "2025-12-20T17:10:34.559Z" }, + { url = "https://files.pythonhosted.org/packages/9f/1e/bc7fb91fb5ff65ef42346c8b7ee8b09b04eabf89235ab7dbfdfd96cbd1ea/scikit_image-0.26.0-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9ea6207d9e9d21c3f464efe733121c0504e494dbdc7728649ff3e23c3c5a4953", size = 13297768, upload-time = "2025-12-20T17:10:37.733Z" }, + { url = "https://files.pythonhosted.org/packages/a5/2a/e71c1a7d90e70da67b88ccc609bd6ae54798d5847369b15d3a8052232f9d/scikit_image-0.26.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:74aa5518ccea28121f57a95374581d3b979839adc25bb03f289b1bc9b99c58af", size = 13711217, upload-time = "2025-12-20T17:10:40.935Z" }, + { url = "https://files.pythonhosted.org/packages/d4/59/9637ee12c23726266b91296791465218973ce1ad3e4c56fc81e4d8e7d6e1/scikit_image-0.26.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d5c244656de905e195a904e36dbc18585e06ecf67d90f0482cbde63d7f9ad59d", size = 14337782, upload-time = "2025-12-20T17:10:43.452Z" }, + { url = "https://files.pythonhosted.org/packages/e7/5c/a3e1e0860f9294663f540c117e4bf83d55e5b47c281d475cc06227e88411/scikit_image-0.26.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:21a818ee6ca2f2131b9e04d8eb7637b5c18773ebe7b399ad23dcc5afaa226d2d", size = 14805997, upload-time = "2025-12-20T17:10:45.93Z" }, + { url = "https://files.pythonhosted.org/packages/d3/c6/2eeacf173da041a9e388975f54e5c49df750757fcfc3ee293cdbbae1ea0a/scikit_image-0.26.0-cp311-cp311-win_amd64.whl", hash = "sha256:9490360c8d3f9a7e85c8de87daf7c0c66507960cf4947bb9610d1751928721c7", size = 11878486, upload-time = "2025-12-20T17:10:48.246Z" }, + { url = "https://files.pythonhosted.org/packages/c3/a4/a852c4949b9058d585e762a66bf7e9a2cd3be4795cd940413dfbfbb0ce79/scikit_image-0.26.0-cp311-cp311-win_arm64.whl", hash = "sha256:0baa0108d2d027f34d748e84e592b78acc23e965a5de0e4bb03cf371de5c0581", size = 11346518, upload-time = "2025-12-20T17:10:50.575Z" }, + { url = "https://files.pythonhosted.org/packages/99/e8/e13757982264b33a1621628f86b587e9a73a13f5256dad49b19ba7dc9083/scikit_image-0.26.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d454b93a6fa770ac5ae2d33570f8e7a321bb80d29511ce4b6b78058ebe176e8c", size = 12376452, upload-time = "2025-12-20T17:10:52.796Z" }, + { url = "https://files.pythonhosted.org/packages/e3/be/f8dd17d0510f9911f9f17ba301f7455328bf13dae416560126d428de9568/scikit_image-0.26.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3409e89d66eff5734cd2b672d1c48d2759360057e714e1d92a11df82c87cba37", size = 12061567, upload-time = "2025-12-20T17:10:55.207Z" }, + { url = "https://files.pythonhosted.org/packages/b3/2b/c70120a6880579fb42b91567ad79feb4772f7be72e8d52fec403a3dde0c6/scikit_image-0.26.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4c717490cec9e276afb0438dd165b7c3072d6c416709cc0f9f5a4c1070d23a44", size = 13084214, upload-time = "2025-12-20T17:10:57.468Z" }, + { url = "https://files.pythonhosted.org/packages/f4/a2/70401a107d6d7466d64b466927e6b96fcefa99d57494b972608e2f8be50f/scikit_image-0.26.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7df650e79031634ac90b11e64a9eedaf5a5e06fcd09bcd03a34be01745744466", size = 13561683, upload-time = "2025-12-20T17:10:59.49Z" }, + { url = "https://files.pythonhosted.org/packages/13/a5/48bdfd92794c5002d664e0910a349d0a1504671ef5ad358150f21643c79a/scikit_image-0.26.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:cefd85033e66d4ea35b525bb0937d7f42d4cdcfed2d1888e1570d5ce450d3932", size = 14112147, upload-time = "2025-12-20T17:11:02.083Z" }, + { url = "https://files.pythonhosted.org/packages/ee/b5/ac71694da92f5def5953ca99f18a10fe98eac2dd0a34079389b70b4d0394/scikit_image-0.26.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3f5bf622d7c0435884e1e141ebbe4b2804e16b2dd23ae4c6183e2ea99233be70", size = 14661625, upload-time = "2025-12-20T17:11:04.528Z" }, + { url = "https://files.pythonhosted.org/packages/23/4d/a3cc1e96f080e253dad2251bfae7587cf2b7912bcd76fd43fd366ff35a87/scikit_image-0.26.0-cp312-cp312-win_amd64.whl", hash = "sha256:abed017474593cd3056ae0fe948d07d0747b27a085e92df5474f4955dd65aec0", size = 11911059, upload-time = "2025-12-20T17:11:06.61Z" }, + { url = "https://files.pythonhosted.org/packages/35/8a/d1b8055f584acc937478abf4550d122936f420352422a1a625eef2c605d8/scikit_image-0.26.0-cp312-cp312-win_arm64.whl", hash = "sha256:4d57e39ef67a95d26860c8caf9b14b8fb130f83b34c6656a77f191fa6d1d04d8", size = 11348740, upload-time = "2025-12-20T17:11:09.118Z" }, + { url = "https://files.pythonhosted.org/packages/4f/48/02357ffb2cca35640f33f2cfe054a4d6d5d7a229b88880a64f1e45c11f4e/scikit_image-0.26.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a2e852eccf41d2d322b8e60144e124802873a92b8d43a6f96331aa42888491c7", size = 12346329, upload-time = "2025-12-20T17:11:11.599Z" }, + { url = "https://files.pythonhosted.org/packages/67/b9/b792c577cea2c1e94cda83b135a656924fc57c428e8a6d302cd69aac1b60/scikit_image-0.26.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:98329aab3bc87db352b9887f64ce8cdb8e75f7c2daa19927f2e121b797b678d5", size = 12031726, upload-time = "2025-12-20T17:11:13.871Z" }, + { url = "https://files.pythonhosted.org/packages/07/a9/9564250dfd65cb20404a611016db52afc6268b2b371cd19c7538ea47580f/scikit_image-0.26.0-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:915bb3ba66455cf8adac00dc8fdf18a4cd29656aec7ddd38cb4dda90289a6f21", size = 13094910, upload-time = "2025-12-20T17:11:16.2Z" }, + { url = "https://files.pythonhosted.org/packages/a3/b8/0d8eeb5a9fd7d34ba84f8a55753a0a3e2b5b51b2a5a0ade648a8db4a62f7/scikit_image-0.26.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b36ab5e778bf50af5ff386c3ac508027dc3aaeccf2161bdf96bde6848f44d21b", size = 13660939, upload-time = "2025-12-20T17:11:18.464Z" }, + { url = "https://files.pythonhosted.org/packages/2f/d6/91d8973584d4793d4c1a847d388e34ef1218d835eeddecfc9108d735b467/scikit_image-0.26.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:09bad6a5d5949c7896c8347424c4cca899f1d11668030e5548813ab9c2865dcb", size = 14138938, upload-time = "2025-12-20T17:11:20.919Z" }, + { url = "https://files.pythonhosted.org/packages/39/9a/7e15d8dc10d6bbf212195fb39bdeb7f226c46dd53f9c63c312e111e2e175/scikit_image-0.26.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:aeb14db1ed09ad4bee4ceb9e635547a8d5f3549be67fc6c768c7f923e027e6cd", size = 14752243, upload-time = "2025-12-20T17:11:23.347Z" }, + { url = "https://files.pythonhosted.org/packages/8f/58/2b11b933097bc427e42b4a8b15f7de8f24f2bac1fd2779d2aea1431b2c31/scikit_image-0.26.0-cp313-cp313-win_amd64.whl", hash = "sha256:ac529eb9dbd5954f9aaa2e3fe9a3fd9661bfe24e134c688587d811a0233127f1", size = 11906770, upload-time = "2025-12-20T17:11:25.297Z" }, + { url = "https://files.pythonhosted.org/packages/ad/ec/96941474a18a04b69b6f6562a5bd79bd68049fa3728d3b350976eccb8b93/scikit_image-0.26.0-cp313-cp313-win_arm64.whl", hash = "sha256:a2d211bc355f59725efdcae699b93b30348a19416cc9e017f7b2fb599faf7219", size = 11342506, upload-time = "2025-12-20T17:11:27.399Z" }, + { url = "https://files.pythonhosted.org/packages/03/e5/c1a9962b0cf1952f42d32b4a2e48eed520320dbc4d2ff0b981c6fa508b6b/scikit_image-0.26.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:9eefb4adad066da408a7601c4c24b07af3b472d90e08c3e7483d4e9e829d8c49", size = 12663278, upload-time = "2025-12-20T17:11:29.358Z" }, + { url = "https://files.pythonhosted.org/packages/ae/97/c1a276a59ce8e4e24482d65c1a3940d69c6b3873279193b7ebd04e5ee56b/scikit_image-0.26.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:6caec76e16c970c528d15d1c757363334d5cb3069f9cea93d2bead31820511f3", size = 12405142, upload-time = "2025-12-20T17:11:31.282Z" }, + { url = "https://files.pythonhosted.org/packages/d4/4a/f1cbd1357caef6c7993f7efd514d6e53d8fd6f7fe01c4714d51614c53289/scikit_image-0.26.0-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a07200fe09b9d99fcdab959859fe0f7db8df6333d6204344425d476850ce3604", size = 12942086, upload-time = "2025-12-20T17:11:33.683Z" }, + { url = "https://files.pythonhosted.org/packages/5b/6f/74d9fb87c5655bd64cf00b0c44dc3d6206d9002e5f6ba1c9aeb13236f6bf/scikit_image-0.26.0-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:92242351bccf391fc5df2d1529d15470019496d2498d615beb68da85fe7fdf37", size = 13265667, upload-time = "2025-12-20T17:11:36.11Z" }, + { url = "https://files.pythonhosted.org/packages/a7/73/faddc2413ae98d863f6fa2e3e14da4467dd38e788e1c23346cf1a2b06b97/scikit_image-0.26.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:52c496f75a7e45844d951557f13c08c81487c6a1da2e3c9c8a39fcde958e02cc", size = 14001966, upload-time = "2025-12-20T17:11:38.55Z" }, + { url = "https://files.pythonhosted.org/packages/02/94/9f46966fa042b5d57c8cd641045372b4e0df0047dd400e77ea9952674110/scikit_image-0.26.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:20ef4a155e2e78b8ab973998e04d8a361d49d719e65412405f4dadd9155a61d9", size = 14359526, upload-time = "2025-12-20T17:11:41.087Z" }, + { url = "https://files.pythonhosted.org/packages/5d/b4/2840fe38f10057f40b1c9f8fb98a187a370936bf144a4ac23452c5ef1baf/scikit_image-0.26.0-cp313-cp313t-win_amd64.whl", hash = "sha256:c9087cf7d0e7f33ab5c46d2068d86d785e70b05400a891f73a13400f1e1faf6a", size = 12287629, upload-time = "2025-12-20T17:11:43.11Z" }, + { url = "https://files.pythonhosted.org/packages/22/ba/73b6ca70796e71f83ab222690e35a79612f0117e5aaf167151b7d46f5f2c/scikit_image-0.26.0-cp313-cp313t-win_arm64.whl", hash = "sha256:27d58bc8b2acd351f972c6508c1b557cfed80299826080a4d803dd29c51b707e", size = 11647755, upload-time = "2025-12-20T17:11:45.279Z" }, + { url = "https://files.pythonhosted.org/packages/51/44/6b744f92b37ae2833fd423cce8f806d2368859ec325a699dc30389e090b9/scikit_image-0.26.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:63af3d3a26125f796f01052052f86806da5b5e54c6abef152edb752683075a9c", size = 12365810, upload-time = "2025-12-20T17:11:47.357Z" }, + { url = "https://files.pythonhosted.org/packages/40/f5/83590d9355191f86ac663420fec741b82cc547a4afe7c4c1d986bf46e4db/scikit_image-0.26.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ce00600cd70d4562ed59f80523e18cdcc1fae0e10676498a01f73c255774aefd", size = 12075717, upload-time = "2025-12-20T17:11:49.483Z" }, + { url = "https://files.pythonhosted.org/packages/72/48/253e7cf5aee6190459fe136c614e2cbccc562deceb4af96e0863f1b8ee29/scikit_image-0.26.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6381edf972b32e4f54085449afde64365a57316637496c1325a736987083e2ab", size = 13161520, upload-time = "2025-12-20T17:11:51.58Z" }, + { url = "https://files.pythonhosted.org/packages/73/c3/cec6a3cbaadfdcc02bd6ff02f3abfe09eaa7f4d4e0a525a1e3a3f4bce49c/scikit_image-0.26.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c6624a76c6085218248154cc7e1500e6b488edcd9499004dd0d35040607d7505", size = 13684340, upload-time = "2025-12-20T17:11:53.708Z" }, + { url = "https://files.pythonhosted.org/packages/d4/0d/39a776f675d24164b3a267aa0db9f677a4cb20127660d8bf4fd7fef66817/scikit_image-0.26.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:f775f0e420faac9c2aa6757135f4eb468fb7b70e0b67fa77a5e79be3c30ee331", size = 14203839, upload-time = "2025-12-20T17:11:55.89Z" }, + { url = "https://files.pythonhosted.org/packages/ee/25/2514df226bbcedfe9b2caafa1ba7bc87231a0c339066981b182b08340e06/scikit_image-0.26.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:ede4d6d255cc5da9faeb2f9ba7fedbc990abbc652db429f40a16b22e770bb578", size = 14770021, upload-time = "2025-12-20T17:11:58.014Z" }, + { url = "https://files.pythonhosted.org/packages/8d/5b/0671dc91c0c79340c3fe202f0549c7d3681eb7640fe34ab68a5f090a7c7f/scikit_image-0.26.0-cp314-cp314-win_amd64.whl", hash = "sha256:0660b83968c15293fd9135e8d860053ee19500d52bf55ca4fb09de595a1af650", size = 12023490, upload-time = "2025-12-20T17:12:00.013Z" }, + { url = "https://files.pythonhosted.org/packages/65/08/7c4cb59f91721f3de07719085212a0b3962e3e3f2d1818cbac4eeb1ea53e/scikit_image-0.26.0-cp314-cp314-win_arm64.whl", hash = "sha256:b8d14d3181c21c11170477a42542c1addc7072a90b986675a71266ad17abc37f", size = 11473782, upload-time = "2025-12-20T17:12:01.983Z" }, + { url = "https://files.pythonhosted.org/packages/49/41/65c4258137acef3d73cb561ac55512eacd7b30bb4f4a11474cad526bc5db/scikit_image-0.26.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:cde0bbd57e6795eba83cb10f71a677f7239271121dc950bc060482834a668ad1", size = 12686060, upload-time = "2025-12-20T17:12:03.886Z" }, + { url = "https://files.pythonhosted.org/packages/e7/32/76971f8727b87f1420a962406388a50e26667c31756126444baf6668f559/scikit_image-0.26.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:163e9afb5b879562b9aeda0dd45208a35316f26cc7a3aed54fd601604e5cf46f", size = 12422628, upload-time = "2025-12-20T17:12:05.921Z" }, + { url = "https://files.pythonhosted.org/packages/37/0d/996febd39f757c40ee7b01cdb861867327e5c8e5f595a634e8201462d958/scikit_image-0.26.0-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:724f79fd9b6cb6f4a37864fe09f81f9f5d5b9646b6868109e1b100d1a7019e59", size = 12962369, upload-time = "2025-12-20T17:12:07.912Z" }, + { url = "https://files.pythonhosted.org/packages/48/b4/612d354f946c9600e7dea012723c11d47e8d455384e530f6daaaeb9bf62c/scikit_image-0.26.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3268f13310e6857508bd87202620df996199a016a1d281b309441d227c822394", size = 13272431, upload-time = "2025-12-20T17:12:10.255Z" }, + { url = "https://files.pythonhosted.org/packages/0a/6e/26c00b466e06055a086de2c6e2145fe189ccdc9a1d11ccc7de020f2591ad/scikit_image-0.26.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:fac96a1f9b06cd771cbbb3cd96c5332f36d4efd839b1d8b053f79e5887acde62", size = 14016362, upload-time = "2025-12-20T17:12:12.793Z" }, + { url = "https://files.pythonhosted.org/packages/47/88/00a90402e1775634043c2a0af8a3c76ad450866d9fa444efcc43b553ba2d/scikit_image-0.26.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:2c1e7bd342f43e7a97e571b3f03ba4c1293ea1a35c3f13f41efdc8a81c1dc8f2", size = 14364151, upload-time = "2025-12-20T17:12:14.909Z" }, + { url = "https://files.pythonhosted.org/packages/da/ca/918d8d306bd43beacff3b835c6d96fac0ae64c0857092f068b88db531a7c/scikit_image-0.26.0-cp314-cp314t-win_amd64.whl", hash = "sha256:b702c3bb115e1dcf4abf5297429b5c90f2189655888cbed14921f3d26f81d3a4", size = 12413484, upload-time = "2025-12-20T17:12:17.046Z" }, + { url = "https://files.pythonhosted.org/packages/dc/cd/4da01329b5a8d47ff7ec3c99a2b02465a8017b186027590dc7425cee0b56/scikit_image-0.26.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0608aa4a9ec39e0843de10d60edb2785a30c1c47819b67866dd223ebd149acaf", size = 11769501, upload-time = "2025-12-20T17:12:19.339Z" }, +] + +[[package]] +name = "scikit-learn" +version = "1.8.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "joblib" }, + { name = "numpy" }, + { name = "scipy" }, + { name = "threadpoolctl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0e/d4/40988bf3b8e34feec1d0e6a051446b1f66225f8529b9309becaeef62b6c4/scikit_learn-1.8.0.tar.gz", hash = "sha256:9bccbb3b40e3de10351f8f5068e105d0f4083b1a65fa07b6634fbc401a6287fd", size = 7335585, upload-time = "2025-12-10T07:08:53.618Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c9/92/53ea2181da8ac6bf27170191028aee7251f8f841f8d3edbfdcaf2008fde9/scikit_learn-1.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:146b4d36f800c013d267b29168813f7a03a43ecd2895d04861f1240b564421da", size = 8595835, upload-time = "2025-12-10T07:07:39.385Z" }, + { url = "https://files.pythonhosted.org/packages/01/18/d154dc1638803adf987910cdd07097d9c526663a55666a97c124d09fb96a/scikit_learn-1.8.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:f984ca4b14914e6b4094c5d52a32ea16b49832c03bd17a110f004db3c223e8e1", size = 8080381, upload-time = "2025-12-10T07:07:41.93Z" }, + { url = "https://files.pythonhosted.org/packages/8a/44/226142fcb7b7101e64fdee5f49dbe6288d4c7af8abf593237b70fca080a4/scikit_learn-1.8.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5e30adb87f0cc81c7690a84f7932dd66be5bac57cfe16b91cb9151683a4a2d3b", size = 8799632, upload-time = "2025-12-10T07:07:43.899Z" }, + { url = "https://files.pythonhosted.org/packages/36/4d/4a67f30778a45d542bbea5db2dbfa1e9e100bf9ba64aefe34215ba9f11f6/scikit_learn-1.8.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ada8121bcb4dac28d930febc791a69f7cb1673c8495e5eee274190b73a4559c1", size = 9103788, upload-time = "2025-12-10T07:07:45.982Z" }, + { url = "https://files.pythonhosted.org/packages/89/3c/45c352094cfa60050bcbb967b1faf246b22e93cb459f2f907b600f2ceda5/scikit_learn-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:c57b1b610bd1f40ba43970e11ce62821c2e6569e4d74023db19c6b26f246cb3b", size = 8081706, upload-time = "2025-12-10T07:07:48.111Z" }, + { url = "https://files.pythonhosted.org/packages/3d/46/5416595bb395757f754feb20c3d776553a386b661658fb21b7c814e89efe/scikit_learn-1.8.0-cp311-cp311-win_arm64.whl", hash = "sha256:2838551e011a64e3053ad7618dda9310175f7515f1742fa2d756f7c874c05961", size = 7688451, upload-time = "2025-12-10T07:07:49.873Z" }, + { url = "https://files.pythonhosted.org/packages/90/74/e6a7cc4b820e95cc38cf36cd74d5aa2b42e8ffc2d21fe5a9a9c45c1c7630/scikit_learn-1.8.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5fb63362b5a7ddab88e52b6dbb47dac3fd7dafeee740dc6c8d8a446ddedade8e", size = 8548242, upload-time = "2025-12-10T07:07:51.568Z" }, + { url = "https://files.pythonhosted.org/packages/49/d8/9be608c6024d021041c7f0b3928d4749a706f4e2c3832bbede4fb4f58c95/scikit_learn-1.8.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:5025ce924beccb28298246e589c691fe1b8c1c96507e6d27d12c5fadd85bfd76", size = 8079075, upload-time = "2025-12-10T07:07:53.697Z" }, + { url = "https://files.pythonhosted.org/packages/dd/47/f187b4636ff80cc63f21cd40b7b2d177134acaa10f6bb73746130ee8c2e5/scikit_learn-1.8.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4496bb2cf7a43ce1a2d7524a79e40bc5da45cf598dbf9545b7e8316ccba47bb4", size = 8660492, upload-time = "2025-12-10T07:07:55.574Z" }, + { url = "https://files.pythonhosted.org/packages/97/74/b7a304feb2b49df9fafa9382d4d09061a96ee9a9449a7cbea7988dda0828/scikit_learn-1.8.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a0bcfe4d0d14aec44921545fd2af2338c7471de9cb701f1da4c9d85906ab847a", size = 8931904, upload-time = "2025-12-10T07:07:57.666Z" }, + { url = "https://files.pythonhosted.org/packages/9f/c4/0ab22726a04ede56f689476b760f98f8f46607caecff993017ac1b64aa5d/scikit_learn-1.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:35c007dedb2ffe38fe3ee7d201ebac4a2deccd2408e8621d53067733e3c74809", size = 8019359, upload-time = "2025-12-10T07:07:59.838Z" }, + { url = "https://files.pythonhosted.org/packages/24/90/344a67811cfd561d7335c1b96ca21455e7e472d281c3c279c4d3f2300236/scikit_learn-1.8.0-cp312-cp312-win_arm64.whl", hash = "sha256:8c497fff237d7b4e07e9ef1a640887fa4fb765647f86fbe00f969ff6280ce2bb", size = 7641898, upload-time = "2025-12-10T07:08:01.36Z" }, + { url = "https://files.pythonhosted.org/packages/03/aa/e22e0768512ce9255eba34775be2e85c2048da73da1193e841707f8f039c/scikit_learn-1.8.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0d6ae97234d5d7079dc0040990a6f7aeb97cb7fa7e8945f1999a429b23569e0a", size = 8513770, upload-time = "2025-12-10T07:08:03.251Z" }, + { url = "https://files.pythonhosted.org/packages/58/37/31b83b2594105f61a381fc74ca19e8780ee923be2d496fcd8d2e1147bd99/scikit_learn-1.8.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:edec98c5e7c128328124a029bceb09eda2d526997780fef8d65e9a69eead963e", size = 8044458, upload-time = "2025-12-10T07:08:05.336Z" }, + { url = "https://files.pythonhosted.org/packages/2d/5a/3f1caed8765f33eabb723596666da4ebbf43d11e96550fb18bdec42b467b/scikit_learn-1.8.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:74b66d8689d52ed04c271e1329f0c61635bcaf5b926db9b12d58914cdc01fe57", size = 8610341, upload-time = "2025-12-10T07:08:07.732Z" }, + { url = "https://files.pythonhosted.org/packages/38/cf/06896db3f71c75902a8e9943b444a56e727418f6b4b4a90c98c934f51ed4/scikit_learn-1.8.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8fdf95767f989b0cfedb85f7ed8ca215d4be728031f56ff5a519ee1e3276dc2e", size = 8900022, upload-time = "2025-12-10T07:08:09.862Z" }, + { url = "https://files.pythonhosted.org/packages/1c/f9/9b7563caf3ec8873e17a31401858efab6b39a882daf6c1bfa88879c0aa11/scikit_learn-1.8.0-cp313-cp313-win_amd64.whl", hash = "sha256:2de443b9373b3b615aec1bb57f9baa6bb3a9bd093f1269ba95c17d870422b271", size = 7989409, upload-time = "2025-12-10T07:08:12.028Z" }, + { url = "https://files.pythonhosted.org/packages/49/bd/1f4001503650e72c4f6009ac0c4413cb17d2d601cef6f71c0453da2732fc/scikit_learn-1.8.0-cp313-cp313-win_arm64.whl", hash = "sha256:eddde82a035681427cbedded4e6eff5e57fa59216c2e3e90b10b19ab1d0a65c3", size = 7619760, upload-time = "2025-12-10T07:08:13.688Z" }, + { url = "https://files.pythonhosted.org/packages/d2/7d/a630359fc9dcc95496588c8d8e3245cc8fd81980251079bc09c70d41d951/scikit_learn-1.8.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:7cc267b6108f0a1499a734167282c00c4ebf61328566b55ef262d48e9849c735", size = 8826045, upload-time = "2025-12-10T07:08:15.215Z" }, + { url = "https://files.pythonhosted.org/packages/cc/56/a0c86f6930cfcd1c7054a2bc417e26960bb88d32444fe7f71d5c2cfae891/scikit_learn-1.8.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:fe1c011a640a9f0791146011dfd3c7d9669785f9fed2b2a5f9e207536cf5c2fd", size = 8420324, upload-time = "2025-12-10T07:08:17.561Z" }, + { url = "https://files.pythonhosted.org/packages/46/1e/05962ea1cebc1cf3876667ecb14c283ef755bf409993c5946ade3b77e303/scikit_learn-1.8.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:72358cce49465d140cc4e7792015bb1f0296a9742d5622c67e31399b75468b9e", size = 8680651, upload-time = "2025-12-10T07:08:19.952Z" }, + { url = "https://files.pythonhosted.org/packages/fe/56/a85473cd75f200c9759e3a5f0bcab2d116c92a8a02ee08ccd73b870f8bb4/scikit_learn-1.8.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:80832434a6cc114f5219211eec13dcbc16c2bac0e31ef64c6d346cde3cf054cb", size = 8925045, upload-time = "2025-12-10T07:08:22.11Z" }, + { url = "https://files.pythonhosted.org/packages/cc/b7/64d8cfa896c64435ae57f4917a548d7ac7a44762ff9802f75a79b77cb633/scikit_learn-1.8.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ee787491dbfe082d9c3013f01f5991658b0f38aa8177e4cd4bf434c58f551702", size = 8507994, upload-time = "2025-12-10T07:08:23.943Z" }, + { url = "https://files.pythonhosted.org/packages/5e/37/e192ea709551799379958b4c4771ec507347027bb7c942662c7fbeba31cb/scikit_learn-1.8.0-cp313-cp313t-win_arm64.whl", hash = "sha256:bf97c10a3f5a7543f9b88cbf488d33d175e9146115a451ae34568597ba33dcde", size = 7869518, upload-time = "2025-12-10T07:08:25.71Z" }, + { url = "https://files.pythonhosted.org/packages/24/05/1af2c186174cc92dcab2233f327336058c077d38f6fe2aceb08e6ab4d509/scikit_learn-1.8.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:c22a2da7a198c28dd1a6e1136f19c830beab7fdca5b3e5c8bba8394f8a5c45b3", size = 8528667, upload-time = "2025-12-10T07:08:27.541Z" }, + { url = "https://files.pythonhosted.org/packages/a8/25/01c0af38fe969473fb292bba9dc2b8f9b451f3112ff242c647fee3d0dfe7/scikit_learn-1.8.0-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:6b595b07a03069a2b1740dc08c2299993850ea81cce4fe19b2421e0c970de6b7", size = 8066524, upload-time = "2025-12-10T07:08:29.822Z" }, + { url = "https://files.pythonhosted.org/packages/be/ce/a0623350aa0b68647333940ee46fe45086c6060ec604874e38e9ab7d8e6c/scikit_learn-1.8.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:29ffc74089f3d5e87dfca4c2c8450f88bdc61b0fc6ed5d267f3988f19a1309f6", size = 8657133, upload-time = "2025-12-10T07:08:31.865Z" }, + { url = "https://files.pythonhosted.org/packages/b8/cb/861b41341d6f1245e6ca80b1c1a8c4dfce43255b03df034429089ca2a2c5/scikit_learn-1.8.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fb65db5d7531bccf3a4f6bec3462223bea71384e2cda41da0f10b7c292b9e7c4", size = 8923223, upload-time = "2025-12-10T07:08:34.166Z" }, + { url = "https://files.pythonhosted.org/packages/76/18/a8def8f91b18cd1ba6e05dbe02540168cb24d47e8dcf69e8d00b7da42a08/scikit_learn-1.8.0-cp314-cp314-win_amd64.whl", hash = "sha256:56079a99c20d230e873ea40753102102734c5953366972a71d5cb39a32bc40c6", size = 8096518, upload-time = "2025-12-10T07:08:36.339Z" }, + { url = "https://files.pythonhosted.org/packages/d1/77/482076a678458307f0deb44e29891d6022617b2a64c840c725495bee343f/scikit_learn-1.8.0-cp314-cp314-win_arm64.whl", hash = "sha256:3bad7565bc9cf37ce19a7c0d107742b320c1285df7aab1a6e2d28780df167242", size = 7754546, upload-time = "2025-12-10T07:08:38.128Z" }, + { url = "https://files.pythonhosted.org/packages/2d/d1/ef294ca754826daa043b2a104e59960abfab4cf653891037d19dd5b6f3cf/scikit_learn-1.8.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:4511be56637e46c25721e83d1a9cea9614e7badc7040c4d573d75fbe257d6fd7", size = 8848305, upload-time = "2025-12-10T07:08:41.013Z" }, + { url = "https://files.pythonhosted.org/packages/5b/e2/b1f8b05138ee813b8e1a4149f2f0d289547e60851fd1bb268886915adbda/scikit_learn-1.8.0-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:a69525355a641bf8ef136a7fa447672fb54fe8d60cab5538d9eb7c6438543fb9", size = 8432257, upload-time = "2025-12-10T07:08:42.873Z" }, + { url = "https://files.pythonhosted.org/packages/26/11/c32b2138a85dcb0c99f6afd13a70a951bfdff8a6ab42d8160522542fb647/scikit_learn-1.8.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c2656924ec73e5939c76ac4c8b026fc203b83d8900362eb2599d8aee80e4880f", size = 8678673, upload-time = "2025-12-10T07:08:45.362Z" }, + { url = "https://files.pythonhosted.org/packages/c7/57/51f2384575bdec454f4fe4e7a919d696c9ebce914590abf3e52d47607ab8/scikit_learn-1.8.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:15fc3b5d19cc2be65404786857f2e13c70c83dd4782676dd6814e3b89dc8f5b9", size = 8922467, upload-time = "2025-12-10T07:08:47.408Z" }, + { url = "https://files.pythonhosted.org/packages/35/4d/748c9e2872637a57981a04adc038dacaa16ba8ca887b23e34953f0b3f742/scikit_learn-1.8.0-cp314-cp314t-win_amd64.whl", hash = "sha256:00d6f1d66fbcf4eba6e356e1420d33cc06c70a45bb1363cd6f6a8e4ebbbdece2", size = 8774395, upload-time = "2025-12-10T07:08:49.337Z" }, + { url = "https://files.pythonhosted.org/packages/60/22/d7b2ebe4704a5e50790ba089d5c2ae308ab6bb852719e6c3bd4f04c3a363/scikit_learn-1.8.0-cp314-cp314t-win_arm64.whl", hash = "sha256:f28dd15c6bb0b66ba09728cf09fd8736c304be29409bd8445a080c1280619e8c", size = 8002647, upload-time = "2025-12-10T07:08:51.601Z" }, +] + +[[package]] +name = "scipy" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/56/3e/9cca699f3486ce6bc12ff46dc2031f1ec8eb9ccc9a320fdaf925f1417426/scipy-1.17.0.tar.gz", hash = "sha256:2591060c8e648d8b96439e111ac41fd8342fdeff1876be2e19dea3fe8930454e", size = 30396830, upload-time = "2026-01-10T21:34:23.009Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/4b/c89c131aa87cad2b77a54eb0fb94d633a842420fa7e919dc2f922037c3d8/scipy-1.17.0-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:2abd71643797bd8a106dff97894ff7869eeeb0af0f7a5ce02e4227c6a2e9d6fd", size = 31381316, upload-time = "2026-01-10T21:24:33.42Z" }, + { url = "https://files.pythonhosted.org/packages/5e/5f/a6b38f79a07d74989224d5f11b55267714707582908a5f1ae854cf9a9b84/scipy-1.17.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:ef28d815f4d2686503e5f4f00edc387ae58dfd7a2f42e348bb53359538f01558", size = 27966760, upload-time = "2026-01-10T21:24:38.911Z" }, + { url = "https://files.pythonhosted.org/packages/c1/20/095ad24e031ee8ed3c5975954d816b8e7e2abd731e04f8be573de8740885/scipy-1.17.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:272a9f16d6bb4667e8b50d25d71eddcc2158a214df1b566319298de0939d2ab7", size = 20138701, upload-time = "2026-01-10T21:24:43.249Z" }, + { url = "https://files.pythonhosted.org/packages/89/11/4aad2b3858d0337756f3323f8960755704e530b27eb2a94386c970c32cbe/scipy-1.17.0-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:7204fddcbec2fe6598f1c5fdf027e9f259106d05202a959a9f1aecf036adc9f6", size = 22480574, upload-time = "2026-01-10T21:24:47.266Z" }, + { url = "https://files.pythonhosted.org/packages/85/bd/f5af70c28c6da2227e510875cadf64879855193a687fb19951f0f44cfd6b/scipy-1.17.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fc02c37a5639ee67d8fb646ffded6d793c06c5622d36b35cfa8fe5ececb8f042", size = 32862414, upload-time = "2026-01-10T21:24:52.566Z" }, + { url = "https://files.pythonhosted.org/packages/ef/df/df1457c4df3826e908879fe3d76bc5b6e60aae45f4ee42539512438cfd5d/scipy-1.17.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dac97a27520d66c12a34fd90a4fe65f43766c18c0d6e1c0a80f114d2260080e4", size = 35112380, upload-time = "2026-01-10T21:24:58.433Z" }, + { url = "https://files.pythonhosted.org/packages/5f/bb/88e2c16bd1dd4de19d80d7c5e238387182993c2fb13b4b8111e3927ad422/scipy-1.17.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ebb7446a39b3ae0fe8f416a9a3fdc6fba3f11c634f680f16a239c5187bc487c0", size = 34922676, upload-time = "2026-01-10T21:25:04.287Z" }, + { url = "https://files.pythonhosted.org/packages/02/ba/5120242cc735f71fc002cff0303d536af4405eb265f7c60742851e7ccfe9/scipy-1.17.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:474da16199f6af66601a01546144922ce402cb17362e07d82f5a6cf8f963e449", size = 37507599, upload-time = "2026-01-10T21:25:09.851Z" }, + { url = "https://files.pythonhosted.org/packages/52/c8/08629657ac6c0da198487ce8cd3de78e02cfde42b7f34117d56a3fe249dc/scipy-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:255c0da161bd7b32a6c898e7891509e8a9289f0b1c6c7d96142ee0d2b114c2ea", size = 36380284, upload-time = "2026-01-10T21:25:15.632Z" }, + { url = "https://files.pythonhosted.org/packages/6c/4a/465f96d42c6f33ad324a40049dfd63269891db9324aa66c4a1c108c6f994/scipy-1.17.0-cp311-cp311-win_arm64.whl", hash = "sha256:85b0ac3ad17fa3be50abd7e69d583d98792d7edc08367e01445a1e2076005379", size = 24370427, upload-time = "2026-01-10T21:25:20.514Z" }, + { url = "https://files.pythonhosted.org/packages/0b/11/7241a63e73ba5a516f1930ac8d5b44cbbfabd35ac73a2d08ca206df007c4/scipy-1.17.0-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:0d5018a57c24cb1dd828bcf51d7b10e65986d549f52ef5adb6b4d1ded3e32a57", size = 31364580, upload-time = "2026-01-10T21:25:25.717Z" }, + { url = "https://files.pythonhosted.org/packages/ed/1d/5057f812d4f6adc91a20a2d6f2ebcdb517fdbc87ae3acc5633c9b97c8ba5/scipy-1.17.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:88c22af9e5d5a4f9e027e26772cc7b5922fab8bcc839edb3ae33de404feebd9e", size = 27969012, upload-time = "2026-01-10T21:25:30.921Z" }, + { url = "https://files.pythonhosted.org/packages/e3/21/f6ec556c1e3b6ec4e088da667d9987bb77cc3ab3026511f427dc8451187d/scipy-1.17.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:f3cd947f20fe17013d401b64e857c6b2da83cae567adbb75b9dcba865abc66d8", size = 20140691, upload-time = "2026-01-10T21:25:34.802Z" }, + { url = "https://files.pythonhosted.org/packages/7a/fe/5e5ad04784964ba964a96f16c8d4676aa1b51357199014dce58ab7ec5670/scipy-1.17.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:e8c0b331c2c1f531eb51f1b4fc9ba709521a712cce58f1aa627bc007421a5306", size = 22463015, upload-time = "2026-01-10T21:25:39.277Z" }, + { url = "https://files.pythonhosted.org/packages/4a/69/7c347e857224fcaf32a34a05183b9d8a7aca25f8f2d10b8a698b8388561a/scipy-1.17.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5194c445d0a1c7a6c1a4a4681b6b7c71baad98ff66d96b949097e7513c9d6742", size = 32724197, upload-time = "2026-01-10T21:25:44.084Z" }, + { url = "https://files.pythonhosted.org/packages/d1/fe/66d73b76d378ba8cc2fe605920c0c75092e3a65ae746e1e767d9d020a75a/scipy-1.17.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9eeb9b5f5997f75507814ed9d298ab23f62cf79f5a3ef90031b1ee2506abdb5b", size = 35009148, upload-time = "2026-01-10T21:25:50.591Z" }, + { url = "https://files.pythonhosted.org/packages/af/07/07dec27d9dc41c18d8c43c69e9e413431d20c53a0339c388bcf72f353c4b/scipy-1.17.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:40052543f7bbe921df4408f46003d6f01c6af109b9e2c8a66dd1cf6cf57f7d5d", size = 34798766, upload-time = "2026-01-10T21:25:59.41Z" }, + { url = "https://files.pythonhosted.org/packages/81/61/0470810c8a093cdacd4ba7504b8a218fd49ca070d79eca23a615f5d9a0b0/scipy-1.17.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0cf46c8013fec9d3694dc572f0b54100c28405d55d3e2cb15e2895b25057996e", size = 37405953, upload-time = "2026-01-10T21:26:07.75Z" }, + { url = "https://files.pythonhosted.org/packages/92/ce/672ed546f96d5d41ae78c4b9b02006cedd0b3d6f2bf5bb76ea455c320c28/scipy-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:0937a0b0d8d593a198cededd4c439a0ea216a3f36653901ea1f3e4be949056f8", size = 36328121, upload-time = "2026-01-10T21:26:16.509Z" }, + { url = "https://files.pythonhosted.org/packages/9d/21/38165845392cae67b61843a52c6455d47d0cc2a40dd495c89f4362944654/scipy-1.17.0-cp312-cp312-win_arm64.whl", hash = "sha256:f603d8a5518c7426414d1d8f82e253e454471de682ce5e39c29adb0df1efb86b", size = 24314368, upload-time = "2026-01-10T21:26:23.087Z" }, + { url = "https://files.pythonhosted.org/packages/0c/51/3468fdfd49387ddefee1636f5cf6d03ce603b75205bf439bbf0e62069bfd/scipy-1.17.0-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:65ec32f3d32dfc48c72df4291345dae4f048749bc8d5203ee0a3f347f96c5ce6", size = 31344101, upload-time = "2026-01-10T21:26:30.25Z" }, + { url = "https://files.pythonhosted.org/packages/b2/9a/9406aec58268d437636069419e6977af953d1e246df941d42d3720b7277b/scipy-1.17.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:1f9586a58039d7229ce77b52f8472c972448cded5736eaf102d5658bbac4c269", size = 27950385, upload-time = "2026-01-10T21:26:36.801Z" }, + { url = "https://files.pythonhosted.org/packages/4f/98/e7342709e17afdfd1b26b56ae499ef4939b45a23a00e471dfb5375eea205/scipy-1.17.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:9fad7d3578c877d606b1150135c2639e9de9cecd3705caa37b66862977cc3e72", size = 20122115, upload-time = "2026-01-10T21:26:42.107Z" }, + { url = "https://files.pythonhosted.org/packages/fd/0e/9eeeb5357a64fd157cbe0302c213517c541cc16b8486d82de251f3c68ede/scipy-1.17.0-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:423ca1f6584fc03936972b5f7c06961670dbba9f234e71676a7c7ccf938a0d61", size = 22442402, upload-time = "2026-01-10T21:26:48.029Z" }, + { url = "https://files.pythonhosted.org/packages/c9/10/be13397a0e434f98e0c79552b2b584ae5bb1c8b2be95db421533bbca5369/scipy-1.17.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fe508b5690e9eaaa9467fc047f833af58f1152ae51a0d0aed67aa5801f4dd7d6", size = 32696338, upload-time = "2026-01-10T21:26:55.521Z" }, + { url = "https://files.pythonhosted.org/packages/63/1e/12fbf2a3bb240161651c94bb5cdd0eae5d4e8cc6eaeceb74ab07b12a753d/scipy-1.17.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6680f2dfd4f6182e7d6db161344537da644d1cf85cf293f015c60a17ecf08752", size = 34977201, upload-time = "2026-01-10T21:27:03.501Z" }, + { url = "https://files.pythonhosted.org/packages/19/5b/1a63923e23ccd20bd32156d7dd708af5bbde410daa993aa2500c847ab2d2/scipy-1.17.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:eec3842ec9ac9de5917899b277428886042a93db0b227ebbe3a333b64ec7643d", size = 34777384, upload-time = "2026-01-10T21:27:11.423Z" }, + { url = "https://files.pythonhosted.org/packages/39/22/b5da95d74edcf81e540e467202a988c50fef41bd2011f46e05f72ba07df6/scipy-1.17.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d7425fcafbc09a03731e1bc05581f5fad988e48c6a861f441b7ab729a49a55ea", size = 37379586, upload-time = "2026-01-10T21:27:20.171Z" }, + { url = "https://files.pythonhosted.org/packages/b9/b6/8ac583d6da79e7b9e520579f03007cb006f063642afd6b2eeb16b890bf93/scipy-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:87b411e42b425b84777718cc41516b8a7e0795abfa8e8e1d573bf0ef014f0812", size = 36287211, upload-time = "2026-01-10T21:28:43.122Z" }, + { url = "https://files.pythonhosted.org/packages/55/fb/7db19e0b3e52f882b420417644ec81dd57eeef1bd1705b6f689d8ff93541/scipy-1.17.0-cp313-cp313-win_arm64.whl", hash = "sha256:357ca001c6e37601066092e7c89cca2f1ce74e2a520ca78d063a6d2201101df2", size = 24312646, upload-time = "2026-01-10T21:28:49.893Z" }, + { url = "https://files.pythonhosted.org/packages/20/b6/7feaa252c21cc7aff335c6c55e1b90ab3e3306da3f048109b8b639b94648/scipy-1.17.0-cp313-cp313t-macosx_10_14_x86_64.whl", hash = "sha256:ec0827aa4d36cb79ff1b81de898e948a51ac0b9b1c43e4a372c0508c38c0f9a3", size = 31693194, upload-time = "2026-01-10T21:27:27.454Z" }, + { url = "https://files.pythonhosted.org/packages/76/bb/bbb392005abce039fb7e672cb78ac7d158700e826b0515cab6b5b60c26fb/scipy-1.17.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:819fc26862b4b3c73a60d486dbb919202f3d6d98c87cf20c223511429f2d1a97", size = 28365415, upload-time = "2026-01-10T21:27:34.26Z" }, + { url = "https://files.pythonhosted.org/packages/37/da/9d33196ecc99fba16a409c691ed464a3a283ac454a34a13a3a57c0d66f3a/scipy-1.17.0-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:363ad4ae2853d88ebcde3ae6ec46ccca903ea9835ee8ba543f12f575e7b07e4e", size = 20537232, upload-time = "2026-01-10T21:27:40.306Z" }, + { url = "https://files.pythonhosted.org/packages/56/9d/f4b184f6ddb28e9a5caea36a6f98e8ecd2a524f9127354087ce780885d83/scipy-1.17.0-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:979c3a0ff8e5ba254d45d59ebd38cde48fce4f10b5125c680c7a4bfe177aab07", size = 22791051, upload-time = "2026-01-10T21:27:46.539Z" }, + { url = "https://files.pythonhosted.org/packages/9b/9d/025cccdd738a72140efc582b1641d0dd4caf2e86c3fb127568dc80444e6e/scipy-1.17.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:130d12926ae34399d157de777472bf82e9061c60cc081372b3118edacafe1d00", size = 32815098, upload-time = "2026-01-10T21:27:54.389Z" }, + { url = "https://files.pythonhosted.org/packages/48/5f/09b879619f8bca15ce392bfc1894bd9c54377e01d1b3f2f3b595a1b4d945/scipy-1.17.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6e886000eb4919eae3a44f035e63f0fd8b651234117e8f6f29bad1cd26e7bc45", size = 35031342, upload-time = "2026-01-10T21:28:03.012Z" }, + { url = "https://files.pythonhosted.org/packages/f2/9a/f0f0a9f0aa079d2f106555b984ff0fbb11a837df280f04f71f056ea9c6e4/scipy-1.17.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:13c4096ac6bc31d706018f06a49abe0485f96499deb82066b94d19b02f664209", size = 34893199, upload-time = "2026-01-10T21:28:10.832Z" }, + { url = "https://files.pythonhosted.org/packages/90/b8/4f0f5cf0c5ea4d7548424e6533e6b17d164f34a6e2fb2e43ffebb6697b06/scipy-1.17.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:cacbaddd91fcffde703934897c5cd2c7cb0371fac195d383f4e1f1c5d3f3bd04", size = 37438061, upload-time = "2026-01-10T21:28:19.684Z" }, + { url = "https://files.pythonhosted.org/packages/f9/cc/2bd59140ed3b2fa2882fb15da0a9cb1b5a6443d67cfd0d98d4cec83a57ec/scipy-1.17.0-cp313-cp313t-win_amd64.whl", hash = "sha256:edce1a1cf66298cccdc48a1bdf8fb10a3bf58e8b58d6c3883dd1530e103f87c0", size = 36328593, upload-time = "2026-01-10T21:28:28.007Z" }, + { url = "https://files.pythonhosted.org/packages/13/1b/c87cc44a0d2c7aaf0f003aef2904c3d097b422a96c7e7c07f5efd9073c1b/scipy-1.17.0-cp313-cp313t-win_arm64.whl", hash = "sha256:30509da9dbec1c2ed8f168b8d8aa853bc6723fede1dbc23c7d43a56f5ab72a67", size = 24625083, upload-time = "2026-01-10T21:28:35.188Z" }, + { url = "https://files.pythonhosted.org/packages/1a/2d/51006cd369b8e7879e1c630999a19d1fbf6f8b5ed3e33374f29dc87e53b3/scipy-1.17.0-cp314-cp314-macosx_10_14_x86_64.whl", hash = "sha256:c17514d11b78be8f7e6331b983a65a7f5ca1fd037b95e27b280921fe5606286a", size = 31346803, upload-time = "2026-01-10T21:28:57.24Z" }, + { url = "https://files.pythonhosted.org/packages/d6/2e/2349458c3ce445f53a6c93d4386b1c4c5c0c540917304c01222ff95ff317/scipy-1.17.0-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:4e00562e519c09da34c31685f6acc3aa384d4d50604db0f245c14e1b4488bfa2", size = 27967182, upload-time = "2026-01-10T21:29:04.107Z" }, + { url = "https://files.pythonhosted.org/packages/5e/7c/df525fbfa77b878d1cfe625249529514dc02f4fd5f45f0f6295676a76528/scipy-1.17.0-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:f7df7941d71314e60a481e02d5ebcb3f0185b8d799c70d03d8258f6c80f3d467", size = 20139125, upload-time = "2026-01-10T21:29:10.179Z" }, + { url = "https://files.pythonhosted.org/packages/33/11/fcf9d43a7ed1234d31765ec643b0515a85a30b58eddccc5d5a4d12b5f194/scipy-1.17.0-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:aabf057c632798832f071a8dde013c2e26284043934f53b00489f1773b33527e", size = 22443554, upload-time = "2026-01-10T21:29:15.888Z" }, + { url = "https://files.pythonhosted.org/packages/80/5c/ea5d239cda2dd3d31399424967a24d556cf409fbea7b5b21412b0fd0a44f/scipy-1.17.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a38c3337e00be6fd8a95b4ed66b5d988bac4ec888fd922c2ea9fe5fb1603dd67", size = 32757834, upload-time = "2026-01-10T21:29:23.406Z" }, + { url = "https://files.pythonhosted.org/packages/b8/7e/8c917cc573310e5dc91cbeead76f1b600d3fb17cf0969db02c9cf92e3cfa/scipy-1.17.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00fb5f8ec8398ad90215008d8b6009c9db9fa924fd4c7d6be307c6f945f9cd73", size = 34995775, upload-time = "2026-01-10T21:29:31.915Z" }, + { url = "https://files.pythonhosted.org/packages/c5/43/176c0c3c07b3f7df324e7cdd933d3e2c4898ca202b090bd5ba122f9fe270/scipy-1.17.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:f2a4942b0f5f7c23c7cd641a0ca1955e2ae83dedcff537e3a0259096635e186b", size = 34841240, upload-time = "2026-01-10T21:29:39.995Z" }, + { url = "https://files.pythonhosted.org/packages/44/8c/d1f5f4b491160592e7f084d997de53a8e896a3ac01cd07e59f43ca222744/scipy-1.17.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:dbf133ced83889583156566d2bdf7a07ff89228fe0c0cb727f777de92092ec6b", size = 37394463, upload-time = "2026-01-10T21:29:48.723Z" }, + { url = "https://files.pythonhosted.org/packages/9f/ec/42a6657f8d2d087e750e9a5dde0b481fd135657f09eaf1cf5688bb23c338/scipy-1.17.0-cp314-cp314-win_amd64.whl", hash = "sha256:3625c631a7acd7cfd929e4e31d2582cf00f42fcf06011f59281271746d77e061", size = 37053015, upload-time = "2026-01-10T21:30:51.418Z" }, + { url = "https://files.pythonhosted.org/packages/27/58/6b89a6afd132787d89a362d443a7bddd511b8f41336a1ae47f9e4f000dc4/scipy-1.17.0-cp314-cp314-win_arm64.whl", hash = "sha256:9244608d27eafe02b20558523ba57f15c689357c85bdcfe920b1828750aa26eb", size = 24951312, upload-time = "2026-01-10T21:30:56.771Z" }, + { url = "https://files.pythonhosted.org/packages/e9/01/f58916b9d9ae0112b86d7c3b10b9e685625ce6e8248df139d0fcb17f7397/scipy-1.17.0-cp314-cp314t-macosx_10_14_x86_64.whl", hash = "sha256:2b531f57e09c946f56ad0b4a3b2abee778789097871fc541e267d2eca081cff1", size = 31706502, upload-time = "2026-01-10T21:29:56.326Z" }, + { url = "https://files.pythonhosted.org/packages/59/8e/2912a87f94a7d1f8b38aabc0faf74b82d3b6c9e22be991c49979f0eceed8/scipy-1.17.0-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:13e861634a2c480bd237deb69333ac79ea1941b94568d4b0efa5db5e263d4fd1", size = 28380854, upload-time = "2026-01-10T21:30:01.554Z" }, + { url = "https://files.pythonhosted.org/packages/bd/1c/874137a52dddab7d5d595c1887089a2125d27d0601fce8c0026a24a92a0b/scipy-1.17.0-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:eb2651271135154aa24f6481cbae5cc8af1f0dd46e6533fb7b56aa9727b6a232", size = 20552752, upload-time = "2026-01-10T21:30:05.93Z" }, + { url = "https://files.pythonhosted.org/packages/3f/f0/7518d171cb735f6400f4576cf70f756d5b419a07fe1867da34e2c2c9c11b/scipy-1.17.0-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:c5e8647f60679790c2f5c76be17e2e9247dc6b98ad0d3b065861e082c56e078d", size = 22803972, upload-time = "2026-01-10T21:30:10.651Z" }, + { url = "https://files.pythonhosted.org/packages/7c/74/3498563a2c619e8a3ebb4d75457486c249b19b5b04a30600dfd9af06bea5/scipy-1.17.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5fb10d17e649e1446410895639f3385fd2bf4c3c7dfc9bea937bddcbc3d7b9ba", size = 32829770, upload-time = "2026-01-10T21:30:16.359Z" }, + { url = "https://files.pythonhosted.org/packages/48/d1/7b50cedd8c6c9d6f706b4b36fa8544d829c712a75e370f763b318e9638c1/scipy-1.17.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8547e7c57f932e7354a2319fab613981cde910631979f74c9b542bb167a8b9db", size = 35051093, upload-time = "2026-01-10T21:30:22.987Z" }, + { url = "https://files.pythonhosted.org/packages/e2/82/a2d684dfddb87ba1b3ea325df7c3293496ee9accb3a19abe9429bce94755/scipy-1.17.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:33af70d040e8af9d5e7a38b5ed3b772adddd281e3062ff23fec49e49681c38cf", size = 34909905, upload-time = "2026-01-10T21:30:28.704Z" }, + { url = "https://files.pythonhosted.org/packages/ef/5e/e565bd73991d42023eb82bb99e51c5b3d9e2c588ca9d4b3e2cc1d3ca62a6/scipy-1.17.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:f9eb55bb97d00f8b7ab95cb64f873eb0bf54d9446264d9f3609130381233483f", size = 37457743, upload-time = "2026-01-10T21:30:34.819Z" }, + { url = "https://files.pythonhosted.org/packages/58/a8/a66a75c3d8f1fb2b83f66007d6455a06a6f6cf5618c3dc35bc9b69dd096e/scipy-1.17.0-cp314-cp314t-win_amd64.whl", hash = "sha256:1ff269abf702f6c7e67a4b7aad981d42871a11b9dd83c58d2d2ea624efbd1088", size = 37098574, upload-time = "2026-01-10T21:30:40.782Z" }, + { url = "https://files.pythonhosted.org/packages/56/a5/df8f46ef7da168f1bc52cd86e09a9de5c6f19cc1da04454d51b7d4f43408/scipy-1.17.0-cp314-cp314t-win_arm64.whl", hash = "sha256:031121914e295d9791319a1875444d55079885bbae5bdc9c5e0f2ee5f09d34ff", size = 25246266, upload-time = "2026-01-10T21:30:45.923Z" }, +] + +[[package]] +name = "silx" +version = "2.2.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "fabio" }, + { name = "h5py" }, + { name = "numpy" }, + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b7/34/ee443851672fc1a8f27e0a7c212c567118fd1892d1cb798c6d5c405c6efe/silx-2.2.2.tar.gz", hash = "sha256:5d9ba367b5715cc4cb9011388f3d71200d7beb7676c910952fd1350a342c571f", size = 19102274, upload-time = "2025-04-08T11:44:59.716Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2f/71/9574dc9420258b1daaba18e6032b888a25768510394ed39c4047b39ae10d/silx-2.2.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e0658063adb7652b7360f438ac62d7d42531114011e77e2ffa3740a99c91aac6", size = 6182793, upload-time = "2025-04-08T11:43:47.45Z" }, + { url = "https://files.pythonhosted.org/packages/d5/4d/19c7e652bbdedbff3d0b47fb6cae21638359c57fe64e1b3e9cf4b4f36761/silx-2.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d21cb7ca1dd74b561592798a6b2e4583095f5a7e3d2a23478918c59d366b9beb", size = 13863034, upload-time = "2025-04-08T11:43:54.279Z" }, + { url = "https://files.pythonhosted.org/packages/b2/6f/1444c4b7a7402bcd7d7a849117aace61bff239ff85bded9e91b08fb929d0/silx-2.2.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:41794f85a00b11cc571ef7f4cb4fbccbd2448f496ebac5fb1be5f6c7b44a8f85", size = 14320761, upload-time = "2025-04-08T11:43:57.45Z" }, + { url = "https://files.pythonhosted.org/packages/d3/fb/4c08c29a262f75e60911db0f039e7011f9a2daf1000659cbe5a950737434/silx-2.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:962efdfc3d22a7dbca7e5884cd6bfdbb24424e79891444a89cc1d0c5e0fdacb6", size = 13972613, upload-time = "2025-04-08T11:44:00.437Z" }, + { url = "https://files.pythonhosted.org/packages/47/9f/b47b7f9183db61ddb6d3d52b27a2d70ed9fee5715b6db4ca0d48d4d2db05/silx-2.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:9994b78600c7e04407bdbb0091a931067d6fa9b424ffb6001a3a6c29023d7c64", size = 4289910, upload-time = "2025-04-08T11:44:03.529Z" }, + { url = "https://files.pythonhosted.org/packages/ba/6b/c74371b63d6dfb52d0d63ef655365507b7ae7da3e146258dc0d66a58c1d8/silx-2.2.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:6568187b9e68f1f5ddbdcc4c36047decdd1339ca4b78a1216982424098d94459", size = 6200667, upload-time = "2025-04-08T11:44:05.334Z" }, + { url = "https://files.pythonhosted.org/packages/fa/cc/8099693ae0218c9b75bdfc146ef57fe110927d3424c2d25da3097b709c59/silx-2.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4bf84e40474804d095bbb7596d9a93625b90b6453b52298b679a2683fa58654e", size = 13674069, upload-time = "2025-04-08T11:44:07.341Z" }, + { url = "https://files.pythonhosted.org/packages/81/ba/1dd6d950015bbfbf279d22d382fde00593b76223beef720ac7e28d88b29c/silx-2.2.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:248dcf396089190fb4cb5a9adde77ea3ac62500e33bfabc8e15374ce9e2e881b", size = 14097036, upload-time = "2025-04-08T11:44:10.841Z" }, + { url = "https://files.pythonhosted.org/packages/fa/a2/8ca963a9a00ff84a6835123573e014d2742d6dee0303310340877d0da445/silx-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:005bf5d407445b779b56550fad8a05e646010bf78d5c57cf33a7e43264b43a7c", size = 13822086, upload-time = "2025-04-08T11:44:15.021Z" }, + { url = "https://files.pythonhosted.org/packages/55/e9/09f4b8c08c151295848f2a5a400295219f932002c9237d638cb4d785f1bd/silx-2.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:8923f3681c538806b894391295632acf984a5d5e3ab72443a8f8668686e84f02", size = 4278379, upload-time = "2025-04-08T11:44:17.895Z" }, + { url = "https://files.pythonhosted.org/packages/70/18/0ca21fb486a18eed2e7d4d889ca79386c6b400e599fcdb68110140247b61/silx-2.2.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:5a99cd66fef51ca6db45fc05663c1896d7266c6a0cc6a94923a0ebc9a470e6f9", size = 6161652, upload-time = "2025-04-08T11:44:19.729Z" }, + { url = "https://files.pythonhosted.org/packages/79/8f/bffbaa5743069a41b89129c823b905116ecf31edebe64fa30c6d435dbc69/silx-2.2.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8ea7fa7b79464d3f9b8d0cdf2a5b2272fe323be48faa01e606c5d18b4c4725b", size = 13617350, upload-time = "2025-04-08T11:44:22.009Z" }, + { url = "https://files.pythonhosted.org/packages/20/f0/f872e812e61d1deba97b1d9fc2cf3c8b10f9d0c3560986bcb465b51953f3/silx-2.2.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2655c01d3b53bf5cd3aaf3a7265530956d77412b1c8eb2bd58205197cc18bc7f", size = 14017340, upload-time = "2025-04-08T11:44:25.602Z" }, + { url = "https://files.pythonhosted.org/packages/4d/c1/00299b27ecc5b539a7d4d2a1f63434e824ae2627c0c4881d3651f58e3133/silx-2.2.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b08d3972a88d4f3167cbe00ff5ef9599086534ab650e8df7439f22e24dcee370", size = 13803813, upload-time = "2025-04-08T11:44:28.11Z" }, + { url = "https://files.pythonhosted.org/packages/a9/13/772c94f553a1b8476037909cac4d69be0eb70a8a9efd66488d866673dc05/silx-2.2.2-cp313-cp313-win_amd64.whl", hash = "sha256:eee31cec33d4cf496044231cbf86b8aa0f5b1bd7536db4a69d54e7762b591a75", size = 4274649, upload-time = "2025-04-08T11:44:30.596Z" }, + { url = "https://files.pythonhosted.org/packages/f6/e4/04360d089942253abb8cdd20ac1288873a4ad80404bf2ffb479e70914163/silx-2.2.2-cp314-cp314-win_amd64.whl", hash = "sha256:8703dbbb048ef0993be311a02c747f980171bc57cc26c04c6249f09a5d519092", size = 4190966, upload-time = "2025-10-31T08:18:21.821Z" }, +] + +[[package]] +name = "six" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, +] + +[[package]] +name = "spglib" +version = "2.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a9/06/7964acb4c444191376bd87f91579475fbe7623ca943cce40cee8fb7f2c36/spglib-2.7.0.tar.gz", hash = "sha256:c40907a42c9dc45572f46740bf95412f84fb0eda30267e31665d104a4bde6627", size = 2366134, upload-time = "2025-12-29T09:48:26.42Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/44/a8/d841ae7743c58227af277f7f16aa844376fa11c426090d6ae35e7e93af76/spglib-2.7.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3cf0ff80c01d8631ef4b9f1b78da79ff2044834e6e2d870f7f20c8579c921136", size = 910793, upload-time = "2025-12-29T09:47:32.063Z" }, + { url = "https://files.pythonhosted.org/packages/e8/02/11baf94cf682cdaafa046b72d4b2adcf944e19e2b2741454e329dedb2fc2/spglib-2.7.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a7b29d2cfca6ac53e927686ca0b91257126e47f6abfa26451723a5cd40070352", size = 944977, upload-time = "2025-12-29T09:47:33.638Z" }, + { url = "https://files.pythonhosted.org/packages/ce/fa/6d1bc8f8cb08945ca8c37c95b42bf336b6b9a8a737eced1ce64f0cebe9ce/spglib-2.7.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f892ecce2dd1bc636b14a4e5bc13aabb73b008bd37a4d23636882c8971c432a0", size = 960531, upload-time = "2025-12-29T09:47:36.932Z" }, + { url = "https://files.pythonhosted.org/packages/b0/79/2fd5e33b431cd0afcdd441bd10704c11cdf74c09b721249297284e5bf0b2/spglib-2.7.0-cp311-cp311-win_amd64.whl", hash = "sha256:468879702577124dcde0607a75396576e256f1cfa2d8fe48da4a928fbb27abc6", size = 669827, upload-time = "2025-12-29T09:47:38.47Z" }, + { url = "https://files.pythonhosted.org/packages/f7/e9/4e07c9c1bda40df54e09bd686eae0dc13d46e76a5ef4d43582971a86eb32/spglib-2.7.0-cp311-cp311-win_arm64.whl", hash = "sha256:ceb6730a2324d0c83579c803f3782e28bd41e79bbfe0c3dfdbf30e3d3a6320e5", size = 649076, upload-time = "2025-12-29T09:47:40.367Z" }, + { url = "https://files.pythonhosted.org/packages/68/0e/36720beeca8452530e50ab8a16b91e8721e34c0f97fd25e9c4ddd8b9324b/spglib-2.7.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ef70132e23dfcc7ab6813742e0edab3f9906e61cd11c857f014bd5610a8bc88c", size = 911009, upload-time = "2025-12-29T09:47:42.238Z" }, + { url = "https://files.pythonhosted.org/packages/47/a0/24df91cbde6a3237d54cfb21602cc8ebb4102cd4e3ec9497c66135c2b190/spglib-2.7.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:59f134e74f7f488de4bf5579ee6a35af25cb2c478c138de664fea1e14f3efbaf", size = 946821, upload-time = "2025-12-29T09:47:44.548Z" }, + { url = "https://files.pythonhosted.org/packages/67/4c/75ac6f7ade28019b216c7333322f2886e1c0105202cd74506f530664bf26/spglib-2.7.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6913906fd9108e7bb2ce06a810513a95a82d801530f10230979bf3427bb7e771", size = 962531, upload-time = "2025-12-29T09:47:46.3Z" }, + { url = "https://files.pythonhosted.org/packages/a7/5f/4e283139af178bb445eedff281a90e66ceff1b814ace70a9d90a2197acc3/spglib-2.7.0-cp312-cp312-win_amd64.whl", hash = "sha256:d5729ff0040baae764c17249302cd99f0eb4e73449612a8c69d3e60a215f062e", size = 671111, upload-time = "2025-12-29T09:47:48.14Z" }, + { url = "https://files.pythonhosted.org/packages/a5/b9/20e52d46e33bf69ceba4fc86602f006c06ce4ab10e3c930f4722fb270b02/spglib-2.7.0-cp312-cp312-win_arm64.whl", hash = "sha256:54f4b6e789475384c62e759c618172707f261c0eae8017949fe4994b6b8cc779", size = 646679, upload-time = "2025-12-29T09:47:49.376Z" }, + { url = "https://files.pythonhosted.org/packages/2c/1c/a0fe8c0523a0e7d608f49f09895e5c599329265c9bfacd269a21458b7564/spglib-2.7.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ab061ea6a3c3c25a1d0018b09c333c0458792036d3f45d892bd52793ed1f1bda", size = 911085, upload-time = "2025-12-29T09:47:51.606Z" }, + { url = "https://files.pythonhosted.org/packages/2a/34/cb3c522c4aaf6ce319b37bbec71d373b9e2cf0bcfe7d42c365cd6c113b4b/spglib-2.7.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:be28673e90f7a6c7770f73c57e529d2bdbb373d06d26ee5e90991b548e9238aa", size = 946857, upload-time = "2025-12-29T09:47:53.059Z" }, + { url = "https://files.pythonhosted.org/packages/9e/64/3b1213f2f655ff143ed142292b47ec3f1f9bda8641e659a7e33c4cf0e8a9/spglib-2.7.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f627a4ed6f2396ed6e3e8eaf33a53ad143c8ffb8756a84a640f4569ac5ffa2a7", size = 962470, upload-time = "2025-12-29T09:47:54.878Z" }, + { url = "https://files.pythonhosted.org/packages/5c/3a/c51883ce739a00f9f60196f3dcb4ed91b690299a4ec64defd8ec5b2c5899/spglib-2.7.0-cp313-cp313-win_amd64.whl", hash = "sha256:c76411bc1b96cd87c8733994747c7692512b583bb4ef89a65463ff4255221c11", size = 671073, upload-time = "2025-12-29T09:47:56.887Z" }, + { url = "https://files.pythonhosted.org/packages/35/78/3f9ec6ae93a48527dce0eceb6eeab74e6ad1fb2977adb5cbdfc03d43193c/spglib-2.7.0-cp313-cp313-win_arm64.whl", hash = "sha256:0d8ecf030d13d67c4cc272423e5652b74eda57f86a0b118e007f6d12974cc256", size = 646711, upload-time = "2025-12-29T09:47:58.697Z" }, + { url = "https://files.pythonhosted.org/packages/1b/47/86e3c15c3e1c252bde40a794eea4742c142f23fc5f9c3d7551f083c1fa20/spglib-2.7.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:95e3dd7ef992ff8a88f6ef2e5909aaa60ecb479004cc1f73c1e6285d54227960", size = 911712, upload-time = "2025-12-29T09:48:01.14Z" }, + { url = "https://files.pythonhosted.org/packages/05/61/ab2447bb47fa69934adc2fc2d13f771dedd3b2fd3171c95307446c948f01/spglib-2.7.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:97e0fcea2db3915bd973fdd2cc0a757b1f99bda71ce815da333d75ad1ffc3eb1", size = 947528, upload-time = "2025-12-29T09:48:03.258Z" }, + { url = "https://files.pythonhosted.org/packages/9d/69/898d9e005131b0b1c7e5dce2b79f36aeb20ec4d3a88cca596b522a0fa4df/spglib-2.7.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:39b978c08ef2ebc0eaba833c488fc4c0f9b1fc0f50d4a8584f176741eea69376", size = 962474, upload-time = "2025-12-29T09:48:05.617Z" }, + { url = "https://files.pythonhosted.org/packages/c8/56/7b25ee5348722dc93ca245ed950f1a89f8a944906140629055f394c072a4/spglib-2.7.0-cp314-cp314-win_amd64.whl", hash = "sha256:5f334b4b66c8aafd583fafab5b15a56e27efdd2dc6cb1064dfcd0fe59ae130f4", size = 679679, upload-time = "2025-12-29T09:48:15.393Z" }, + { url = "https://files.pythonhosted.org/packages/20/37/eda9a34f25b13e47298fa1b94cc4dfd8b0fcfc46c7d63ea046aa1bf91fe7/spglib-2.7.0-cp314-cp314-win_arm64.whl", hash = "sha256:b032842fc223de46d2ef7d220459e1a61ed90329ac2e72818c605f1fc87451b8", size = 656403, upload-time = "2025-12-29T09:48:17.027Z" }, + { url = "https://files.pythonhosted.org/packages/39/af/1c8d0f98d07969b7fa7323d522732124d88caf4ee3b680ef59120bd7b229/spglib-2.7.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:b7e29c796cfdadcc3857aef330acc19b9bc50c83e9911fb23b28390e7c80bae5", size = 920791, upload-time = "2025-12-29T09:48:07.085Z" }, + { url = "https://files.pythonhosted.org/packages/b5/c6/89a3f31f831efc4108a19f110873559990b72186745cd3e151de28b256cc/spglib-2.7.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9b6ca88bb6e604bc8f63efe87b3b2470c2e25f56988b775bd332cefa8866f5c5", size = 946881, upload-time = "2025-12-29T09:48:09.154Z" }, + { url = "https://files.pythonhosted.org/packages/7e/e9/1ca63db2cebd381bd6b27ae309f25d270e70928359a6f0360db09b77894e/spglib-2.7.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:50629939a9cd6fa3df5a12f6f025ceb3c78534284f875371574c360e4ccaf5e1", size = 963803, upload-time = "2025-12-29T09:48:12.478Z" }, + { url = "https://files.pythonhosted.org/packages/28/97/459b37c3802633f77c883883c75f5d4429b601ae8d930410b999c4e1dafb/spglib-2.7.0-cp314-cp314t-win_amd64.whl", hash = "sha256:cb77daaf9dd5d48d523a888f37cebd47fa63ff28dfcf1aac2b031b914f9ed55a", size = 696536, upload-time = "2025-12-29T09:48:13.885Z" }, +] + +[[package]] +name = "sqlalchemy" +version = "2.0.46" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "greenlet", marker = "platform_machine == 'AMD64' or platform_machine == 'WIN32' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'ppc64le' or platform_machine == 'win32' or platform_machine == 'x86_64'" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/aa/9ce0f3e7a9829ead5c8ce549392f33a12c4555a6c0609bb27d882e9c7ddf/sqlalchemy-2.0.46.tar.gz", hash = "sha256:cf36851ee7219c170bb0793dbc3da3e80c582e04a5437bc601bfe8c85c9216d7", size = 9865393, upload-time = "2026-01-21T18:03:45.119Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/ac/b42ad16800d0885105b59380ad69aad0cce5a65276e269ce2729a2343b6a/sqlalchemy-2.0.46-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:261c4b1f101b4a411154f1da2b76497d73abbfc42740029205d4d01fa1052684", size = 2154851, upload-time = "2026-01-21T18:27:30.54Z" }, + { url = "https://files.pythonhosted.org/packages/a0/60/d8710068cb79f64d002ebed62a7263c00c8fd95f4ebd4b5be8f7ca93f2bc/sqlalchemy-2.0.46-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:181903fe8c1b9082995325f1b2e84ac078b1189e2819380c2303a5f90e114a62", size = 3311241, upload-time = "2026-01-21T18:32:33.45Z" }, + { url = "https://files.pythonhosted.org/packages/2b/0f/20c71487c7219ab3aa7421c7c62d93824c97c1460f2e8bb72404b0192d13/sqlalchemy-2.0.46-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:590be24e20e2424a4c3c1b0835e9405fa3d0af5823a1a9fc02e5dff56471515f", size = 3310741, upload-time = "2026-01-21T18:44:57.887Z" }, + { url = "https://files.pythonhosted.org/packages/65/80/d26d00b3b249ae000eee4db206fcfc564bf6ca5030e4747adf451f4b5108/sqlalchemy-2.0.46-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7568fe771f974abadce52669ef3a03150ff03186d8eb82613bc8adc435a03f01", size = 3263116, upload-time = "2026-01-21T18:32:35.044Z" }, + { url = "https://files.pythonhosted.org/packages/da/ee/74dda7506640923821340541e8e45bd3edd8df78664f1f2e0aae8077192b/sqlalchemy-2.0.46-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ebf7e1e78af38047e08836d33502c7a278915698b7c2145d045f780201679999", size = 3285327, upload-time = "2026-01-21T18:44:59.254Z" }, + { url = "https://files.pythonhosted.org/packages/9f/25/6dcf8abafff1389a21c7185364de145107b7394ecdcb05233815b236330d/sqlalchemy-2.0.46-cp311-cp311-win32.whl", hash = "sha256:9d80ea2ac519c364a7286e8d765d6cd08648f5b21ca855a8017d9871f075542d", size = 2114564, upload-time = "2026-01-21T18:33:15.85Z" }, + { url = "https://files.pythonhosted.org/packages/93/5f/e081490f8523adc0088f777e4ebad3cac21e498ec8a3d4067074e21447a1/sqlalchemy-2.0.46-cp311-cp311-win_amd64.whl", hash = "sha256:585af6afe518732d9ccd3aea33af2edaae4a7aa881af5d8f6f4fe3a368699597", size = 2139233, upload-time = "2026-01-21T18:33:17.528Z" }, + { url = "https://files.pythonhosted.org/packages/b6/35/d16bfa235c8b7caba3730bba43e20b1e376d2224f407c178fbf59559f23e/sqlalchemy-2.0.46-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3a9a72b0da8387f15d5810f1facca8f879de9b85af8c645138cba61ea147968c", size = 2153405, upload-time = "2026-01-21T19:05:54.143Z" }, + { url = "https://files.pythonhosted.org/packages/06/6c/3192e24486749862f495ddc6584ed730c0c994a67550ec395d872a2ad650/sqlalchemy-2.0.46-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2347c3f0efc4de367ba00218e0ae5c4ba2306e47216ef80d6e31761ac97cb0b9", size = 3334702, upload-time = "2026-01-21T18:46:45.384Z" }, + { url = "https://files.pythonhosted.org/packages/ea/a2/b9f33c8d68a3747d972a0bb758c6b63691f8fb8a49014bc3379ba15d4274/sqlalchemy-2.0.46-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9094c8b3197db12aa6f05c51c05daaad0a92b8c9af5388569847b03b1007fb1b", size = 3347664, upload-time = "2026-01-21T18:40:09.979Z" }, + { url = "https://files.pythonhosted.org/packages/aa/d2/3e59e2a91eaec9db7e8dc6b37b91489b5caeb054f670f32c95bcba98940f/sqlalchemy-2.0.46-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:37fee2164cf21417478b6a906adc1a91d69ae9aba8f9533e67ce882f4bb1de53", size = 3277372, upload-time = "2026-01-21T18:46:47.168Z" }, + { url = "https://files.pythonhosted.org/packages/dd/dd/67bc2e368b524e2192c3927b423798deda72c003e73a1e94c21e74b20a85/sqlalchemy-2.0.46-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b1e14b2f6965a685c7128bd315e27387205429c2e339eeec55cb75ca4ab0ea2e", size = 3312425, upload-time = "2026-01-21T18:40:11.548Z" }, + { url = "https://files.pythonhosted.org/packages/43/82/0ecd68e172bfe62247e96cb47867c2d68752566811a4e8c9d8f6e7c38a65/sqlalchemy-2.0.46-cp312-cp312-win32.whl", hash = "sha256:412f26bb4ba942d52016edc8d12fb15d91d3cd46b0047ba46e424213ad407bcb", size = 2113155, upload-time = "2026-01-21T18:42:49.748Z" }, + { url = "https://files.pythonhosted.org/packages/bc/2a/2821a45742073fc0331dc132552b30de68ba9563230853437cac54b2b53e/sqlalchemy-2.0.46-cp312-cp312-win_amd64.whl", hash = "sha256:ea3cd46b6713a10216323cda3333514944e510aa691c945334713fca6b5279ff", size = 2140078, upload-time = "2026-01-21T18:42:51.197Z" }, + { url = "https://files.pythonhosted.org/packages/b3/4b/fa7838fe20bb752810feed60e45625a9a8b0102c0c09971e2d1d95362992/sqlalchemy-2.0.46-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:93a12da97cca70cea10d4b4fc602589c4511f96c1f8f6c11817620c021d21d00", size = 2150268, upload-time = "2026-01-21T19:05:56.621Z" }, + { url = "https://files.pythonhosted.org/packages/46/c1/b34dccd712e8ea846edf396e00973dda82d598cb93762e55e43e6835eba9/sqlalchemy-2.0.46-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:af865c18752d416798dae13f83f38927c52f085c52e2f32b8ab0fef46fdd02c2", size = 3276511, upload-time = "2026-01-21T18:46:49.022Z" }, + { url = "https://files.pythonhosted.org/packages/96/48/a04d9c94753e5d5d096c628c82a98c4793b9c08ca0e7155c3eb7d7db9f24/sqlalchemy-2.0.46-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8d679b5f318423eacb61f933a9a0f75535bfca7056daeadbf6bd5bcee6183aee", size = 3292881, upload-time = "2026-01-21T18:40:13.089Z" }, + { url = "https://files.pythonhosted.org/packages/be/f4/06eda6e91476f90a7d8058f74311cb65a2fb68d988171aced81707189131/sqlalchemy-2.0.46-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:64901e08c33462acc9ec3bad27fc7a5c2b6491665f2aa57564e57a4f5d7c52ad", size = 3224559, upload-time = "2026-01-21T18:46:50.974Z" }, + { url = "https://files.pythonhosted.org/packages/ab/a2/d2af04095412ca6345ac22b33b89fe8d6f32a481e613ffcb2377d931d8d0/sqlalchemy-2.0.46-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e8ac45e8f4eaac0f9f8043ea0e224158855c6a4329fd4ee37c45c61e3beb518e", size = 3262728, upload-time = "2026-01-21T18:40:14.883Z" }, + { url = "https://files.pythonhosted.org/packages/31/48/1980c7caa5978a3b8225b4d230e69a2a6538a3562b8b31cea679b6933c83/sqlalchemy-2.0.46-cp313-cp313-win32.whl", hash = "sha256:8d3b44b3d0ab2f1319d71d9863d76eeb46766f8cf9e921ac293511804d39813f", size = 2111295, upload-time = "2026-01-21T18:42:52.366Z" }, + { url = "https://files.pythonhosted.org/packages/2d/54/f8d65bbde3d877617c4720f3c9f60e99bb7266df0d5d78b6e25e7c149f35/sqlalchemy-2.0.46-cp313-cp313-win_amd64.whl", hash = "sha256:77f8071d8fbcbb2dd11b7fd40dedd04e8ebe2eb80497916efedba844298065ef", size = 2137076, upload-time = "2026-01-21T18:42:53.924Z" }, + { url = "https://files.pythonhosted.org/packages/56/ba/9be4f97c7eb2b9d5544f2624adfc2853e796ed51d2bb8aec90bc94b7137e/sqlalchemy-2.0.46-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a1e8cc6cc01da346dc92d9509a63033b9b1bda4fed7a7a7807ed385c7dccdc10", size = 3556533, upload-time = "2026-01-21T18:33:06.636Z" }, + { url = "https://files.pythonhosted.org/packages/20/a6/b1fc6634564dbb4415b7ed6419cdfeaadefd2c39cdab1e3aa07a5f2474c2/sqlalchemy-2.0.46-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:96c7cca1a4babaaf3bfff3e4e606e38578856917e52f0384635a95b226c87764", size = 3523208, upload-time = "2026-01-21T18:45:08.436Z" }, + { url = "https://files.pythonhosted.org/packages/a1/d8/41e0bdfc0f930ff236f86fccd12962d8fa03713f17ed57332d38af6a3782/sqlalchemy-2.0.46-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b2a9f9aee38039cf4755891a1e50e1effcc42ea6ba053743f452c372c3152b1b", size = 3464292, upload-time = "2026-01-21T18:33:08.208Z" }, + { url = "https://files.pythonhosted.org/packages/f0/8b/9dcbec62d95bea85f5ecad9b8d65b78cc30fb0ffceeb3597961f3712549b/sqlalchemy-2.0.46-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:db23b1bf8cfe1f7fda19018e7207b20cdb5168f83c437ff7e95d19e39289c447", size = 3473497, upload-time = "2026-01-21T18:45:10.552Z" }, + { url = "https://files.pythonhosted.org/packages/e9/f8/5ecdfc73383ec496de038ed1614de9e740a82db9ad67e6e4514ebc0708a3/sqlalchemy-2.0.46-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:56bdd261bfd0895452006d5316cbf35739c53b9bb71a170a331fa0ea560b2ada", size = 2152079, upload-time = "2026-01-21T19:05:58.477Z" }, + { url = "https://files.pythonhosted.org/packages/e5/bf/eba3036be7663ce4d9c050bc3d63794dc29fbe01691f2bf5ccb64e048d20/sqlalchemy-2.0.46-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:33e462154edb9493f6c3ad2125931e273bbd0be8ae53f3ecd1c161ea9a1dd366", size = 3272216, upload-time = "2026-01-21T18:46:52.634Z" }, + { url = "https://files.pythonhosted.org/packages/05/45/1256fb597bb83b58a01ddb600c59fe6fdf0e5afe333f0456ed75c0f8d7bd/sqlalchemy-2.0.46-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9bcdce05f056622a632f1d44bb47dbdb677f58cad393612280406ce37530eb6d", size = 3277208, upload-time = "2026-01-21T18:40:16.38Z" }, + { url = "https://files.pythonhosted.org/packages/d9/a0/2053b39e4e63b5d7ceb3372cface0859a067c1ddbd575ea7e9985716f771/sqlalchemy-2.0.46-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:8e84b09a9b0f19accedcbeff5c2caf36e0dd537341a33aad8d680336152dc34e", size = 3221994, upload-time = "2026-01-21T18:46:54.622Z" }, + { url = "https://files.pythonhosted.org/packages/1e/87/97713497d9502553c68f105a1cb62786ba1ee91dea3852ae4067ed956a50/sqlalchemy-2.0.46-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:4f52f7291a92381e9b4de9050b0a65ce5d6a763333406861e33906b8aa4906bf", size = 3243990, upload-time = "2026-01-21T18:40:18.253Z" }, + { url = "https://files.pythonhosted.org/packages/a8/87/5d1b23548f420ff823c236f8bea36b1a997250fd2f892e44a3838ca424f4/sqlalchemy-2.0.46-cp314-cp314-win32.whl", hash = "sha256:70ed2830b169a9960193f4d4322d22be5c0925357d82cbf485b3369893350908", size = 2114215, upload-time = "2026-01-21T18:42:55.232Z" }, + { url = "https://files.pythonhosted.org/packages/3a/20/555f39cbcf0c10cf452988b6a93c2a12495035f68b3dbd1a408531049d31/sqlalchemy-2.0.46-cp314-cp314-win_amd64.whl", hash = "sha256:3c32e993bc57be6d177f7d5d31edb93f30726d798ad86ff9066d75d9bf2e0b6b", size = 2139867, upload-time = "2026-01-21T18:42:56.474Z" }, + { url = "https://files.pythonhosted.org/packages/3e/f0/f96c8057c982d9d8a7a68f45d69c674bc6f78cad401099692fe16521640a/sqlalchemy-2.0.46-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4dafb537740eef640c4d6a7c254611dca2df87eaf6d14d6a5fca9d1f4c3fc0fa", size = 3561202, upload-time = "2026-01-21T18:33:10.337Z" }, + { url = "https://files.pythonhosted.org/packages/d7/53/3b37dda0a5b137f21ef608d8dfc77b08477bab0fe2ac9d3e0a66eaeab6fc/sqlalchemy-2.0.46-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:42a1643dc5427b69aca967dae540a90b0fbf57eaf248f13a90ea5930e0966863", size = 3526296, upload-time = "2026-01-21T18:45:12.657Z" }, + { url = "https://files.pythonhosted.org/packages/33/75/f28622ba6dde79cd545055ea7bd4062dc934e0621f7b3be2891f8563f8de/sqlalchemy-2.0.46-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:ff33c6e6ad006bbc0f34f5faf941cfc62c45841c64c0a058ac38c799f15b5ede", size = 3470008, upload-time = "2026-01-21T18:33:11.725Z" }, + { url = "https://files.pythonhosted.org/packages/a9/42/4afecbbc38d5e99b18acef446453c76eec6fbd03db0a457a12a056836e22/sqlalchemy-2.0.46-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:82ec52100ec1e6ec671563bbd02d7c7c8d0b9e71a0723c72f22ecf52d1755330", size = 3476137, upload-time = "2026-01-21T18:45:15.001Z" }, + { url = "https://files.pythonhosted.org/packages/fc/a1/9c4efa03300926601c19c18582531b45aededfb961ab3c3585f1e24f120b/sqlalchemy-2.0.46-py3-none-any.whl", hash = "sha256:f9c11766e7e7c0a2767dda5acb006a118640c9fc0a4104214b96269bfb78399e", size = 1937882, upload-time = "2026-01-21T18:22:10.456Z" }, +] + +[[package]] +name = "sqlalchemy-utils" +version = "0.42.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "sqlalchemy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0f/7d/eb9565b6a49426552a5bf5c57e7c239c506dc0e4e5315aec6d1e8241dc7c/sqlalchemy_utils-0.42.1.tar.gz", hash = "sha256:881f9cd9e5044dc8f827bccb0425ce2e55490ce44fc0bb848c55cc8ee44cc02e", size = 130789, upload-time = "2025-12-13T03:14:13.591Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7c/25/7400c18c3ee97914cc99c90007795c00a4ec5b60c853b49db7ba24d11179/sqlalchemy_utils-0.42.1-py3-none-any.whl", hash = "sha256:243cfe1b3a1dae3c74118ae633f1d1e0ed8c787387bc33e556e37c990594ac80", size = 91761, upload-time = "2025-12-13T03:14:15.014Z" }, +] + +[[package]] +name = "sympy" +version = "1.14.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mpmath" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/83/d3/803453b36afefb7c2bb238361cd4ae6125a569b4db67cd9e79846ba2d68c/sympy-1.14.0.tar.gz", hash = "sha256:d3d3fe8df1e5a0b42f0e7bdf50541697dbe7d23746e894990c030e2b05e72517", size = 7793921, upload-time = "2025-04-27T18:05:01.611Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/09/77d55d46fd61b4a135c444fc97158ef34a095e5681d0a6c10b75bf356191/sympy-1.14.0-py3-none-any.whl", hash = "sha256:e091cc3e99d2141a0ba2847328f5479b05d94a6635cb96148ccb3f34671bd8f5", size = 6299353, upload-time = "2025-04-27T18:04:59.103Z" }, +] + +[[package]] +name = "tabulate" +version = "0.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ec/fe/802052aecb21e3797b8f7902564ab6ea0d60ff8ca23952079064155d1ae1/tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c", size = 81090, upload-time = "2022-10-06T17:21:48.54Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f", size = 35252, upload-time = "2022-10-06T17:21:44.262Z" }, +] + +[[package]] +name = "termcolor" +version = "3.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/46/79/cf31d7a93a8fdc6aa0fbb665be84426a8c5a557d9240b6239e9e11e35fc5/termcolor-3.3.0.tar.gz", hash = "sha256:348871ca648ec6a9a983a13ab626c0acce02f515b9e1983332b17af7979521c5", size = 14434, upload-time = "2025-12-29T12:55:21.882Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/33/d1/8bb87d21e9aeb323cc03034f5eaf2c8f69841e40e4853c2627edf8111ed3/termcolor-3.3.0-py3-none-any.whl", hash = "sha256:cf642efadaf0a8ebbbf4bc7a31cec2f9b5f21a9f726f4ccbb08192c9c26f43a5", size = 7734, upload-time = "2025-12-29T12:55:20.718Z" }, +] + +[[package]] +name = "threadpoolctl" +version = "3.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b7/4d/08c89e34946fce2aec4fbb45c9016efd5f4d7f24af8e5d93296e935631d8/threadpoolctl-3.6.0.tar.gz", hash = "sha256:8ab8b4aa3491d812b623328249fab5302a68d2d71745c8a4c719a2fcaba9f44e", size = 21274, upload-time = "2025-03-13T13:49:23.031Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl", hash = "sha256:43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb", size = 18638, upload-time = "2025-03-13T13:49:21.846Z" }, +] + +[[package]] +name = "tifffile" +version = "2026.1.28" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/94/32/38498d2a1a5d70f33f6c3909bbad48557c9a54b0e33a9307ff06b6d416ba/tifffile-2026.1.28.tar.gz", hash = "sha256:537ae6466a8bb555c336108bb1878d8319d52c9c738041d3349454dea6956e1c", size = 374675, upload-time = "2026-01-29T05:17:24.992Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/09/19/529b28ca338c5a88315e71e672badc85eef89460c248c4164f6ce058f8c7/tifffile-2026.1.28-py3-none-any.whl", hash = "sha256:45b08a19cf603dd99952eff54a61519626a1912e4e2a4d355f05938fe4a6e9fd", size = 233011, upload-time = "2026-01-29T05:17:23.078Z" }, +] + +[[package]] +name = "tomli" +version = "2.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/30/31573e9457673ab10aa432461bee537ce6cef177667deca369efb79df071/tomli-2.4.0.tar.gz", hash = "sha256:aa89c3f6c277dd275d8e243ad24f3b5e701491a860d5121f2cdd399fbb31fc9c", size = 17477, upload-time = "2026-01-11T11:22:38.165Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/d9/3dc2289e1f3b32eb19b9785b6a006b28ee99acb37d1d47f78d4c10e28bf8/tomli-2.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b5ef256a3fd497d4973c11bf142e9ed78b150d36f5773f1ca6088c230ffc5867", size = 153663, upload-time = "2026-01-11T11:21:45.27Z" }, + { url = "https://files.pythonhosted.org/packages/51/32/ef9f6845e6b9ca392cd3f64f9ec185cc6f09f0a2df3db08cbe8809d1d435/tomli-2.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5572e41282d5268eb09a697c89a7bee84fae66511f87533a6f88bd2f7b652da9", size = 148469, upload-time = "2026-01-11T11:21:46.873Z" }, + { url = "https://files.pythonhosted.org/packages/d6/c2/506e44cce89a8b1b1e047d64bd495c22c9f71f21e05f380f1a950dd9c217/tomli-2.4.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:551e321c6ba03b55676970b47cb1b73f14a0a4dce6a3e1a9458fd6d921d72e95", size = 236039, upload-time = "2026-01-11T11:21:48.503Z" }, + { url = "https://files.pythonhosted.org/packages/b3/40/e1b65986dbc861b7e986e8ec394598187fa8aee85b1650b01dd925ca0be8/tomli-2.4.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5e3f639a7a8f10069d0e15408c0b96a2a828cfdec6fca05296ebcdcc28ca7c76", size = 243007, upload-time = "2026-01-11T11:21:49.456Z" }, + { url = "https://files.pythonhosted.org/packages/9c/6f/6e39ce66b58a5b7ae572a0f4352ff40c71e8573633deda43f6a379d56b3e/tomli-2.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1b168f2731796b045128c45982d3a4874057626da0e2ef1fdd722848b741361d", size = 240875, upload-time = "2026-01-11T11:21:50.755Z" }, + { url = "https://files.pythonhosted.org/packages/aa/ad/cb089cb190487caa80204d503c7fd0f4d443f90b95cf4ef5cf5aa0f439b0/tomli-2.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:133e93646ec4300d651839d382d63edff11d8978be23da4cc106f5a18b7d0576", size = 246271, upload-time = "2026-01-11T11:21:51.81Z" }, + { url = "https://files.pythonhosted.org/packages/0b/63/69125220e47fd7a3a27fd0de0c6398c89432fec41bc739823bcc66506af6/tomli-2.4.0-cp311-cp311-win32.whl", hash = "sha256:b6c78bdf37764092d369722d9946cb65b8767bfa4110f902a1b2542d8d173c8a", size = 96770, upload-time = "2026-01-11T11:21:52.647Z" }, + { url = "https://files.pythonhosted.org/packages/1e/0d/a22bb6c83f83386b0008425a6cd1fa1c14b5f3dd4bad05e98cf3dbbf4a64/tomli-2.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:d3d1654e11d724760cdb37a3d7691f0be9db5fbdaef59c9f532aabf87006dbaa", size = 107626, upload-time = "2026-01-11T11:21:53.459Z" }, + { url = "https://files.pythonhosted.org/packages/2f/6d/77be674a3485e75cacbf2ddba2b146911477bd887dda9d8c9dfb2f15e871/tomli-2.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:cae9c19ed12d4e8f3ebf46d1a75090e4c0dc16271c5bce1c833ac168f08fb614", size = 94842, upload-time = "2026-01-11T11:21:54.831Z" }, + { url = "https://files.pythonhosted.org/packages/3c/43/7389a1869f2f26dba52404e1ef13b4784b6b37dac93bac53457e3ff24ca3/tomli-2.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:920b1de295e72887bafa3ad9f7a792f811847d57ea6b1215154030cf131f16b1", size = 154894, upload-time = "2026-01-11T11:21:56.07Z" }, + { url = "https://files.pythonhosted.org/packages/e9/05/2f9bf110b5294132b2edf13fe6ca6ae456204f3d749f623307cbb7a946f2/tomli-2.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7d6d9a4aee98fac3eab4952ad1d73aee87359452d1c086b5ceb43ed02ddb16b8", size = 149053, upload-time = "2026-01-11T11:21:57.467Z" }, + { url = "https://files.pythonhosted.org/packages/e8/41/1eda3ca1abc6f6154a8db4d714a4d35c4ad90adc0bcf700657291593fbf3/tomli-2.4.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:36b9d05b51e65b254ea6c2585b59d2c4cb91c8a3d91d0ed0f17591a29aaea54a", size = 243481, upload-time = "2026-01-11T11:21:58.661Z" }, + { url = "https://files.pythonhosted.org/packages/d2/6d/02ff5ab6c8868b41e7d4b987ce2b5f6a51d3335a70aa144edd999e055a01/tomli-2.4.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1c8a885b370751837c029ef9bc014f27d80840e48bac415f3412e6593bbc18c1", size = 251720, upload-time = "2026-01-11T11:22:00.178Z" }, + { url = "https://files.pythonhosted.org/packages/7b/57/0405c59a909c45d5b6f146107c6d997825aa87568b042042f7a9c0afed34/tomli-2.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8768715ffc41f0008abe25d808c20c3d990f42b6e2e58305d5da280ae7d1fa3b", size = 247014, upload-time = "2026-01-11T11:22:01.238Z" }, + { url = "https://files.pythonhosted.org/packages/2c/0e/2e37568edd944b4165735687cbaf2fe3648129e440c26d02223672ee0630/tomli-2.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7b438885858efd5be02a9a133caf5812b8776ee0c969fea02c45e8e3f296ba51", size = 251820, upload-time = "2026-01-11T11:22:02.727Z" }, + { url = "https://files.pythonhosted.org/packages/5a/1c/ee3b707fdac82aeeb92d1a113f803cf6d0f37bdca0849cb489553e1f417a/tomli-2.4.0-cp312-cp312-win32.whl", hash = "sha256:0408e3de5ec77cc7f81960c362543cbbd91ef883e3138e81b729fc3eea5b9729", size = 97712, upload-time = "2026-01-11T11:22:03.777Z" }, + { url = "https://files.pythonhosted.org/packages/69/13/c07a9177d0b3bab7913299b9278845fc6eaaca14a02667c6be0b0a2270c8/tomli-2.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:685306e2cc7da35be4ee914fd34ab801a6acacb061b6a7abca922aaf9ad368da", size = 108296, upload-time = "2026-01-11T11:22:04.86Z" }, + { url = "https://files.pythonhosted.org/packages/18/27/e267a60bbeeee343bcc279bb9e8fbed0cbe224bc7b2a3dc2975f22809a09/tomli-2.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:5aa48d7c2356055feef06a43611fc401a07337d5b006be13a30f6c58f869e3c3", size = 94553, upload-time = "2026-01-11T11:22:05.854Z" }, + { url = "https://files.pythonhosted.org/packages/34/91/7f65f9809f2936e1f4ce6268ae1903074563603b2a2bd969ebbda802744f/tomli-2.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:84d081fbc252d1b6a982e1870660e7330fb8f90f676f6e78b052ad4e64714bf0", size = 154915, upload-time = "2026-01-11T11:22:06.703Z" }, + { url = "https://files.pythonhosted.org/packages/20/aa/64dd73a5a849c2e8f216b755599c511badde80e91e9bc2271baa7b2cdbb1/tomli-2.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9a08144fa4cba33db5255f9b74f0b89888622109bd2776148f2597447f92a94e", size = 149038, upload-time = "2026-01-11T11:22:07.56Z" }, + { url = "https://files.pythonhosted.org/packages/9e/8a/6d38870bd3d52c8d1505ce054469a73f73a0fe62c0eaf5dddf61447e32fa/tomli-2.4.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c73add4bb52a206fd0c0723432db123c0c75c280cbd67174dd9d2db228ebb1b4", size = 242245, upload-time = "2026-01-11T11:22:08.344Z" }, + { url = "https://files.pythonhosted.org/packages/59/bb/8002fadefb64ab2669e5b977df3f5e444febea60e717e755b38bb7c41029/tomli-2.4.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1fb2945cbe303b1419e2706e711b7113da57b7db31ee378d08712d678a34e51e", size = 250335, upload-time = "2026-01-11T11:22:09.951Z" }, + { url = "https://files.pythonhosted.org/packages/a5/3d/4cdb6f791682b2ea916af2de96121b3cb1284d7c203d97d92d6003e91c8d/tomli-2.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bbb1b10aa643d973366dc2cb1ad94f99c1726a02343d43cbc011edbfac579e7c", size = 245962, upload-time = "2026-01-11T11:22:11.27Z" }, + { url = "https://files.pythonhosted.org/packages/f2/4a/5f25789f9a460bd858ba9756ff52d0830d825b458e13f754952dd15fb7bb/tomli-2.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4cbcb367d44a1f0c2be408758b43e1ffb5308abe0ea222897d6bfc8e8281ef2f", size = 250396, upload-time = "2026-01-11T11:22:12.325Z" }, + { url = "https://files.pythonhosted.org/packages/aa/2f/b73a36fea58dfa08e8b3a268750e6853a6aac2a349241a905ebd86f3047a/tomli-2.4.0-cp313-cp313-win32.whl", hash = "sha256:7d49c66a7d5e56ac959cb6fc583aff0651094ec071ba9ad43df785abc2320d86", size = 97530, upload-time = "2026-01-11T11:22:13.865Z" }, + { url = "https://files.pythonhosted.org/packages/3b/af/ca18c134b5d75de7e8dc551c5234eaba2e8e951f6b30139599b53de9c187/tomli-2.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:3cf226acb51d8f1c394c1b310e0e0e61fecdd7adcb78d01e294ac297dd2e7f87", size = 108227, upload-time = "2026-01-11T11:22:15.224Z" }, + { url = "https://files.pythonhosted.org/packages/22/c3/b386b832f209fee8073c8138ec50f27b4460db2fdae9ffe022df89a57f9b/tomli-2.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:d20b797a5c1ad80c516e41bc1fb0443ddb5006e9aaa7bda2d71978346aeb9132", size = 94748, upload-time = "2026-01-11T11:22:16.009Z" }, + { url = "https://files.pythonhosted.org/packages/f3/c4/84047a97eb1004418bc10bdbcfebda209fca6338002eba2dc27cc6d13563/tomli-2.4.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:26ab906a1eb794cd4e103691daa23d95c6919cc2fa9160000ac02370cc9dd3f6", size = 154725, upload-time = "2026-01-11T11:22:17.269Z" }, + { url = "https://files.pythonhosted.org/packages/a8/5d/d39038e646060b9d76274078cddf146ced86dc2b9e8bbf737ad5983609a0/tomli-2.4.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:20cedb4ee43278bc4f2fee6cb50daec836959aadaf948db5172e776dd3d993fc", size = 148901, upload-time = "2026-01-11T11:22:18.287Z" }, + { url = "https://files.pythonhosted.org/packages/73/e5/383be1724cb30f4ce44983d249645684a48c435e1cd4f8b5cded8a816d3c/tomli-2.4.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:39b0b5d1b6dd03684b3fb276407ebed7090bbec989fa55838c98560c01113b66", size = 243375, upload-time = "2026-01-11T11:22:19.154Z" }, + { url = "https://files.pythonhosted.org/packages/31/f0/bea80c17971c8d16d3cc109dc3585b0f2ce1036b5f4a8a183789023574f2/tomli-2.4.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a26d7ff68dfdb9f87a016ecfd1e1c2bacbe3108f4e0f8bcd2228ef9a766c787d", size = 250639, upload-time = "2026-01-11T11:22:20.168Z" }, + { url = "https://files.pythonhosted.org/packages/2c/8f/2853c36abbb7608e3f945d8a74e32ed3a74ee3a1f468f1ffc7d1cb3abba6/tomli-2.4.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:20ffd184fb1df76a66e34bd1b36b4a4641bd2b82954befa32fe8163e79f1a702", size = 246897, upload-time = "2026-01-11T11:22:21.544Z" }, + { url = "https://files.pythonhosted.org/packages/49/f0/6c05e3196ed5337b9fe7ea003e95fd3819a840b7a0f2bf5a408ef1dad8ed/tomli-2.4.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:75c2f8bbddf170e8effc98f5e9084a8751f8174ea6ccf4fca5398436e0320bc8", size = 254697, upload-time = "2026-01-11T11:22:23.058Z" }, + { url = "https://files.pythonhosted.org/packages/f3/f5/2922ef29c9f2951883525def7429967fc4d8208494e5ab524234f06b688b/tomli-2.4.0-cp314-cp314-win32.whl", hash = "sha256:31d556d079d72db7c584c0627ff3a24c5d3fb4f730221d3444f3efb1b2514776", size = 98567, upload-time = "2026-01-11T11:22:24.033Z" }, + { url = "https://files.pythonhosted.org/packages/7b/31/22b52e2e06dd2a5fdbc3ee73226d763b184ff21fc24e20316a44ccc4d96b/tomli-2.4.0-cp314-cp314-win_amd64.whl", hash = "sha256:43e685b9b2341681907759cf3a04e14d7104b3580f808cfde1dfdb60ada85475", size = 108556, upload-time = "2026-01-11T11:22:25.378Z" }, + { url = "https://files.pythonhosted.org/packages/48/3d/5058dff3255a3d01b705413f64f4306a141a8fd7a251e5a495e3f192a998/tomli-2.4.0-cp314-cp314-win_arm64.whl", hash = "sha256:3d895d56bd3f82ddd6faaff993c275efc2ff38e52322ea264122d72729dca2b2", size = 96014, upload-time = "2026-01-11T11:22:26.138Z" }, + { url = "https://files.pythonhosted.org/packages/b8/4e/75dab8586e268424202d3a1997ef6014919c941b50642a1682df43204c22/tomli-2.4.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:5b5807f3999fb66776dbce568cc9a828544244a8eb84b84b9bafc080c99597b9", size = 163339, upload-time = "2026-01-11T11:22:27.143Z" }, + { url = "https://files.pythonhosted.org/packages/06/e3/b904d9ab1016829a776d97f163f183a48be6a4deb87304d1e0116a349519/tomli-2.4.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c084ad935abe686bd9c898e62a02a19abfc9760b5a79bc29644463eaf2840cb0", size = 159490, upload-time = "2026-01-11T11:22:28.399Z" }, + { url = "https://files.pythonhosted.org/packages/e3/5a/fc3622c8b1ad823e8ea98a35e3c632ee316d48f66f80f9708ceb4f2a0322/tomli-2.4.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0f2e3955efea4d1cfbcb87bc321e00dc08d2bcb737fd1d5e398af111d86db5df", size = 269398, upload-time = "2026-01-11T11:22:29.345Z" }, + { url = "https://files.pythonhosted.org/packages/fd/33/62bd6152c8bdd4c305ad9faca48f51d3acb2df1f8791b1477d46ff86e7f8/tomli-2.4.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e0fe8a0b8312acf3a88077a0802565cb09ee34107813bba1c7cd591fa6cfc8d", size = 276515, upload-time = "2026-01-11T11:22:30.327Z" }, + { url = "https://files.pythonhosted.org/packages/4b/ff/ae53619499f5235ee4211e62a8d7982ba9e439a0fb4f2f351a93d67c1dd2/tomli-2.4.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:413540dce94673591859c4c6f794dfeaa845e98bf35d72ed59636f869ef9f86f", size = 273806, upload-time = "2026-01-11T11:22:32.56Z" }, + { url = "https://files.pythonhosted.org/packages/47/71/cbca7787fa68d4d0a9f7072821980b39fbb1b6faeb5f5cf02f4a5559fa28/tomli-2.4.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:0dc56fef0e2c1c470aeac5b6ca8cc7b640bb93e92d9803ddaf9ea03e198f5b0b", size = 281340, upload-time = "2026-01-11T11:22:33.505Z" }, + { url = "https://files.pythonhosted.org/packages/f5/00/d595c120963ad42474cf6ee7771ad0d0e8a49d0f01e29576ee9195d9ecdf/tomli-2.4.0-cp314-cp314t-win32.whl", hash = "sha256:d878f2a6707cc9d53a1be1414bbb419e629c3d6e67f69230217bb663e76b5087", size = 108106, upload-time = "2026-01-11T11:22:34.451Z" }, + { url = "https://files.pythonhosted.org/packages/de/69/9aa0c6a505c2f80e519b43764f8b4ba93b5a0bbd2d9a9de6e2b24271b9a5/tomli-2.4.0-cp314-cp314t-win_amd64.whl", hash = "sha256:2add28aacc7425117ff6364fe9e06a183bb0251b03f986df0e78e974047571fd", size = 120504, upload-time = "2026-01-11T11:22:35.764Z" }, + { url = "https://files.pythonhosted.org/packages/b3/9f/f1668c281c58cfae01482f7114a4b88d345e4c140386241a1a24dcc9e7bc/tomli-2.4.0-cp314-cp314t-win_arm64.whl", hash = "sha256:2b1e3b80e1d5e52e40e9b924ec43d81570f0e7d09d11081b797bc4692765a3d4", size = 99561, upload-time = "2026-01-11T11:22:36.624Z" }, + { url = "https://files.pythonhosted.org/packages/23/d1/136eb2cb77520a31e1f64cbae9d33ec6df0d78bdf4160398e86eec8a8754/tomli-2.4.0-py3-none-any.whl", hash = "sha256:1f776e7d669ebceb01dee46484485f43a4048746235e683bcdffacdf1fb4785a", size = 14477, upload-time = "2026-01-11T11:22:37.446Z" }, +] + +[[package]] +name = "tomli-w" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/19/75/241269d1da26b624c0d5e110e8149093c759b7a286138f4efd61a60e75fe/tomli_w-1.2.0.tar.gz", hash = "sha256:2dd14fac5a47c27be9cd4c976af5a12d87fb1f0b4512f81d69cce3b35ae25021", size = 7184, upload-time = "2025-01-15T12:07:24.262Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/18/c86eb8e0202e32dd3df50d43d7ff9854f8e0603945ff398974c1d91ac1ef/tomli_w-1.2.0-py3-none-any.whl", hash = "sha256:188306098d013b691fcadc011abd66727d3c414c571bb01b1a174ba8c983cf90", size = 6675, upload-time = "2025-01-15T12:07:22.074Z" }, +] + +[[package]] +name = "tqdm" +version = "4.67.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/09/a9/6ba95a270c6f1fbcd8dac228323f2777d886cb206987444e4bce66338dd4/tqdm-4.67.3.tar.gz", hash = "sha256:7d825f03f89244ef73f1d4ce193cb1774a8179fd96f31d7e1dcde62092b960bb", size = 169598, upload-time = "2026-02-03T17:35:53.048Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/16/e1/3079a9ff9b8e11b846c6ac5c8b5bfb7ff225eee721825310c91b3b50304f/tqdm-4.67.3-py3-none-any.whl", hash = "sha256:ee1e4c0e59148062281c49d80b25b67771a127c85fc9676d3be5f243206826bf", size = 78374, upload-time = "2026-02-03T17:35:50.982Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.15.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, +] + +[[package]] +name = "typing-inspection" +version = "0.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/55/e3/70399cb7dd41c10ac53367ae42139cf4b1ca5f36bb3dc6c9d33acdb43655/typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464", size = 75949, upload-time = "2025-10-01T02:14:41.687Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7", size = 14611, upload-time = "2025-10-01T02:14:40.154Z" }, +] + +[[package]] +name = "tzdata" +version = "2025.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5e/a7/c202b344c5ca7daf398f3b8a477eeb205cf3b6f32e7ec3a6bac0629ca975/tzdata-2025.3.tar.gz", hash = "sha256:de39c2ca5dc7b0344f2eba86f49d614019d29f060fc4ebc8a417896a620b56a7", size = 196772, upload-time = "2025-12-13T17:45:35.667Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl", hash = "sha256:06a47e5700f3081aab02b2e513160914ff0694bce9947d6b76ebd6bf57cfc5d1", size = 348521, upload-time = "2025-12-13T17:45:33.889Z" }, +] + +[[package]] +name = "uncertainties" +version = "3.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/0c/cb09f33b26955399c675ab378e4063ed7e48422d3d49f96219ab0be5eba9/uncertainties-3.2.3.tar.gz", hash = "sha256:76a5653e686f617a42922d546a239e9efce72e6b35411b7750a1d12dcba03031", size = 160492, upload-time = "2025-04-21T19:58:28.63Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8f/5e/f1e1dd319e35e962a4e00b33150a8868b6329cc1d19fd533436ba5488f09/uncertainties-3.2.3-py3-none-any.whl", hash = "sha256:313353900d8f88b283c9bad81e7d2b2d3d4bcc330cbace35403faaed7e78890a", size = 60118, upload-time = "2025-04-21T19:58:26.864Z" }, +] + +[[package]] +name = "urllib3" +version = "2.6.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", size = 435556, upload-time = "2026-01-07T16:24:43.925Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4", size = 131584, upload-time = "2026-01-07T16:24:42.685Z" }, +] + +[[package]] +name = "xraydb" +version = "4.5.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "platformdirs" }, + { name = "scipy" }, + { name = "sqlalchemy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/22/01/267954e2e0342418edadf3dea7f85f0edd92a3b065e6ef5daeaae36d4b79/xraydb-4.5.8.tar.gz", hash = "sha256:4414474c10be6dd8f273062fe57c1342e7a9f4c8f8c2c86881acd2ce013182ff", size = 3851174, upload-time = "2025-07-18T19:58:33.885Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/8b/7ec325b4e9e78beefc2d025b01ee8a2fde771ef7c957c3bff99b9e1fbffa/xraydb-4.5.8-py3-none-any.whl", hash = "sha256:2215baafa6a03d00d0254a94525aafc6493c8c285e4ac4477fbd6271b25e6a51", size = 3858878, upload-time = "2025-07-18T19:58:31.528Z" }, +] + +[[package]] +name = "xraylarch" +version = "2026.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asteval" }, + { name = "charset-normalizer" }, + { name = "dill" }, + { name = "fabio" }, + { name = "h5py" }, + { name = "hdf5plugin" }, + { name = "imageio" }, + { name = "larixite" }, + { name = "lmfit" }, + { name = "matplotlib" }, + { name = "numdifftools" }, + { name = "numpy" }, + { name = "packaging" }, + { name = "pillow" }, + { name = "pip" }, + { name = "psutil" }, + { name = "pyfai" }, + { name = "pyshortcuts" }, + { name = "pyyaml" }, + { name = "requests" }, + { name = "scikit-image" }, + { name = "scikit-learn" }, + { name = "scipy" }, + { name = "silx" }, + { name = "sqlalchemy" }, + { name = "sqlalchemy-utils" }, + { name = "tabulate" }, + { name = "termcolor" }, + { name = "tomli" }, + { name = "tomli-w" }, + { name = "uncertainties" }, + { name = "xraydb" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/23/12/a3a413ac571deffa898c1740855f4bd504df67cbcf90a6fb87b3ff498977/xraylarch-2026.1.1.tar.gz", hash = "sha256:0309a79d78494ed84d96d28e206bc3a714184c2b1ed7ef00b1e8a2302fd15365", size = 18097929, upload-time = "2026-01-23T04:29:59.895Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9c/54/18ed4959a63338b42bb0ca17a6548a3bee19acfe2f75e79803c7d7db8c4a/xraylarch-2026.1.1-py3-none-any.whl", hash = "sha256:2414636486b5113188b4a1b8ab780a40dd39da1e6e600fb133f0448353015ec2", size = 17750169, upload-time = "2026-01-23T04:29:57.001Z" }, +] + +[[package]] +name = "xraytsubaki-larch-fixtures" +version = "0.1.0" +source = { virtual = "." } +dependencies = [ + { name = "numpy" }, + { name = "xraylarch" }, +] + +[package.metadata] +requires-dist = [ + { name = "numpy", specifier = ">=2.4.2" }, + { name = "xraylarch", specifier = ">=2026.1.1" }, +] diff --git a/crates/xraytsubaki/tests/testfiles/feff0002.dat b/crates/xraytsubaki/tests/testfiles/feff0002.dat new file mode 100644 index 0000000..2483c33 --- /dev/null +++ b/crates/xraytsubaki/tests/testfiles/feff0002.dat @@ -0,0 +1,71 @@ + Cu metal fcc a=3.603 Feff XX 6.10 + Abs Z=29 Rmt= 1.289 Rnm= 1.424 K shell + Pot 1 Z=29 Rmt= 1.272 Rnm= 1.392 + Gam_ch=1.761E+00 H-L exch + Mu=-5.535E+00 kf=1.806E+00 Vint=-1.796E+01 Rs_int= 2.008 + Path 2 icalc 2 + ----------------------------------------------------------------------- + 2 6.000 3.6032 2.6300 -5.53502 nleg, deg, reff, rnrmav(bohr), edge + x y z pot at# + .0000 .0000 .0000 0 29 Cu absorbing atom + -3.6032 .0000 .0000 1 29 Cu + k real[2*phc] mag[feff] phase[feff] red factor lambda real[p]@# + .000 3.5015E+00 0.0000E+00 -1.9368E+00 9.872E-01 1.5637E+01 1.8071E+00 + .100 3.5020E+00 4.4009E-02 -2.6394E+00 9.873E-01 1.5660E+01 1.8098E+00 + .200 3.5035E+00 8.6894E-02 -3.3061E+00 9.877E-01 1.5726E+01 1.8177E+00 + .300 3.5060E+00 1.2768E-01 -3.9377E+00 9.882E-01 1.5831E+01 1.8309E+00 + .400 3.5093E+00 1.6565E-01 -4.5354E+00 9.890E-01 1.5963E+01 1.8491E+00 + .500 3.5132E+00 2.0037E-01 -5.1005E+00 9.901E-01 1.6111E+01 1.8724E+00 + .600 3.5175E+00 2.3172E-01 -5.6342E+00 9.915E-01 1.6258E+01 1.9005E+00 + .700 3.5218E+00 2.5974E-01 -6.1379E+00 9.932E-01 1.6388E+01 1.9332E+00 + .800 3.5258E+00 2.8462E-01 -6.6126E+00 9.953E-01 1.6481E+01 1.9704E+00 + .900 3.5291E+00 3.0656E-01 -7.0593E+00 9.978E-01 1.6522E+01 2.0119E+00 + 1.000 3.5311E+00 3.2577E-01 -7.4789E+00 1.001E+00 1.6496E+01 2.0575E+00 + 1.100 3.5315E+00 3.4238E-01 -7.8721E+00 1.004E+00 1.6396E+01 2.1070E+00 + 1.200 3.5296E+00 3.5648E-01 -8.2394E+00 1.008E+00 1.6217E+01 2.1605E+00 + 1.300 3.5247E+00 3.6805E-01 -8.5812E+00 1.013E+00 1.5965E+01 2.2177E+00 + 1.400 3.5164E+00 3.7703E-01 -8.8978E+00 1.018E+00 1.5649E+01 2.2786E+00 + 1.500 3.5039E+00 3.8333E-01 -9.1894E+00 1.024E+00 1.5286E+01 2.3431E+00 + 1.600 3.4866E+00 3.8679E-01 -9.4557E+00 1.030E+00 1.4895E+01 2.4113E+00 + 1.700 3.4640E+00 3.8727E-01 -9.6966E+00 1.036E+00 1.4497E+01 2.4830E+00 + 1.800 3.4354E+00 3.8462E-01 -9.9115E+00 1.043E+00 1.4117E+01 2.5584E+00 + 1.900 3.4002E+00 3.7875E-01 -1.0100E+01 1.048E+00 1.3776E+01 2.6374E+00 + 2.000 3.3581E+00 3.6961E-01 -1.0260E+01 1.053E+00 1.3497E+01 2.7201E+00 + 2.200 3.2511E+00 3.4179E-01 -1.0490E+01 1.059E+00 1.3207E+01 2.8970E+00 + 2.400 3.1362E+00 3.2322E-01 -1.0664E+01 1.230E+00 7.5606E+00 3.0883E+00 + 2.600 3.1585E+00 3.1411E-01 -1.1143E+01 1.303E+00 6.1535E+00 3.2191E+00 + 2.800 3.1545E+00 2.8725E-01 -1.1528E+01 1.326E+00 5.6163E+00 3.3579E+00 + 3.000 3.1151E+00 2.5588E-01 -1.1788E+01 1.321E+00 5.3982E+00 3.5040E+00 + 3.200 3.0550E+00 2.2122E-01 -1.1928E+01 1.304E+00 5.3389E+00 3.6566E+00 + 3.400 2.9887E+00 2.0330E-01 -1.1932E+01 1.281E+00 5.3735E+00 3.8150E+00 + 3.600 2.9054E+00 2.0843E-01 -1.1850E+01 1.256E+00 5.4705E+00 3.9784E+00 + 3.800 2.8228E+00 2.4172E-01 -1.1788E+01 1.229E+00 5.6121E+00 4.1461E+00 + 4.000 2.7282E+00 2.9080E-01 -1.1783E+01 1.206E+00 5.7879E+00 4.3177E+00 + 4.200 2.6390E+00 3.4555E-01 -1.1825E+01 1.179E+00 5.9908E+00 4.4926E+00 + 4.400 2.5352E+00 4.0431E-01 -1.1893E+01 1.157E+00 6.2162E+00 4.6704E+00 + 4.600 2.4376E+00 4.6028E-01 -1.1975E+01 1.135E+00 6.4607E+00 4.8506E+00 + 4.800 2.3422E+00 5.1294E-01 -1.2055E+01 1.115E+00 6.7219E+00 5.0329E+00 + 5.000 2.2460E+00 5.5809E-01 -1.2140E+01 1.096E+00 6.9979E+00 5.2171E+00 + 5.200 2.1454E+00 6.0085E-01 -1.2222E+01 1.079E+00 7.2872E+00 5.4030E+00 + 5.400 2.0492E+00 6.3867E-01 -1.2297E+01 1.064E+00 7.5888E+00 5.5902E+00 + 5.600 1.9507E+00 6.6986E-01 -1.2373E+01 1.050E+00 7.9017E+00 5.7787E+00 + 5.800 1.8576E+00 6.9963E-01 -1.2443E+01 1.038E+00 8.2251E+00 5.9682E+00 + 6.000 1.7615E+00 7.2338E-01 -1.2508E+01 1.027E+00 8.5584E+00 6.1587E+00 + 6.500 1.5272E+00 7.6169E-01 -1.2661E+01 1.004E+00 9.4317E+00 6.6385E+00 + 7.000 1.2998E+00 7.7231E-01 -1.2797E+01 9.857E-01 1.0357E+01 7.1222E+00 + 7.500 1.0824E+00 7.5858E-01 -1.2924E+01 9.708E-01 1.1331E+01 7.6088E+00 + 8.000 8.7724E-01 7.2858E-01 -1.3042E+01 9.579E-01 1.2348E+01 8.0978E+00 + 8.500 6.8313E-01 6.8936E-01 -1.3151E+01 9.470E-01 1.3407E+01 8.5885E+00 + 9.000 4.9775E-01 6.4353E-01 -1.3258E+01 9.381E-01 1.4505E+01 9.0807E+00 + 9.500 3.2222E-01 5.9395E-01 -1.3367E+01 9.304E-01 1.5641E+01 9.5740E+00 + 10.000 1.4825E-01 5.4390E-01 -1.3480E+01 9.222E-01 1.6812E+01 1.0068E+01 + 11.000 -1.7917E-01 4.5305E-01 -1.3702E+01 9.056E-01 1.9258E+01 1.1059E+01 + 12.000 -4.8336E-01 3.7567E-01 -1.3922E+01 8.938E-01 2.1832E+01 1.2051E+01 + 13.000 -7.6646E-01 3.1296E-01 -1.4149E+01 8.879E-01 2.4527E+01 1.3045E+01 + 14.000 -1.0250E+00 2.6253E-01 -1.4359E+01 8.831E-01 2.7338E+01 1.4041E+01 + 15.000 -1.2653E+00 2.2160E-01 -1.4577E+01 8.801E-01 3.0257E+01 1.5037E+01 + 16.000 -1.4894E+00 1.8953E-01 -1.4778E+01 8.793E-01 3.3281E+01 1.6034E+01 + 17.000 -1.6950E+00 1.6208E-01 -1.4977E+01 8.776E-01 3.6404E+01 1.7031E+01 + 18.000 -1.8893E+00 1.4153E-01 -1.5177E+01 8.772E-01 3.9623E+01 1.8028E+01 + 19.000 -2.0688E+00 1.2296E-01 -1.5346E+01 8.769E-01 4.2933E+01 1.9026E+01 + 20.000 -2.2337E+00 1.1112E-01 -1.5554E+01 8.754E-01 4.6332E+01 2.0025E+01 diff --git a/crates/xraytsubaki/tests/testfiles/feff_ff2chi_larch_ref.txt b/crates/xraytsubaki/tests/testfiles/feff_ff2chi_larch_ref.txt new file mode 100644 index 0000000..97a0ab2 --- /dev/null +++ b/crates/xraytsubaki/tests/testfiles/feff_ff2chi_larch_ref.txt @@ -0,0 +1,280 @@ +5.000000000000000278e-02 -3.004169364982454682e-01 +1.000000000000000056e-01 -3.028599019623772759e-01 +1.500000000000000222e-01 -3.053028674265091391e-01 +2.000000000000000111e-01 -3.086716147668305821e-01 +2.500000000000000000e-01 -3.129124878200045257e-01 +3.000000000000000444e-01 -3.179532062114368007e-01 +3.500000000000000333e-01 -3.237002129304355491e-01 +4.000000000000000222e-01 -3.300350931702579760e-01 +4.500000000000000111e-01 -3.368094875634737306e-01 +5.000000000000000000e-01 -3.438366516251071814e-01 +5.500000000000000444e-01 -3.508707890133190843e-01 +6.000000000000000888e-01 -3.574452979919543472e-01 +6.500000000000000222e-01 -3.501577306932779354e-01 +7.000000000000000666e-01 -3.405942413177491246e-01 +7.500000000000000000e-01 -3.300357874890824661e-01 +8.000000000000000444e-01 -3.183303142416021858e-01 +8.500000000000000888e-01 -3.053143758861092127e-01 +9.000000000000000222e-01 -2.908142127027583124e-01 +9.500000000000000666e-01 -2.746697006743046843e-01 +1.000000000000000000e+00 -2.566904091810706667e-01 +1.050000000000000044e+00 -2.366915795844709292e-01 +1.100000000000000089e+00 -2.146150108471136519e-01 +1.150000000000000133e+00 -1.903978999284350326e-01 +1.200000000000000178e+00 -1.639657785887687347e-01 +1.250000000000000000e+00 -1.354458407271037224e-01 +1.300000000000000044e+00 -1.050901753780835168e-01 +1.350000000000000089e+00 -7.321869693233498677e-02 +1.400000000000000133e+00 -4.024892562746903990e-02 +1.450000000000000178e+00 -6.700430123979781577e-03 +1.500000000000000000e+00 2.680692382766853080e-02 +1.550000000000000044e+00 5.961777704622420182e-02 +1.600000000000000089e+00 9.087616707522273851e-02 +1.650000000000000133e+00 1.195655016592854503e-01 +1.700000000000000178e+00 1.448409228968287610e-01 +1.750000000000000000e+00 1.659637995759864759e-01 +1.800000000000000044e+00 1.822495368952256611e-01 +1.850000000000000089e+00 1.931074963665653510e-01 +1.900000000000000133e+00 1.979268769105310133e-01 +1.950000000000000178e+00 1.963472264424163949e-01 +2.000000000000000000e+00 1.884735806610938480e-01 +2.050000000000000266e+00 1.746564628031881117e-01 +2.100000000000000089e+00 1.554951523414867809e-01 +2.149999999999999911e+00 1.316825343937293447e-01 +2.200000000000000178e+00 1.040714544493424876e-01 +2.250000000000000000e+00 7.400141872601719017e-02 +2.300000000000000266e+00 4.302716422678934394e-02 +2.350000000000000089e+00 1.309155149630827214e-02 +2.400000000000000355e+00 -1.310367525509091927e-02 +2.450000000000000178e+00 -3.302927308564903436e-02 +2.500000000000000000e+00 -4.640763667407480503e-02 +2.550000000000000266e+00 -5.581488933794546276e-02 +2.600000000000000089e+00 -6.316030171637775081e-02 +2.650000000000000355e+00 -6.841524811782885573e-02 +2.700000000000000178e+00 -7.020515977365512916e-02 +2.750000000000000000e+00 -6.792518666129712668e-02 +2.800000000000000266e+00 -6.218768247809863814e-02 +2.850000000000000089e+00 -5.391038856201588875e-02 +2.900000000000000355e+00 -4.402784078806625673e-02 +2.950000000000000178e+00 -3.306749999586004046e-02 +3.000000000000000000e+00 -2.139550839460680962e-02 +3.050000000000000266e+00 -9.494087244318345081e-03 +3.100000000000000089e+00 1.986307935410876885e-03 +3.150000000000000355e+00 1.223227768008340946e-02 +3.200000000000000178e+00 2.061319465981406585e-02 +3.250000000000000000e+00 2.682767743475604830e-02 +3.300000000000000266e+00 3.080642829899851720e-02 +3.350000000000000089e+00 3.240420343293558270e-02 +3.400000000000000355e+00 3.145052796512837201e-02 +3.450000000000000178e+00 2.793031572819430763e-02 +3.500000000000000000e+00 2.208217948402323855e-02 +3.550000000000000266e+00 1.430805893604274702e-02 +3.600000000000000089e+00 5.071568423474790213e-03 +3.650000000000000355e+00 -5.114776248795718100e-03 +3.700000000000000178e+00 -1.569654914697634143e-02 +3.750000000000000000e+00 -2.607612265720092928e-02 +3.800000000000000266e+00 -3.566079301176168503e-02 +3.850000000000000089e+00 -4.390194528857827710e-02 +3.900000000000000355e+00 -5.031916717402932365e-02 +3.950000000000000178e+00 -5.451108543180542554e-02 +4.000000000000000000e+00 -5.616685805409583204e-02 +4.049999999999999822e+00 -5.507776164441665484e-02 +4.100000000000000533e+00 -5.116981200038889233e-02 +4.150000000000000355e+00 -4.457573836426813318e-02 +4.200000000000000178e+00 -3.559125171731317150e-02 +4.250000000000000000e+00 -2.463226353660547679e-02 +4.299999999999999822e+00 -1.217229435385377805e-02 +4.350000000000000533e+00 1.325784372530569967e-03 +4.400000000000000355e+00 1.535716815824066106e-02 +4.450000000000000178e+00 2.936615493296541521e-02 +4.500000000000000000e+00 4.274594134592041988e-02 +4.549999999999999822e+00 5.486448541991694600e-02 +4.600000000000000533e+00 6.512292880250634963e-02 +4.650000000000000355e+00 7.298261099723955814e-02 +4.700000000000000178e+00 7.797359943831612406e-02 +4.750000000000000000e+00 7.970604884231749510e-02 +4.800000000000000711e+00 7.792979811745449903e-02 +4.850000000000000533e+00 7.256811010372074544e-02 +4.900000000000000355e+00 6.374292834357239701e-02 +4.950000000000000178e+00 5.176424792215213178e-02 +5.000000000000000000e+00 3.708679445097438909e-02 +5.050000000000000711e+00 2.028890202940852872e-02 +5.100000000000000533e+00 2.043620105910488177e-03 +5.150000000000000355e+00 -1.689608707626588657e-02 +5.200000000000000178e+00 -3.569114462319385866e-02 +5.250000000000000000e+00 -5.343881363381125515e-02 +5.300000000000000711e+00 -6.918674245826683666e-02 +5.350000000000000533e+00 -8.199176590436191292e-02 +5.400000000000000355e+00 -9.104752414147880557e-02 +5.450000000000000178e+00 -9.576293313974684751e-02 +5.500000000000000000e+00 -9.582510348764021468e-02 +5.550000000000000711e+00 -9.117747200460113444e-02 +5.600000000000000533e+00 -8.196131420674235279e-02 +5.650000000000000355e+00 -6.850780851480593736e-02 +5.700000000000000178e+00 -5.136344085249149038e-02 +5.750000000000000000e+00 -3.134786704913027078e-02 +5.800000000000000711e+00 -9.517892503830237966e-03 +5.850000000000000533e+00 1.290790471926331860e-02 +5.900000000000000355e+00 3.467740318976289537e-02 +5.950000000000000178e+00 5.462173699974319507e-02 +6.000000000000000000e+00 7.168550683085379849e-02 +6.050000000000000711e+00 8.497689966557199492e-02 +6.100000000000000533e+00 9.380451620196920970e-02 +6.150000000000000355e+00 9.771826242502329452e-02 +6.200000000000000178e+00 9.655034700885455068e-02 +6.250000000000000000e+00 9.042444162599964919e-02 +6.300000000000000711e+00 7.974471058205626073e-02 +6.350000000000000533e+00 6.516667031937531385e-02 +6.400000000000000355e+00 4.755225752158828006e-02 +6.450000000000000178e+00 2.791264198559455234e-02 +6.500000000000000000e+00 7.343161939455978247e-03 +6.550000000000000711e+00 -1.304480497806291724e-02 +6.600000000000000533e+00 -3.219083999017847281e-02 +6.650000000000000355e+00 -4.914553666907882368e-02 +6.700000000000000178e+00 -6.311887298760601728e-02 +6.750000000000000000e+00 -7.351619187007080169e-02 +6.800000000000000711e+00 -7.995986094812153333e-02 +6.850000000000000533e+00 -8.229629580956937529e-02 +6.900000000000000355e+00 -8.058919906344892692e-02 +6.950000000000000178e+00 -7.510081705469534574e-02 +7.000000000000000000e+00 -6.626371511773414269e-02 +7.050000000000000711e+00 -5.464597211380164271e-02 +7.100000000000000533e+00 -4.091261535907782937e-02 +7.150000000000000355e+00 -2.578621339315132974e-02 +7.200000000000000178e+00 -1.000961466334053182e-02 +7.250000000000000000e+00 5.687694874403858430e-03 +7.300000000000000711e+00 2.061852607306290802e-02 +7.350000000000000533e+00 3.416169392849583569e-02 +7.400000000000000355e+00 4.578052771482832295e-02 +7.450000000000000178e+00 5.503661933270340839e-02 +7.500000000000000000e+00 6.159947819025627519e-02 +7.550000000000000711e+00 6.525281269187034605e-02 +7.600000000000000533e+00 6.589806180341042929e-02 +7.650000000000000355e+00 6.355572798545992830e-02 +7.700000000000000178e+00 5.836432872040654002e-02 +7.750000000000000000e+00 5.057668810277386739e-02 +7.800000000000000711e+00 4.055322392412655241e-02 +7.850000000000000533e+00 2.875166014355712632e-02 +7.900000000000000355e+00 1.571260818020697031e-02 +7.950000000000000178e+00 2.040635690074976607e-03 +8.000000000000000000e+00 -1.161923358825462521e-02 +8.050000000000000711e+00 -2.460916373588093245e-02 +8.099999999999999645e+00 -3.628880069227626015e-02 +8.150000000000000355e+00 -4.606846109828022923e-02 +8.200000000000001066e+00 -5.344319014553962355e-02 +8.250000000000000000e+00 -5.802394625834032121e-02 +8.300000000000000711e+00 -5.956400130884990929e-02 +8.349999999999999645e+00 -5.797824662570019716e-02 +8.400000000000000355e+00 -5.335341712962858585e-02 +8.450000000000001066e+00 -4.594781832001560568e-02 +8.500000000000000000e+00 -3.617989765830225551e-02 +8.550000000000000711e+00 -2.460583248218271499e-02 +8.599999999999999645e+00 -1.188655892518760034e-02 +8.650000000000000355e+00 1.252149569892617182e-03 +8.700000000000001066e+00 1.406354259587437421e-02 +8.750000000000000000e+00 2.582610436815985927e-02 +8.800000000000000711e+00 3.588847223560180655e-02 +8.849999999999999645e+00 4.370980205862921852e-02 +8.900000000000000355e+00 4.889264819318998173e-02 +8.950000000000001066e+00 5.120598732031819700e-02 +9.000000000000000000e+00 5.059677865335511504e-02 +9.050000000000000711e+00 4.718936501786623328e-02 +9.099999999999999645e+00 4.127336919480560640e-02 +9.150000000000000355e+00 3.328099287909089266e-02 +9.200000000000001066e+00 2.375442166148616571e-02 +9.250000000000000000e+00 1.330663439539873927e-02 +9.300000000000000711e+00 2.578933644436964129e-03 +9.349999999999999645e+00 -7.801506838576523911e-03 +9.400000000000000355e+00 -1.726093010848119697e-02 +9.450000000000001066e+00 -2.531238596777028033e-02 +9.500000000000000000e+00 -3.158111769657663548e-02 +9.550000000000000711e+00 -3.582065422478199201e-02 +9.600000000000001421e+00 -3.791928905386621890e-02 +9.650000000000000355e+00 -3.789565765274303943e-02 +9.700000000000001066e+00 -3.588634825141755191e-02 +9.750000000000000000e+00 -3.212780033956540160e-02 +9.800000000000000711e+00 -2.693374608299487633e-02 +9.850000000000001421e+00 -2.067022516148691105e-02 +9.900000000000000355e+00 -1.373016067368768370e-02 +9.950000000000001066e+00 -6.509267104854669223e-03 +1.000000000000000000e+01 6.152789012362300941e-04 +1.005000000000000071e+01 7.302358590583295922e-03 +1.010000000000000142e+01 1.325972964240328122e-02 +1.015000000000000036e+01 1.825308506849581194e-02 +1.020000000000000107e+01 2.211118322356764657e-02 +1.025000000000000000e+01 2.472689265424966865e-02 +1.030000000000000071e+01 2.605511906886627191e-02 +1.035000000000000142e+01 2.610840712617058454e-02 +1.040000000000000036e+01 2.495099023307391362e-02 +1.045000000000000107e+01 2.269196134851711455e-02 +1.050000000000000000e+01 1.947807689616760929e-02 +1.055000000000000071e+01 1.548651581173614983e-02 +1.060000000000000142e+01 1.091772869919564043e-02 +1.065000000000000036e+01 5.988356868860783035e-03 +1.070000000000000107e+01 9.240996723423826721e-04 +1.075000000000000000e+01 -4.047626250061810149e-03 +1.080000000000000071e+01 -8.705358193318768825e-03 +1.085000000000000142e+01 -1.284161674919462488e-02 +1.090000000000000036e+01 -1.627118251850051892e-02 +1.095000000000000107e+01 -1.883935058800270332e-02 +1.100000000000000000e+01 -2.042974061629809421e-02 +1.105000000000000071e+01 -2.097111932397222392e-02 +1.110000000000000142e+01 -2.044261908193109253e-02 +1.115000000000000036e+01 -1.887677581293924212e-02 +1.120000000000000107e+01 -1.635986214076924627e-02 +1.125000000000000000e+01 -1.302913588531016444e-02 +1.130000000000000071e+01 -9.066864128071333920e-03 +1.135000000000000142e+01 -4.691240978768426717e-03 +1.140000000000000036e+01 -1.445949023572931126e-04 +1.145000000000000107e+01 4.320454723196526584e-03 +1.150000000000000000e+01 8.456011404361635578e-03 +1.155000000000000071e+01 1.203405287472282016e-02 +1.160000000000000142e+01 1.486062176532719319e-02 +1.165000000000000036e+01 1.678798884481126630e-02 +1.170000000000000107e+01 1.772385037507346467e-02 +1.175000000000000000e+01 1.763683630385891668e-02 +1.180000000000000071e+01 1.655788917865321647e-02 +1.185000000000000142e+01 1.457739900690657731e-02 +1.190000000000000036e+01 1.183831677503228638e-02 +1.195000000000000107e+01 8.525787835432275391e-03 +1.200000000000000000e+01 4.854116812889404560e-03 +1.205000000000000071e+01 1.052064474702775693e-03 +1.210000000000000142e+01 -2.652463426366249901e-03 +1.215000000000000036e+01 -6.046951107058131519e-03 +1.220000000000000107e+01 -8.947141658624402014e-03 +1.225000000000000000e+01 -1.120748348649863724e-02 +1.230000000000000071e+01 -1.272845816555719448e-02 +1.235000000000000142e+01 -1.346042014195472994e-02 +1.240000000000000036e+01 -1.340386655696342022e-02 +1.245000000000000107e+01 -1.260633406837283373e-02 +1.250000000000000000e+01 -1.115636598434160964e-02 +1.255000000000000071e+01 -9.175187672835864727e-03 +1.260000000000000142e+01 -6.806857230623699316e-03 +1.265000000000000036e+01 -4.207714771755739595e-03 +1.270000000000000107e+01 -1.535937536557823151e-03 +1.275000000000000000e+01 1.058073841363182336e-03 +1.280000000000000071e+01 3.439887640553301353e-03 +1.285000000000000142e+01 5.497393321000197501e-03 +1.290000000000000036e+01 7.145084565856943230e-03 +1.295000000000000107e+01 8.326232021603229005e-03 +1.300000000000000000e+01 9.013074121423440138e-03 +1.305000000000000071e+01 9.205291975930155260e-03 +1.310000000000000142e+01 8.927164167346875526e-03 +1.315000000000000036e+01 8.223804933539193354e-03 +1.320000000000000107e+01 7.156761502240076116e-03 +1.325000000000000000e+01 5.799403831750807835e-03 +1.330000000000000071e+01 4.232447376886653255e-03 +1.335000000000000142e+01 2.539839825621324244e-03 +1.340000000000000036e+01 8.051485986428117509e-04 +1.345000000000000107e+01 -8.915021848384764103e-04 +1.350000000000000000e+01 -2.475968066201227925e-03 +1.355000000000000071e+01 -3.882164293975623806e-03 +1.360000000000000142e+01 -5.053780223639464490e-03 +1.365000000000000036e+01 -5.945712562378934786e-03 +1.370000000000000107e+01 -6.525273849625061982e-03 +1.375000000000000000e+01 -6.773190012935770624e-03 +1.380000000000000071e+01 -6.684353071111120981e-03 +1.385000000000000142e+01 -6.268251719093956113e-03 +1.390000000000000036e+01 -5.548972335890280973e-03 +1.395000000000000107e+01 -4.564652509074927818e-03 +1.400000000000000000e+01 -3.366282087129052192e-03 diff --git a/crates/xraytsubaki/tests/testfiles/feff_fit_target_larch.txt b/crates/xraytsubaki/tests/testfiles/feff_fit_target_larch.txt new file mode 100644 index 0000000..2f23402 --- /dev/null +++ b/crates/xraytsubaki/tests/testfiles/feff_fit_target_larch.txt @@ -0,0 +1,280 @@ +5.000000000000000278e-02 -3.268976448800760548e-01 +1.000000000000000056e-01 -3.297673845053191166e-01 +1.500000000000000222e-01 -3.326371241305621784e-01 +2.000000000000000111e-01 -3.365758531351952798e-01 +2.500000000000000000e-01 -3.415002267804358449e-01 +3.000000000000000444e-01 -3.472967572297996353e-01 +3.500000000000000333e-01 -3.538170121631238896e-01 +4.000000000000000222e-01 -3.608714103737300505e-01 +4.500000000000000111e-01 -3.682203485404714760e-01 +5.000000000000000000e-01 -3.755559045179838185e-01 +5.500000000000000444e-01 -3.823918834449200332e-01 +6.000000000000000888e-01 -3.765380316269572036e-01 +6.500000000000000222e-01 -3.665482948089569537e-01 +7.000000000000000666e-01 -3.550976042516860165e-01 +7.500000000000000000e-01 -3.420263598189173249e-01 +8.000000000000000444e-01 -3.271845322484740470e-01 +8.500000000000000888e-01 -3.104299815207995361e-01 +9.000000000000000222e-01 -2.916511900433462201e-01 +9.500000000000000666e-01 -2.707575981465084047e-01 +1.000000000000000000e+00 -2.476546850239838837e-01 +1.050000000000000044e+00 -2.223597504113359880e-01 +1.100000000000000089e+00 -1.949945922223872419e-01 +1.150000000000000133e+00 -1.656435969740151781e-01 +1.200000000000000178e+00 -1.345071799266581991e-01 +1.250000000000000000e+00 -1.019760440441987298e-01 +1.300000000000000044e+00 -6.850143370976029267e-02 +1.350000000000000089e+00 -3.460195351519824991e-02 +1.400000000000000133e+00 -8.615806808538846928e-04 +1.450000000000000178e+00 3.206234833169036014e-02 +1.500000000000000000e+00 6.351361318496372144e-02 +1.550000000000000044e+00 9.284197110179941148e-02 +1.600000000000000089e+00 1.192198127752085862e-01 +1.650000000000000133e+00 1.418467050590829226e-01 +1.700000000000000178e+00 1.601845173882634754e-01 +1.750000000000000000e+00 1.738060039588685546e-01 +1.800000000000000044e+00 1.824037495155313715e-01 +1.850000000000000089e+00 1.857441106062278913e-01 +1.900000000000000133e+00 1.836149319892036169e-01 +1.950000000000000178e+00 1.761228810568808700e-01 +2.000000000000000000e+00 1.637107029454708262e-01 +2.050000000000000266e+00 1.469631014485319465e-01 +2.100000000000000089e+00 1.265940844774777752e-01 +2.149999999999999911e+00 1.032873219147697336e-01 +2.200000000000000178e+00 7.792269290600756237e-02 +2.250000000000000000e+00 5.168819766163117169e-02 +2.300000000000000266e+00 2.583526733293109445e-02 +2.350000000000000089e+00 1.937783854416019920e-03 +2.400000000000000355e+00 -1.805664473956577337e-02 +2.450000000000000178e+00 -3.266170080267470632e-02 +2.500000000000000000e+00 -4.246418058289012226e-02 +2.550000000000000266e+00 -4.965295685678019350e-02 +2.600000000000000089e+00 -5.537310699533237041e-02 +2.650000000000000355e+00 -5.926234440639008283e-02 +2.700000000000000178e+00 -6.014050353844528629e-02 +2.750000000000000000e+00 -5.778603735051646845e-02 +2.800000000000000266e+00 -5.274698990234170937e-02 +2.850000000000000089e+00 -4.575698675201088361e-02 +2.900000000000000355e+00 -3.750691013416839609e-02 +2.950000000000000178e+00 -2.833331387462459383e-02 +3.000000000000000000e+00 -1.851009792258654155e-02 +3.050000000000000266e+00 -8.421382331279286815e-03 +3.100000000000000089e+00 1.381231289104644213e-03 +3.150000000000000355e+00 1.020198060718491978e-02 +3.200000000000000178e+00 1.752911923062438343e-02 +3.250000000000000000e+00 2.312507094381292469e-02 +3.300000000000000266e+00 2.690607056251670057e-02 +3.350000000000000089e+00 2.867044610332271370e-02 +3.400000000000000355e+00 2.820179323716467609e-02 +3.450000000000000178e+00 2.542907697057061184e-02 +3.500000000000000000e+00 2.050865401010817241e-02 +3.550000000000000266e+00 1.372672199524562452e-02 +3.600000000000000089e+00 5.437329484330871709e-03 +3.650000000000000355e+00 -3.938729376983998026e-03 +3.700000000000000178e+00 -1.391388231518068605e-02 +3.750000000000000000e+00 -2.393674479228042815e-02 +3.800000000000000266e+00 -3.343339656035325402e-02 +3.850000000000000089e+00 -4.183807772938227809e-02 +3.900000000000000355e+00 -4.861931616865382971e-02 +3.950000000000000178e+00 -5.330192308686195618e-02 +4.000000000000000000e+00 -5.548615110580378679e-02 +4.049999999999999822e+00 -5.486899261853787901e-02 +4.100000000000000533e+00 -5.129724543895667482e-02 +4.150000000000000355e+00 -4.484421785377745023e-02 +4.200000000000000178e+00 -3.577239847693824970e-02 +4.250000000000000000e+00 -2.449871051825350254e-02 +4.299999999999999822e+00 -1.152355668102801774e-02 +4.350000000000000533e+00 2.626782176498646242e-03 +4.400000000000000355e+00 1.735188489634286249e-02 +4.450000000000000178e+00 3.198087201971324539e-02 +4.500000000000000000e+00 4.578415531956626927e-02 +4.549999999999999822e+00 5.802278862975022294e-02 +4.600000000000000533e+00 6.801860689814104299e-02 +4.650000000000000355e+00 7.519095819326973573e-02 +4.700000000000000178e+00 7.907050484280661595e-02 +4.750000000000000000e+00 7.932352553295794750e-02 +4.800000000000000711e+00 7.581138773824494526e-02 +4.850000000000000533e+00 6.861441912830618106e-02 +4.900000000000000355e+00 5.804021216658433041e-02 +4.950000000000000178e+00 4.458470583490287825e-02 +5.000000000000000000e+00 2.887273754616965712e-02 +5.050000000000000711e+00 1.162056570605317016e-02 +5.100000000000000533e+00 -6.406409710856074587e-03 +5.150000000000000355e+00 -2.441194969227495834e-02 +5.200000000000000178e+00 -4.157383280565753181e-02 +5.250000000000000000e+00 -5.707107233779913635e-02 +5.300000000000000711e+00 -7.009799183556945923e-02 +5.350000000000000533e+00 -7.992801141411649823e-02 +5.400000000000000355e+00 -8.601348762715171903e-02 +5.450000000000000178e+00 -8.803362520742250008e-02 +5.500000000000000000e+00 -8.592152147300551046e-02 +5.550000000000000711e+00 -7.981037259893244973e-02 +5.600000000000000533e+00 -6.997406329368847933e-02 +5.650000000000000355e+00 -5.681246321899181134e-02 +5.700000000000000178e+00 -4.087629954781662328e-02 +5.750000000000000000e+00 -2.290966780584851453e-02 +5.800000000000000711e+00 -3.808900432877701612e-03 +5.850000000000000533e+00 1.543935053365181123e-02 +5.900000000000000355e+00 3.386380321041619623e-02 +5.950000000000000178e+00 5.058289229438074630e-02 +6.000000000000000000e+00 6.481106695652265326e-02 +6.050000000000000711e+00 7.588596955876612815e-02 +6.100000000000000533e+00 8.328577021902620892e-02 +6.150000000000000355e+00 8.665803993284260098e-02 +6.200000000000000178e+00 8.585009751283546875e-02 +6.250000000000000000e+00 8.091784206598348628e-02 +6.300000000000000711e+00 7.212316170648756797e-02 +6.350000000000000533e+00 5.992053020274670100e-02 +6.400000000000000355e+00 4.493346601035842769e-02 +6.450000000000000178e+00 2.792209412932241883e-02 +6.500000000000000000e+00 9.743550193725684927e-03 +6.550000000000000711e+00 -8.692666098155816742e-03 +6.600000000000000533e+00 -2.647263444314461311e-02 +6.650000000000000355e+00 -4.272516798296609880e-02 +6.700000000000000178e+00 -5.666526066338104656e-02 +6.750000000000000000e+00 -6.763314417566683445e-02 +6.800000000000000711e+00 -7.512650645126017768e-02 +6.850000000000000533e+00 -7.882422771626518276e-02 +6.900000000000000355e+00 -7.860048152759019358e-02 +6.950000000000000178e+00 -7.452857121851108602e-02 +7.000000000000000000e+00 -6.687442348336111730e-02 +7.050000000000000711e+00 -5.608020389949824186e-02 +7.100000000000000533e+00 -4.273884800733655787e-02 +7.150000000000000355e+00 -2.756105371595663975e-02 +7.200000000000000178e+00 -1.133714942722468914e-02 +7.250000000000000000e+00 5.104386225835110848e-03 +7.300000000000000711e+00 2.093963023745358185e-02 +7.350000000000000533e+00 3.539092969323673343e-02 +7.400000000000000355e+00 4.776549937115417976e-02 +7.450000000000000178e+00 5.748897616249763060e-02 +7.500000000000000000e+00 6.413229924008720384e-02 +7.550000000000000711e+00 6.743065703094737462e-02 +7.600000000000000533e+00 6.729370051909321082e-02 +7.650000000000000355e+00 6.380681338443570938e-02 +7.700000000000000178e+00 5.722324317634090024e-02 +7.750000000000000000e+00 4.794765928744399580e-02 +7.800000000000000711e+00 3.651224781276700415e-02 +7.850000000000000533e+00 2.354673555345971475e-02 +7.900000000000000355e+00 9.744023012530713540e-03 +7.950000000000000178e+00 -4.176698780340420275e-03 +8.000000000000000000e+00 -1.750738053289593171e-02 +8.050000000000000711e+00 -2.958708967504838916e-02 +8.099999999999999645e+00 -3.983413356577016756e-02 +8.150000000000000355e+00 -4.777453075574800839e-02 +8.200000000000001066e+00 -5.306483634664998367e-02 +8.250000000000000000e+00 -5.550704943038629879e-02 +8.300000000000000711e+00 -5.505545080616732617e-02 +8.349999999999999645e+00 -5.181518410597468066e-02 +8.400000000000000355e+00 -4.603283996400760886e-02 +8.450000000000001066e+00 -3.807974011877129222e-02 +8.500000000000000000e+00 -2.842900706416296927e-02 +8.550000000000000711e+00 -1.762776604187867371e-02 +8.599999999999999645e+00 -6.265467805123305089e-03 +8.650000000000000355e+00 5.058164119561192086e-03 +8.700000000000001066e+00 1.576394147457535130e-02 +8.750000000000000000e+00 2.532237674565547547e-02 +8.800000000000000711e+00 3.327940889963034582e-02 +8.849999999999999645e+00 3.927746259345386848e-02 +8.900000000000000355e+00 4.307090031615516679e-02 +8.950000000000001066e+00 4.453524239994800099e-02 +9.000000000000000000e+00 4.366986774922135967e-02 +9.050000000000000711e+00 4.059426945086783145e-02 +9.099999999999999645e+00 3.553864066000118893e-02 +9.150000000000000355e+00 2.882912985981000292e-02 +9.200000000000001066e+00 2.086773967534296531e-02 +9.250000000000000000e+00 1.210864596828998933e-02 +9.300000000000000711e+00 3.032445262751690563e-03 +9.349999999999999645e+00 -5.880191165762417571e-03 +9.400000000000000355e+00 -1.417398943150237345e-02 +9.450000000000001066e+00 -2.144230031957712612e-02 +9.500000000000000000e+00 -2.734688254021514983e-02 +9.550000000000000711e+00 -3.163332810904461584e-02 +9.600000000000001421e+00 -3.414161229092183697e-02 +9.650000000000000355e+00 -3.480980713837347057e-02 +9.700000000000001066e+00 -3.367274827856153729e-02 +9.750000000000000000e+00 -3.085638761297102017e-02 +9.800000000000000711e+00 -2.656777425911979046e-02 +9.850000000000001421e+00 -2.108134575971435873e-02 +9.900000000000000355e+00 -1.472237059660488380e-02 +9.950000000000001066e+00 -7.848486265504509007e-03 +1.000000000000000000e+01 -8.303299601267043629e-04 +1.005000000000000071e+01 5.967696203880665587e-03 +1.010000000000000142e+01 1.220524907322406705e-02 +1.015000000000000036e+01 1.758270819396179699e-02 +1.020000000000000107e+01 2.185545223720624861e-02 +1.025000000000000000e+01 2.484456504442947647e-02 +1.030000000000000071e+01 2.644376433561458281e-02 +1.035000000000000142e+01 2.662232364887630320e-02 +1.040000000000000036e+01 2.542397138460611439e-02 +1.045000000000000107e+01 2.296196189734931933e-02 +1.050000000000000000e+01 1.941070745512368453e-02 +1.055000000000000071e+01 1.499452686579414405e-02 +1.060000000000000142e+01 9.974198693185288775e-03 +1.065000000000000036e+01 4.632098406151892792e-03 +1.070000000000000107e+01 -7.432539632589709941e-04 +1.075000000000000000e+01 -5.872407045088559249e-03 +1.080000000000000071e+01 -1.049916537225565986e-02 +1.085000000000000142e+01 -1.440304556185424689e-02 +1.090000000000000036e+01 -1.740941248044334047e-02 +1.095000000000000107e+01 -1.939684951854411810e-02 +1.100000000000000000e+01 -2.030147859947669525e-02 +1.105000000000000071e+01 -2.011811528014801481e-02 +1.110000000000000142e+01 -1.889830850113327285e-02 +1.115000000000000036e+01 -1.674550547151661128e-02 +1.120000000000000107e+01 -1.380769691825404002e-02 +1.125000000000000000e+01 -1.026801122849810288e-02 +1.130000000000000071e+01 -6.333830322864506326e-03 +1.135000000000000142e+01 -2.225052784712363597e-03 +1.140000000000000036e+01 1.837849005904521136e-03 +1.145000000000000107e+01 5.645344587323337590e-03 +1.150000000000000000e+01 9.009347291000334088e-03 +1.155000000000000071e+01 1.177219120098476658e-02 +1.160000000000000142e+01 1.381367178822807615e-02 +1.165000000000000036e+01 1.505585633405457854e-02 +1.170000000000000107e+01 1.546549873722253589e-02 +1.175000000000000000e+01 1.505402551560786062e-02 +1.180000000000000071e+01 1.387518862882982512e-02 +1.185000000000000142e+01 1.202059948383338468e-02 +1.190000000000000036e+01 9.613461261101121855e-03 +1.195000000000000107e+01 6.800898714359591112e-03 +1.200000000000000000e+01 3.745342343972281676e-03 +1.205000000000000071e+01 6.154456833254968269e-04 +1.210000000000000142e+01 -2.423018484298121444e-03 +1.215000000000000036e+01 -5.215595463044011941e-03 +1.220000000000000107e+01 -7.626646693406831032e-03 +1.225000000000000000e+01 -9.545630894253658363e-03 +1.230000000000000071e+01 -1.089185057317415724e-02 +1.235000000000000142e+01 -1.161747977356185867e-02 +1.240000000000000036e+01 -1.170878356362017869e-02 +1.245000000000000107e+01 -1.118553490485766841e-02 +1.250000000000000000e+01 -1.009872585316786558e-02 +1.255000000000000071e+01 -8.526753148078049585e-03 +1.260000000000000142e+01 -6.570329299746828673e-03 +1.265000000000000036e+01 -4.346426179192378406e-03 +1.270000000000000107e+01 -1.981596596233264115e-03 +1.275000000000000000e+01 3.949609158195310776e-04 +1.280000000000000071e+01 2.658228262054358141e-03 +1.285000000000000142e+01 4.693736937645330738e-03 +1.290000000000000036e+01 6.403167136452871978e-03 +1.295000000000000107e+01 7.708913462767188682e-03 +1.300000000000000000e+01 8.557415386360352205e-03 +1.305000000000000071e+01 8.921120829288290213e-03 +1.310000000000000142e+01 8.799060733982396604e-03 +1.315000000000000036e+01 8.216056673385492559e-03 +1.320000000000000107e+01 7.220508775011014180e-03 +1.325000000000000000e+01 5.880972324172316530e-03 +1.330000000000000071e+01 4.281770028317760310e-03 +1.335000000000000142e+01 2.517910101342151624e-03 +1.340000000000000036e+01 6.896092953572841933e-04 +1.345000000000000107e+01 -1.103268397111658791e-03 +1.350000000000000000e+01 -2.766552601704902296e-03 +1.355000000000000071e+01 -4.216604818136515664e-03 +1.360000000000000142e+01 -5.384409353799395753e-03 +1.365000000000000036e+01 -6.218721903467786666e-03 +1.370000000000000107e+01 -6.688139474115472639e-03 +1.375000000000000000e+01 -6.782019522012580973e-03 +1.380000000000000071e+01 -6.510241987221760881e-03 +1.385000000000000142e+01 -5.901871631962295368e-03 +1.390000000000000036e+01 -5.002836222723250521e-03 +1.395000000000000107e+01 -3.872785596563409032e-03 +1.400000000000000000e+01 -2.581335079556788814e-03 diff --git a/crates/xraytsubaki/tests/testfiles/feff_path_chi_larch_ref.txt b/crates/xraytsubaki/tests/testfiles/feff_path_chi_larch_ref.txt new file mode 100644 index 0000000..0d57486 --- /dev/null +++ b/crates/xraytsubaki/tests/testfiles/feff_path_chi_larch_ref.txt @@ -0,0 +1,280 @@ +5.000000000000000278e-02 -3.294014545590027709e-01 +1.000000000000000056e-01 -3.325857487366469800e-01 +1.500000000000000222e-01 -3.357700429142911891e-01 +2.000000000000000111e-01 -3.401532904633557952e-01 +2.500000000000000000e-01 -3.456560420239568332e-01 +3.000000000000000444e-01 -3.521695009003528165e-01 +3.500000000000000333e-01 -3.595505950839698039e-01 +4.000000000000000222e-01 -3.676159293232869052e-01 +4.500000000000000111e-01 -3.761342857813328444e-01 +5.000000000000000000e-01 -3.848161215226474918e-01 +5.500000000000000444e-01 -3.932912407666668275e-01 +6.000000000000000888e-01 -4.009380735867982826e-01 +6.500000000000000222e-01 -3.926716466366215741e-01 +7.000000000000000666e-01 -3.813331402971081308e-01 +7.500000000000000000e-01 -3.683470245398694498e-01 +8.000000000000000444e-01 -3.535384017595220030e-01 +8.500000000000000888e-01 -3.367438066643357319e-01 +9.000000000000000222e-01 -3.178195023572454869e-01 +9.500000000000000666e-01 -2.966649207098992491e-01 +1.000000000000000000e+00 -2.731786232202900733e-01 +1.050000000000000044e+00 -2.473011706388375253e-01 +1.100000000000000089e+00 -2.191364633970085130e-01 +1.150000000000000133e+00 -1.888065267837185923e-01 +1.200000000000000178e+00 -1.564444046653403475e-01 +1.250000000000000000e+00 -1.224036763166079234e-01 +1.300000000000000044e+00 -8.715983524047754560e-02 +1.350000000000000089e+00 -5.124494511630742904e-02 +1.400000000000000133e+00 -1.526751063079347451e-02 +1.450000000000000178e+00 2.009284886755197466e-02 +1.500000000000000000e+00 5.411256444340888094e-02 +1.550000000000000044e+00 8.611033042562016293e-02 +1.600000000000000089e+00 1.152681180423987539e-01 +1.650000000000000133e+00 1.406728273556015207e-01 +1.700000000000000178e+00 1.616641557189680278e-01 +1.750000000000000000e+00 1.777615901639631180e-01 +1.800000000000000044e+00 1.885934374458279605e-01 +1.850000000000000089e+00 1.939096951849520190e-01 +1.900000000000000133e+00 1.934543094537796160e-01 +1.950000000000000178e+00 1.872181652685967757e-01 +2.000000000000000000e+00 1.756076414101512828e-01 +2.050000000000000266e+00 1.592074863076734237e-01 +2.100000000000000089e+00 1.387543676633362921e-01 +2.149999999999999911e+00 1.149897343852503140e-01 +2.200000000000000178e+00 8.875688172901036177e-02 +2.250000000000000000e+00 6.126408875565007156e-02 +2.300000000000000266e+00 3.383069858273712871e-02 +2.350000000000000089e+00 8.001530980010461425e-03 +2.400000000000000355e+00 -1.419485949073217602e-02 +2.450000000000000178e+00 -3.094240168596014418e-02 +2.500000000000000000e+00 -4.224256148900267654e-02 +2.550000000000000266e+00 -5.031380519059944212e-02 +2.600000000000000089e+00 -5.670952968803742722e-02 +2.650000000000000355e+00 -6.135428800005267996e-02 +2.700000000000000178e+00 -6.305081412694059362e-02 +2.750000000000000000e+00 -6.127376324439794131e-02 +2.800000000000000266e+00 -5.652561559186973505e-02 +2.850000000000000089e+00 -4.955663879173895919e-02 +2.900000000000000355e+00 -4.113529316986851841e-02 +2.950000000000000178e+00 -3.168053048321991388e-02 +3.000000000000000000e+00 -2.146831418650913675e-02 +3.050000000000000266e+00 -1.087946208821197712e-02 +3.100000000000000089e+00 -4.587705779771952385e-04 +3.150000000000000355e+00 9.061277594673041239e-03 +3.200000000000000178e+00 1.708921245437347580e-02 +3.250000000000000000e+00 2.332543994108142102e-02 +3.300000000000000266e+00 2.767369495791551295e-02 +3.350000000000000089e+00 2.994275657939048790e-02 +3.400000000000000355e+00 2.989024823516421570e-02 +3.450000000000000178e+00 2.740457688441883324e-02 +3.500000000000000000e+00 2.261174459581146573e-02 +3.550000000000000266e+00 1.579795282183295291e-02 +3.600000000000000089e+00 7.323249415895688105e-03 +3.650000000000000355e+00 -2.380798998970953210e-03 +3.700000000000000178e+00 -1.281254498424807924e-02 +3.750000000000000000e+00 -2.339859823437767314e-02 +3.800000000000000266e+00 -3.353472147970278788e-02 +3.850000000000000089e+00 -4.262032967414725038e-02 +3.900000000000000355e+00 -5.008641634667831966e-02 +3.950000000000000178e+00 -5.541970665377989741e-02 +4.000000000000000000e+00 -5.818284346494816128e-02 +4.049999999999999822e+00 -5.803659160936111561e-02 +4.100000000000000533e+00 -5.478653800353909531e-02 +4.150000000000000355e+00 -4.847398543699171086e-02 +4.200000000000000178e+00 -3.934649815839189740e-02 +4.250000000000000000e+00 -2.782024409440195245e-02 +4.299999999999999822e+00 -1.441432204924694357e-02 +4.350000000000000533e+00 3.265218023979570786e-04 +4.400000000000000355e+00 1.578191918956779391e-02 +4.450000000000000178e+00 3.125449153850474310e-02 +4.500000000000000000e+00 4.598155098922993012e-02 +4.549999999999999822e+00 5.917879554031482692e-02 +4.600000000000000533e+00 7.011813343809929211e-02 +4.650000000000000355e+00 7.816915293860128566e-02 +4.700000000000000178e+00 8.281759304920717490e-02 +4.750000000000000000e+00 8.368420542837065601e-02 +4.800000000000000711e+00 8.058963229390792016e-02 +4.850000000000000533e+00 7.358342092383775290e-02 +4.900000000000000355e+00 6.295556973109264765e-02 +4.950000000000000178e+00 4.920365892816373071e-02 +5.000000000000000000e+00 3.296768579203947225e-02 +5.050000000000000711e+00 1.498984481746125537e-02 +5.100000000000000533e+00 -3.929514776377779177e-03 +5.150000000000000355e+00 -2.295628888039202148e-02 +5.200000000000000178e+00 -4.122508671583547529e-02 +5.250000000000000000e+00 -5.786692630852265096e-02 +5.300000000000000711e+00 -7.202556967489648354e-02 +5.350000000000000533e+00 -8.291373033798418724e-02 +5.400000000000000355e+00 -8.992350683799055222e-02 +5.450000000000000178e+00 -9.268088631045044712e-02 +5.500000000000000000e+00 -9.107908727781256764e-02 +5.550000000000000711e+00 -8.523224567628562287e-02 +5.600000000000000533e+00 -7.540638119559814334e-02 +5.650000000000000355e+00 -6.200189369554368751e-02 +5.700000000000000178e+00 -4.557316986790264229e-02 +5.750000000000000000e+00 -2.687967771539054654e-02 +5.800000000000000711e+00 -6.849405836761213520e-03 +5.850000000000000533e+00 1.348432009170464144e-02 +5.900000000000000355e+00 3.308903116410555345e-02 +5.950000000000000178e+00 5.102264616099140560e-02 +6.000000000000000000e+00 6.644019174355857149e-02 +6.050000000000000711e+00 7.862235679434556590e-02 +6.100000000000000533e+00 8.699505008224446556e-02 +6.150000000000000355e+00 9.115787654823545583e-02 +6.200000000000000178e+00 9.091884418325793527e-02 +6.250000000000000000e+00 8.630565955985784743e-02 +6.300000000000000711e+00 7.756464886558303573e-02 +6.350000000000000533e+00 6.514820479733918202e-02 +6.400000000000000355e+00 4.969138238178368028e-02 +6.450000000000000178e+00 3.197887233777263472e-02 +6.500000000000000000e+00 1.290412019320334898e-02 +6.550000000000000711e+00 -6.577220900253044795e-03 +6.600000000000000533e+00 -2.549764026540372874e-02 +6.650000000000000355e+00 -4.292794882956833119e-02 +6.700000000000000178e+00 -5.802370193848817304e-02 +6.750000000000000000e+00 -7.006731498927627755e-02 +6.800000000000000711e+00 -7.850324998118982101e-02 +6.850000000000000533e+00 -8.296445633348552284e-02 +6.900000000000000355e+00 -8.328877256613433089e-02 +6.950000000000000178e+00 -7.952454115866208761e-02 +7.000000000000000000e+00 -7.192526911410060397e-02 +7.050000000000000711e+00 -6.093374572850791121e-02 +7.100000000000000533e+00 -4.715640700691572235e-02 +7.150000000000000355e+00 -3.132942550937054677e-02 +7.200000000000000178e+00 -1.427907649474588481e-02 +7.250000000000000000e+00 3.121734130525496368e-03 +7.300000000000000711e+00 1.999857567972659553e-02 +7.350000000000000533e+00 3.551988516577422178e-02 +7.400000000000000355e+00 4.893837819426151425e-02 +7.450000000000000178e+00 5.962740437407831190e-02 +7.500000000000000000e+00 6.711047149618247498e-02 +7.550000000000000711e+00 7.108254557408520691e-02 +7.600000000000000533e+00 7.142219975837472978e-02 +7.650000000000000355e+00 6.819433118481182943e-02 +7.700000000000000178e+00 6.164319123625330160e-02 +7.750000000000000000e+00 5.217621235581462735e-02 +7.800000000000000711e+00 4.033975560878329258e-02 +7.850000000000000533e+00 2.678820095319883049e-02 +7.900000000000000355e+00 1.224811874907342189e-02 +7.950000000000000178e+00 -2.520517219241451713e-03 +8.000000000000000000e+00 -1.676400091345857379e-02 +8.050000000000000711e+00 -2.977333293763550007e-02 +8.099999999999999645e+00 -4.091886099415020100e-02 +8.150000000000000355e+00 -4.968110509181467016e-02 +8.200000000000001066e+00 -5.567600701799864382e-02 +8.250000000000000000e+00 -5.867189565488428737e-02 +8.300000000000000711e+00 -5.859796531610711456e-02 +8.349999999999999645e+00 -5.554400703826383595e-02 +8.400000000000000355e+00 -4.975159818027985459e-02 +8.450000000000001066e+00 -4.159742424055457022e-02 +8.500000000000000000e+00 -3.156982764134590169e-02 +8.550000000000000711e+00 -2.023998357483600477e-02 +8.599999999999999645e+00 -8.228727770454299234e-03 +8.650000000000000355e+00 3.827479727038067721e-03 +8.700000000000001066e+00 1.530936795006152158e-02 +8.750000000000000000e+00 2.564617866034528751e-02 +8.800000000000000711e+00 3.434356122040055359e-02 +8.849999999999999645e+00 4.100669307998267704e-02 +8.900000000000000355e+00 4.535758178295143384e-02 +8.950000000000001066e+00 4.724583343258997870e-02 +9.000000000000000000e+00 4.665252827378930933e-02 +9.050000000000000711e+00 4.368722123280012470e-02 +9.099999999999999645e+00 3.857880239993067423e-02 +9.150000000000000355e+00 3.166068225402760700e-02 +9.200000000000001066e+00 2.335012603780155585e-02 +9.250000000000000000e+00 1.412354756874768455e-02 +9.300000000000000711e+00 4.489379393336292295e-03 +9.349999999999999645e+00 -5.039917047772022977e-03 +9.400000000000000355e+00 -1.397513594748537973e-02 +9.450000000000001066e+00 -2.187543016706310073e-02 +9.500000000000000000e+00 -2.836992789242949453e-02 +9.550000000000000711e+00 -3.317484174443213057e-02 +9.600000000000001421e+00 -3.610552971219380819e-02 +9.650000000000000355e+00 -3.708136689927710172e-02 +9.700000000000001066e+00 -3.612505751102308704e-02 +9.750000000000000000e+00 -3.335737150533307077e-02 +9.800000000000000711e+00 -2.898714746713086307e-02 +9.850000000000001421e+00 -2.329725107638914647e-02 +9.900000000000000355e+00 -1.662736038323953461e-02 +9.950000000000001066e+00 -9.354567131054040280e-03 +1.000000000000000000e+01 -1.872848172190767161e-03 +1.005000000000000071e+01 5.427492164462625716e-03 +1.010000000000000142e+01 1.217902825553127295e-02 +1.015000000000000036e+01 1.805524144004870546e-02 +1.020000000000000107e+01 2.278621937645636947e-02 +1.025000000000000000e+01 2.617062965873059519e-02 +1.030000000000000071e+01 2.808372682602688908e-02 +1.035000000000000142e+01 2.848111496202295964e-02 +1.040000000000000036e+01 2.739821257867672971e-02 +1.045000000000000107e+01 2.494559303993540422e-02 +1.050000000000000000e+01 2.130058386675654988e-02 +1.055000000000000071e+01 1.669569129211091740e-02 +1.060000000000000142e+01 1.140456359473907520e-02 +1.065000000000000036e+01 5.726311416106130876e-03 +1.070000000000000107e+01 -3.093868396967466736e-05 +1.075000000000000000e+01 -5.566371271701224532e-03 +1.080000000000000071e+01 -1.060184066582379840e-02 +1.085000000000000142e+01 -1.489549275332028959e-02 +1.090000000000000036e+01 -1.825299994212069288e-02 +1.095000000000000107e+01 -2.053590767384608565e-02 +1.100000000000000000e+01 -2.166676060250415092e-02 +1.105000000000000071e+01 -2.163085686820075126e-02 +1.110000000000000142e+01 -2.047465442990558174e-02 +1.115000000000000036e+01 -1.830105771378189028e-02 +1.120000000000000107e+01 -1.526194409035613701e-02 +1.125000000000000000e+01 -1.154841037692294972e-02 +1.130000000000000071e+01 -7.379338145569930285e-03 +1.135000000000000142e+01 -2.988938879825488084e-03 +1.140000000000000036e+01 1.386031097737145659e-03 +1.145000000000000107e+01 5.518704446114999253e-03 +1.150000000000000000e+01 9.203547913928560725e-03 +1.155000000000000071e+01 1.226625721756981376e-02 +1.160000000000000142e+01 1.457164282457136528e-02 +1.165000000000000036e+01 1.602917070210778047e-02 +1.170000000000000107e+01 1.659595801810000507e-02 +1.175000000000000000e+01 1.627716503008924676e-02 +1.180000000000000071e+01 1.512386329484178248e-02 +1.185000000000000142e+01 1.322858963079861713e-02 +1.190000000000000036e+01 1.071890850872551058e-02 +1.195000000000000107e+01 7.749397380750424127e-03 +1.200000000000000000e+01 4.492535878338435595e-03 +1.205000000000000071e+01 1.129009678268843263e-03 +1.210000000000000142e+01 -2.162096817035537386e-03 +1.215000000000000036e+01 -5.212481968576559814e-03 +1.220000000000000107e+01 -7.872854994341652729e-03 +1.225000000000000000e+01 -1.001991949450198836e-02 +1.230000000000000071e+01 -1.156175306398889852e-02 +1.235000000000000142e+01 -1.244136833240152250e-02 +1.240000000000000036e+01 -1.263834178303833641e-02 +1.245000000000000107e+01 -1.216849891701548766e-02 +1.250000000000000000e+01 -1.108174336415266095e-02 +1.255000000000000071e+01 -9.458208599265974584e-03 +1.260000000000000142e+01 -7.402989761817498418e-03 +1.265000000000000036e+01 -5.039776205606520676e-03 +1.270000000000000107e+01 -2.503750219292607410e-03 +1.275000000000000000e+01 6.585776105391020292e-05 +1.280000000000000071e+01 2.533162767047224609e-03 +1.285000000000000142e+01 4.772588782592041869e-03 +1.290000000000000036e+01 6.675057528337164682e-03 +1.295000000000000107e+01 8.153108738198085181e-03 +1.300000000000000000e+01 9.144722221219243538e-03 +1.305000000000000071e+01 9.615685819962095301e-03 +1.310000000000000142e+01 9.560466761592516585e-03 +1.315000000000000036e+01 9.001610557677649019e-03 +1.320000000000000107e+01 7.987590027620913510e-03 +1.325000000000000000e+01 6.589308887028171718e-03 +1.330000000000000071e+01 4.895520112888521007e-03 +1.335000000000000142e+01 3.007443206001367275e-03 +1.340000000000000036e+01 1.032898863024423819e-03 +1.345000000000000107e+01 -9.197045512599944959e-04 +1.350000000000000000e+01 -2.747201441313184243e-03 +1.355000000000000071e+01 -4.357006341400599704e-03 +1.360000000000000142e+01 -5.671685938644050601e-03 +1.365000000000000036e+01 -6.632544991951675080e-03 +1.370000000000000107e+01 -7.202067296267993142e-03 +1.375000000000000000e+01 -7.365121355367849378e-03 +1.380000000000000071e+01 -7.128911471144582478e-03 +1.385000000000000142e+01 -6.521724465611306032e-03 +1.390000000000000036e+01 -5.590586389117912190e-03 +1.395000000000000107e+01 -4.397998944792539527e-03 +1.400000000000000000e+01 -3.017969208148637335e-03 diff --git a/crates/xraytsubaki/tests/testfiles/feffcu01.dat b/crates/xraytsubaki/tests/testfiles/feffcu01.dat new file mode 100644 index 0000000..bf91f2d --- /dev/null +++ b/crates/xraytsubaki/tests/testfiles/feffcu01.dat @@ -0,0 +1,71 @@ + Cu metal fcc a=3.603 Feff XX 6.10 + Abs Z=29 Rmt= 1.289 Rnm= 1.424 K shell + Pot 1 Z=29 Rmt= 1.272 Rnm= 1.392 + Gam_ch=1.761E+00 H-L exch + Mu=-5.535E+00 kf=1.806E+00 Vint=-1.796E+01 Rs_int= 2.008 + Path 1 icalc 2 + ----------------------------------------------------------------------- + 2 12.000 2.5478 2.6300 -5.53502 nleg, deg, reff, rnrmav(bohr), edge + x y z pot at# + .0000 .0000 .0000 0 29 Cu absorbing atom + .0000 -1.8016 1.8016 1 29 Cu + k real[2*phc] mag[feff] phase[feff] red factor lambda real[p]@# + .000 3.5015E+00 0.0000E+00 -5.1320E+00 9.872E-01 1.5637E+01 1.8071E+00 + .100 3.5020E+00 3.3976E-02 -5.6318E+00 9.873E-01 1.5660E+01 1.8098E+00 + .200 3.5035E+00 6.7038E-02 -6.1121E+00 9.877E-01 1.5726E+01 1.8177E+00 + .300 3.5060E+00 9.8421E-02 -6.5731E+00 9.882E-01 1.5831E+01 1.8309E+00 + .400 3.5093E+00 1.2760E-01 -7.0153E+00 9.890E-01 1.5963E+01 1.8491E+00 + .500 3.5132E+00 1.5432E-01 -7.4387E+00 9.901E-01 1.6111E+01 1.8724E+00 + .600 3.5175E+00 1.7856E-01 -7.8435E+00 9.915E-01 1.6258E+01 1.9005E+00 + .700 3.5218E+00 2.0044E-01 -8.2297E+00 9.932E-01 1.6388E+01 1.9332E+00 + .800 3.5258E+00 2.2014E-01 -8.5973E+00 9.953E-01 1.6481E+01 1.9704E+00 + .900 3.5291E+00 2.3782E-01 -8.9459E+00 9.978E-01 1.6522E+01 2.0119E+00 + 1.000 3.5311E+00 2.5358E-01 -9.2756E+00 1.001E+00 1.6496E+01 2.0575E+00 + 1.100 3.5315E+00 2.6742E-01 -9.5864E+00 1.004E+00 1.6396E+01 2.1070E+00 + 1.200 3.5296E+00 2.7930E-01 -9.8781E+00 1.008E+00 1.6217E+01 2.1605E+00 + 1.300 3.5247E+00 2.8908E-01 -1.0151E+01 1.013E+00 1.5965E+01 2.2177E+00 + 1.400 3.5164E+00 2.9658E-01 -1.0405E+01 1.018E+00 1.5649E+01 2.2786E+00 + 1.500 3.5039E+00 3.0158E-01 -1.0639E+01 1.024E+00 1.5286E+01 2.3431E+00 + 1.600 3.4866E+00 3.0387E-01 -1.0855E+01 1.030E+00 1.4895E+01 2.4113E+00 + 1.700 3.4640E+00 3.0324E-01 -1.1051E+01 1.036E+00 1.4497E+01 2.4830E+00 + 1.800 3.4354E+00 2.9952E-01 -1.1226E+01 1.043E+00 1.4117E+01 2.5584E+00 + 1.900 3.4002E+00 2.9262E-01 -1.1381E+01 1.048E+00 1.3776E+01 2.6374E+00 + 2.000 3.3581E+00 2.8254E-01 -1.1513E+01 1.053E+00 1.3497E+01 2.7201E+00 + 2.200 3.2511E+00 2.5343E-01 -1.1702E+01 1.059E+00 1.3207E+01 2.8970E+00 + 2.400 3.1362E+00 2.2097E-01 -1.1853E+01 1.230E+00 7.5606E+00 3.0883E+00 + 2.600 3.1585E+00 2.0024E-01 -1.2187E+01 1.303E+00 6.1535E+00 3.2191E+00 + 2.800 3.1545E+00 1.6820E-01 -1.2400E+01 1.326E+00 5.6163E+00 3.3579E+00 + 3.000 3.1151E+00 1.3806E-01 -1.2407E+01 1.321E+00 5.3982E+00 3.5040E+00 + 3.200 3.0550E+00 1.2236E-01 -1.2189E+01 1.304E+00 5.3389E+00 3.6566E+00 + 3.400 2.9887E+00 1.4499E-01 -1.1933E+01 1.281E+00 5.3735E+00 3.8150E+00 + 3.600 2.9054E+00 1.9428E-01 -1.1822E+01 1.256E+00 5.4705E+00 3.9784E+00 + 3.800 2.8228E+00 2.5740E-01 -1.1838E+01 1.229E+00 5.6121E+00 4.1461E+00 + 4.000 2.7282E+00 3.2303E-01 -1.1902E+01 1.206E+00 5.7879E+00 4.3177E+00 + 4.200 2.6390E+00 3.8574E-01 -1.1985E+01 1.179E+00 5.9908E+00 4.4926E+00 + 4.400 2.5352E+00 4.4624E-01 -1.2073E+01 1.157E+00 6.2162E+00 4.6704E+00 + 4.600 2.4376E+00 5.0095E-01 -1.2161E+01 1.135E+00 6.4607E+00 4.8506E+00 + 4.800 2.3422E+00 5.5041E-01 -1.2241E+01 1.115E+00 6.7219E+00 5.0329E+00 + 5.000 2.2460E+00 5.9187E-01 -1.2322E+01 1.096E+00 6.9979E+00 5.2171E+00 + 5.200 2.1454E+00 6.3037E-01 -1.2396E+01 1.079E+00 7.2872E+00 5.4030E+00 + 5.400 2.0492E+00 6.6383E-01 -1.2463E+01 1.064E+00 7.5888E+00 5.5902E+00 + 5.600 1.9507E+00 6.9100E-01 -1.2531E+01 1.050E+00 7.9017E+00 5.7787E+00 + 5.800 1.8576E+00 7.1670E-01 -1.2591E+01 1.038E+00 8.2251E+00 5.9682E+00 + 6.000 1.7615E+00 7.3666E-01 -1.2649E+01 1.027E+00 8.5584E+00 6.1587E+00 + 6.500 1.5272E+00 7.6643E-01 -1.2784E+01 1.004E+00 9.4317E+00 6.6385E+00 + 7.000 1.2998E+00 7.6974E-01 -1.2906E+01 9.857E-01 1.0357E+01 7.1222E+00 + 7.500 1.0824E+00 7.5036E-01 -1.3022E+01 9.708E-01 1.1331E+01 7.6088E+00 + 8.000 8.7724E-01 7.1645E-01 -1.3130E+01 9.579E-01 1.2348E+01 8.0978E+00 + 8.500 6.8313E-01 6.7486E-01 -1.3230E+01 9.470E-01 1.3407E+01 8.5885E+00 + 9.000 4.9775E-01 6.2811E-01 -1.3331E+01 9.381E-01 1.4505E+01 9.0807E+00 + 9.500 3.2222E-01 5.7859E-01 -1.3435E+01 9.304E-01 1.5641E+01 9.5740E+00 + 10.000 1.4825E-01 5.2908E-01 -1.3544E+01 9.222E-01 1.6812E+01 1.0068E+01 + 11.000 -1.7917E-01 4.3980E-01 -1.3760E+01 9.056E-01 1.9258E+01 1.1059E+01 + 12.000 -4.8336E-01 3.6492E-01 -1.3977E+01 8.938E-01 2.1832E+01 1.2051E+01 + 13.000 -7.6646E-01 3.0439E-01 -1.4200E+01 8.879E-01 2.4527E+01 1.3045E+01 + 14.000 -1.0250E+00 2.5553E-01 -1.4407E+01 8.831E-01 2.7338E+01 1.4041E+01 + 15.000 -1.2653E+00 2.1646E-01 -1.4623E+01 8.801E-01 3.0257E+01 1.5037E+01 + 16.000 -1.4894E+00 1.8503E-01 -1.4821E+01 8.793E-01 3.3281E+01 1.6034E+01 + 17.000 -1.6950E+00 1.5883E-01 -1.5018E+01 8.776E-01 3.6404E+01 1.7031E+01 + 18.000 -1.8893E+00 1.3866E-01 -1.5217E+01 8.772E-01 3.9623E+01 1.8028E+01 + 19.000 -2.0688E+00 1.1937E-01 -1.5388E+01 8.769E-01 4.2933E+01 1.9026E+01 + 20.000 -2.2337E+00 1.0466E-01 -1.5591E+01 8.754E-01 4.6332E+01 2.0025E+01 diff --git a/py-xraytsubaki/src/lib.rs b/py-xraytsubaki/src/lib.rs index d13a0c8..57ae369 100644 --- a/py-xraytsubaki/src/lib.rs +++ b/py-xraytsubaki/src/lib.rs @@ -16,6 +16,7 @@ fn error_category(error: &XAFSError) -> &'static str { XAFSError::FFT(_) => "fft", XAFSError::IO(_) => "io", XAFSError::Math(_) => "math", + XAFSError::Fitting(_) => "fitting", XAFSError::NotEnoughData => "data", XAFSError::NotEnoughDataForXFTF => "fft", XAFSError::NotEnoughDataForXFTR => "fft", From b1c1d556b72b7773487c75cc98a791db9b53c084 Mon Sep 17 00:00:00 2001 From: Ameyanagi Date: Tue, 10 Feb 2026 06:14:29 +0900 Subject: [PATCH 2/8] Redesign FEFF fitting API and add xraylarch comparison outputs --- Cargo.lock | 93 ++++ Cargo.toml | 1 + crates/xraytsubaki/Cargo.toml | 1 + crates/xraytsubaki/doc/feff-fitting-mvp.md | 31 ++ .../examples/feff_compare_export.rs | 501 +++++++++++++++++ crates/xraytsubaki/src/prelude.rs | 10 +- .../xraytsubaki/src/xafs/fitting/builder.rs | 505 ++++++++++++++++++ .../src/xafs/fitting/expression.pest | 22 + .../src/xafs/fitting/expression.rs | 405 ++++++++++++++ crates/xraytsubaki/src/xafs/fitting/mod.rs | 14 +- crates/xraytsubaki/src/xafs/fitting/solver.rs | 299 ++++++++--- .../xraytsubaki/src/xafs/fitting/transform.rs | 20 + crates/xraytsubaki/src/xafs/fitting/types.rs | 286 ++++++++++ .../xraytsubaki/src/xafs/fitting/variables.rs | 231 +------- .../tests/feff_builder_examples.rs | 233 ++++++++ doc/plots/feff_vs_larch_01_path_builder.png | Bin 0 -> 31605 bytes doc/plots/feff_vs_larch_01_path_builder.svg | 62 +++ .../feff_vs_larch_01_path_builder_rspace.png | Bin 0 -> 28434 bytes .../feff_vs_larch_01_path_builder_rspace.svg | 62 +++ ...s_larch_01_path_builder_rspace_contrib.png | Bin 0 -> 29436 bytes ...s_larch_01_path_builder_rspace_contrib.svg | 65 +++ .../feff_vs_larch_02_multi_path_model.png | Bin 0 -> 33015 bytes .../feff_vs_larch_02_multi_path_model.svg | 62 +++ ...ff_vs_larch_02_multi_path_model_rspace.png | Bin 0 -> 28172 bytes ...ff_vs_larch_02_multi_path_model_rspace.svg | 62 +++ ...rch_02_multi_path_model_rspace_contrib.png | Bin 0 -> 30345 bytes ...rch_02_multi_path_model_rspace_contrib.svg | 68 +++ .../feff_vs_larch_03_single_dataset_fit.png | Bin 0 -> 33813 bytes .../feff_vs_larch_03_single_dataset_fit.svg | 62 +++ ..._vs_larch_03_single_dataset_fit_rspace.png | Bin 0 -> 28473 bytes ..._vs_larch_03_single_dataset_fit_rspace.svg | 62 +++ ...h_03_single_dataset_fit_rspace_contrib.png | Bin 0 -> 29467 bytes ...h_03_single_dataset_fit_rspace_contrib.svg | 65 +++ .../feff_vs_larch_04_clone_template_path.png | Bin 0 -> 32706 bytes .../feff_vs_larch_04_clone_template_path.svg | 62 +++ ...vs_larch_04_clone_template_path_rspace.png | Bin 0 -> 28884 bytes ...vs_larch_04_clone_template_path_rspace.svg | 62 +++ ..._04_clone_template_path_rspace_contrib.png | Bin 0 -> 29757 bytes ..._04_clone_template_path_rspace_contrib.svg | 65 +++ ...feff_vs_larch_05_clone_template_ff2chi.png | Bin 0 -> 34498 bytes ...feff_vs_larch_05_clone_template_ff2chi.svg | 62 +++ ..._larch_05_clone_template_ff2chi_rspace.png | Bin 0 -> 27986 bytes ..._larch_05_clone_template_ff2chi_rspace.svg | 62 +++ ...5_clone_template_ff2chi_rspace_contrib.png | Bin 0 -> 30079 bytes ...5_clone_template_ff2chi_rspace_contrib.svg | 68 +++ .../feff_vs_larch_06_multi_dataset_ds1.png | Bin 0 -> 32668 bytes .../feff_vs_larch_06_multi_dataset_ds1.svg | 62 +++ ...f_vs_larch_06_multi_dataset_ds1_rspace.png | Bin 0 -> 28903 bytes ...f_vs_larch_06_multi_dataset_ds1_rspace.svg | 62 +++ ...ch_06_multi_dataset_ds1_rspace_contrib.png | Bin 0 -> 29910 bytes ...ch_06_multi_dataset_ds1_rspace_contrib.svg | 65 +++ .../feff_vs_larch_07_multi_dataset_ds2.png | Bin 0 -> 34322 bytes .../feff_vs_larch_07_multi_dataset_ds2.svg | 62 +++ ...f_vs_larch_07_multi_dataset_ds2_rspace.png | Bin 0 -> 27835 bytes ...f_vs_larch_07_multi_dataset_ds2_rspace.svg | 62 +++ ...ch_07_multi_dataset_ds2_rspace_contrib.png | Bin 0 -> 30047 bytes ...ch_07_multi_dataset_ds2_rspace_contrib.svg | 68 +++ .../feff_vs_larch_data/01_path_builder.csv | 281 ++++++++++ .../01_path_builder_rspace.csv | 327 ++++++++++++ .../01_path_builder_rspace_contrib.csv | 327 ++++++++++++ .../02_multi_path_model.csv | 281 ++++++++++ .../02_multi_path_model_rspace.csv | 327 ++++++++++++ .../02_multi_path_model_rspace_contrib.csv | 327 ++++++++++++ .../03_single_dataset_fit.csv | 281 ++++++++++ .../03_single_dataset_fit_rspace.csv | 327 ++++++++++++ .../03_single_dataset_fit_rspace_contrib.csv | 327 ++++++++++++ .../04_clone_template_path.csv | 281 ++++++++++ .../04_clone_template_path_rspace.csv | 327 ++++++++++++ .../04_clone_template_path_rspace_contrib.csv | 327 ++++++++++++ .../05_clone_template_ff2chi.csv | 281 ++++++++++ .../05_clone_template_ff2chi_rspace.csv | 327 ++++++++++++ ...5_clone_template_ff2chi_rspace_contrib.csv | 327 ++++++++++++ .../06_multi_dataset_ds1.csv | 281 ++++++++++ .../06_multi_dataset_ds1_rspace.csv | 327 ++++++++++++ .../06_multi_dataset_ds1_rspace_contrib.csv | 327 ++++++++++++ .../07_multi_dataset_ds2.csv | 281 ++++++++++ .../07_multi_dataset_ds2_rspace.csv | 327 ++++++++++++ .../07_multi_dataset_ds2_rspace_contrib.csv | 327 ++++++++++++ doc/plots/feff_vs_larch_index.md | 24 + doc/scripts/generate_feff_vs_larch_plots.py | 238 +++++++++ doc/scripts/generate_feff_vs_larch_png.py | 255 +++++++++ plans/fitting-api-redesign.md | 264 +++++++++ 82 files changed, 10997 insertions(+), 313 deletions(-) create mode 100644 crates/xraytsubaki/examples/feff_compare_export.rs create mode 100644 crates/xraytsubaki/src/xafs/fitting/builder.rs create mode 100644 crates/xraytsubaki/src/xafs/fitting/expression.pest create mode 100644 crates/xraytsubaki/src/xafs/fitting/expression.rs create mode 100644 crates/xraytsubaki/tests/feff_builder_examples.rs create mode 100644 doc/plots/feff_vs_larch_01_path_builder.png create mode 100644 doc/plots/feff_vs_larch_01_path_builder.svg create mode 100644 doc/plots/feff_vs_larch_01_path_builder_rspace.png create mode 100644 doc/plots/feff_vs_larch_01_path_builder_rspace.svg create mode 100644 doc/plots/feff_vs_larch_01_path_builder_rspace_contrib.png create mode 100644 doc/plots/feff_vs_larch_01_path_builder_rspace_contrib.svg create mode 100644 doc/plots/feff_vs_larch_02_multi_path_model.png create mode 100644 doc/plots/feff_vs_larch_02_multi_path_model.svg create mode 100644 doc/plots/feff_vs_larch_02_multi_path_model_rspace.png create mode 100644 doc/plots/feff_vs_larch_02_multi_path_model_rspace.svg create mode 100644 doc/plots/feff_vs_larch_02_multi_path_model_rspace_contrib.png create mode 100644 doc/plots/feff_vs_larch_02_multi_path_model_rspace_contrib.svg create mode 100644 doc/plots/feff_vs_larch_03_single_dataset_fit.png create mode 100644 doc/plots/feff_vs_larch_03_single_dataset_fit.svg create mode 100644 doc/plots/feff_vs_larch_03_single_dataset_fit_rspace.png create mode 100644 doc/plots/feff_vs_larch_03_single_dataset_fit_rspace.svg create mode 100644 doc/plots/feff_vs_larch_03_single_dataset_fit_rspace_contrib.png create mode 100644 doc/plots/feff_vs_larch_03_single_dataset_fit_rspace_contrib.svg create mode 100644 doc/plots/feff_vs_larch_04_clone_template_path.png create mode 100644 doc/plots/feff_vs_larch_04_clone_template_path.svg create mode 100644 doc/plots/feff_vs_larch_04_clone_template_path_rspace.png create mode 100644 doc/plots/feff_vs_larch_04_clone_template_path_rspace.svg create mode 100644 doc/plots/feff_vs_larch_04_clone_template_path_rspace_contrib.png create mode 100644 doc/plots/feff_vs_larch_04_clone_template_path_rspace_contrib.svg create mode 100644 doc/plots/feff_vs_larch_05_clone_template_ff2chi.png create mode 100644 doc/plots/feff_vs_larch_05_clone_template_ff2chi.svg create mode 100644 doc/plots/feff_vs_larch_05_clone_template_ff2chi_rspace.png create mode 100644 doc/plots/feff_vs_larch_05_clone_template_ff2chi_rspace.svg create mode 100644 doc/plots/feff_vs_larch_05_clone_template_ff2chi_rspace_contrib.png create mode 100644 doc/plots/feff_vs_larch_05_clone_template_ff2chi_rspace_contrib.svg create mode 100644 doc/plots/feff_vs_larch_06_multi_dataset_ds1.png create mode 100644 doc/plots/feff_vs_larch_06_multi_dataset_ds1.svg create mode 100644 doc/plots/feff_vs_larch_06_multi_dataset_ds1_rspace.png create mode 100644 doc/plots/feff_vs_larch_06_multi_dataset_ds1_rspace.svg create mode 100644 doc/plots/feff_vs_larch_06_multi_dataset_ds1_rspace_contrib.png create mode 100644 doc/plots/feff_vs_larch_06_multi_dataset_ds1_rspace_contrib.svg create mode 100644 doc/plots/feff_vs_larch_07_multi_dataset_ds2.png create mode 100644 doc/plots/feff_vs_larch_07_multi_dataset_ds2.svg create mode 100644 doc/plots/feff_vs_larch_07_multi_dataset_ds2_rspace.png create mode 100644 doc/plots/feff_vs_larch_07_multi_dataset_ds2_rspace.svg create mode 100644 doc/plots/feff_vs_larch_07_multi_dataset_ds2_rspace_contrib.png create mode 100644 doc/plots/feff_vs_larch_07_multi_dataset_ds2_rspace_contrib.svg create mode 100644 doc/plots/feff_vs_larch_data/01_path_builder.csv create mode 100644 doc/plots/feff_vs_larch_data/01_path_builder_rspace.csv create mode 100644 doc/plots/feff_vs_larch_data/01_path_builder_rspace_contrib.csv create mode 100644 doc/plots/feff_vs_larch_data/02_multi_path_model.csv create mode 100644 doc/plots/feff_vs_larch_data/02_multi_path_model_rspace.csv create mode 100644 doc/plots/feff_vs_larch_data/02_multi_path_model_rspace_contrib.csv create mode 100644 doc/plots/feff_vs_larch_data/03_single_dataset_fit.csv create mode 100644 doc/plots/feff_vs_larch_data/03_single_dataset_fit_rspace.csv create mode 100644 doc/plots/feff_vs_larch_data/03_single_dataset_fit_rspace_contrib.csv create mode 100644 doc/plots/feff_vs_larch_data/04_clone_template_path.csv create mode 100644 doc/plots/feff_vs_larch_data/04_clone_template_path_rspace.csv create mode 100644 doc/plots/feff_vs_larch_data/04_clone_template_path_rspace_contrib.csv create mode 100644 doc/plots/feff_vs_larch_data/05_clone_template_ff2chi.csv create mode 100644 doc/plots/feff_vs_larch_data/05_clone_template_ff2chi_rspace.csv create mode 100644 doc/plots/feff_vs_larch_data/05_clone_template_ff2chi_rspace_contrib.csv create mode 100644 doc/plots/feff_vs_larch_data/06_multi_dataset_ds1.csv create mode 100644 doc/plots/feff_vs_larch_data/06_multi_dataset_ds1_rspace.csv create mode 100644 doc/plots/feff_vs_larch_data/06_multi_dataset_ds1_rspace_contrib.csv create mode 100644 doc/plots/feff_vs_larch_data/07_multi_dataset_ds2.csv create mode 100644 doc/plots/feff_vs_larch_data/07_multi_dataset_ds2_rspace.csv create mode 100644 doc/plots/feff_vs_larch_data/07_multi_dataset_ds2_rspace_contrib.csv create mode 100644 doc/plots/feff_vs_larch_index.md create mode 100644 doc/scripts/generate_feff_vs_larch_plots.py create mode 100644 doc/scripts/generate_feff_vs_larch_png.py create mode 100644 plans/fitting-api-redesign.md diff --git a/Cargo.lock b/Cargo.lock index 45cb050..74337ef 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -225,6 +225,15 @@ dependencies = [ "wyz", ] +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + [[package]] name = "bson" version = "2.15.0" @@ -406,6 +415,15 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + [[package]] name = "crc32fast" version = "1.5.0" @@ -482,6 +500,16 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "typenum", +] + [[package]] name = "data_reader" version = "0.5.0" @@ -523,6 +551,16 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + [[package]] name = "dyn-clone" version = "1.0.20" @@ -639,6 +677,16 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + [[package]] name = "generic_singleton" version = "0.5.1" @@ -1293,6 +1341,39 @@ dependencies = [ "ucd-trie", ] +[[package]] +name = "pest_derive" +version = "2.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "187da9a3030dbafabbbfb20cb323b976dc7b7ce91fcd84f2f74d6e31d378e2de" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49b401d98f5757ebe97a26085998d6c0eecec4995cad6ab7fc30ffdf4b052843" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn 2.0.109", +] + +[[package]] +name = "pest_meta" +version = "2.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72f27a2cfee9f9039c4d86faa5af122a0ac3851441a34865b8a043b46be0065a" +dependencies = [ + "pest", + "sha2", +] + [[package]] name = "plotters" version = "0.3.7" @@ -1780,6 +1861,17 @@ dependencies = [ "serde_core", ] +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + [[package]] name = "shlex" version = "1.3.0" @@ -2285,6 +2377,7 @@ dependencies = [ "ndarray 0.15.6", "num-complex 0.4.6", "pest", + "pest_derive", "polyfit-rs", "pprof", "rayon", diff --git a/Cargo.toml b/Cargo.toml index b2eb51a..4f06a41 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -49,6 +49,7 @@ version = "3.0.0" derivative = "2.2.0" flate2 = "1.0.28" pest = "2.7.7" +pest_derive = "2.7.7" thiserror = "1.0.69" xraytsubaki = { version = "0.1.0", path = "crates/xraytsubaki" } diff --git a/crates/xraytsubaki/Cargo.toml b/crates/xraytsubaki/Cargo.toml index 6527a38..73d23fe 100644 --- a/crates/xraytsubaki/Cargo.toml +++ b/crates/xraytsubaki/Cargo.toml @@ -34,6 +34,7 @@ easyfft = { workspace = true } serde_json = { workspace = true } flate2 = { workspace = true } pest = { workspace = true } +pest_derive = { workspace = true } thiserror = { workspace = true } [features] diff --git a/crates/xraytsubaki/doc/feff-fitting-mvp.md b/crates/xraytsubaki/doc/feff-fitting-mvp.md index a49f483..3111672 100644 --- a/crates/xraytsubaki/doc/feff-fitting-mvp.md +++ b/crates/xraytsubaki/doc/feff-fitting-mvp.md @@ -19,6 +19,37 @@ Out of scope in MVP: - Non-R fitspaces (`k`, `q`, wavelet). - FEFF10 execution support. +## Builder API and Canonical Examples + +The redesigned fitting surface adds additive builder APIs (`FeffFit`, `Param`) and +multi-dataset fitting while keeping the existing free-function flow available. + +Canonical usage examples are maintained in: +- `plans/fitting-api-redesign.md` + +Those examples define the intended ergonomic workflows: +- path-model chaining and clone-and-reuse, +- tuple shorthand via `set_inits`, +- `Param`-based parameter declarations, +- single-dataset fitting with builder chaining, +- multi-dataset global fitting with shared parameters. + +## Migration Guidance (Legacy -> Builder) + +Legacy flow remains valid: +- Build `FeffFitDataset` and `FitVariables` manually. +- Call `feffit(&dataset, &vars)`. + +Builder flow is additive: +- Build with `FeffFit::new().data(...).add_path(...).set_inits(...).fit()`. +- Use `add_dataset(...)` for global multi-dataset fitting. +- Use `params([Param::new(...), Param::fixed(...), Param::expr(...)])` for concise variable setup. + +Compatibility policy: +- Existing entrypoints and single-dataset access patterns remain supported. +- Builder/multi-dataset APIs are additive. +- Deprecation is documentation-first; no mandatory migration is introduced in this change. + ## FEFF Flavor Compatibility - `FeffFlavor::Feff85L`: supported in this MVP. diff --git a/crates/xraytsubaki/examples/feff_compare_export.rs b/crates/xraytsubaki/examples/feff_compare_export.rs new file mode 100644 index 0000000..44255d4 --- /dev/null +++ b/crates/xraytsubaki/examples/feff_compare_export.rs @@ -0,0 +1,501 @@ +use std::error::Error; +use std::fs; +use std::path::{Path, PathBuf}; + +use nalgebra::DVector; +use xraytsubaki::prelude::*; +use xraytsubaki::xafs::fitting::transform::apply_r_transform; + +fn fixture_path(name: &str) -> PathBuf { + Path::new(env!("CARGO_MANIFEST_DIR")) + .join("tests") + .join("testfiles") + .join(name) +} + +fn output_dir() -> PathBuf { + Path::new(env!("CARGO_MANIFEST_DIR")) + .join("../../doc/plots/feff_vs_larch_data") +} + +fn load_two_column(path: &Path) -> Result<(DVector, DVector), Box> { + let content = fs::read_to_string(path)?; + let mut x = Vec::new(); + let mut y = Vec::new(); + for line in content.lines() { + let line = line.trim(); + if line.is_empty() || line.starts_with('#') { + continue; + } + let mut parts = line.split_whitespace(); + let xv: f64 = parts + .next() + .ok_or("missing x value in fixture")? + .parse()?; + let yv: f64 = parts + .next() + .ok_or("missing y value in fixture")? + .parse()?; + x.push(xv); + y.push(yv); + } + Ok((DVector::from_vec(x), DVector::from_vec(y))) +} + +fn write_comparison_csv( + path: &Path, + k: &DVector, + model: &DVector, + larch: &DVector, +) -> Result<(), Box> { + if k.len() != model.len() || k.len() != larch.len() { + return Err("length mismatch while writing comparison csv".into()); + } + let mut out = String::from("k,model,larch,diff\n"); + for i in 0..k.len() { + let diff = model[i] - larch[i]; + out.push_str(&format!( + "{:.15e},{:.15e},{:.15e},{:.15e}\n", + k[i], model[i], larch[i], diff + )); + } + fs::write(path, out)?; + Ok(()) +} + +fn reference_transform() -> FeffFitTransform { + FeffFitTransform { + kmin: 2.0, + kmax: 14.0, + rmin: 1.0, + rmax: 3.0, + window: FTWindow::Hanning, + ..FeffFitTransform::default() + } +} + +fn write_rspace_comparison_csv( + path: &Path, + k: &DVector, + model_chi: &DVector, + larch_chi: &DVector, +) -> Result<(), Box> { + let transform = reference_transform(); + let model = apply_r_transform(k, model_chi, &transform)?; + let larch = apply_r_transform(k, larch_chi, &transform)?; + if model.r.len() != larch.r.len() || model.chir_mag.len() != larch.chir_mag.len() { + return Err("R-space transform output mismatch".into()); + } + let mut out = String::from("r,model,larch,diff\n"); + for i in 0..model.r.len() { + let x = model.r[i]; + let mv = model.chir_mag[i]; + let lv = larch.chir_mag[i]; + let diff = mv - lv; + out.push_str(&format!( + "{:.15e},{:.15e},{:.15e},{:.15e}\n", + x, mv, lv, diff + )); + } + fs::write(path, out)?; + Ok(()) +} + +fn sanitize_label(label: &str) -> String { + let mut out = String::new(); + for ch in label.chars() { + if ch.is_ascii_alphanumeric() { + out.push(ch.to_ascii_lowercase()); + } else if ch == '_' || ch == '-' { + out.push('_'); + } + } + if out.is_empty() { + "path".to_string() + } else { + out + } +} + +fn write_rspace_contrib_csv( + path: &Path, + k: &DVector, + model_chi: &DVector, + larch_chi: &DVector, + contributions: &[(String, DVector)], +) -> Result<(), Box> { + let transform = reference_transform(); + let model = apply_r_transform(k, model_chi, &transform)?; + let larch = apply_r_transform(k, larch_chi, &transform)?; + if model.r.len() != larch.r.len() || model.chir_mag.len() != larch.chir_mag.len() { + return Err("R-space transform output mismatch".into()); + } + + let mut contrib_r = Vec::with_capacity(contributions.len()); + for (label, chi) in contributions { + let out = apply_r_transform(k, chi, &transform)?; + if out.chir_mag.len() != model.r.len() { + return Err("R-space contribution length mismatch".into()); + } + contrib_r.push((label.clone(), out.chir_mag)); + } + + let mut labels = Vec::with_capacity(contrib_r.len()); + for (idx, (label, _)) in contrib_r.iter().enumerate() { + let clean = sanitize_label(label); + labels.push(format!("{clean}_{idx:02}")); + } + + let mut out = String::from("r,total_model,total_larch,diff"); + for label in &labels { + out.push_str(&format!(",{label}")); + } + out.push('\n'); + + for i in 0..model.r.len() { + out.push_str(&format!( + "{:.15e},{:.15e},{:.15e},{:.15e}", + model.r[i], + model.chir_mag[i], + larch.chir_mag[i], + model.chir_mag[i] - larch.chir_mag[i] + )); + for (_, chir_mag) in &contrib_r { + out.push_str(&format!(",{:.15e}", chir_mag[i])); + } + out.push('\n'); + } + + fs::write(path, out)?; + Ok(()) +} + +fn larch_truth_variables() -> FitVariables { + let mut vars = FitVariables::new(); + vars.insert("amp", FitVariable::new(0.92, false)); + vars.insert("de0", FitVariable::new(1.4, false)); + vars.insert("sig2", FitVariable::new(0.0031, false)); + vars.insert("dr", FitVariable::new(0.011, false)); + vars.insert("amp2", FitVariable::new(0.35, false)); + vars.insert("dr2", FitVariable::new(0.0025, false)); + vars +} + +fn export_path_builder() -> Result<(), Box> { + let base_path = feffpath( + fixture_path("feffcu01.dat").to_str().ok_or("invalid path")?, + FeffFlavor::Feff85L, + )? + .set_s02("amp") + .set_e0("de0") + .set_deltar("dr"); + let path = base_path.set_sigma2("sig2"); + + let (k, larch) = load_two_column(&fixture_path("feff_path_chi_larch_ref.txt"))?; + let model = path2chi(&path, &larch_truth_variables(), &k)?; + write_comparison_csv(&output_dir().join("01_path_builder.csv"), &k, &model, &larch)?; + write_rspace_comparison_csv( + &output_dir().join("01_path_builder_rspace.csv"), + &k, + &model, + &larch, + )?; + write_rspace_contrib_csv( + &output_dir().join("01_path_builder_rspace_contrib.csv"), + &k, + &model, + &larch, + &[(path.label.clone(), model.clone())], + ) +} + +fn export_multi_path_model() -> Result<(), Box> { + let path1 = feffpath( + fixture_path("feffcu01.dat").to_str().ok_or("invalid path")?, + FeffFlavor::Feff85L, + )? + .set_s02("amp") + .set_e0("de0") + .set_sigma2("sig2") + .set_deltar("dr"); + let path2 = feffpath( + fixture_path("feff0002.dat").to_str().ok_or("invalid path")?, + FeffFlavor::Feff85L, + )? + .set_s02("amp2") + .set_e0("de0") + .set_sigma2("sig2") + .set_deltar("dr2"); + + let (k, larch) = load_two_column(&fixture_path("feff_ff2chi_larch_ref.txt"))?; + let out = ff2chi(&[path1, path2], &larch_truth_variables(), &k)?; + let model = out.chi.clone(); + write_comparison_csv(&output_dir().join("02_multi_path_model.csv"), &k, &model, &larch)?; + write_rspace_comparison_csv( + &output_dir().join("02_multi_path_model_rspace.csv"), + &k, + &model, + &larch, + )?; + write_rspace_contrib_csv( + &output_dir().join("02_multi_path_model_rspace_contrib.csv"), + &k, + &model, + &larch, + &out.path_chi, + ) +} + +fn export_single_dataset_fit() -> Result<(), Box> { + let path = feffpath( + fixture_path("feffcu01.dat").to_str().ok_or("invalid path")?, + FeffFlavor::Feff85L, + )? + .set_s02("amp") + .set_e0("de0") + .set_sigma2("sig2") + .set_deltar("dr"); + let (k, larch) = load_two_column(&fixture_path("feff_fit_target_larch.txt"))?; + + let result = FeffFit::new() + .data(&k, &larch) + .add_path(path) + .set_inits([("amp", 0.95), ("de0", 0.0), ("sig2", 0.002), ("dr", 0.0)]) + .set_bounds("sig2", 0.0, 0.02) + .krange(2.0, 14.0) + .rrange(1.0, 3.0) + .fit()?; + write_comparison_csv( + &output_dir().join("03_single_dataset_fit.csv"), + &k, + &result.model_chi, + &larch, + )?; + write_rspace_comparison_csv( + &output_dir().join("03_single_dataset_fit_rspace.csv"), + &k, + &result.model_chi, + &larch, + )?; + write_rspace_contrib_csv( + &output_dir().join("03_single_dataset_fit_rspace_contrib.csv"), + &k, + &result.model_chi, + &larch, + &result + .path_contributions + .iter() + .map(|p| (p.label.clone(), p.chi.clone())) + .collect::>(), + ) +} + +fn export_clone_template() -> Result<(), Box> { + let path1 = feffpath( + fixture_path("feffcu01.dat").to_str().ok_or("invalid path")?, + FeffFlavor::Feff85L, + )? + .set_s02("amp") + .set_e0("de0") + .set_sigma2("sig2") + .set_deltar("dr"); + let path2 = feffpath( + fixture_path("feff0002.dat").to_str().ok_or("invalid path")?, + FeffFlavor::Feff85L, + )? + .set_s02("amp2") + .set_e0("de0") + .set_sigma2("sig2") + .set_deltar("dr2"); + + let base = FeffFit::new() + .params([ + Param::new("amp", 0.95), + Param::new("de0", 0.0), + Param::new("sig2", 0.002).bounds(0.0, 0.02), + Param::new("dr", 0.0), + Param::new("amp2", 0.2), + Param::new("dr2", 0.0), + ]) + .krange(2.0, 14.0) + .rrange(1.0, 3.0); + + let (k1, larch1) = load_two_column(&fixture_path("feff_path_chi_larch_ref.txt"))?; + let (k2, larch2) = load_two_column(&fixture_path("feff_ff2chi_larch_ref.txt"))?; + + let r1 = base + .clone() + .data(&k1, &larch1) + .add_path(path1.clone()) + .fit()?; + let r2 = base + .clone() + .data(&k2, &larch2) + .add_path(path1) + .add_path(path2) + .fit()?; + + write_comparison_csv( + &output_dir().join("04_clone_template_path.csv"), + &k1, + &r1.model_chi, + &larch1, + )?; + write_rspace_comparison_csv( + &output_dir().join("04_clone_template_path_rspace.csv"), + &k1, + &r1.model_chi, + &larch1, + )?; + write_rspace_contrib_csv( + &output_dir().join("04_clone_template_path_rspace_contrib.csv"), + &k1, + &r1.model_chi, + &larch1, + &r1.path_contributions + .iter() + .map(|p| (p.label.clone(), p.chi.clone())) + .collect::>(), + )?; + write_comparison_csv( + &output_dir().join("05_clone_template_ff2chi.csv"), + &k2, + &r2.model_chi, + &larch2, + )?; + write_rspace_comparison_csv( + &output_dir().join("05_clone_template_ff2chi_rspace.csv"), + &k2, + &r2.model_chi, + &larch2, + )?; + write_rspace_contrib_csv( + &output_dir().join("05_clone_template_ff2chi_rspace_contrib.csv"), + &k2, + &r2.model_chi, + &larch2, + &r2.path_contributions + .iter() + .map(|p| (p.label.clone(), p.chi.clone())) + .collect::>(), + ) +} + +fn export_multi_dataset() -> Result<(), Box> { + let ds1_path = feffpath( + fixture_path("feffcu01.dat").to_str().ok_or("invalid path")?, + FeffFlavor::Feff85L, + )? + .set_s02("amp") + .set_e0("de0") + .set_sigma2("sig2") + .set_deltar("dr"); + let ds2_path1 = feffpath( + fixture_path("feffcu01.dat").to_str().ok_or("invalid path")?, + FeffFlavor::Feff85L, + )? + .set_s02("amp") + .set_e0("de0") + .set_sigma2("sig2") + .set_deltar("dr"); + let ds2_path2 = feffpath( + fixture_path("feff0002.dat").to_str().ok_or("invalid path")?, + FeffFlavor::Feff85L, + )? + .set_s02("amp2") + .set_e0("de0") + .set_sigma2("sig2") + .set_deltar("dr2"); + + let (k1, larch1) = load_two_column(&fixture_path("feff_path_chi_larch_ref.txt"))?; + let (k2, larch2) = load_two_column(&fixture_path("feff_ff2chi_larch_ref.txt"))?; + + let ds1 = FeffFitDataset::new() + .data(&k1, &larch1) + .add_path(ds1_path) + .krange(2.0, 14.0) + .rrange(1.0, 3.0); + let ds2 = FeffFitDataset::new() + .data(&k2, &larch2) + .add_path(ds2_path1) + .add_path(ds2_path2) + .krange(2.0, 14.0) + .rrange(1.0, 3.0); + + let result = FeffFit::new() + .add_dataset(ds1) + .add_dataset(ds2) + .set_inits([ + ("amp", 0.95), + ("de0", 0.0), + ("sig2", 0.002), + ("dr", 0.0), + ("amp2", 0.2), + ("dr2", 0.0), + ]) + .set_bounds("sig2", 0.0, 0.02) + .fit()?; + + write_comparison_csv( + &output_dir().join("06_multi_dataset_ds1.csv"), + &k1, + &result.datasets[0].model_chi, + &larch1, + )?; + write_rspace_comparison_csv( + &output_dir().join("06_multi_dataset_ds1_rspace.csv"), + &k1, + &result.datasets[0].model_chi, + &larch1, + )?; + write_rspace_contrib_csv( + &output_dir().join("06_multi_dataset_ds1_rspace_contrib.csv"), + &k1, + &result.datasets[0].model_chi, + &larch1, + &result.datasets[0] + .path_contributions + .iter() + .map(|p| (p.label.clone(), p.chi.clone())) + .collect::>(), + )?; + write_comparison_csv( + &output_dir().join("07_multi_dataset_ds2.csv"), + &k2, + &result.datasets[1].model_chi, + &larch2, + )?; + write_rspace_comparison_csv( + &output_dir().join("07_multi_dataset_ds2_rspace.csv"), + &k2, + &result.datasets[1].model_chi, + &larch2, + )?; + write_rspace_contrib_csv( + &output_dir().join("07_multi_dataset_ds2_rspace_contrib.csv"), + &k2, + &result.datasets[1].model_chi, + &larch2, + &result.datasets[1] + .path_contributions + .iter() + .map(|p| (p.label.clone(), p.chi.clone())) + .collect::>(), + ) +} + +fn main() -> Result<(), Box> { + fs::create_dir_all(output_dir())?; + + export_path_builder()?; + export_multi_path_model()?; + export_single_dataset_fit()?; + export_clone_template()?; + export_multi_dataset()?; + + println!( + "Wrote comparison CSV files to {}", + output_dir().canonicalize()?.display() + ); + Ok(()) +} diff --git a/crates/xraytsubaki/src/prelude.rs b/crates/xraytsubaki/src/prelude.rs index 961b3a1..b3ab180 100644 --- a/crates/xraytsubaki/src/prelude.rs +++ b/crates/xraytsubaki/src/prelude.rs @@ -3,11 +3,11 @@ pub use crate::xafs::xasspectrum::XASSpectrum; pub use crate::xafs::background::{AUTOBKClampScalePolicy, AUTOBKSolver, BackgroundMethod, AUTOBK}; pub use crate::xafs::fitting::{ - feffit, feffpath, ff2chi, parse_feff_path_file, path2chi, resolve_feff_commands, run_feff, - run_feff_and_load_paths, FeffDat, FeffExecutionMode, FeffFitDataset, FeffFitResult, - FeffFitTransform, FeffFlavor, FeffModuleCommand, FeffPathModel, FeffResolvedCommands, - FeffRunRequest, FeffRunResult, FitSpace, FitVariable, FitVariables, PathContribution, - PathParamSpec, + feffit, feffit_multi, feffpath, ff2chi, parse_feff_path_file, path2chi, resolve_feff_commands, + run_feff, run_feff_and_load_paths, DatasetResult, FeffDat, FeffExecutionMode, FeffFit, + FeffFitDataset, FeffFitResult, FeffFitTransform, FeffFlavor, FeffModuleCommand, FeffPathModel, + FeffResolvedCommands, FeffRunRequest, FeffRunResult, FitSpace, FitVariable, FitVariables, + FitWarning, Param, PathContribution, PathParamSpec, }; pub use crate::xafs::io; pub use crate::xafs::lmutils::LMParameters; diff --git a/crates/xraytsubaki/src/xafs/fitting/builder.rs b/crates/xraytsubaki/src/xafs/fitting/builder.rs new file mode 100644 index 0000000..b980e14 --- /dev/null +++ b/crates/xraytsubaki/src/xafs/fitting/builder.rs @@ -0,0 +1,505 @@ +use std::collections::BTreeMap; + +use nalgebra::DVector; + +use super::errors::FittingError; +use super::solver; +use super::types::{ + FeffFitDataset, FeffFitResult, FeffFlavor, FeffPathModel, FitVariable, FitVariables, + FitWarning, Param, PathParamSpec, +}; +use super::variables::try_extract_symbols; +use crate::xafs::xafsutils::FTWindow; + +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +enum ParamRole { + S02, + Degen, + Sigma2, + E0, + Ei, + Deltar, + Third, + Fourth, + UntypedExpr, +} + +impl ParamRole { + fn default_value(self) -> f64 { + match self { + Self::S02 | Self::Degen => 1.0, + Self::Sigma2 => 0.003, + Self::E0 | Self::Ei | Self::Deltar | Self::Third | Self::Fourth | Self::UntypedExpr => { + 0.0 + } + } + } + + fn as_str(self) -> &'static str { + match self { + Self::S02 => "s02", + Self::Degen => "degen", + Self::Sigma2 => "sigma2", + Self::E0 => "e0", + Self::Ei => "ei", + Self::Deltar => "deltar", + Self::Third => "third", + Self::Fourth => "fourth", + Self::UntypedExpr => "expr", + } + } +} + +fn path_param_expr(spec: &PathParamSpec) -> Option<&str> { + match spec { + PathParamSpec::Expression(expr) => Some(expr.as_str()), + PathParamSpec::Value(_) => None, + } +} + +#[derive(Debug, Clone)] +pub struct FeffFit { + datasets: Vec, + variables: FitVariables, + flavor: FeffFlavor, + default_dataset: FeffFitDataset, + has_default: bool, +} + +impl Default for FeffFit { + fn default() -> Self { + Self { + datasets: Vec::new(), + variables: FitVariables::new(), + flavor: FeffFlavor::Feff85L, + default_dataset: FeffFitDataset::default(), + has_default: false, + } + } +} + +impl FeffFit { + pub fn new() -> Self { + Self::default() + } + + pub fn data(mut self, k: &DVector, chi: &DVector) -> Self { + self.default_dataset = self.default_dataset.data(k, chi); + self.has_default = true; + self + } + + pub fn epsilon_k(mut self, value: f64) -> Self { + self.default_dataset = self.default_dataset.epsilon_k(value); + self.has_default = true; + self + } + + pub fn add_path(mut self, path: FeffPathModel) -> Self { + self.default_dataset = self.default_dataset.add_path(path); + self.has_default = true; + self + } + + pub fn krange(mut self, kmin: f64, kmax: f64) -> Self { + self.default_dataset = self.default_dataset.krange(kmin, kmax); + self.has_default = true; + self + } + + pub fn rrange(mut self, rmin: f64, rmax: f64) -> Self { + self.default_dataset = self.default_dataset.rrange(rmin, rmax); + self.has_default = true; + self + } + + pub fn kweight(mut self, value: f64) -> Self { + self.default_dataset = self.default_dataset.kweight(value); + self.has_default = true; + self + } + + pub fn dk(mut self, value: f64) -> Self { + self.default_dataset = self.default_dataset.dk(value); + self.has_default = true; + self + } + + pub fn window(mut self, value: FTWindow) -> Self { + self.default_dataset = self.default_dataset.window(value); + self.has_default = true; + self + } + + pub fn rwindow(mut self, value: FTWindow) -> Self { + self.default_dataset = self.default_dataset.rwindow(value); + self.has_default = true; + self + } + + pub fn dr(mut self, value: f64) -> Self { + self.default_dataset = self.default_dataset.dr(value); + self.has_default = true; + self + } + + pub fn add_dataset(mut self, dataset: FeffFitDataset) -> Self { + self.datasets.push(dataset); + self + } + + pub fn set_init(mut self, name: impl Into, value: f64) -> Self { + let name = name.into(); + let entry = self + .variables + .vars + .entry(name) + .or_insert_with(|| FitVariable::new(value, true)); + entry.value = value; + entry.init_value = value; + entry.vary = true; + if entry.expr.is_some() { + entry.expr = None; + } + self + } + + pub fn set_inits(mut self, inits: I) -> Self + where + I: IntoIterator, + S: Into, + { + for (name, value) in inits { + self = self.set_init(name, value); + } + self + } + + pub fn set_bounds(mut self, name: impl Into, min: f64, max: f64) -> Self { + let name = name.into(); + let entry = self + .variables + .vars + .entry(name) + .or_insert_with(|| FitVariable::new(0.0, true)); + entry.min = Some(min); + entry.max = Some(max); + self + } + + pub fn fix(mut self, name: impl Into, value: f64) -> Self { + let name = name.into(); + let entry = self + .variables + .vars + .entry(name) + .or_insert_with(|| FitVariable::new(value, false)); + entry.value = value; + entry.init_value = value; + entry.vary = false; + entry.expr = None; + self + } + + pub fn var_expr(mut self, name: impl Into, expr: impl Into) -> Self { + let name = name.into(); + let expr = expr.into(); + let entry = self + .variables + .vars + .entry(name) + .or_insert_with(|| FitVariable::new(0.0, false)); + entry.expr = Some(expr); + entry.vary = false; + self + } + + pub fn params(mut self, params: I) -> Self + where + I: IntoIterator, + { + for param in params { + self.variables + .vars + .insert(param.name.clone(), param.to_fit_variable()); + } + self + } + + pub fn set_flavor(mut self, flavor: FeffFlavor) -> Self { + self.flavor = flavor; + self + } + + fn collect_default_dataset(&self, datasets: &mut Vec) { + let has_data = !self.default_dataset.k.is_empty() || !self.default_dataset.chi.is_empty(); + let has_paths = !self.default_dataset.paths.is_empty(); + if self.has_default && (has_data || has_paths) { + datasets.push(self.default_dataset.clone()); + } + } + + fn maybe_infer_symbols_for_expr( + expr: &str, + role: ParamRole, + inferred: &mut BTreeMap, + warnings: &mut Vec, + ) -> Result<(), FittingError> { + for symbol in try_extract_symbols(expr)? { + let default_value = role.default_value(); + if let Some((existing_role, existing_default)) = inferred.get(&symbol) { + if (*existing_default - default_value).abs() > f64::EPSILON { + warnings.push(FitWarning { + symbol: symbol.clone(), + inferred_from: existing_role.as_str().to_string(), + default_value: *existing_default, + message: format!( + "conflicting inferred defaults: '{}'={} vs '{}'={}, kept first", + existing_role.as_str(), + existing_default, + role.as_str(), + default_value + ), + }); + } + continue; + } + inferred.insert(symbol, (role, default_value)); + } + Ok(()) + } + + fn auto_discover_variables( + &self, + datasets: &[FeffFitDataset], + vars: &mut FitVariables, + warnings: &mut Vec, + ) -> Result<(), FittingError> { + let mut inferred = BTreeMap::new(); + + for dataset in datasets { + for path in &dataset.paths { + let path_roles = [ + (path_param_expr(&path.s02), ParamRole::S02), + (path_param_expr(&path.degen), ParamRole::Degen), + (path_param_expr(&path.sigma2), ParamRole::Sigma2), + (path_param_expr(&path.e0), ParamRole::E0), + (path_param_expr(&path.ei), ParamRole::Ei), + (path_param_expr(&path.deltar), ParamRole::Deltar), + (path_param_expr(&path.third), ParamRole::Third), + (path_param_expr(&path.fourth), ParamRole::Fourth), + ]; + + for (expr, role) in path_roles { + if let Some(expr) = expr { + Self::maybe_infer_symbols_for_expr(expr, role, &mut inferred, warnings)?; + } + } + } + } + + for (symbol, (role, default_value)) in inferred.iter() { + if vars.vars.contains_key(symbol) { + continue; + } + vars.insert(symbol.clone(), FitVariable::new(*default_value, true)); + warnings.push(FitWarning { + symbol: symbol.clone(), + inferred_from: role.as_str().to_string(), + default_value: *default_value, + message: "auto-created symbol with typed default".to_string(), + }); + } + + let var_exprs = vars + .vars + .iter() + .filter_map(|(name, var)| var.expr.as_ref().map(|expr| (name.clone(), expr.clone()))) + .collect::>(); + for (_name, expr) in var_exprs { + for symbol in try_extract_symbols(&expr)? { + if vars.vars.contains_key(&symbol) { + continue; + } + let default_value = ParamRole::UntypedExpr.default_value(); + vars.insert(symbol.clone(), FitVariable::new(default_value, true)); + warnings.push(FitWarning { + symbol, + inferred_from: ParamRole::UntypedExpr.as_str().to_string(), + default_value, + message: "auto-created symbol with untyped expression default".to_string(), + }); + } + } + + Ok(()) + } + + pub fn fit(&self) -> Result { + let _ = self.flavor; + let mut datasets = self.datasets.clone(); + self.collect_default_dataset(&mut datasets); + if datasets.is_empty() { + return Err(FittingError::InvalidDataset { + reason: "fit requires at least one dataset".to_string(), + }); + } + + let mut vars = self.variables.clone(); + let mut warnings = Vec::new(); + self.auto_discover_variables(&datasets, &mut vars, &mut warnings)?; + + let mut result = solver::feffit_multi(&datasets, &vars)?; + result.warnings.extend(warnings); + Ok(result) + } +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::xafs::fitting::ff2chi; + use crate::xafs::fitting::path_model::feffpath; + use crate::xafs::fitting::types::{FeffFlavor, PathParamSpec}; + use crate::xafs::tests::TOP_DIR; + + #[test] + fn test_auto_discovery_uses_typed_defaults() { + let path = FeffPathModel::default() + .set_s02("amp") + .set_sigma2("sig2") + .set_e0("de0") + .set_deltar("dr"); + let dataset = FeffFitDataset::new() + .data(&DVector::zeros(3), &DVector::zeros(3)) + .add_path(path); + let fit = FeffFit::new().add_dataset(dataset); + + let mut vars = FitVariables::new(); + let mut warnings = Vec::new(); + fit.auto_discover_variables(&fit.datasets, &mut vars, &mut warnings) + .unwrap(); + + assert_eq!(vars.get("amp").unwrap().value, 1.0); + assert_eq!(vars.get("sig2").unwrap().value, 0.003); + assert_eq!(vars.get("de0").unwrap().value, 0.0); + assert_eq!(vars.get("dr").unwrap().value, 0.0); + assert!(!warnings.is_empty()); + } + + #[test] + fn test_auto_discovery_warns_on_conflicting_defaults() { + let path = FeffPathModel::default() + .set_s02("shared") + .set_sigma2("shared"); + let dataset = FeffFitDataset::new() + .data(&DVector::zeros(3), &DVector::zeros(3)) + .add_path(path); + let fit = FeffFit::new().add_dataset(dataset); + + let mut vars = FitVariables::new(); + let mut warnings = Vec::new(); + fit.auto_discover_variables(&fit.datasets, &mut vars, &mut warnings) + .unwrap(); + + assert_eq!(vars.get("shared").unwrap().value, 1.0); + assert!(warnings.iter().any(|w| w.message.contains("conflicting"))); + } + + #[test] + fn test_auto_discovery_untyped_expr_defaults_to_zero() { + let fit = FeffFit::new().var_expr("scale", "missing * 2"); + let mut vars = fit.variables.clone(); + let mut warnings = Vec::new(); + fit.auto_discover_variables(&[], &mut vars, &mut warnings) + .unwrap(); + + assert_eq!(vars.get("missing").unwrap().value, 0.0); + assert!(warnings + .iter() + .any(|w| w.inferred_from == ParamRole::UntypedExpr.as_str())); + } + + #[test] + fn test_builder_single_dataset_fit() { + let pathfile = format!("{TOP_DIR}/tests/testfiles/feffcu01.dat"); + let path = feffpath(pathfile, FeffFlavor::Feff85L) + .unwrap() + .set_s02("amp") + .set_e0("de0") + .set_sigma2("sig2") + .set_deltar("dr"); + + let k = DVector::from_iterator(260, (0..260).map(|i| 0.05 * (i as f64 + 1.0))); + let mut truth = FitVariables::new(); + truth.insert("amp", FitVariable::new(0.9, false)); + truth.insert("de0", FitVariable::new(1.1, false)); + truth.insert("sig2", FitVariable::new(0.0030, false)); + truth.insert("dr", FitVariable::new(0.01, false)); + + let synthetic = ff2chi(&[path.clone()], &truth, &k).unwrap(); + let result = FeffFit::new() + .data(&k, &synthetic.chi) + .add_path(path) + .set_inits([("amp", 0.95), ("de0", 0.0), ("sig2", 0.002), ("dr", 0.0)]) + .set_bounds("sig2", 0.0, 0.02) + .krange(2.0, 14.0) + .rrange(1.0, 3.0) + .fit() + .unwrap(); + + assert!(result.chi_square.is_finite()); + assert_eq!(result.datasets.len(), 1); + assert!(!result.path_contributions.is_empty()); + } + + #[test] + fn test_builder_multi_dataset_fit() { + let pathfile = format!("{TOP_DIR}/tests/testfiles/feffcu01.dat"); + let mut path1 = feffpath(pathfile.clone(), FeffFlavor::Feff85L).unwrap(); + path1.s02 = PathParamSpec::Expression("amp".to_string()); + path1.e0 = PathParamSpec::Expression("de0".to_string()); + path1.sigma2 = PathParamSpec::Expression("sig2".to_string()); + path1.deltar = PathParamSpec::Expression("dr".to_string()); + let path2 = path1.clone().set_sigma2("sig2_2"); + + let k1 = DVector::from_iterator(220, (0..220).map(|i| 0.05 * (i as f64 + 1.0))); + let k2 = DVector::from_iterator(240, (0..240).map(|i| 0.05 * (i as f64 + 1.0))); + + let mut truth = FitVariables::new(); + truth.insert("amp", FitVariable::new(0.9, false)); + truth.insert("de0", FitVariable::new(1.2, false)); + truth.insert("sig2", FitVariable::new(0.003, false)); + truth.insert("sig2_2", FitVariable::new(0.004, false)); + truth.insert("dr", FitVariable::new(0.01, false)); + + let chi1 = ff2chi(&[path1.clone()], &truth, &k1).unwrap().chi; + let chi2 = ff2chi(&[path2.clone()], &truth, &k2).unwrap().chi; + let ds1 = FeffFitDataset::new() + .data(&k1, &chi1) + .add_path(path1) + .krange(2.0, 14.0) + .rrange(1.0, 3.0); + let ds2 = FeffFitDataset::new() + .data(&k2, &chi2) + .add_path(path2) + .krange(2.0, 14.0) + .rrange(1.0, 3.0); + + let result = FeffFit::new() + .add_dataset(ds1) + .add_dataset(ds2) + .set_inits([ + ("amp", 0.95), + ("de0", 0.0), + ("sig2", 0.002), + ("sig2_2", 0.002), + ("dr", 0.0), + ]) + .fit() + .unwrap(); + + assert!(result.chi_square.is_finite()); + assert_eq!(result.datasets.len(), 2); + } +} diff --git a/crates/xraytsubaki/src/xafs/fitting/expression.pest b/crates/xraytsubaki/src/xafs/fitting/expression.pest new file mode 100644 index 0000000..e91e95c --- /dev/null +++ b/crates/xraytsubaki/src/xafs/fitting/expression.pest @@ -0,0 +1,22 @@ +WHITESPACE = _{ " " | "\t" | "\r" | "\n" } + +expression = { sum } +sum = { product ~ (add_op ~ product)* } +add_op = { "+" | "-" } + +product = { power ~ (mul_op ~ power)* } +mul_op = { "*" | "/" } + +power = { unary ~ (pow_op ~ power)? } +pow_op = { "^" } + +unary = { sign* ~ primary } +sign = { "+" | "-" } + +primary = { function_call | constant | identifier | number | "(" ~ expression ~ ")" } +function_call = { identifier ~ "(" ~ expr_list? ~ ")" } +expr_list = { expression ~ ("," ~ expression)* } + +constant = { "pi" | "e" } +identifier = @{ (ASCII_ALPHA | "_") ~ (ASCII_ALPHANUMERIC | "_")* } +number = @{ (ASCII_DIGIT+ ~ ("." ~ ASCII_DIGIT*)? | "." ~ ASCII_DIGIT+) ~ (("e" | "E") ~ ("+" | "-")? ~ ASCII_DIGIT+)? } diff --git a/crates/xraytsubaki/src/xafs/fitting/expression.rs b/crates/xraytsubaki/src/xafs/fitting/expression.rs new file mode 100644 index 0000000..fa25e70 --- /dev/null +++ b/crates/xraytsubaki/src/xafs/fitting/expression.rs @@ -0,0 +1,405 @@ +use std::collections::{HashMap, HashSet}; +use std::sync::{Mutex, OnceLock}; + +use pest::iterators::Pair; +use pest::Parser; +use pest_derive::Parser; + +use super::errors::FittingError; + +#[derive(Parser)] +#[grammar = "xafs/fitting/expression.pest"] +struct ExprGrammar; + +#[derive(Debug, Clone)] +enum UnaryOp { + Neg, +} + +#[derive(Debug, Clone)] +enum BinaryOp { + Add, + Sub, + Mul, + Div, + Pow, +} + +#[derive(Debug, Clone)] +enum Expr { + Number(f64), + Symbol(String), + Unary { + op: UnaryOp, + value: Box, + }, + Binary { + op: BinaryOp, + lhs: Box, + rhs: Box, + }, + Call { + name: String, + args: Vec, + }, +} + +static CACHE: OnceLock>> = OnceLock::new(); + +fn parse_error(expr: &str, reason: impl Into) -> FittingError { + FittingError::ExpressionFailed { + expr: expr.to_string(), + reason: reason.into(), + } +} + +fn parse_expr(expr: &str) -> Result { + let mut pairs = ExprGrammar::parse(Rule::expression, expr) + .map_err(|err| parse_error(expr, format!("parse error: {err}")))?; + let pair = pairs + .next() + .ok_or_else(|| parse_error(expr, "empty expression"))?; + build_expr(expr, pair) +} + +fn cache() -> &'static Mutex> { + CACHE.get_or_init(|| Mutex::new(HashMap::new())) +} + +fn parse_cached(expr: &str) -> Result { + let cached = cache() + .lock() + .map_err(|_| parse_error(expr, "expression cache lock poisoned"))? + .get(expr) + .cloned(); + if let Some(ast) = cached { + return Ok(ast); + } + + let parsed = parse_expr(expr)?; + cache() + .lock() + .map_err(|_| parse_error(expr, "expression cache lock poisoned"))? + .insert(expr.to_string(), parsed.clone()); + Ok(parsed) +} + +fn build_expr(source: &str, pair: Pair) -> Result { + match pair.as_rule() { + Rule::expression => { + let inner = pair + .into_inner() + .next() + .ok_or_else(|| parse_error(source, "missing expression node"))?; + build_expr(source, inner) + } + Rule::sum => build_left_assoc(source, pair, BinaryOp::Add, BinaryOp::Sub), + Rule::product => build_left_assoc(source, pair, BinaryOp::Mul, BinaryOp::Div), + Rule::power => { + let mut inner = pair.into_inner(); + let lhs = inner + .next() + .ok_or_else(|| parse_error(source, "missing power lhs"))?; + let lhs_expr = build_expr(source, lhs)?; + if let Some(op) = inner.next() { + if op.as_rule() != Rule::pow_op { + return Err(parse_error(source, "invalid power operator")); + } + let rhs = inner + .next() + .ok_or_else(|| parse_error(source, "missing power rhs"))?; + let rhs_expr = build_expr(source, rhs)?; + Ok(Expr::Binary { + op: BinaryOp::Pow, + lhs: Box::new(lhs_expr), + rhs: Box::new(rhs_expr), + }) + } else { + Ok(lhs_expr) + } + } + Rule::unary => { + let mut sign_flip = false; + let mut primary = None; + for item in pair.into_inner() { + if item.as_rule() == Rule::sign { + if item.as_str() == "-" { + sign_flip = !sign_flip; + } + } else { + primary = Some(item); + } + } + let primary = + primary.ok_or_else(|| parse_error(source, "missing primary after unary sign"))?; + let mut expr = build_expr(source, primary)?; + if sign_flip { + expr = Expr::Unary { + op: UnaryOp::Neg, + value: Box::new(expr), + }; + } + Ok(expr) + } + Rule::primary => { + let inner = pair + .into_inner() + .next() + .ok_or_else(|| parse_error(source, "missing primary expression"))?; + build_expr(source, inner) + } + Rule::function_call => { + let mut inner = pair.into_inner(); + let name = inner + .next() + .ok_or_else(|| parse_error(source, "missing function name"))? + .as_str() + .to_string(); + let args = if let Some(arglist) = inner.next() { + if arglist.as_rule() != Rule::expr_list { + return Err(parse_error(source, "invalid function arglist")); + } + arglist + .into_inner() + .filter(|arg| arg.as_rule() == Rule::expression) + .map(|arg| build_expr(source, arg)) + .collect::, _>>()? + } else { + Vec::new() + }; + Ok(Expr::Call { name, args }) + } + Rule::constant => match pair.as_str() { + "pi" => Ok(Expr::Number(std::f64::consts::PI)), + "e" => Ok(Expr::Number(std::f64::consts::E)), + other => Err(parse_error( + source, + format!("unsupported constant '{other}'"), + )), + }, + Rule::identifier => Ok(Expr::Symbol(pair.as_str().to_string())), + Rule::number => { + let parsed = pair.as_str().parse::().map_err(|_| { + parse_error( + source, + format!("invalid numeric literal '{}'", pair.as_str()), + ) + })?; + Ok(Expr::Number(parsed)) + } + _ => Err(parse_error( + source, + format!("unexpected parse rule {:?}", pair.as_rule()), + )), + } +} + +fn build_left_assoc( + source: &str, + pair: Pair, + add_variant: BinaryOp, + sub_variant: BinaryOp, +) -> Result { + let mut inner = pair.into_inner(); + let first = inner + .next() + .ok_or_else(|| parse_error(source, "missing lhs expression"))?; + let mut expr = build_expr(source, first)?; + + while let Some(op) = inner.next() { + let rhs = inner + .next() + .ok_or_else(|| parse_error(source, "missing rhs expression"))?; + let op = match op.as_str() { + "+" | "*" => add_variant.clone(), + "-" | "/" => sub_variant.clone(), + other => { + return Err(parse_error( + source, + format!("unsupported binary operator '{other}'"), + )) + } + }; + expr = Expr::Binary { + op, + lhs: Box::new(expr), + rhs: Box::new(build_expr(source, rhs)?), + }; + } + + Ok(expr) +} + +fn eval_call(expr: &str, name: &str, args: &[f64]) -> Result { + let one_arg = |f: fn(f64) -> f64| -> Result { + if args.len() != 1 { + return Err(parse_error( + expr, + format!("function '{name}' expects 1 argument, got {}", args.len()), + )); + } + Ok(f(args[0])) + }; + let two_arg = |f: fn(f64, f64) -> f64| -> Result { + if args.len() != 2 { + return Err(parse_error( + expr, + format!("function '{name}' expects 2 arguments, got {}", args.len()), + )); + } + Ok(f(args[0], args[1])) + }; + + match name { + "abs" => one_arg(f64::abs), + "exp" => one_arg(f64::exp), + "log" => one_arg(f64::ln), + "log10" => one_arg(f64::log10), + "sqrt" => one_arg(f64::sqrt), + "sin" => one_arg(f64::sin), + "cos" => one_arg(f64::cos), + "tan" => one_arg(f64::tan), + "asin" => one_arg(f64::asin), + "acos" => one_arg(f64::acos), + "atan" => one_arg(f64::atan), + "sinh" => one_arg(f64::sinh), + "cosh" => one_arg(f64::cosh), + "tanh" => one_arg(f64::tanh), + "ceil" => one_arg(f64::ceil), + "floor" => one_arg(f64::floor), + "round" => one_arg(f64::round), + "min" => two_arg(f64::min), + "max" => two_arg(f64::max), + "atan2" => two_arg(f64::atan2), + _ => Err(parse_error(expr, format!("unsupported function '{name}'"))), + } +} + +fn eval_ast(expr: &str, ast: &Expr, resolver: &mut F) -> Result +where + F: FnMut(&str) -> Result, +{ + match ast { + Expr::Number(v) => Ok(*v), + Expr::Symbol(name) => resolver(name).map_err(|err| match err { + FittingError::UndefinedSymbol { .. } | FittingError::CyclicExpression { .. } => err, + other => parse_error(expr, other.to_string()), + }), + Expr::Unary { op, value } => { + let v = eval_ast(expr, value, resolver)?; + match op { + UnaryOp::Neg => Ok(-v), + } + } + Expr::Binary { op, lhs, rhs } => { + let l = eval_ast(expr, lhs, resolver)?; + let r = eval_ast(expr, rhs, resolver)?; + match op { + BinaryOp::Add => Ok(l + r), + BinaryOp::Sub => Ok(l - r), + BinaryOp::Mul => Ok(l * r), + BinaryOp::Div => { + if r.abs() < f64::EPSILON { + return Err(parse_error(expr, "division by zero")); + } + Ok(l / r) + } + BinaryOp::Pow => Ok(l.powf(r)), + } + } + Expr::Call { name, args } => { + let evaluated = args + .iter() + .map(|arg| eval_ast(expr, arg, resolver)) + .collect::, _>>()?; + eval_call(expr, name, &evaluated) + } + } +} + +pub fn eval_expression_with(expr: &str, mut resolver: F) -> Result +where + F: FnMut(&str) -> Result, +{ + let ast = parse_cached(expr)?; + let value = eval_ast(expr, &ast, &mut resolver)?; + if !value.is_finite() { + return Err(parse_error(expr, "expression produced non-finite value")); + } + Ok(value) +} + +fn collect_symbols(ast: &Expr, out: &mut Vec, seen: &mut HashSet) { + match ast { + Expr::Number(_) => {} + Expr::Symbol(symbol) => { + if symbol == "reff" { + return; + } + if seen.insert(symbol.clone()) { + out.push(symbol.clone()); + } + } + Expr::Unary { value, .. } => collect_symbols(value, out, seen), + Expr::Binary { lhs, rhs, .. } => { + collect_symbols(lhs, out, seen); + collect_symbols(rhs, out, seen); + } + Expr::Call { args, .. } => { + for arg in args { + collect_symbols(arg, out, seen); + } + } + } +} + +pub fn try_extract_symbols(expr: &str) -> Result, FittingError> { + let ast = parse_cached(expr)?; + let mut out = Vec::new(); + let mut seen = HashSet::new(); + collect_symbols(&ast, &mut out, &mut seen); + Ok(out) +} + +pub fn extract_symbols(expr: &str) -> Vec { + try_extract_symbols(expr).unwrap_or_default() +} + +#[cfg(test)] +mod tests { + use super::*; + use std::collections::BTreeMap; + + #[test] + fn test_eval_expression_functions_and_constants() { + let symbols = BTreeMap::::new(); + let value = eval_expression_with("max(2, sqrt(4)) + sin(pi/2) + log(e)", |name| { + symbols + .get(name) + .copied() + .ok_or_else(|| FittingError::UndefinedSymbol { + symbol: name.to_string(), + }) + }) + .unwrap(); + assert!((value - 4.0).abs() < 1.0e-12); + } + + #[test] + fn test_eval_expression_right_associative_power() { + let value = eval_expression_with("2^3^2", |_| Ok(0.0)).unwrap(); + assert!((value - 512.0).abs() < 1.0e-12); + } + + #[test] + fn test_eval_expression_unknown_function() { + let err = eval_expression_with("unknown(2.0)", |_| Ok(0.0)).unwrap_err(); + assert!(matches!(err, FittingError::ExpressionFailed { .. })); + } + + #[test] + fn test_extract_symbols_excludes_locals_and_constants() { + let symbols = try_extract_symbols("amp * sqrt(reff) + log(e) + s02").unwrap(); + assert_eq!(symbols, vec!["amp".to_string(), "s02".to_string()]); + } +} diff --git a/crates/xraytsubaki/src/xafs/fitting/mod.rs b/crates/xraytsubaki/src/xafs/fitting/mod.rs index a197c15..91d6d44 100644 --- a/crates/xraytsubaki/src/xafs/fitting/mod.rs +++ b/crates/xraytsubaki/src/xafs/fitting/mod.rs @@ -1,4 +1,6 @@ +pub mod builder; pub mod errors; +pub mod expression; pub mod feffdat; pub mod path_model; pub mod runner; @@ -9,12 +11,14 @@ pub mod variables; use nalgebra::DVector; +pub use builder::FeffFit; pub use errors::FittingError; pub use path_model::FF2ChiOutput; pub use types::{ - FeffDat, FeffExecutionMode, FeffFitDataset, FeffFitResult, FeffFitTransform, FeffFlavor, - FeffModuleCommand, FeffPathModel, FeffResolvedCommands, FeffRunRequest, FeffRunResult, - FitSpace, FitVariable, FitVariables, PathContribution, PathParamSpec, + DatasetResult, FeffDat, FeffExecutionMode, FeffFitDataset, FeffFitResult, FeffFitTransform, + FeffFlavor, FeffModuleCommand, FeffPathModel, FeffResolvedCommands, FeffRunRequest, + FeffRunResult, FitSpace, FitVariable, FitVariables, FitWarning, Param, PathContribution, + PathParamSpec, }; use crate::xafs::{Result, XAFSError}; @@ -47,6 +51,10 @@ pub fn feffit(dataset: &FeffFitDataset, vars: &FitVariables) -> Result Result { + solver::feffit_multi(datasets, vars).map_err(XAFSError::from) +} + pub fn resolve_feff_commands(request: &FeffRunRequest) -> Result { runner::resolve_feff_commands(request).map_err(XAFSError::from) } diff --git a/crates/xraytsubaki/src/xafs/fitting/solver.rs b/crates/xraytsubaki/src/xafs/fitting/solver.rs index cf97a6b..74dc29f 100644 --- a/crates/xraytsubaki/src/xafs/fitting/solver.rs +++ b/crates/xraytsubaki/src/xafs/fitting/solver.rs @@ -4,37 +4,38 @@ use nalgebra::{DMatrix, DVector, Dyn, Owned}; use super::errors::FittingError; use super::path_model::ff2chi; use super::transform::{ - apply_r_transform, residual_in_r_space, validate_transform, TransformOutput, + apply_r_transform, compute_n_idp, residual_in_r_space, validate_transform, TransformOutput, }; -use super::types::{FeffFitDataset, FeffFitResult, FitVariables, PathContribution}; +use super::types::{DatasetResult, FeffFitDataset, FeffFitResult, FitVariables, PathContribution}; pub fn feffit( dataset: &FeffFitDataset, variables: &FitVariables, ) -> Result { - validate_dataset(dataset)?; + feffit_multi(std::slice::from_ref(dataset), variables) +} + +pub fn feffit_multi( + datasets: &[FeffFitDataset], + variables: &FitVariables, +) -> Result { + if datasets.is_empty() { + return Err(FittingError::InvalidDataset { + reason: "fit requires at least one dataset".to_string(), + }); + } + for dataset in datasets { + validate_dataset(dataset)?; + } + let varying_names = variables.varying_names(); if varying_names.is_empty() { return Err(FittingError::NoVaryingVariables); } - let data_transform = apply_r_transform(&dataset.k, &dataset.chi, &dataset.transform)?; - - let problem = FeffFitProblem::new( - dataset.clone(), - variables.clone(), - varying_names, - data_transform, - )?; - + let problem = FeffFitMultiProblem::new(datasets.to_vec(), variables.clone(), varying_names)?; let (solved, _report) = LevenbergMarquardt::new().minimize(problem); - - let model_eval = solved.evaluate_model(&solved.variables)?; - let residual = residual_in_r_space( - &solved.data_transform, - &model_eval.model_transform, - solved.dataset.epsilon_k, - )?; + let residual = solved.current_residual()?; let mut solved_variables = solved.variables.clone(); let chi_square = residual.dot(&residual); @@ -52,59 +53,100 @@ pub fn feffit( } } - let path_contributions = model_eval - .path_chi + let model_evaluations = solved.evaluate_models(&solved.variables)?; + let mut datasets_out = Vec::with_capacity(solved.datasets.len()); + + let mut global_data_norm = 0.0; + let mut global_model_diff_norm = 0.0; + let mut global_n_idp = 0.0; + + for ((dataset, data_transform), model_eval) in solved + .datasets .iter() - .filter_map(|(label, chi)| { - let transformed = - apply_r_transform(&solved.dataset.k, chi, &solved.dataset.transform).ok()?; - Some(PathContribution { - label: label.clone(), - chi: chi.clone(), - chir_re: transformed.chir_re, - chir_im: transformed.chir_im, - chir_mag: transformed.chir_mag, + .zip(solved.data_transforms.iter()) + .zip(model_evaluations.into_iter()) + { + let ds_residual = residual_in_r_space( + data_transform, + &model_eval.model_transform, + dataset.epsilon_k, + )?; + let ds_chi_square = ds_residual.dot(&ds_residual); + let ds_n_data = ds_residual.len(); + let ds_dof = ds_n_data.saturating_sub(n_vary).max(1); + let ds_reduced_chi_square = ds_chi_square / ds_dof as f64; + + let data_norm = dataset.chi.iter().map(|value| value.abs()).sum::(); + let model_diff_norm = dataset + .chi + .iter() + .zip(model_eval.model_chi.iter()) + .map(|(d, m)| (d - m).abs()) + .sum::(); + global_data_norm += data_norm; + global_model_diff_norm += model_diff_norm; + let ds_r_factor = if data_norm.abs() < f64::EPSILON { + 0.0 + } else { + model_diff_norm / data_norm + }; + + let ds_n_idp = compute_n_idp(&dataset.transform); + global_n_idp += ds_n_idp; + + let path_contributions = model_eval + .path_chi + .iter() + .filter_map(|(label, chi)| { + let transformed = apply_r_transform(&dataset.k, chi, &dataset.transform).ok()?; + Some(PathContribution { + label: label.clone(), + chi: chi.clone(), + chir_re: transformed.chir_re, + chir_im: transformed.chir_im, + chir_mag: transformed.chir_mag, + }) }) - }) - .collect::>(); + .collect::>(); + + datasets_out.push(DatasetResult { + n_data: ds_n_data, + chi_square: ds_chi_square, + reduced_chi_square: ds_reduced_chi_square, + r_factor: ds_r_factor, + n_idp: ds_n_idp, + k: dataset.k.clone(), + data_chi: dataset.chi.clone(), + model_chi: model_eval.model_chi, + r: model_eval.model_transform.r.clone(), + data_chir_re: data_transform.chir_re.clone(), + data_chir_im: data_transform.chir_im.clone(), + model_chir_re: model_eval.model_transform.chir_re, + model_chir_im: model_eval.model_transform.chir_im, + model_chir_mag: model_eval.model_transform.chir_mag, + path_contributions, + }); + } - let data_norm = solved - .dataset - .chi - .iter() - .map(|value| value.abs()) - .sum::(); - let model_diff_norm = solved - .dataset - .chi - .iter() - .zip(model_eval.model_chi.iter()) - .map(|(d, m)| (d - m).abs()) - .sum::(); - let r_factor = if data_norm.abs() < f64::EPSILON { + let r_factor = if global_data_norm.abs() < f64::EPSILON { 0.0 } else { - model_diff_norm / data_norm + global_model_diff_norm / global_data_norm }; - Ok(FeffFitResult { + let mut out = FeffFitResult { variables: solved_variables, n_vary, n_data, chi_square, reduced_chi_square, r_factor, - k: solved.dataset.k.clone(), - data_chi: solved.dataset.chi.clone(), - model_chi: model_eval.model_chi, - r: model_eval.model_transform.r.clone(), - data_chir_re: solved.data_transform.chir_re.clone(), - data_chir_im: solved.data_transform.chir_im.clone(), - model_chir_re: model_eval.model_transform.chir_re, - model_chir_im: model_eval.model_transform.chir_im, - model_chir_mag: model_eval.model_transform.chir_mag, - path_contributions, - }) + datasets: datasets_out, + n_idp: global_n_idp, + ..FeffFitResult::default() + }; + out.sync_primary_dataset_fields(); + Ok(out) } fn validate_dataset(dataset: &FeffFitDataset) -> Result<(), FittingError> { @@ -148,39 +190,47 @@ struct ModelEvaluation { } #[derive(Clone)] -struct FeffFitProblem { - dataset: FeffFitDataset, +struct FeffFitMultiProblem { + datasets: Vec, + data_transforms: Vec, variables: FitVariables, variable_names: Vec, - data_transform: TransformOutput, residual_len: usize, } -impl FeffFitProblem { +impl FeffFitMultiProblem { fn new( - dataset: FeffFitDataset, + datasets: Vec, variables: FitVariables, variable_names: Vec, - data_transform: TransformOutput, ) -> Result { + let mut data_transforms = Vec::with_capacity(datasets.len()); + for dataset in &datasets { + data_transforms.push(apply_r_transform( + &dataset.k, + &dataset.chi, + &dataset.transform, + )?); + } + let mut problem = Self { - dataset, + datasets, + data_transforms, variables, variable_names, - data_transform, residual_len: 0, }; - let initial_residual = problem.current_residual()?; problem.residual_len = initial_residual.len(); Ok(problem) } - fn evaluate_model(&self, vars: &FitVariables) -> Result { - let model = ff2chi(&self.dataset.paths, vars, &self.dataset.k)?; - let model_transform = - apply_r_transform(&self.dataset.k, &model.chi, &self.dataset.transform)?; - + fn evaluate_dataset_model( + dataset: &FeffFitDataset, + vars: &FitVariables, + ) -> Result { + let model = ff2chi(&dataset.paths, vars, &dataset.k)?; + let model_transform = apply_r_transform(&dataset.k, &model.chi, &dataset.transform)?; Ok(ModelEvaluation { model_chi: model.chi, path_chi: model.path_chi, @@ -188,13 +238,32 @@ impl FeffFitProblem { }) } + fn evaluate_models(&self, vars: &FitVariables) -> Result, FittingError> { + self.datasets + .iter() + .map(|dataset| Self::evaluate_dataset_model(dataset, vars)) + .collect() + } + fn current_residual(&self) -> Result, FittingError> { - let model = self.evaluate_model(&self.variables)?; - residual_in_r_space( - &self.data_transform, - &model.model_transform, - self.dataset.epsilon_k, - ) + let models = self.evaluate_models(&self.variables)?; + let mut residual = Vec::new(); + for ((dataset, data_transform), model) in self + .datasets + .iter() + .zip(self.data_transforms.iter()) + .zip(models.into_iter()) + { + let ds_residual = + residual_in_r_space(data_transform, &model.model_transform, dataset.epsilon_k)?; + residual.extend(ds_residual.iter().copied()); + } + if residual.is_empty() { + return Err(FittingError::InvalidDataset { + reason: "multi-dataset residual is empty".to_string(), + }); + } + Ok(DVector::from_vec(residual)) } fn residual_for_parameter_vector(&self, params: &DVector) -> DVector { @@ -206,12 +275,19 @@ impl FeffFitProblem { return DVector::from_element(self.residual_len.max(2), 1.0e12); } - match self.evaluate_model(&vars).and_then(|model| { - residual_in_r_space( - &self.data_transform, - &model.model_transform, - self.dataset.epsilon_k, - ) + match self.evaluate_models(&vars).and_then(|models| { + let mut residual = Vec::new(); + for ((dataset, data_transform), model) in self + .datasets + .iter() + .zip(self.data_transforms.iter()) + .zip(models.into_iter()) + { + let ds_residual = + residual_in_r_space(data_transform, &model.model_transform, dataset.epsilon_k)?; + residual.extend(ds_residual.iter().copied()); + } + Ok::<_, FittingError>(DVector::from_vec(residual)) }) { Ok(residual) => residual, Err(_) => DVector::from_element(self.residual_len.max(2), 1.0e12), @@ -229,7 +305,7 @@ impl FeffFitProblem { } } -impl LeastSquaresProblem for FeffFitProblem { +impl LeastSquaresProblem for FeffFitMultiProblem { type ParameterStorage = Owned; type ResidualStorage = Owned; type JacobianStorage = Owned; @@ -327,6 +403,57 @@ mod tests { assert!((sig2 - 0.0032).abs() < 0.003); assert!((dr - 0.012).abs() < 0.02); assert!(result.chi_square.is_finite()); + assert_eq!(result.datasets.len(), 1); assert!(!result.path_contributions.is_empty()); } + + #[test] + fn test_multi_dataset_fit_runs() { + let pathfile = format!("{TOP_DIR}/tests/testfiles/feffcu01.dat"); + let mut path1 = feffpath(pathfile.clone(), FeffFlavor::Feff85L).unwrap(); + path1.s02 = PathParamSpec::Expression("amp".to_string()); + path1.e0 = PathParamSpec::Expression("de0".to_string()); + path1.sigma2 = PathParamSpec::Expression("sig2".to_string()); + path1.deltar = PathParamSpec::Expression("dr".to_string()); + let path2 = path1.clone().set_sigma2("sig2_2"); + + let k1 = DVector::from_iterator(220, (0..220).map(|i| 0.05 * (i as f64 + 1.0))); + let k2 = DVector::from_iterator(250, (0..250).map(|i| 0.05 * (i as f64 + 1.0))); + + let mut truth = FitVariables::new(); + truth.insert("amp", FitVariable::new(0.9, false)); + truth.insert("de0", FitVariable::new(1.2, false)); + truth.insert("sig2", FitVariable::new(0.003, false)); + truth.insert("sig2_2", FitVariable::new(0.004, false)); + truth.insert("dr", FitVariable::new(0.01, false)); + + let chi1 = ff2chi(&[path1.clone()], &truth, &k1).unwrap().chi; + let chi2 = ff2chi(&[path2.clone()], &truth, &k2).unwrap().chi; + + let ds1 = FeffFitDataset { + k: k1, + chi: chi1, + epsilon_k: Some(1.0), + transform: Default::default(), + paths: vec![path1], + }; + let ds2 = FeffFitDataset { + k: k2, + chi: chi2, + epsilon_k: Some(1.0), + transform: Default::default(), + paths: vec![path2], + }; + + let mut initial = FitVariables::new(); + initial.insert("amp", FitVariable::new(0.95, true)); + initial.insert("de0", FitVariable::new(0.0, true)); + initial.insert("sig2", FitVariable::new(0.0020, true)); + initial.insert("sig2_2", FitVariable::new(0.0020, true)); + initial.insert("dr", FitVariable::new(0.0, true)); + + let result = feffit_multi(&[ds1, ds2], &initial).unwrap(); + assert!(result.chi_square.is_finite()); + assert_eq!(result.datasets.len(), 2); + } } diff --git a/crates/xraytsubaki/src/xafs/fitting/transform.rs b/crates/xraytsubaki/src/xafs/fitting/transform.rs index 656296f..8793f22 100644 --- a/crates/xraytsubaki/src/xafs/fitting/transform.rs +++ b/crates/xraytsubaki/src/xafs/fitting/transform.rs @@ -192,6 +192,13 @@ pub fn residual_in_r_space( Ok(DVector::from_vec(residual)) } +pub fn compute_n_idp(transform: &FeffFitTransform) -> f64 { + 1.0 + 2.0 + * (transform.rmax - transform.rmin).max(0.0) + * (transform.kmax - transform.kmin).max(0.0) + / std::f64::consts::PI +} + #[cfg(test)] mod tests { use super::*; @@ -226,4 +233,17 @@ mod tests { assert!(!out.mask_indices.is_empty()); assert_eq!(out.chir.len(), out.r.len()); } + + #[test] + fn test_compute_n_idp_positive() { + let transform = FeffFitTransform { + kmin: 2.0, + kmax: 14.0, + rmin: 1.0, + rmax: 3.0, + ..FeffFitTransform::default() + }; + let n_idp = compute_n_idp(&transform); + assert!(n_idp > 1.0); + } } diff --git a/crates/xraytsubaki/src/xafs/fitting/types.rs b/crates/xraytsubaki/src/xafs/fitting/types.rs index fb4b934..6278fc5 100644 --- a/crates/xraytsubaki/src/xafs/fitting/types.rs +++ b/crates/xraytsubaki/src/xafs/fitting/types.rs @@ -137,6 +137,15 @@ impl From for PathParamSpec { } } +impl PathParamSpec { + pub fn as_expression(&self) -> Option<&str> { + match self { + Self::Expression(expr) => Some(expr.as_str()), + Self::Value(_) => None, + } + } +} + #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] #[serde(default)] pub struct FitVariable { @@ -197,6 +206,85 @@ impl FitVariable { } } +/// Lightweight parameter specification for the builder API. +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +#[serde(default)] +pub struct Param { + pub name: String, + pub value: f64, + pub vary: bool, + pub min: Option, + pub max: Option, + pub expr: Option, +} + +impl Default for Param { + fn default() -> Self { + Self { + name: String::new(), + value: 0.0, + vary: true, + min: None, + max: None, + expr: None, + } + } +} + +impl Param { + /// Varying parameter with initial value. + pub fn new(name: impl Into, value: f64) -> Self { + Self { + name: name.into(), + value, + vary: true, + min: None, + max: None, + expr: None, + } + } + + /// Fixed parameter (vary=false). + pub fn fixed(name: impl Into, value: f64) -> Self { + Self { + name: name.into(), + value, + vary: false, + min: None, + max: None, + expr: None, + } + } + + /// Expression-derived parameter (vary=false). + pub fn expr(name: impl Into, expr: impl Into) -> Self { + Self { + name: name.into(), + value: 0.0, + vary: false, + min: None, + max: None, + expr: Some(expr.into()), + } + } + + /// Set bounds (consuming Self). + pub fn bounds(mut self, min: f64, max: f64) -> Self { + self.min = Some(min); + self.max = Some(max); + self + } + + /// Convert to FitVariable. + pub fn to_fit_variable(&self) -> FitVariable { + let mut var = FitVariable::new(self.value, self.vary).with_bounds(self.min, self.max); + if let Some(expr) = self.expr.as_ref() { + var = var.with_expr(expr.clone()); + } + var + } +} + #[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)] #[serde(default)] pub struct FitVariables { @@ -314,6 +402,56 @@ impl FeffPathModel { ..Self::default() } } + + pub fn set_s02(mut self, spec: impl Into) -> Self { + self.s02 = spec.into(); + self + } + + pub fn set_e0(mut self, spec: impl Into) -> Self { + self.e0 = spec.into(); + self + } + + pub fn set_ei(mut self, spec: impl Into) -> Self { + self.ei = spec.into(); + self + } + + pub fn set_deltar(mut self, spec: impl Into) -> Self { + self.deltar = spec.into(); + self + } + + pub fn set_sigma2(mut self, spec: impl Into) -> Self { + self.sigma2 = spec.into(); + self + } + + pub fn set_third(mut self, spec: impl Into) -> Self { + self.third = spec.into(); + self + } + + pub fn set_fourth(mut self, spec: impl Into) -> Self { + self.fourth = spec.into(); + self + } + + pub fn set_degen(mut self, spec: impl Into) -> Self { + self.degen = spec.into(); + self + } + + pub fn set_label(mut self, label: impl Into) -> Self { + self.label = label.into(); + self + } + + pub fn set_use_path(mut self, use_path: bool) -> Self { + self.use_path = use_path; + self + } } #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] @@ -378,6 +516,65 @@ impl Default for FeffFitDataset { } } +impl FeffFitDataset { + pub fn new() -> Self { + Self::default() + } + + pub fn data(mut self, k: &DVector, chi: &DVector) -> Self { + self.k = k.clone(); + self.chi = chi.clone(); + self + } + + pub fn epsilon_k(mut self, value: f64) -> Self { + self.epsilon_k = Some(value); + self + } + + pub fn add_path(mut self, path: FeffPathModel) -> Self { + self.paths.push(path); + self + } + + pub fn krange(mut self, kmin: f64, kmax: f64) -> Self { + self.transform.kmin = kmin; + self.transform.kmax = kmax; + self + } + + pub fn rrange(mut self, rmin: f64, rmax: f64) -> Self { + self.transform.rmin = rmin; + self.transform.rmax = rmax; + self + } + + pub fn kweight(mut self, value: f64) -> Self { + self.transform.kweight = value; + self + } + + pub fn dk(mut self, value: f64) -> Self { + self.transform.dk = value; + self + } + + pub fn window(mut self, value: FTWindow) -> Self { + self.transform.window = value; + self + } + + pub fn rwindow(mut self, value: FTWindow) -> Self { + self.transform.rwindow = value; + self + } + + pub fn dr(mut self, value: f64) -> Self { + self.transform.dr = value; + self + } +} + #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] #[serde(default)] pub struct PathContribution { @@ -400,6 +597,68 @@ impl Default for PathContribution { } } +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +#[serde(default)] +pub struct DatasetResult { + pub n_data: usize, + pub chi_square: f64, + pub reduced_chi_square: f64, + pub r_factor: f64, + pub n_idp: f64, + pub k: DVector, + pub data_chi: DVector, + pub model_chi: DVector, + pub r: DVector, + pub data_chir_re: DVector, + pub data_chir_im: DVector, + pub model_chir_re: DVector, + pub model_chir_im: DVector, + pub model_chir_mag: DVector, + pub path_contributions: Vec, +} + +impl Default for DatasetResult { + fn default() -> Self { + Self { + n_data: 0, + chi_square: 0.0, + reduced_chi_square: 0.0, + r_factor: 0.0, + n_idp: 0.0, + k: DVector::zeros(0), + data_chi: DVector::zeros(0), + model_chi: DVector::zeros(0), + r: DVector::zeros(0), + data_chir_re: DVector::zeros(0), + data_chir_im: DVector::zeros(0), + model_chir_re: DVector::zeros(0), + model_chir_im: DVector::zeros(0), + model_chir_mag: DVector::zeros(0), + path_contributions: Vec::new(), + } + } +} + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +#[serde(default)] +pub struct FitWarning { + pub symbol: String, + pub inferred_from: String, + pub default_value: f64, + pub message: String, +} + +impl Default for FitWarning { + fn default() -> Self { + Self { + symbol: String::new(), + inferred_from: String::new(), + default_value: 0.0, + message: String::new(), + } + } +} + #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] #[serde(default)] pub struct FeffFitResult { @@ -419,6 +678,9 @@ pub struct FeffFitResult { pub model_chir_im: DVector, pub model_chir_mag: DVector, pub path_contributions: Vec, + pub datasets: Vec, + pub n_idp: f64, + pub warnings: Vec, } impl Default for FeffFitResult { @@ -440,6 +702,30 @@ impl Default for FeffFitResult { model_chir_im: DVector::zeros(0), model_chir_mag: DVector::zeros(0), path_contributions: Vec::new(), + datasets: Vec::new(), + n_idp: 0.0, + warnings: Vec::new(), + } + } +} + +impl FeffFitResult { + pub fn dataset(&self, index: usize) -> Option<&DatasetResult> { + self.datasets.get(index) + } + + pub fn sync_primary_dataset_fields(&mut self) { + if let Some(dataset) = self.datasets.first() { + self.k = dataset.k.clone(); + self.data_chi = dataset.data_chi.clone(); + self.model_chi = dataset.model_chi.clone(); + self.r = dataset.r.clone(); + self.data_chir_re = dataset.data_chir_re.clone(); + self.data_chir_im = dataset.data_chir_im.clone(); + self.model_chir_re = dataset.model_chir_re.clone(); + self.model_chir_im = dataset.model_chir_im.clone(); + self.model_chir_mag = dataset.model_chir_mag.clone(); + self.path_contributions = dataset.path_contributions.clone(); } } } diff --git a/crates/xraytsubaki/src/xafs/fitting/variables.rs b/crates/xraytsubaki/src/xafs/fitting/variables.rs index f74c4bc..86048fe 100644 --- a/crates/xraytsubaki/src/xafs/fitting/variables.rs +++ b/crates/xraytsubaki/src/xafs/fitting/variables.rs @@ -3,6 +3,7 @@ use std::collections::{BTreeMap, HashMap, HashSet}; use nalgebra::DVector; use super::errors::FittingError; +use super::expression; use super::types::{FitVariable, FitVariables, PathParamSpec}; impl FitVariables { @@ -121,229 +122,15 @@ pub fn eval_expression_with(expr: &str, resolver: F) -> Result Result, { - let mut parser = ExprParser::new(expr, resolver); - let value = parser.parse_expression()?; - parser.skip_whitespace(); - if parser.pos < parser.input.len() { - return Err(FittingError::ExpressionFailed { - expr: expr.to_string(), - reason: format!("unexpected token at byte {}", parser.pos), - }); - } - if !value.is_finite() { - return Err(FittingError::ExpressionFailed { - expr: expr.to_string(), - reason: "expression produced non-finite value".to_string(), - }); - } - Ok(value) + expression::eval_expression_with(expr, resolver) } -struct ExprParser<'a, F> -where - F: FnMut(&str) -> Result, -{ - input: &'a str, - pos: usize, - resolver: F, +pub fn extract_symbols(expr: &str) -> Vec { + expression::extract_symbols(expr) } -impl<'a, F> ExprParser<'a, F> -where - F: FnMut(&str) -> Result, -{ - fn new(input: &'a str, resolver: F) -> Self { - Self { - input, - pos: 0, - resolver, - } - } - - fn parse_expression(&mut self) -> Result { - self.parse_add_sub() - } - - fn parse_add_sub(&mut self) -> Result { - let mut value = self.parse_mul_div()?; - loop { - self.skip_whitespace(); - if self.consume_char('+') { - value += self.parse_mul_div()?; - } else if self.consume_char('-') { - value -= self.parse_mul_div()?; - } else { - break; - } - } - Ok(value) - } - - fn parse_mul_div(&mut self) -> Result { - let mut value = self.parse_pow()?; - loop { - self.skip_whitespace(); - if self.consume_char('*') { - value *= self.parse_pow()?; - } else if self.consume_char('/') { - let rhs = self.parse_pow()?; - if rhs.abs() < f64::EPSILON { - return Err(FittingError::ExpressionFailed { - expr: self.input.to_string(), - reason: "division by zero".to_string(), - }); - } - value /= rhs; - } else { - break; - } - } - Ok(value) - } - - fn parse_pow(&mut self) -> Result { - let lhs = self.parse_unary()?; - self.skip_whitespace(); - if self.consume_char('^') { - let rhs = self.parse_pow()?; - Ok(lhs.powf(rhs)) - } else { - Ok(lhs) - } - } - - fn parse_unary(&mut self) -> Result { - self.skip_whitespace(); - if self.consume_char('+') { - return self.parse_unary(); - } - if self.consume_char('-') { - return self.parse_unary().map(|value| -value); - } - self.parse_primary() - } - - fn parse_primary(&mut self) -> Result { - self.skip_whitespace(); - - if self.consume_char('(') { - let value = self.parse_expression()?; - self.skip_whitespace(); - if !self.consume_char(')') { - return Err(FittingError::ExpressionFailed { - expr: self.input.to_string(), - reason: "missing closing ')'".to_string(), - }); - } - return Ok(value); - } - - if let Some(number) = self.try_parse_number()? { - return Ok(number); - } - - let ident = self.try_parse_identifier(); - if let Some(name) = ident { - return (&mut self.resolver)(&name).map_err(|err| match err { - FittingError::UndefinedSymbol { .. } | FittingError::CyclicExpression { .. } => err, - other => FittingError::ExpressionFailed { - expr: self.input.to_string(), - reason: other.to_string(), - }, - }); - } - - Err(FittingError::ExpressionFailed { - expr: self.input.to_string(), - reason: format!("unexpected token at byte {}", self.pos), - }) - } - - fn try_parse_number(&mut self) -> Result, FittingError> { - self.skip_whitespace(); - let bytes = self.input.as_bytes(); - if self.pos >= bytes.len() { - return Ok(None); - } - - let starts_number = matches!(bytes[self.pos] as char, '0'..='9' | '.'); - if !starts_number { - return Ok(None); - } - - let start = self.pos; - let mut seen_exp = false; - - while self.pos < bytes.len() { - let c = bytes[self.pos] as char; - match c { - '0'..='9' | '.' => self.pos += 1, - 'e' | 'E' if !seen_exp => { - seen_exp = true; - self.pos += 1; - if self.pos < bytes.len() { - let sign = bytes[self.pos] as char; - if sign == '+' || sign == '-' { - self.pos += 1; - } - } - } - _ => break, - } - } - - let raw = &self.input[start..self.pos]; - raw.parse::() - .map(Some) - .map_err(|_| FittingError::ExpressionFailed { - expr: self.input.to_string(), - reason: format!("invalid numeric literal '{raw}'"), - }) - } - - fn try_parse_identifier(&mut self) -> Option { - self.skip_whitespace(); - let bytes = self.input.as_bytes(); - if self.pos >= bytes.len() { - return None; - } - - let first = bytes[self.pos] as char; - if !(first.is_ascii_alphabetic() || first == '_') { - return None; - } - - let start = self.pos; - self.pos += 1; - while self.pos < bytes.len() { - let c = bytes[self.pos] as char; - if c.is_ascii_alphanumeric() || c == '_' { - self.pos += 1; - } else { - break; - } - } - - Some(self.input[start..self.pos].to_string()) - } - - fn skip_whitespace(&mut self) { - let bytes = self.input.as_bytes(); - while self.pos < bytes.len() && (bytes[self.pos] as char).is_ascii_whitespace() { - self.pos += 1; - } - } - - fn consume_char(&mut self, expected: char) -> bool { - self.skip_whitespace(); - let bytes = self.input.as_bytes(); - if self.pos < bytes.len() && bytes[self.pos] as char == expected { - self.pos += 1; - true - } else { - false - } - } +pub fn try_extract_symbols(expr: &str) -> Result, FittingError> { + expression::try_extract_symbols(expr) } #[cfg(test)] @@ -408,4 +195,10 @@ mod tests { let err = vars.resolve_values().unwrap_err(); assert!(matches!(err, FittingError::CyclicExpression { .. })); } + + #[test] + fn test_extract_symbols_excludes_reff() { + let symbols = extract_symbols("amp * sqrt(reff) + sig2"); + assert_eq!(symbols, vec!["amp".to_string(), "sig2".to_string()]); + } } diff --git a/crates/xraytsubaki/tests/feff_builder_examples.rs b/crates/xraytsubaki/tests/feff_builder_examples.rs new file mode 100644 index 0000000..0f2a886 --- /dev/null +++ b/crates/xraytsubaki/tests/feff_builder_examples.rs @@ -0,0 +1,233 @@ +use nalgebra::DVector; +use xraytsubaki::prelude::*; + +fn fixture_path(name: &str) -> String { + format!("{}/tests/testfiles/{name}", env!("CARGO_MANIFEST_DIR")) +} + +fn load_two_column(path: &str) -> (DVector, DVector) { + let content = std::fs::read_to_string(path).expect("failed to read fixture"); + let mut x = Vec::new(); + let mut y = Vec::new(); + + for line in content.lines() { + let line = line.trim(); + if line.is_empty() || line.starts_with('#') { + continue; + } + let mut parts = line.split_whitespace(); + let xv: f64 = parts.next().expect("missing x").parse().expect("invalid x"); + let yv: f64 = parts.next().expect("missing y").parse().expect("invalid y"); + x.push(xv); + y.push(yv); + } + + (DVector::from_vec(x), DVector::from_vec(y)) +} + +fn assert_chi_matches_larch( + k: &DVector, + actual: &DVector, + expected: &DVector, + epsilon: f64, +) { + assert_eq!(actual.len(), expected.len(), "model/expected length mismatch"); + assert_eq!(k.len(), expected.len(), "k/model length mismatch"); + for i in 0..k.len() { + if k[i] < 2.0 { + continue; + } + let diff = (actual[i] - expected[i]).abs(); + assert!( + diff <= epsilon, + "k={} index={} |actual-expected|={} > {}", + k[i], + i, + diff, + epsilon + ); + } +} + +fn larch_truth_variables() -> FitVariables { + let mut vars = FitVariables::new(); + vars.insert("amp", FitVariable::new(0.92, false)); + vars.insert("de0", FitVariable::new(1.4, false)); + vars.insert("sig2", FitVariable::new(0.0031, false)); + vars.insert("dr", FitVariable::new(0.011, false)); + vars.insert("amp2", FitVariable::new(0.35, false)); + vars.insert("dr2", FitVariable::new(0.0025, false)); + vars +} + +#[test] +fn example_path_builder_matches_xraylarch_path2chi() { + let base_path = feffpath(&fixture_path("feffcu01.dat"), FeffFlavor::Feff85L) + .unwrap() + .set_s02("amp") + .set_e0("de0") + .set_deltar("dr"); + let path = base_path.clone().set_sigma2("sig2"); + + let (k, chi_expected) = load_two_column(&fixture_path("feff_path_chi_larch_ref.txt")); + let chi = path2chi(&path, &larch_truth_variables(), &k).unwrap(); + assert_chi_matches_larch(&k, &chi, &chi_expected, 3.0e-3); +} + +#[test] +fn example_multi_path_model_matches_xraylarch_ff2chi() { + let path1 = feffpath(&fixture_path("feffcu01.dat"), FeffFlavor::Feff85L) + .unwrap() + .set_s02("amp") + .set_e0("de0") + .set_sigma2("sig2") + .set_deltar("dr"); + let path2 = feffpath(&fixture_path("feff0002.dat"), FeffFlavor::Feff85L) + .unwrap() + .set_s02("amp2") + .set_e0("de0") + .set_sigma2("sig2") + .set_deltar("dr2"); + + let (k, chi_expected) = load_two_column(&fixture_path("feff_ff2chi_larch_ref.txt")); + let out = ff2chi(&[path1, path2], &larch_truth_variables(), &k).unwrap(); + assert_chi_matches_larch(&k, &out.chi, &chi_expected, 4.0e-3); +} + +#[test] +fn example_single_dataset_fit_matches_xraylarch_target_curve() { + let path = feffpath(&fixture_path("feffcu01.dat"), FeffFlavor::Feff85L) + .unwrap() + .set_s02("amp") + .set_e0("de0") + .set_sigma2("sig2") + .set_deltar("dr"); + let (k, chi_expected) = load_two_column(&fixture_path("feff_fit_target_larch.txt")); + + let result = FeffFit::new() + .data(&k, &chi_expected) + .add_path(path) + .set_inits([("amp", 0.95), ("de0", 0.0), ("sig2", 0.002), ("dr", 0.0)]) + .set_bounds("sig2", 0.0, 0.02) + .krange(2.0, 14.0) + .rrange(1.0, 3.0) + .fit() + .unwrap(); + + assert_eq!(result.datasets.len(), 1); + assert_chi_matches_larch(&k, &result.model_chi, &chi_expected, 6.0e-3); +} + +#[test] +fn example_clone_template_fits_xraylarch_reference_curves() { + let path1 = feffpath(&fixture_path("feffcu01.dat"), FeffFlavor::Feff85L) + .unwrap() + .set_s02("amp") + .set_e0("de0") + .set_sigma2("sig2") + .set_deltar("dr"); + let path2 = feffpath(&fixture_path("feff0002.dat"), FeffFlavor::Feff85L) + .unwrap() + .set_s02("amp2") + .set_e0("de0") + .set_sigma2("sig2") + .set_deltar("dr2"); + + let base = FeffFit::new() + .params([ + Param::new("amp", 0.95), + Param::new("de0", 0.0), + Param::new("sig2", 0.002).bounds(0.0, 0.02), + Param::new("dr", 0.0), + Param::new("amp2", 0.2), + Param::new("dr2", 0.0), + ]) + .krange(2.0, 14.0) + .rrange(1.0, 3.0); + + let (k1, chi1_expected) = load_two_column(&fixture_path("feff_path_chi_larch_ref.txt")); + let (k2, chi2_expected) = load_two_column(&fixture_path("feff_ff2chi_larch_ref.txt")); + + let r1 = base + .clone() + .data(&k1, &chi1_expected) + .add_path(path1.clone()) + .fit() + .unwrap(); + let r2 = base + .clone() + .data(&k2, &chi2_expected) + .add_path(path1) + .add_path(path2) + .fit() + .unwrap(); + + assert_chi_matches_larch(&k1, &r1.model_chi, &chi1_expected, 7.0e-3); + assert_chi_matches_larch(&k2, &r2.model_chi, &chi2_expected, 7.0e-3); +} + +#[test] +fn example_multi_dataset_global_fit_matches_xraylarch_references() { + let ds1_path = feffpath(&fixture_path("feffcu01.dat"), FeffFlavor::Feff85L) + .unwrap() + .set_s02("amp") + .set_e0("de0") + .set_sigma2("sig2") + .set_deltar("dr"); + let ds2_path1 = feffpath(&fixture_path("feffcu01.dat"), FeffFlavor::Feff85L) + .unwrap() + .set_s02("amp") + .set_e0("de0") + .set_sigma2("sig2") + .set_deltar("dr"); + let ds2_path2 = feffpath(&fixture_path("feff0002.dat"), FeffFlavor::Feff85L) + .unwrap() + .set_s02("amp2") + .set_e0("de0") + .set_sigma2("sig2") + .set_deltar("dr2"); + + let (k1, chi1_expected) = load_two_column(&fixture_path("feff_path_chi_larch_ref.txt")); + let (k2, chi2_expected) = load_two_column(&fixture_path("feff_ff2chi_larch_ref.txt")); + + let ds1 = FeffFitDataset::new() + .data(&k1, &chi1_expected) + .add_path(ds1_path) + .krange(2.0, 14.0) + .rrange(1.0, 3.0); + let ds2 = FeffFitDataset::new() + .data(&k2, &chi2_expected) + .add_path(ds2_path1) + .add_path(ds2_path2) + .krange(2.0, 14.0) + .rrange(1.0, 3.0); + + let result = FeffFit::new() + .add_dataset(ds1) + .add_dataset(ds2) + .set_inits([ + ("amp", 0.95), + ("de0", 0.0), + ("sig2", 0.002), + ("dr", 0.0), + ("amp2", 0.2), + ("dr2", 0.0), + ]) + .set_bounds("sig2", 0.0, 0.02) + .fit() + .unwrap(); + + assert_eq!(result.datasets.len(), 2); + assert_chi_matches_larch( + &k1, + &result.datasets[0].model_chi, + &chi1_expected, + 8.0e-3, + ); + assert_chi_matches_larch( + &k2, + &result.datasets[1].model_chi, + &chi2_expected, + 8.0e-3, + ); +} diff --git a/doc/plots/feff_vs_larch_01_path_builder.png b/doc/plots/feff_vs_larch_01_path_builder.png new file mode 100644 index 0000000000000000000000000000000000000000..00202e29f715568e9b8bb67281796cf999a1dc25 GIT binary patch literal 31605 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 literal 0 HcmV?d00001 diff --git a/doc/plots/feff_vs_larch_01_path_builder.svg b/doc/plots/feff_vs_larch_01_path_builder.svg new file mode 100644 index 0000000..f0c72b7 --- /dev/null +++ b/doc/plots/feff_vs_larch_01_path_builder.svg @@ -0,0 +1,62 @@ + + + +01_path_builder: xraytsubaki vs xraylarch +RMS(diff)=7.465e-02, Max|diff|=4.009e-01, contributions=0 + + +0.0500 + + +2.8400 + + +5.6300 + + +8.4200 + + +11.2100 + + +14.0000 + +-0.4009 + +-0.2820 + +-0.1630 + +-0.0440 + +0.0749 + +0.1939 + +-0.4009 + +-0.2406 + +-0.0802 + +0.0802 + +0.2406 + +0.4009 + + + + + +χ(k) +diff +k (Å⁻¹) + +xraytsubaki total + +xraylarch total + +diff + \ No newline at end of file diff --git a/doc/plots/feff_vs_larch_01_path_builder_rspace.png b/doc/plots/feff_vs_larch_01_path_builder_rspace.png new file mode 100644 index 0000000000000000000000000000000000000000..90d83e2156352039f543a61c7f84fe7e06c89602 GIT binary patch literal 28434 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 literal 0 HcmV?d00001 diff --git a/doc/plots/feff_vs_larch_01_path_builder_rspace.svg b/doc/plots/feff_vs_larch_01_path_builder_rspace.svg new file mode 100644 index 0000000..b611288 --- /dev/null +++ b/doc/plots/feff_vs_larch_01_path_builder_rspace.svg @@ -0,0 +1,62 @@ + + + +01_path_builder_rspace: xraytsubaki vs xraylarch +RMS(diff)=2.173e-03, Max|diff|=1.184e-02, contributions=0 + + +0.0000 + + +1.9942 + + +3.9884 + + +5.9825 + + +7.9767 + + +9.9709 + +0.0000 + +1.5608 + +3.1215 + +4.6823 + +6.2430 + +7.8038 + +-0.0118 + +-0.0071 + +-0.0024 + +0.0024 + +0.0071 + +0.0118 + + + + + +|χ(R)| +diff +R (Å) + +xraytsubaki total + +xraylarch total + +diff + \ No newline at end of file diff --git a/doc/plots/feff_vs_larch_01_path_builder_rspace_contrib.png b/doc/plots/feff_vs_larch_01_path_builder_rspace_contrib.png new file mode 100644 index 0000000000000000000000000000000000000000..e7d2227f4d27e26e695aaccdf8b5dc6ff6a0e890 GIT binary patch literal 29436 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 + + +01_path_builder_rspace_contrib: xraytsubaki vs xraylarch +RMS(diff)=2.173e-03, Max|diff|=1.184e-02, contributions=1 + + +0.0000 + + +1.9942 + + +3.9884 + + +5.9825 + + +7.9767 + + +9.9709 + +0.0000 + +1.5608 + +3.1215 + +4.6823 + +6.2430 + +7.8038 + +-0.0118 + +-0.0071 + +-0.0024 + +0.0024 + +0.0071 + +0.0118 + + + + + + +|χ(R)| +diff +R (Å) + +xraytsubaki total + +xraylarch total + +diff + +feffcu01dat_00 + \ No newline at end of file diff --git a/doc/plots/feff_vs_larch_02_multi_path_model.png b/doc/plots/feff_vs_larch_02_multi_path_model.png new file mode 100644 index 0000000000000000000000000000000000000000..032e804c7bf76b816f8f0706735697077225d34a GIT binary patch literal 33015 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 O+B#iBMxxHHqyGhi2VVdH literal 0 HcmV?d00001 diff --git a/doc/plots/feff_vs_larch_02_multi_path_model.svg b/doc/plots/feff_vs_larch_02_multi_path_model.svg new file mode 100644 index 0000000..0e903ec --- /dev/null +++ b/doc/plots/feff_vs_larch_02_multi_path_model.svg @@ -0,0 +1,62 @@ + + + +02_multi_path_model: xraytsubaki vs xraylarch +RMS(diff)=6.724e-02, Max|diff|=3.574e-01, contributions=0 + + +0.0500 + + +2.8400 + + +5.6300 + + +8.4200 + + +11.2100 + + +14.0000 + +-0.3574 + +-0.2464 + +-0.1353 + +-0.0242 + +0.0869 + +0.1979 + +-0.3574 + +-0.2145 + +-0.0715 + +0.0715 + +0.2145 + +0.3574 + + + + + +χ(k) +diff +k (Å⁻¹) + +xraytsubaki total + +xraylarch total + +diff + \ No newline at end of file diff --git a/doc/plots/feff_vs_larch_02_multi_path_model_rspace.png b/doc/plots/feff_vs_larch_02_multi_path_model_rspace.png new file mode 100644 index 0000000000000000000000000000000000000000..b1e9eae4cc2970f94cfb3e059bdc42fb6ea6b020 GIT binary patch literal 28172 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 literal 0 HcmV?d00001 diff --git a/doc/plots/feff_vs_larch_02_multi_path_model_rspace.svg b/doc/plots/feff_vs_larch_02_multi_path_model_rspace.svg new file mode 100644 index 0000000..db9458f --- /dev/null +++ b/doc/plots/feff_vs_larch_02_multi_path_model_rspace.svg @@ -0,0 +1,62 @@ + + + +02_multi_path_model_rspace: xraytsubaki vs xraylarch +RMS(diff)=2.183e-03, Max|diff|=1.171e-02, contributions=0 + + +0.0000 + + +1.9942 + + +3.9884 + + +5.9825 + + +7.9767 + + +9.9709 + +0.0000 + +1.5658 + +3.1315 + +4.6973 + +6.2630 + +7.8288 + +-0.0117 + +-0.0070 + +-0.0023 + +0.0023 + +0.0070 + +0.0117 + + + + + +|χ(R)| +diff +R (Å) + +xraytsubaki total + +xraylarch total + +diff + \ No newline at end of file diff --git a/doc/plots/feff_vs_larch_02_multi_path_model_rspace_contrib.png b/doc/plots/feff_vs_larch_02_multi_path_model_rspace_contrib.png new file mode 100644 index 0000000000000000000000000000000000000000..45fe20c474606c0d94ca5c8c7001955227e3ca63 GIT binary patch literal 30345 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 literal 0 HcmV?d00001 diff --git a/doc/plots/feff_vs_larch_02_multi_path_model_rspace_contrib.svg b/doc/plots/feff_vs_larch_02_multi_path_model_rspace_contrib.svg new file mode 100644 index 0000000..504c319 --- /dev/null +++ b/doc/plots/feff_vs_larch_02_multi_path_model_rspace_contrib.svg @@ -0,0 +1,68 @@ + + + +02_multi_path_model_rspace_contrib: xraytsubaki vs xraylarch +RMS(diff)=2.183e-03, Max|diff|=1.171e-02, contributions=2 + + +0.0000 + + +1.9942 + + +3.9884 + + +5.9825 + + +7.9767 + + +9.9709 + +0.0000 + +1.5658 + +3.1315 + +4.6973 + +6.2630 + +7.8288 + +-0.0117 + +-0.0070 + +-0.0023 + +0.0023 + +0.0070 + +0.0117 + + + + + + + +|χ(R)| +diff +R (Å) + +xraytsubaki total + +xraylarch total + +diff + +feffcu01dat_00 + +feff0002dat_01 + \ No newline at end of file diff --git a/doc/plots/feff_vs_larch_03_single_dataset_fit.png b/doc/plots/feff_vs_larch_03_single_dataset_fit.png new file mode 100644 index 0000000000000000000000000000000000000000..4c5aaf63de2bb3c361103833c3e9c82f105ddaee GIT binary patch literal 33813 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 Dzy^!W literal 0 HcmV?d00001 diff --git a/doc/plots/feff_vs_larch_03_single_dataset_fit.svg b/doc/plots/feff_vs_larch_03_single_dataset_fit.svg new file mode 100644 index 0000000..e8b8160 --- /dev/null +++ b/doc/plots/feff_vs_larch_03_single_dataset_fit.svg @@ -0,0 +1,62 @@ + + + +03_single_dataset_fit: xraytsubaki vs xraylarch +RMS(diff)=6.957e-02, Max|diff|=3.824e-01, contributions=0 + + +0.0500 + + +2.8400 + + +5.6300 + + +8.4200 + + +11.2100 + + +14.0000 + +-0.3824 + +-0.2687 + +-0.1549 + +-0.0412 + +0.0725 + +0.1863 + +-0.3824 + +-0.2294 + +-0.0765 + +0.0765 + +0.2294 + +0.3824 + + + + + +χ(k) +diff +k (Å⁻¹) + +xraytsubaki total + +xraylarch total + +diff + \ No newline at end of file diff --git a/doc/plots/feff_vs_larch_03_single_dataset_fit_rspace.png b/doc/plots/feff_vs_larch_03_single_dataset_fit_rspace.png new file mode 100644 index 0000000000000000000000000000000000000000..2dd1d4a4d635d627d242897180a09b00c3665bf9 GIT binary patch literal 28473 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 literal 0 HcmV?d00001 diff --git a/doc/plots/feff_vs_larch_03_single_dataset_fit_rspace.svg b/doc/plots/feff_vs_larch_03_single_dataset_fit_rspace.svg new file mode 100644 index 0000000..cb69525 --- /dev/null +++ b/doc/plots/feff_vs_larch_03_single_dataset_fit_rspace.svg @@ -0,0 +1,62 @@ + + + +03_single_dataset_fit_rspace: xraytsubaki vs xraylarch +RMS(diff)=1.325e-03, Max|diff|=5.629e-03, contributions=0 + + +0.0000 + + +1.9942 + + +3.9884 + + +5.9825 + + +7.9767 + + +9.9709 + +0.0000 + +1.4682 + +2.9364 + +4.4047 + +5.8729 + +7.3411 + +-0.0056 + +-0.0034 + +-0.0011 + +0.0011 + +0.0034 + +0.0056 + + + + + +|χ(R)| +diff +R (Å) + +xraytsubaki total + +xraylarch total + +diff + \ No newline at end of file diff --git a/doc/plots/feff_vs_larch_03_single_dataset_fit_rspace_contrib.png b/doc/plots/feff_vs_larch_03_single_dataset_fit_rspace_contrib.png new file mode 100644 index 0000000000000000000000000000000000000000..c5cc49ecee81344a529cb58710568ad2863832eb GIT binary patch literal 29467 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 literal 0 HcmV?d00001 diff --git a/doc/plots/feff_vs_larch_03_single_dataset_fit_rspace_contrib.svg b/doc/plots/feff_vs_larch_03_single_dataset_fit_rspace_contrib.svg new file mode 100644 index 0000000..8a8a10b --- /dev/null +++ b/doc/plots/feff_vs_larch_03_single_dataset_fit_rspace_contrib.svg @@ -0,0 +1,65 @@ + + + +03_single_dataset_fit_rspace_contrib: xraytsubaki vs xraylarch +RMS(diff)=1.325e-03, Max|diff|=5.629e-03, contributions=1 + + +0.0000 + + +1.9942 + + +3.9884 + + +5.9825 + + +7.9767 + + +9.9709 + +0.0000 + +1.4682 + +2.9364 + +4.4047 + +5.8729 + +7.3411 + +-0.0056 + +-0.0034 + +-0.0011 + +0.0011 + +0.0034 + +0.0056 + + + + + + +|χ(R)| +diff +R (Å) + +xraytsubaki total + +xraylarch total + +diff + +feffcu01dat_00 + \ No newline at end of file diff --git a/doc/plots/feff_vs_larch_04_clone_template_path.png b/doc/plots/feff_vs_larch_04_clone_template_path.png new file mode 100644 index 0000000000000000000000000000000000000000..3c44552ccd735cfe1ebacb1378b11862cdb3c7b9 GIT binary patch literal 32706 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 + + +04_clone_template_path: xraytsubaki vs xraylarch +RMS(diff)=7.465e-02, Max|diff|=4.009e-01, contributions=0 + + +0.0500 + + +2.8400 + + +5.6300 + + +8.4200 + + +11.2100 + + +14.0000 + +-0.4009 + +-0.2819 + +-0.1628 + +-0.0437 + +0.0754 + +0.1945 + +-0.4009 + +-0.2406 + +-0.0802 + +0.0802 + +0.2406 + +0.4009 + + + + + +χ(k) +diff +k (Å⁻¹) + +xraytsubaki total + +xraylarch total + +diff + \ No newline at end of file diff --git a/doc/plots/feff_vs_larch_04_clone_template_path_rspace.png b/doc/plots/feff_vs_larch_04_clone_template_path_rspace.png new file mode 100644 index 0000000000000000000000000000000000000000..665f54904eec6f670f652174b871afb184852207 GIT binary patch literal 28884 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 literal 0 HcmV?d00001 diff --git a/doc/plots/feff_vs_larch_04_clone_template_path_rspace.svg b/doc/plots/feff_vs_larch_04_clone_template_path_rspace.svg new file mode 100644 index 0000000..44bda2c --- /dev/null +++ b/doc/plots/feff_vs_larch_04_clone_template_path_rspace.svg @@ -0,0 +1,62 @@ + + + +04_clone_template_path_rspace: xraytsubaki vs xraylarch +RMS(diff)=1.407e-03, Max|diff|=5.832e-03, contributions=0 + + +0.0000 + + +1.9942 + + +3.9884 + + +5.9825 + + +7.9767 + + +9.9709 + +0.0000 + +1.5610 + +3.1220 + +4.6829 + +6.2439 + +7.8049 + +-0.0058 + +-0.0035 + +-0.0012 + +0.0012 + +0.0035 + +0.0058 + + + + + +|χ(R)| +diff +R (Å) + +xraytsubaki total + +xraylarch total + +diff + \ No newline at end of file diff --git a/doc/plots/feff_vs_larch_04_clone_template_path_rspace_contrib.png b/doc/plots/feff_vs_larch_04_clone_template_path_rspace_contrib.png new file mode 100644 index 0000000000000000000000000000000000000000..6083e30495745057db9de25a03ad99670c2aa58e GIT binary patch literal 29757 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 LwTkm^sX6r<;bNN_ literal 0 HcmV?d00001 diff --git a/doc/plots/feff_vs_larch_04_clone_template_path_rspace_contrib.svg b/doc/plots/feff_vs_larch_04_clone_template_path_rspace_contrib.svg new file mode 100644 index 0000000..0e75a3f --- /dev/null +++ b/doc/plots/feff_vs_larch_04_clone_template_path_rspace_contrib.svg @@ -0,0 +1,65 @@ + + + +04_clone_template_path_rspace_contrib: xraytsubaki vs xraylarch +RMS(diff)=1.407e-03, Max|diff|=5.832e-03, contributions=1 + + +0.0000 + + +1.9942 + + +3.9884 + + +5.9825 + + +7.9767 + + +9.9709 + +0.0000 + +1.5610 + +3.1220 + +4.6829 + +6.2439 + +7.8049 + +-0.0058 + +-0.0035 + +-0.0012 + +0.0012 + +0.0035 + +0.0058 + + + + + + +|χ(R)| +diff +R (Å) + +xraytsubaki total + +xraylarch total + +diff + +feffcu01dat_00 + \ No newline at end of file diff --git a/doc/plots/feff_vs_larch_05_clone_template_ff2chi.png b/doc/plots/feff_vs_larch_05_clone_template_ff2chi.png new file mode 100644 index 0000000000000000000000000000000000000000..cd986ea88777c6898fa6e1801e417b24cf045c19 GIT binary patch literal 34498 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 + + +05_clone_template_ff2chi: xraytsubaki vs xraylarch +RMS(diff)=6.724e-02, Max|diff|=3.574e-01, contributions=0 + + +0.0500 + + +2.8400 + + +5.6300 + + +8.4200 + + +11.2100 + + +14.0000 + +-0.3574 + +-0.2463 + +-0.1351 + +-0.0239 + +0.0873 + +0.1985 + +-0.3574 + +-0.2145 + +-0.0715 + +0.0715 + +0.2145 + +0.3574 + + + + + +χ(k) +diff +k (Å⁻¹) + +xraytsubaki total + +xraylarch total + +diff + \ No newline at end of file diff --git a/doc/plots/feff_vs_larch_05_clone_template_ff2chi_rspace.png b/doc/plots/feff_vs_larch_05_clone_template_ff2chi_rspace.png new file mode 100644 index 0000000000000000000000000000000000000000..be9364f10a86e5aad2c5b24c4492f6fa62001bed GIT binary patch literal 27986 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 TypXUVT)tzg0yTQ`!8894j`pN_ literal 0 HcmV?d00001 diff --git a/doc/plots/feff_vs_larch_05_clone_template_ff2chi_rspace.svg b/doc/plots/feff_vs_larch_05_clone_template_ff2chi_rspace.svg new file mode 100644 index 0000000..0748d01 --- /dev/null +++ b/doc/plots/feff_vs_larch_05_clone_template_ff2chi_rspace.svg @@ -0,0 +1,62 @@ + + + +05_clone_template_ff2chi_rspace: xraytsubaki vs xraylarch +RMS(diff)=1.262e-03, Max|diff|=5.003e-03, contributions=0 + + +0.0000 + + +1.9942 + + +3.9884 + + +5.9825 + + +7.9767 + + +9.9709 + +0.0000 + +1.5658 + +3.1316 + +4.6973 + +6.2631 + +7.8289 + +-0.0050 + +-0.0030 + +-0.0010 + +0.0010 + +0.0030 + +0.0050 + + + + + +|χ(R)| +diff +R (Å) + +xraytsubaki total + +xraylarch total + +diff + \ No newline at end of file diff --git a/doc/plots/feff_vs_larch_05_clone_template_ff2chi_rspace_contrib.png b/doc/plots/feff_vs_larch_05_clone_template_ff2chi_rspace_contrib.png new file mode 100644 index 0000000000000000000000000000000000000000..07707644b18975fbc172729331dfb0f048c602bf GIT binary patch literal 30079 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 iODF%8asPJtPEOhRv{x + + +05_clone_template_ff2chi_rspace_contrib: xraytsubaki vs xraylarch +RMS(diff)=1.262e-03, Max|diff|=5.003e-03, contributions=2 + + +0.0000 + + +1.9942 + + +3.9884 + + +5.9825 + + +7.9767 + + +9.9709 + +0.0000 + +1.5658 + +3.1316 + +4.6973 + +6.2631 + +7.8289 + +-0.0050 + +-0.0030 + +-0.0010 + +0.0010 + +0.0030 + +0.0050 + + + + + + + +|χ(R)| +diff +R (Å) + +xraytsubaki total + +xraylarch total + +diff + +feffcu01dat_00 + +feff0002dat_01 + \ No newline at end of file diff --git a/doc/plots/feff_vs_larch_06_multi_dataset_ds1.png b/doc/plots/feff_vs_larch_06_multi_dataset_ds1.png new file mode 100644 index 0000000000000000000000000000000000000000..2204a9e961b761441956cc7515ddea9f0a834398 GIT binary patch literal 32668 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%0DbTkP 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 kvdLdZ1HZMAH@H2-%W|jeQ + + +06_multi_dataset_ds1: xraytsubaki vs xraylarch +RMS(diff)=7.465e-02, Max|diff|=4.009e-01, contributions=0 + + +0.0500 + + +2.8400 + + +5.6300 + + +8.4200 + + +11.2100 + + +14.0000 + +-0.4009 + +-0.2819 + +-0.1628 + +-0.0437 + +0.0754 + +0.1945 + +-0.4009 + +-0.2406 + +-0.0802 + +0.0802 + +0.2406 + +0.4009 + + + + + +χ(k) +diff +k (Å⁻¹) + +xraytsubaki total + +xraylarch total + +diff + \ No newline at end of file diff --git a/doc/plots/feff_vs_larch_06_multi_dataset_ds1_rspace.png b/doc/plots/feff_vs_larch_06_multi_dataset_ds1_rspace.png new file mode 100644 index 0000000000000000000000000000000000000000..1d6c0513268b8ead127ec424d332d897f13ff6ed GIT binary patch literal 28903 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 am%3>EvpG2*rPIk}JGQA&qP86R{r>|GKc4ac literal 0 HcmV?d00001 diff --git a/doc/plots/feff_vs_larch_06_multi_dataset_ds1_rspace.svg b/doc/plots/feff_vs_larch_06_multi_dataset_ds1_rspace.svg new file mode 100644 index 0000000..72f928c --- /dev/null +++ b/doc/plots/feff_vs_larch_06_multi_dataset_ds1_rspace.svg @@ -0,0 +1,62 @@ + + + +06_multi_dataset_ds1_rspace: xraytsubaki vs xraylarch +RMS(diff)=1.392e-03, Max|diff|=5.781e-03, contributions=0 + + +0.0000 + + +1.9942 + + +3.9884 + + +5.9825 + + +7.9767 + + +9.9709 + +0.0000 + +1.5610 + +3.1219 + +4.6829 + +6.2439 + +7.8048 + +-0.0058 + +-0.0035 + +-0.0012 + +0.0012 + +0.0035 + +0.0058 + + + + + +|χ(R)| +diff +R (Å) + +xraytsubaki total + +xraylarch total + +diff + \ No newline at end of file diff --git a/doc/plots/feff_vs_larch_06_multi_dataset_ds1_rspace_contrib.png b/doc/plots/feff_vs_larch_06_multi_dataset_ds1_rspace_contrib.png new file mode 100644 index 0000000000000000000000000000000000000000..61efa61b26e78670148087a12bf781d441ce1bcf GIT binary patch literal 29910 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%0D)J0ja3&XS_+wGEHq{ziYeyr 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 literal 0 HcmV?d00001 diff --git a/doc/plots/feff_vs_larch_06_multi_dataset_ds1_rspace_contrib.svg b/doc/plots/feff_vs_larch_06_multi_dataset_ds1_rspace_contrib.svg new file mode 100644 index 0000000..948c071 --- /dev/null +++ b/doc/plots/feff_vs_larch_06_multi_dataset_ds1_rspace_contrib.svg @@ -0,0 +1,65 @@ + + + +06_multi_dataset_ds1_rspace_contrib: xraytsubaki vs xraylarch +RMS(diff)=1.392e-03, Max|diff|=5.781e-03, contributions=1 + + +0.0000 + + +1.9942 + + +3.9884 + + +5.9825 + + +7.9767 + + +9.9709 + +0.0000 + +1.5610 + +3.1219 + +4.6829 + +6.2439 + +7.8048 + +-0.0058 + +-0.0035 + +-0.0012 + +0.0012 + +0.0035 + +0.0058 + + + + + + +|χ(R)| +diff +R (Å) + +xraytsubaki total + +xraylarch total + +diff + +feffcu01dat_00 + \ No newline at end of file diff --git a/doc/plots/feff_vs_larch_07_multi_dataset_ds2.png b/doc/plots/feff_vs_larch_07_multi_dataset_ds2.png new file mode 100644 index 0000000000000000000000000000000000000000..743c2cb9ee9d520f3716decda0820cd059825a3d GIT binary patch literal 34322 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 PB0;S+>lm@Cw;%jpLh?FJ literal 0 HcmV?d00001 diff --git a/doc/plots/feff_vs_larch_07_multi_dataset_ds2.svg b/doc/plots/feff_vs_larch_07_multi_dataset_ds2.svg new file mode 100644 index 0000000..2397f92 --- /dev/null +++ b/doc/plots/feff_vs_larch_07_multi_dataset_ds2.svg @@ -0,0 +1,62 @@ + + + +07_multi_dataset_ds2: xraytsubaki vs xraylarch +RMS(diff)=6.724e-02, Max|diff|=3.574e-01, contributions=0 + + +0.0500 + + +2.8400 + + +5.6300 + + +8.4200 + + +11.2100 + + +14.0000 + +-0.3574 + +-0.2463 + +-0.1351 + +-0.0239 + +0.0873 + +0.1985 + +-0.3574 + +-0.2145 + +-0.0715 + +0.0715 + +0.2145 + +0.3574 + + + + + +χ(k) +diff +k (Å⁻¹) + +xraytsubaki total + +xraylarch total + +diff + \ No newline at end of file diff --git a/doc/plots/feff_vs_larch_07_multi_dataset_ds2_rspace.png b/doc/plots/feff_vs_larch_07_multi_dataset_ds2_rspace.png new file mode 100644 index 0000000000000000000000000000000000000000..6d2e39858e0306453e801ee23ac6a38bfc381f4d GIT binary patch literal 27835 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 + + +07_multi_dataset_ds2_rspace: xraytsubaki vs xraylarch +RMS(diff)=1.275e-03, Max|diff|=5.031e-03, contributions=0 + + +0.0000 + + +1.9942 + + +3.9884 + + +5.9825 + + +7.9767 + + +9.9709 + +0.0000 + +1.5658 + +3.1316 + +4.6974 + +6.2632 + +7.8290 + +-0.0050 + +-0.0030 + +-0.0010 + +0.0010 + +0.0030 + +0.0050 + + + + + +|χ(R)| +diff +R (Å) + +xraytsubaki total + +xraylarch total + +diff + \ No newline at end of file diff --git a/doc/plots/feff_vs_larch_07_multi_dataset_ds2_rspace_contrib.png b/doc/plots/feff_vs_larch_07_multi_dataset_ds2_rspace_contrib.png new file mode 100644 index 0000000000000000000000000000000000000000..4be565fd5f5dafb510b9bc31536ba8c38175b2d6 GIT binary patch literal 30047 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 + + +07_multi_dataset_ds2_rspace_contrib: xraytsubaki vs xraylarch +RMS(diff)=1.275e-03, Max|diff|=5.031e-03, contributions=2 + + +0.0000 + + +1.9942 + + +3.9884 + + +5.9825 + + +7.9767 + + +9.9709 + +0.0000 + +1.5658 + +3.1316 + +4.6974 + +6.2632 + +7.8290 + +-0.0050 + +-0.0030 + +-0.0010 + +0.0010 + +0.0030 + +0.0050 + + + + + + + +|χ(R)| +diff +R (Å) + +xraytsubaki total + +xraylarch total + +diff + +feffcu01dat_00 + +feff0002dat_01 + \ No newline at end of file diff --git a/doc/plots/feff_vs_larch_data/01_path_builder.csv b/doc/plots/feff_vs_larch_data/01_path_builder.csv new file mode 100644 index 0000000..d7cbc4b --- /dev/null +++ b/doc/plots/feff_vs_larch_data/01_path_builder.csv @@ -0,0 +1,281 @@ +k,model,larch,diff +5.000000000000000e-2,0.000000000000000e0,-3.294014545590028e-1,3.294014545590028e-1 +1.000000000000000e-1,-0.000000000000000e0,-3.325857487366470e-1,3.325857487366470e-1 +1.500000000000000e-1,-0.000000000000000e0,-3.357700429142912e-1,3.357700429142912e-1 +2.000000000000000e-1,-0.000000000000000e0,-3.401532904633558e-1,3.401532904633558e-1 +2.500000000000000e-1,-0.000000000000000e0,-3.456560420239568e-1,3.456560420239568e-1 +3.000000000000000e-1,-0.000000000000000e0,-3.521695009003528e-1,3.521695009003528e-1 +3.500000000000000e-1,-0.000000000000000e0,-3.595505950839698e-1,3.595505950839698e-1 +4.000000000000000e-1,-0.000000000000000e0,-3.676159293232869e-1,3.676159293232869e-1 +4.500000000000000e-1,-0.000000000000000e0,-3.761342857813328e-1,3.761342857813328e-1 +5.000000000000000e-1,-0.000000000000000e0,-3.848161215226475e-1,3.848161215226475e-1 +5.500000000000000e-1,0.000000000000000e0,-3.932912407666668e-1,3.932912407666668e-1 +6.000000000000001e-1,0.000000000000000e0,-4.009380735867983e-1,4.009380735867983e-1 +6.500000000000000e-1,-3.915853054277744e-1,-3.926716466366216e-1,1.086341208847208e-3 +7.000000000000001e-1,-3.802944970001493e-1,-3.813331402971081e-1,1.038643296958852e-3 +7.500000000000000e-1,-3.674290524831365e-1,-3.683470245398694e-1,9.179720567329408e-4 +8.000000000000000e-1,-3.529421504134531e-1,-3.535384017595220e-1,5.962513460689434e-4 +8.500000000000001e-1,-3.366121565912450e-1,-3.367438066643357e-1,1.316500730906833e-4 +9.000000000000000e-1,-3.171093622540004e-1,-3.178195023572455e-1,7.101401032451049e-4 +9.500000000000001e-1,-2.960070141732363e-1,-2.966649207098992e-1,6.579065366629222e-4 +1.000000000000000e0,-2.730420065322258e-1,-2.731786232202901e-1,1.366166880643060e-4 +1.050000000000000e0,-2.465828189164593e-1,-2.473011706388375e-1,7.183517223782465e-4 +1.100000000000000e0,-2.187062008047924e-1,-2.191364633970085e-1,4.302625922160963e-4 +1.150000000000000e0,-1.882868887824480e-1,-1.888065267837186e-1,5.196380012706392e-4 +1.200000000000000e0,-1.557825913344832e-1,-1.564444046653403e-1,6.618133308571861e-4 +1.250000000000000e0,-1.222271532310840e-1,-1.224036763166079e-1,1.765230855238914e-4 +1.300000000000000e0,-8.652203757219393e-2,-8.715983524047755e-2,6.377976682836184e-4 +1.350000000000000e0,-5.110748419092499e-2,-5.124494511630743e-2,1.374609253824363e-4 +1.400000000000000e0,-1.475831949537142e-2,-1.526751063079347e-2,5.091911354220529e-4 +1.450000000000000e0,2.037900469720176e-2,2.009284886755197e-2,2.861558296497826e-4 +1.500000000000000e0,5.447784211421495e-2,5.411256444340888e-2,3.652776708060676e-4 +1.550000000000000e0,8.637820832842411e-2,8.611033042562016e-2,2.678779028039424e-4 +1.600000000000000e0,1.154189773414290e-1,1.152681180423988e-1,1.508592990302760e-4 +1.650000000000000e0,1.407961117801618e-1,1.406728273556015e-1,1.232844245603049e-4 +1.700000000000000e0,1.616944419509563e-1,1.616641557189680e-1,3.028623198830793e-5 +1.750000000000000e0,1.778080413309615e-1,1.777615901639631e-1,4.645116699839025e-5 +1.800000000000000e0,1.885906396829412e-1,1.885934374458280e-1,-2.797762886808108e-6 +1.850000000000000e0,1.937639274614610e-1,1.939096951849520e-1,-1.457677234910637e-4 +1.900000000000000e0,1.934474172288985e-1,1.934543094537796e-1,-6.892224881149822e-6 +1.950000000000000e0,1.869415542228487e-1,1.872181652685968e-1,-2.766110457481097e-4 +2.000000000000000e0,1.755518959497113e-1,1.756076414101513e-1,-5.574546043998763e-5 +2.050000000000000e0,1.589378080020292e-1,1.592074863076734e-1,-2.696783056441998e-4 +2.100000000000000e0,1.384453626164553e-1,1.387543676633363e-1,-3.090050468809447e-4 +2.150000000000000e0,1.135981670044739e-1,1.149897343852503e-1,-1.391567380776448e-3 +2.200000000000000e0,8.722760249214880e-2,8.875688172901036e-2,-1.529279236861567e-3 +2.250000000000000e0,6.046780845036538e-2,6.126408875565007e-2,-7.962803052846898e-4 +2.300000000000000e0,3.386948035275666e-2,3.383069858273713e-2,3.878177001953587e-5 +2.350000000000000e0,8.317470937088524e-3,8.001530980010461e-3,3.159399570780621e-4 +2.400000000000000e0,-1.379241349793018e-2,-1.419485949073218e-2,4.024459928019999e-4 +2.450000000000000e0,-3.093239483209223e-2,-3.094240168596014e-2,1.000685386791378e-5 +2.500000000000000e0,-4.316433233656559e-2,-4.224256148900268e-2,-9.217708475629111e-4 +2.550000000000000e0,-5.274710579688240e-2,-5.031380519059944e-2,-2.433300606282961e-3 +2.600000000000000e0,-5.901855719715893e-2,-5.670952968803743e-2,-2.309027509121500e-3 +2.650000000000000e0,-6.207853765685667e-2,-6.135428800005268e-2,-7.242496568039894e-4 +2.700000000000000e0,-6.264545903348590e-2,-6.305081412694059e-2,4.053550934546984e-4 +2.750000000000000e0,-6.056403835571495e-2,-6.127376324439794e-2,7.097248886829902e-4 +2.800000000000000e0,-5.595405938891754e-2,-5.652561559186974e-2,5.715562029521976e-4 +2.850000000000000e0,-4.940609936712565e-2,-4.955663879173896e-2,1.505394246133079e-4 +2.900000000000000e0,-4.110047197269584e-2,-4.113529316986852e-2,3.482119717267834e-5 +2.950000000000000e0,-3.128803671742777e-2,-3.168053048321991e-2,3.924937657921457e-4 +3.000000000000000e0,-2.088808424086482e-2,-2.146831418650914e-2,5.802299456443213e-4 +3.050000000000000e0,-1.069896640466857e-2,-1.087946208821198e-2,1.804956835434052e-4 +3.100000000000000e0,1.605852549992616e-5,-4.587705779771952e-4,4.748291034771214e-4 +3.150000000000000e0,9.919808535598221e-3,9.061277594673041e-3,8.585309409251795e-4 +3.200000000000000e0,1.791475206324469e-2,1.708921245437348e-2,8.255396088712105e-4 +3.250000000000000e0,2.347986619577907e-2,2.332543994108142e-2,1.544262546976510e-4 +3.300000000000000e0,2.838156668674029e-2,2.767369495791551e-2,7.078717288247806e-4 +3.350000000000000e0,3.103256448487451e-2,2.994275657939049e-2,1.089807905484026e-3 +3.400000000000000e0,3.076554690024546e-2,2.989024823516422e-2,8.752986650812401e-4 +3.450000000000000e0,2.748304472745677e-2,2.740457688441883e-2,7.846784303793680e-5 +3.500000000000000e0,2.327711757253738e-2,2.261174459581147e-2,6.653729767259163e-4 +3.550000000000000e0,1.671256792164662e-2,1.579795282183295e-2,9.146150998136648e-4 +3.600000000000000e0,7.977102789516898e-3,7.323249415895688e-3,6.538533736212097e-4 +3.650000000000000e0,-2.370471253104306e-3,-2.380798998970953e-3,1.032774586664760e-5 +3.700000000000000e0,-1.249265715085654e-2,-1.281254498424808e-2,3.198878333915377e-4 +3.750000000000000e0,-2.305137632221002e-2,-2.339859823437767e-2,3.472219121676522e-4 +3.800000000000000e0,-3.334596028124870e-2,-3.353472147970279e-2,1.887611984540891e-4 +3.850000000000000e0,-4.261368573261622e-2,-4.262032967414725e-2,6.643941531034314e-6 +3.900000000000000e0,-4.998070863172447e-2,-5.008641634667832e-2,1.057077149538496e-4 +3.950000000000000e0,-5.531067338967915e-2,-5.541970665377990e-2,1.090332641007496e-4 +4.000000000000000e0,-5.811884856629419e-2,-5.818284346494816e-2,6.399489865397540e-5 +4.050000000000000e0,-5.802798461471789e-2,-5.803659160936112e-2,8.606994643230170e-6 +4.100000000000001e0,-5.475241926834878e-2,-5.478653800353910e-2,3.411873519031106e-5 +4.150000000000000e0,-4.849677003306710e-2,-4.847398543699171e-2,-2.278459607538835e-5 +4.200000000000000e0,-3.940903758574368e-2,-3.934649815839190e-2,-6.253942735178625e-5 +4.250000000000000e0,-2.783480279646578e-2,-2.782024409440195e-2,-1.455870206382506e-5 +4.300000000000000e0,-1.449485448772742e-2,-1.441432204924694e-2,-8.053243848047190e-5 +4.350000000000001e0,2.447228060772750e-4,3.265218023979571e-4,-8.179899632068210e-5 +4.400000000000000e0,1.573604618611214e-2,1.578191918956779e-2,-4.587300345565773e-5 +4.450000000000000e0,3.126372755076821e-2,3.125449153850474e-2,9.236012263470761e-6 +4.500000000000000e0,4.600106048923661e-2,4.598155098922993e-2,1.950950000667584e-5 +4.550000000000000e0,5.917239738897542e-2,5.917879554031483e-2,-6.398151339410962e-6 +4.600000000000001e0,7.009712254133452e-2,7.011813343809929e-2,-2.101089676477541e-5 +4.650000000000000e0,7.815141002623074e-2,7.816915293860129e-2,-1.774291237054137e-5 +4.700000000000000e0,8.271132133073993e-2,8.281759304920717e-2,-1.062717184672490e-4 +4.750000000000000e0,8.353745464336736e-2,8.368420542837066e-2,-1.467507850032995e-4 +4.800000000000001e0,8.049221770303266e-2,8.058963229390792e-2,-9.741459087525550e-5 +4.850000000000001e0,7.356016201376378e-2,7.358342092383775e-2,-2.325891007397274e-5 +4.900000000000000e0,6.289892863829247e-2,6.295556973109265e-2,-5.664109280018037e-5 +4.950000000000000e0,4.917065938372108e-2,4.920365892816373e-2,-3.299954444264952e-5 +5.000000000000000e0,3.296274719579328e-2,3.296768579203947e-2,-4.938596246187310e-6 +5.050000000000001e0,1.496764495084400e-2,1.498984481746126e-2,-2.219986661725765e-5 +5.100000000000001e0,-4.020496408920863e-3,-3.929514776377779e-3,-9.098163254308341e-5 +5.150000000000000e0,-2.306708491689408e-2,-2.295628888039202e-2,-1.107960365020547e-4 +5.200000000000000e0,-4.129003870601811e-2,-4.122508671583548e-2,-6.495199018263786e-5 +5.250000000000000e0,-5.786714096211528e-2,-5.786692630852265e-2,-2.146535926297877e-7 +5.300000000000001e0,-7.197655048888957e-2,-7.202556967489648e-2,4.901918600691557e-5 +5.350000000000001e0,-8.281704981016172e-2,-8.291373033798419e-2,9.668052782246805e-5 +5.400000000000000e0,-8.985295321463024e-2,-8.992350683799055e-2,7.055362336030879e-5 +5.450000000000000e0,-9.265904430254911e-2,-9.268088631045045e-2,2.184200790134039e-5 +5.500000000000000e0,-9.102624864423704e-2,-9.107908727781257e-2,5.283863357552487e-5 +5.550000000000001e0,-8.517161260633160e-2,-8.523224567628562e-2,6.063306995401918e-5 +5.600000000000001e0,-7.536111353083387e-2,-7.540638119559814e-2,4.526766476427302e-5 +5.650000000000000e0,-6.196304722450949e-2,-6.200189369554369e-2,3.884647103419986e-5 +5.700000000000000e0,-4.546743352428891e-2,-4.557316986790264e-2,1.057363436137368e-4 +5.750000000000000e0,-2.678817172767015e-2,-2.687967771539055e-2,9.150598772040067e-5 +5.800000000000001e0,-6.819761695018653e-3,-6.849405836761214e-3,2.964414174256094e-5 +5.850000000000001e0,1.346415056336587e-2,1.348432009170464e-2,-2.016952833877247e-5 +5.900000000000000e0,3.303332671192397e-2,3.308903116410555e-2,-5.570445218158054e-5 +5.950000000000000e0,5.096466205101085e-2,5.102264616099141e-2,-5.798410998055642e-5 +6.000000000000000e0,6.641053714943662e-2,6.644019174355857e-2,-2.965459412195004e-5 +6.050000000000001e0,7.860839871274450e-2,7.862235679434557e-2,-1.395808160106760e-5 +6.100000000000001e0,8.690171624582563e-2,8.699505008224447e-2,-9.333383641883797e-5 +6.150000000000000e0,9.095157956570786e-2,9.115787654823546e-2,-2.062969825275957e-4 +6.200000000000000e0,9.060111852482100e-2,9.091884418325794e-2,-3.177256584369348e-4 +6.250000000000000e0,8.590740760084239e-2,8.630565955985785e-2,-3.982519590154526e-4 +6.300000000000001e0,7.713660689392536e-2,7.756464886558304e-2,-4.280419716576750e-4 +6.350000000000001e0,6.474900991872820e-2,6.514820479733918e-2,-3.991948786109811e-4 +6.400000000000000e0,4.937483439566361e-2,4.969138238178368e-2,-3.165479861200679e-4 +6.450000000000000e0,3.178203311449215e-2,3.197887233777263e-2,-1.968392232804886e-4 +6.500000000000000e0,1.283777531842578e-2,1.290412019320335e-2,-6.634487477757099e-5 +6.550000000000001e0,-6.603313729778812e-3,-6.577220900253045e-3,-2.609282952576678e-5 +6.600000000000001e0,-2.553802878659509e-2,-2.549764026540373e-2,-4.038852119136321e-5 +6.650000000000000e0,-4.293203784060443e-2,-4.292794882956833e-2,-4.089011036094437e-6 +6.700000000000000e0,-5.796111608760502e-2,-5.802370193848817e-2,6.258585088315255e-5 +6.750000000000000e0,-6.993011956794722e-2,-7.006731498927628e-2,1.371954213290616e-4 +6.800000000000001e0,-7.830493195423731e-2,-7.850324998118982e-2,1.983180269525125e-4 +6.850000000000001e0,-8.273595629581884e-2,-8.296445633348552e-2,2.285000376666818e-4 +6.900000000000000e0,-8.307214283774553e-2,-8.328877256613433e-2,2.166297283888036e-4 +6.950000000000000e0,-7.936502855221324e-2,-7.952454115866209e-2,1.595126064488500e-4 +7.000000000000000e0,-7.186276550301263e-2,-7.192526911410060e-2,6.250361108797731e-5 +7.050000000000001e0,-6.088443514286736e-2,-6.093374572850791e-2,4.931058564055374e-5 +7.100000000000001e0,-4.702535782772273e-2,-4.715640700691572e-2,1.310491791929880e-4 +7.150000000000000e0,-3.115229759320708e-2,-3.132942550937055e-2,1.771279161634637e-4 +7.200000000000000e0,-1.409304754687792e-2,-1.427907649474588e-2,1.860289478679677e-4 +7.250000000000000e0,3.284167167401071e-3,3.121734130525496e-3,1.624330368755742e-4 +7.300000000000001e0,2.011470087046009e-2,1.999857567972660e-2,1.161251907334931e-4 +7.350000000000001e0,3.558032188971767e-2,3.551988516577422e-2,6.043672394345084e-5 +7.400000000000000e0,4.894876054569523e-2,4.893837819426151e-2,1.038235143371175e-5 +7.450000000000000e0,5.960807461009695e-2,5.962740437407831e-2,-1.932976398136277e-5 +7.500000000000000e0,6.709423972979345e-2,6.711047149618247e-2,-1.623176638902712e-5 +7.550000000000001e0,7.107074067874039e-2,7.108254557408521e-2,-1.180489534481632e-5 +7.600000000000001e0,7.136948955177468e-2,7.142219975837473e-2,-5.271020660005399e-5 +7.650000000000000e0,6.809010179893901e-2,6.819433118481183e-2,-1.042293858728172e-4 +7.700000000000000e0,6.149106229398735e-2,6.164319123625330e-2,-1.521289422659541e-4 +7.750000000000000e0,5.199121589066838e-2,5.217621235581463e-2,-1.849964651462477e-4 +7.800000000000001e0,4.014434099767430e-2,4.033975560878329e-2,-1.954146111089877e-4 +7.850000000000001e0,2.660756737590048e-2,2.678820095319883e-2,-1.806335772983475e-4 +7.900000000000000e0,1.210540951576728e-2,1.224811874907342e-2,-1.427092333061465e-4 +7.950000000000000e0,-2.608637996490844e-3,-2.520517219241452e-3,-8.812077724939258e-5 +8.000000000000000e0,-1.679092587850236e-2,-1.676400091345857e-2,-2.692496504378555e-5 +8.050000000000001e0,-2.979279781048163e-2,-2.977333293763550e-2,-1.946487284613246e-5 +8.100000000000000e0,-4.095445907100383e-2,-4.091886099415020e-2,-3.559807685363237e-5 +8.150000000000000e0,-4.971163896902608e-2,-4.968110509181467e-2,-3.053387721140693e-5 +8.200000000000001e0,-5.568777998254047e-2,-5.567600701799864e-2,-1.177296454182158e-5 +8.250000000000000e0,-5.865966713692173e-2,-5.867189565488429e-2,1.222851796255781e-5 +8.300000000000001e0,-5.856438801471094e-2,-5.859796531610711e-2,3.357730139617876e-5 +8.350000000000000e0,-5.549782667412241e-2,-5.554400703826384e-2,4.618036414142518e-5 +8.400000000000000e0,-4.970502027515417e-2,-4.975159818027985e-2,4.657790512568871e-5 +8.450000000000001e0,-4.156311936551006e-2,-4.159742424055457e-2,3.430487504450797e-5 +8.500000000000000e0,-3.155805408533852e-2,-3.156982764134590e-2,1.177355600738561e-5 +8.550000000000001e0,-2.023021746998942e-2,-2.023998357483600e-2,9.766104846587603e-6 +8.600000000000000e0,-8.204489188075920e-3,-8.228727770454299e-3,2.423858237837924e-5 +8.650000000000000e0,3.861127368449841e-3,3.827479727038068e-3,3.364764141177345e-5 +8.700000000000001e0,1.534630870542263e-2,1.530936795006152e-2,3.694075536110619e-5 +8.750000000000000e0,2.568030976397370e-2,2.564617866034529e-2,3.413110362841115e-5 +8.800000000000001e0,3.436990216909578e-2,3.434356122040055e-2,2.634094869522624e-5 +8.850000000000000e0,4.102239888090764e-2,4.100669307998268e-2,1.570580092496304e-5 +8.900000000000000e0,4.536272254250045e-2,4.535758178295143e-2,5.140759549014662e-6 +8.950000000000001e0,4.724381945042722e-2,4.724583343258998e-2,-2.013982162756001e-6 +9.000000000000000e0,4.665009130873107e-2,4.665252827378931e-2,-2.436965058236207e-6 +9.050000000000001e0,4.368532757448981e-2,4.368722123280012e-2,-1.893658310311852e-6 +9.100000000000000e0,3.857311707975175e-2,3.857880239993067e-2,-5.685320178923370e-6 +9.150000000000000e0,3.165264458636769e-2,3.166068225402761e-2,-8.037667659915870e-6 +9.200000000000001e0,2.334235672396818e-2,2.335012603780156e-2,-7.769313833380642e-6 +9.250000000000000e0,1.411849922075456e-2,1.412354756874768e-2,-5.048347993124452e-6 +9.300000000000001e0,4.488365786972021e-3,4.489379393336292e-3,-1.013606364271523e-6 +9.350000000000000e0,-5.037166228100863e-3,-5.039917047772023e-3,2.750819671160087e-6 +9.400000000000000e0,-1.397034817023456e-2,-1.397513594748538e-2,4.787777250818415e-6 +9.450000000000001e0,-2.187114441220226e-2,-2.187543016706310e-2,4.285754860836738e-6 +9.500000000000000e0,-2.836847164990459e-2,-2.836992789242949e-2,1.456242524906781e-6 +9.550000000000001e0,-3.317619666118283e-2,-3.317484174443213e-2,-1.354916750698210e-6 +9.600000000000001e0,-3.611235604039846e-2,-3.610552971219381e-2,-6.826328204652399e-6 +9.650000000000000e0,-3.709461156108980e-2,-3.708136689927710e-2,-1.324466181269746e-5 +9.700000000000001e0,-3.614276393101642e-2,-3.612505751102309e-2,-1.770641999333106e-5 +9.750000000000000e0,-3.337585562340926e-2,-3.335737150533307e-2,-1.848411807618688e-5 +9.800000000000001e0,-2.900242096955690e-2,-2.898714746713086e-2,-1.527350242603448e-5 +9.850000000000001e0,-2.330641813911669e-2,-2.329725107638915e-2,-9.167062727542807e-6 +9.900000000000000e0,-1.662973438604077e-2,-1.662736038323953e-2,-2.374002801230901e-6 +9.950000000000001e0,-9.352304493798466e-3,-9.354567131054040e-3,2.262637255574101e-6 +1.000000000000000e1,-1.870970731914900e-3,-1.872848172190767e-3,1.877440275866935e-6 +1.005000000000000e1,5.448591370752241e-3,5.427492164462626e-3,2.109920628961485e-5 +1.010000000000000e1,1.223612862615366e-2,1.217902825553127e-2,5.710037062238611e-5 +1.015000000000000e1,1.814625027293358e-2,1.805524144004871e-2,9.100883288487918e-5 +1.020000000000000e1,2.290397044108777e-2,2.278621937645637e-2,1.177510646314037e-4 +1.025000000000000e1,2.630433953430620e-2,2.617062965873060e-2,1.337098755756008e-4 +1.030000000000000e1,2.822064616991751e-2,2.808372682602689e-2,1.369193438906235e-4 +1.035000000000000e1,2.860820781302250e-2,2.848111496202296e-2,1.270928509995439e-4 +1.040000000000000e1,2.750370840464247e-2,2.739821257867673e-2,1.054958259657443e-4 +1.045000000000000e1,2.502027894869243e-2,2.494559303993540e-2,7.468590875702244e-5 +1.050000000000000e1,2.133873580175927e-2,2.130058386675655e-2,3.815193500272124e-5 +1.055000000000000e1,1.669558028088094e-2,1.669569129211092e-2,-1.110112299758381e-7 +1.060000000000000e1,1.136851313538917e-2,1.140456359473908e-2,-3.605045934990461e-5 +1.065000000000000e1,5.660321793150190e-3,5.726311416106131e-3,-6.598962295594098e-5 +1.070000000000000e1,-1.179468582812607e-4,-3.093868396967467e-5,-8.700817431158607e-5 +1.075000000000000e1,-5.663611209345789e-3,-5.566371271701225e-3,-9.723993764456425e-5 +1.080000000000000e1,-1.069790510717593e-2,-1.060184066582380e-2,-9.606444135213353e-5 +1.085000000000000e1,-1.497967113330553e-2,-1.489549275332029e-2,-8.417837998524018e-5 +1.090000000000000e1,-1.831654279564003e-2,-1.825299994212069e-2,-6.354285351934177e-5 +1.095000000000000e1,-2.057311975095585e-2,-2.053590767384609e-2,-3.721207710976823e-5 +1.100000000000000e1,-2.167581902189752e-2,-2.166676060250415e-2,-9.058419393373485e-6 +1.105000000000000e1,-2.164681044891285e-2,-2.163085686820075e-2,-1.595358071209904e-5 +1.110000000000000e1,-2.050812984088478e-2,-2.047465442990558e-2,-3.347541097920015e-5 +1.115000000000000e1,-1.834285472928868e-2,-1.830105771378189e-2,-4.179701550678649e-5 +1.120000000000000e1,-1.530234851461929e-2,-1.526194409035614e-2,-4.040442426315148e-5 +1.125000000000000e1,-1.157837636829751e-2,-1.154841037692295e-2,-2.996599137456216e-5 +1.130000000000000e1,-7.391487859104086e-3,-7.379338145569930e-3,-1.214971353415573e-5 +1.135000000000000e1,-2.978302131431121e-3,-2.988938879825488e-3,1.063674839436694e-5 +1.140000000000000e1,1.421587333262895e-3,1.386031097737146e-3,3.555623552574947e-5 +1.145000000000000e1,5.578377216685236e-3,5.518704446114999e-3,5.967277057023716e-5 +1.150000000000000e1,9.283820769752016e-3,9.203547913928561e-3,8.027285582345479e-5 +1.155000000000000e1,1.236140676637873e-2,1.226625721756981e-2,9.514954880891421e-5 +1.160000000000000e1,1.467446840590377e-2,1.457164282457137e-2,1.028255813323997e-4 +1.165000000000000e1,1.613186828967063e-2,1.602917070210778e-2,1.026975875628514e-4 +1.170000000000000e1,1.669104855071762e-2,1.659595801810001e-2,9.509053261761921e-5 +1.175000000000000e1,1.635838417226359e-2,1.627716503008925e-2,8.121914217433870e-5 +1.180000000000000e1,1.518692424018330e-2,1.512386329484178e-2,6.306094534152054e-5 +1.185000000000000e1,1.327174250965681e-2,1.322858963079862e-2,4.315287885819051e-5 +1.190000000000000e1,1.074323823202881e-2,1.071890850872551e-2,2.432972330330095e-5 +1.195000000000000e1,7.758824872022224e-3,7.749397380750424e-3,9.427491271800370e-6 +1.200000000000000e1,4.493513789763925e-3,4.492535878338436e-3,9.779114254889962e-7 +1.205000000000000e1,1.124306609205682e-3,1.129009678268843e-3,-4.703069063161655e-6 +1.210000000000000e1,-2.179183611452384e-3,-2.162096817035537e-3,-1.708679441684647e-5 +1.215000000000000e1,-5.245748678240382e-3,-5.212481968576560e-3,-3.326670966382218e-5 +1.220000000000000e1,-7.922831089050331e-3,-7.872854994341653e-3,-4.997609470867859e-5 +1.225000000000000e1,-1.008411754443125e-2,-1.001991949450199e-2,-6.419804992925833e-5 +1.230000000000000e1,-1.163526329581228e-2,-1.156175306398890e-2,-7.351023182337879e-5 +1.235000000000000e1,-1.251770293001261e-2,-1.244136833240152e-2,-7.633459761108297e-5 +1.240000000000000e1,-1.271041458627794e-2,-1.263834178303834e-2,-7.207280323960272e-5 +1.245000000000000e1,-1.222961921155182e-2,-1.216849891701549e-2,-6.112029453633587e-5 +1.250000000000000e1,-1.112650787330656e-2,-1.108174336415266e-2,-4.476450915389882e-5 +1.255000000000000e1,-9.483192469679524e-3,-9.458208599265975e-3,-2.498387041354952e-5 +1.260000000000000e1,-7.407163211328423e-3,-7.402989761817498e-3,-4.173449510924687e-6 +1.265000000000000e1,-5.024605767287967e-3,-5.039776205606521e-3,1.517043831855344e-5 +1.270000000000000e1,-2.472978893981097e-3,-2.503750219292607e-3,3.077132531151055e-5 +1.275000000000000e1,1.067220896431099e-4,6.585776105391020e-5,4.086432858919971e-5 +1.280000000000000e1,2.577589915947284e-3,2.533162767047225e-3,4.442714890005948e-5 +1.285000000000000e1,4.813914295617686e-3,4.772588782592042e-3,4.132551302564458e-5 +1.290000000000000e1,6.707414595635171e-3,6.675057528337165e-3,3.235706729800680e-5 +1.295000000000000e1,8.172296718785922e-3,8.153108738198085e-3,1.918798058783699e-5 +1.300000000000000e1,9.148909472342365e-3,9.144722221219244e-3,4.187251123121544e-6 +1.305000000000000e1,9.623111183812804e-3,9.615685819962095e-3,7.425363850708383e-6 +1.310000000000000e1,9.574106596565607e-3,9.560466761592517e-3,1.363983497308999e-5 +1.315000000000000e1,9.016639254818685e-3,9.001610557677649e-3,1.502869714103613e-5 +1.320000000000000e1,7.999653423176462e-3,7.987590027620914e-3,1.206339555554804e-5 +1.325000000000000e1,6.594922160799337e-3,6.589308887028172e-3,5.613273771165259e-6 +1.330000000000000e1,4.892323291839319e-3,4.895520112888521e-3,-3.196821049202166e-6 +1.335000000000000e1,2.994313561047216e-3,3.007443206001367e-3,-1.312964495415103e-5 +1.340000000000000e1,1.009930683115912e-3,1.032898863024424e-3,-2.296817990851143e-5 +1.345000000000000e1,-9.513335723228709e-4,-9.197045512599945e-4,-3.162902106287641e-5 +1.350000000000000e1,-2.785451918187585e-3,-2.747201441313184e-3,-3.825047687440117e-5 +1.355000000000000e1,-4.399258376173262e-3,-4.357006341400600e-3,-4.225203477266262e-5 +1.360000000000000e1,-5.715050286098988e-3,-5.671685938644051e-3,-4.336434745493695e-5 +1.365000000000000e1,-6.674176034604923e-3,-6.632544991951675e-3,-4.163104265324756e-5 +1.370000000000000e1,-7.239452654833038e-3,-7.202067296267993e-3,-3.738535856504487e-5 +1.375000000000000e1,-7.396327176541573e-3,-7.365121355367849e-3,-3.120582117372393e-5 +1.380000000000000e1,-7.152767392481206e-3,-7.128911471144582e-3,-2.385592133662302e-5 +1.385000000000000e1,-6.537937535957940e-3,-6.521724465611306e-3,-1.621307034663406e-5 +1.390000000000000e1,-5.599778478636704e-3,-5.590586389117912e-3,-9.192089518791566e-6 +1.395000000000000e1,-4.401667155067073e-3,-4.397998944792540e-3,-3.668210274533103e-6 +1.400000000000000e1,-3.018373320626700e-3,-3.017969208148637e-3,-4.041124780627438e-7 diff --git a/doc/plots/feff_vs_larch_data/01_path_builder_rspace.csv b/doc/plots/feff_vs_larch_data/01_path_builder_rspace.csv new file mode 100644 index 0000000..d1d2b70 --- /dev/null +++ b/doc/plots/feff_vs_larch_data/01_path_builder_rspace.csv @@ -0,0 +1,327 @@ +r,model,larch,diff +0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771283e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313848e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.227184630308513e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.533980787885641e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.840776945462770e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.147573103039898e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.454369260617026e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.761165418194154e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771282e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.374757733348411e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.681553890925539e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.988350048502667e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.295146206079796e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.601942363656924e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.908738521234052e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.215534678811180e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.522330836388308e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.829126993965437e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.442719309119693e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.749515466696822e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.056311624273950e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.363107781851078e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.669903939428206e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.976700097005335e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.283496254582463e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.590292412159591e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.897088569736720e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313848e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.510680884890976e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.817477042468105e-1,2.544195718850788e-1,2.558747282920494e-1,-1.455156406970581e-3 +1.012427320004523e0,2.752296078851635e-1,2.773025376727473e-1,-2.072929787583833e-3 +1.043106935762236e0,2.709449904649241e-1,2.735683477047668e-1,-2.623357239842750e-3 +1.073786551519949e0,2.398127187400496e-1,2.428152699477845e-1,-3.002551207734933e-3 +1.104466167277662e0,1.839786848730161e-1,1.870736439246672e-1,-3.094959051651081e-3 +1.135145783035375e0,1.135063290399351e-1,1.160528621453687e-1,-2.546533105433596e-3 +1.165825398793087e0,7.805589598998386e-2,7.754852264437105e-2,5.073733456128077e-4 +1.196505014550800e0,1.457144432219958e-1,1.435394888017387e-1,2.174954420257058e-3 +1.227184630308513e0,2.416529387298946e-1,2.398246866727718e-1,1.828252057122781e-3 +1.257864246066226e0,3.296717442421275e-1,3.285448278308771e-1,1.126916411250400e-3 +1.288543861823939e0,3.955496908458901e-1,3.952356005942735e-1,3.140902516166055e-4 +1.319223477581652e0,4.298439203530746e-1,4.303765632963322e-1,-5.326429432575552e-4 +1.349903093339364e0,4.267144479959524e-1,4.281042025947471e-1,-1.389754598794701e-3 +1.380582709097077e0,3.845797472245795e-1,3.868824236805590e-1,-2.302676455979535e-3 +1.411262324854790e0,3.077835269468379e-1,3.112457492914950e-1,-3.462222344657151e-3 +1.441941940612503e0,2.133321265031469e-1,2.186900221436502e-1,-5.357895640503318e-3 +1.472621556370216e0,1.642071719148660e-1,1.713715343640317e-1,-7.164362449165684e-3 +1.503301172127929e0,2.471711155793025e-1,2.522984049733616e-1,-5.127289394059098e-3 +1.533980787885641e0,3.971028057463870e-1,4.007499536517847e-1,-3.647147905397774e-3 +1.564660403643354e0,5.570787916875454e-1,5.602156878439984e-1,-3.136896156453073e-3 +1.595340019401067e0,7.050240838921245e-1,7.080747496897777e-1,-3.050665797653229e-3 +1.626019635158780e0,8.277612385924962e-1,8.309103089696968e-1,-3.149070377200580e-3 +1.656699250916493e0,9.158746254134836e-1,9.192091106321986e-1,-3.334485218714933e-3 +1.687378866674206e0,9.628794049797390e-1,9.664718537914971e-1,-3.592448811758131e-3 +1.718058482431918e0,9.656541123058654e-1,9.696463180008973e-1,-3.992205695031892e-3 +1.748738098189631e0,9.266204948977835e-1,9.313364995536739e-1,-4.716004655890393e-3 +1.779417713947344e0,8.601036588323087e-1,8.661831888946288e-1,-6.079530062320093e-3 +1.810097329705057e0,8.068928409471963e-1,8.152192139578609e-1,-8.326373010664634e-3 +1.840776945462770e0,8.478192696762338e-1,8.585669246158346e-1,-1.074765493960084e-2 +1.871456561220483e0,1.061311074414427e0,1.073147035846165e0,-1.183596143173760e-2 +1.902136176978195e0,1.452630835439992e0,1.464292537682443e0,-1.166170224245078e-2 +1.932815792735908e0,1.984591108477463e0,1.995552166800125e0,-1.096105832266181e-2 +1.963495408493621e0,2.621529475668214e0,2.631504866577784e0,-9.975390909569892e-3 +1.994175024251334e0,3.332744962391723e0,3.341457869106104e0,-8.712906714380519e-3 +2.024854640009047e0,4.087631649863540e0,4.094800195811356e0,-7.168545947815907e-3 +2.055534255766760e0,4.853436166589821e0,4.858817085637143e0,-5.380919047321520e-3 +2.086213871524472e0,5.595359047349070e0,5.598794766069281e0,-3.435718720210978e-3 +2.116893487282185e0,6.277967201738252e0,6.279420966997848e0,-1.453765259595841e-3 +2.147573103039898e0,6.867261314131377e0,6.866835054406098e0,4.262597252786549e-4 +2.178252718797611e0,7.332962907802561e0,7.330896104199549e0,2.066803603012701e-3 +2.208932334555323e0,7.650691766957828e0,7.647342037861583e0,3.349729096244758e-3 +2.239611950313036e0,7.803772599720386e0,7.799580915633002e0,4.191684087383685e-3 +2.270291566070749e0,7.784473759773748e0,7.779919120036420e0,4.554639737327726e-3 +2.300971181828462e0,7.594550634918871e0,7.590100373557053e0,4.450261361817809e-3 +2.331650797586175e0,7.245041673585752e0,7.241104068945938e0,3.937604639814296e-3 +2.362330413343888e0,6.755341169163074e0,6.752226580629729e0,3.114588533344786e-3 +2.393010029101601e0,6.151643446193118e0,6.149538810225253e0,2.104635967865143e-3 +2.423689644859313e0,5.464911647152372e0,5.463871001281782e0,1.040645870589607e-3 +2.454369260617026e0,4.728565783725616e0,4.728516833078941e0,4.895064667476134e-5 +2.485048876374739e0,3.976106069601268e0,3.976869996679484e0,-7.639270782160423e-4 +2.515728492132452e0,3.238888660984108e0,3.240207673360869e0,-1.319012376761020e-3 +2.546408107890165e0,2.544255832237022e0,2.545820338318451e0,-1.564506081429773e-3 +2.577087723647877e0,1.914203390896280e0,1.915667395558472e0,-1.464004662191876e-3 +2.607767339405590e0,1.364780581349432e0,1.365746689105934e0,-9.661077565021881e-4 +2.638446955163303e0,9.065953132385687e-1,9.065281295332590e-1,6.718370530967022e-5 +2.669126570921016e0,5.477744504926644e-1,5.457278491961594e-1,2.046601296505024e-3 +2.699806186678729e0,3.054887341212001e-1,2.995637851445563e-1,5.924948976643751e-3 +2.730485802436442e0,2.263931592284399e-1,2.168737554915928e-1,9.519403736847037e-3 +2.761165418194155e0,2.764597280540505e-1,2.686193902273983e-1,7.840337826652222e-3 +2.791845033951867e0,3.387747125398984e-1,3.329778384071310e-1,5.796874132767360e-3 +2.822524649709580e0,3.771583002997147e-1,3.728526645956100e-1,4.305635704104749e-3 +2.853204265467293e0,3.905553784828427e-1,3.874305587762821e-1,3.124819706560644e-3 +2.883883881225006e0,3.844590788721317e-1,3.823077963355339e-1,2.151282536597854e-3 +2.914563496982719e0,3.650071942940938e-1,3.636196885703041e-1,1.387505723789706e-3 +2.945243112740431e0,3.379002518113067e-1,3.370278655756987e-1,8.723862356079803e-4 +2.975922728498144e0,1.156407585389740e-33,1.154059954646660e-33,2.347630743079634e-36 +3.006602344255857e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.037281960013570e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771283e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.098641191528996e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.129320807286708e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.160000423044421e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.190680038802134e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.221359654559847e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.252039270317560e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.282718886075272e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.313398501832985e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.344078117590698e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.374757733348411e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.405437349106124e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.436116964863837e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.466796580621549e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.497476196379262e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.528155812136975e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.558835427894688e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.589515043652401e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.620194659410114e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.650874275167826e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.681553890925539e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.712233506683252e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.742913122440965e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.773592738198678e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.804272353956391e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.834951969714103e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.865631585471816e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.896311201229529e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.926990816987242e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.957670432744955e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.988350048502667e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.019029664260381e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.049709280018093e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.080388895775806e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.111068511533519e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.141748127291232e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.172427743048944e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.203107358806657e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.233786974564370e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.264466590322083e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.295146206079796e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.325825821837508e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.356505437595222e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.387185053352934e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.417864669110647e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.448544284868360e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.479223900626073e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.509903516383786e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.540583132141498e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.571262747899211e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.601942363656924e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.632621979414637e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.663301595172349e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.693981210930063e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.724660826687775e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.755340442445489e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.786020058203201e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.816699673960914e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.847379289718627e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.878058905476339e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.908738521234052e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.939418136991765e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.970097752749478e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.000777368507190e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.031456984264904e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.062136600022616e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.092816215780330e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.123495831538042e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.154175447295755e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.184855063053468e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.215534678811180e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.246214294568893e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.276893910326606e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.307573526084319e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.338253141842032e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.368932757599745e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.399612373357457e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.430291989115171e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.460971604872883e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.491651220630596e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.522330836388309e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.553010452146022e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.583690067903735e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.614369683661447e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.645049299419160e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.675728915176873e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.706408530934586e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.737088146692298e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.767767762450012e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.798447378207724e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.829126993965438e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.859806609723150e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.890486225480863e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.921165841238576e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.951845456996288e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.982525072754001e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.013204688511714e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.043884304269427e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.074563920027139e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.105243535784853e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.166602767300279e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.197282383057991e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.227961998815704e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.258641614573417e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.289321230331129e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.320000846088842e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.350680461846555e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.381360077604268e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.412039693361981e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.442719309119694e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.473398924877406e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.504078540635120e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.534758156392832e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.565437772150545e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.596117387908258e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.626797003665970e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.657476619423684e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.688156235181396e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.718835850939109e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.749515466696822e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.780195082454535e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.810874698212247e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.841554313969961e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.872233929727673e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.902913545485386e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.933593161243099e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.964272777000811e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.994952392758525e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.025632008516237e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.056311624273950e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.086991240031663e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.117670855789376e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.148350471547088e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.179030087304802e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.209709703062514e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.240389318820228e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.271068934577940e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.301748550335653e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.332428166093366e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.363107781851078e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.393787397608791e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.424467013366504e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.455146629124217e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.485826244881930e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.516505860639643e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.547185476397355e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.577865092155069e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.608544707912781e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.639224323670494e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.669903939428207e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.700583555185919e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.731263170943633e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.761942786701345e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.792622402459058e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.823302018216771e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.853981633974484e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.884661249732196e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.915340865489910e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.946020481247622e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.976700097005335e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.007379712763047e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.038059328520761e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.068738944278474e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.099418560036186e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.130098175793899e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.160777791551611e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.191457407309326e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.222137023067038e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.252816638824751e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.283496254582463e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.314175870340176e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.344855486097888e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.375535101855602e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.406214717613315e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.436894333371027e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.467573949128740e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.498253564886452e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.528933180644167e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.559612796401879e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.590292412159592e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.620972027917304e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.651651643675017e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.682331259432731e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.713010875190443e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.743690490948156e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.774370106705868e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.805049722463581e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.835729338221293e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.866408953979008e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.897088569736720e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.927768185494433e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.958447801252145e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.989127417009858e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.019807032767572e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.050486648525284e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.081166264282997e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.111845880040709e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.142525495798422e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.173205111556134e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313849e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.234564343071561e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.265243958829274e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.295923574586986e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.326603190344699e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.357282806102413e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.387962421860125e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.418642037617838e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.449321653375550e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.480001269133263e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.510680884890977e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.541360500648690e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.572040116406402e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.602719732164115e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.633399347921827e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.664078963679540e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.694758579437254e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.725438195194966e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.756117810952679e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.786797426710391e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.817477042468104e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.848156658225818e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.878836273983531e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.909515889741243e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.940195505498956e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.970875121256668e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 diff --git a/doc/plots/feff_vs_larch_data/01_path_builder_rspace_contrib.csv b/doc/plots/feff_vs_larch_data/01_path_builder_rspace_contrib.csv new file mode 100644 index 0000000..17d6bc5 --- /dev/null +++ b/doc/plots/feff_vs_larch_data/01_path_builder_rspace_contrib.csv @@ -0,0 +1,327 @@ +r,total_model,total_larch,diff,feffcu01dat_00 +0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771283e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313848e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.227184630308513e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.533980787885641e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.840776945462770e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.147573103039898e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.454369260617026e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.761165418194154e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771282e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.374757733348411e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.681553890925539e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.988350048502667e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.295146206079796e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.601942363656924e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.908738521234052e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.215534678811180e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.522330836388308e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.829126993965437e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.442719309119693e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.749515466696822e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.056311624273950e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.363107781851078e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.669903939428206e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.976700097005335e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.283496254582463e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.590292412159591e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.897088569736720e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313848e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.510680884890976e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.817477042468105e-1,2.544195718850788e-1,2.558747282920494e-1,-1.455156406970581e-3,2.544195718850788e-1 +1.012427320004523e0,2.752296078851635e-1,2.773025376727473e-1,-2.072929787583833e-3,2.752296078851635e-1 +1.043106935762236e0,2.709449904649241e-1,2.735683477047668e-1,-2.623357239842750e-3,2.709449904649241e-1 +1.073786551519949e0,2.398127187400496e-1,2.428152699477845e-1,-3.002551207734933e-3,2.398127187400496e-1 +1.104466167277662e0,1.839786848730161e-1,1.870736439246672e-1,-3.094959051651081e-3,1.839786848730161e-1 +1.135145783035375e0,1.135063290399351e-1,1.160528621453687e-1,-2.546533105433596e-3,1.135063290399351e-1 +1.165825398793087e0,7.805589598998386e-2,7.754852264437105e-2,5.073733456128077e-4,7.805589598998386e-2 +1.196505014550800e0,1.457144432219958e-1,1.435394888017387e-1,2.174954420257058e-3,1.457144432219958e-1 +1.227184630308513e0,2.416529387298946e-1,2.398246866727718e-1,1.828252057122781e-3,2.416529387298946e-1 +1.257864246066226e0,3.296717442421275e-1,3.285448278308771e-1,1.126916411250400e-3,3.296717442421275e-1 +1.288543861823939e0,3.955496908458901e-1,3.952356005942735e-1,3.140902516166055e-4,3.955496908458901e-1 +1.319223477581652e0,4.298439203530746e-1,4.303765632963322e-1,-5.326429432575552e-4,4.298439203530746e-1 +1.349903093339364e0,4.267144479959524e-1,4.281042025947471e-1,-1.389754598794701e-3,4.267144479959524e-1 +1.380582709097077e0,3.845797472245795e-1,3.868824236805590e-1,-2.302676455979535e-3,3.845797472245795e-1 +1.411262324854790e0,3.077835269468379e-1,3.112457492914950e-1,-3.462222344657151e-3,3.077835269468379e-1 +1.441941940612503e0,2.133321265031469e-1,2.186900221436502e-1,-5.357895640503318e-3,2.133321265031469e-1 +1.472621556370216e0,1.642071719148660e-1,1.713715343640317e-1,-7.164362449165684e-3,1.642071719148660e-1 +1.503301172127929e0,2.471711155793025e-1,2.522984049733616e-1,-5.127289394059098e-3,2.471711155793025e-1 +1.533980787885641e0,3.971028057463870e-1,4.007499536517847e-1,-3.647147905397774e-3,3.971028057463870e-1 +1.564660403643354e0,5.570787916875454e-1,5.602156878439984e-1,-3.136896156453073e-3,5.570787916875454e-1 +1.595340019401067e0,7.050240838921245e-1,7.080747496897777e-1,-3.050665797653229e-3,7.050240838921245e-1 +1.626019635158780e0,8.277612385924962e-1,8.309103089696968e-1,-3.149070377200580e-3,8.277612385924962e-1 +1.656699250916493e0,9.158746254134836e-1,9.192091106321986e-1,-3.334485218714933e-3,9.158746254134836e-1 +1.687378866674206e0,9.628794049797390e-1,9.664718537914971e-1,-3.592448811758131e-3,9.628794049797390e-1 +1.718058482431918e0,9.656541123058654e-1,9.696463180008973e-1,-3.992205695031892e-3,9.656541123058654e-1 +1.748738098189631e0,9.266204948977835e-1,9.313364995536739e-1,-4.716004655890393e-3,9.266204948977835e-1 +1.779417713947344e0,8.601036588323087e-1,8.661831888946288e-1,-6.079530062320093e-3,8.601036588323087e-1 +1.810097329705057e0,8.068928409471963e-1,8.152192139578609e-1,-8.326373010664634e-3,8.068928409471963e-1 +1.840776945462770e0,8.478192696762338e-1,8.585669246158346e-1,-1.074765493960084e-2,8.478192696762338e-1 +1.871456561220483e0,1.061311074414427e0,1.073147035846165e0,-1.183596143173760e-2,1.061311074414427e0 +1.902136176978195e0,1.452630835439992e0,1.464292537682443e0,-1.166170224245078e-2,1.452630835439992e0 +1.932815792735908e0,1.984591108477463e0,1.995552166800125e0,-1.096105832266181e-2,1.984591108477463e0 +1.963495408493621e0,2.621529475668214e0,2.631504866577784e0,-9.975390909569892e-3,2.621529475668214e0 +1.994175024251334e0,3.332744962391723e0,3.341457869106104e0,-8.712906714380519e-3,3.332744962391723e0 +2.024854640009047e0,4.087631649863540e0,4.094800195811356e0,-7.168545947815907e-3,4.087631649863540e0 +2.055534255766760e0,4.853436166589821e0,4.858817085637143e0,-5.380919047321520e-3,4.853436166589821e0 +2.086213871524472e0,5.595359047349070e0,5.598794766069281e0,-3.435718720210978e-3,5.595359047349070e0 +2.116893487282185e0,6.277967201738252e0,6.279420966997848e0,-1.453765259595841e-3,6.277967201738252e0 +2.147573103039898e0,6.867261314131377e0,6.866835054406098e0,4.262597252786549e-4,6.867261314131377e0 +2.178252718797611e0,7.332962907802561e0,7.330896104199549e0,2.066803603012701e-3,7.332962907802561e0 +2.208932334555323e0,7.650691766957828e0,7.647342037861583e0,3.349729096244758e-3,7.650691766957828e0 +2.239611950313036e0,7.803772599720386e0,7.799580915633002e0,4.191684087383685e-3,7.803772599720386e0 +2.270291566070749e0,7.784473759773748e0,7.779919120036420e0,4.554639737327726e-3,7.784473759773748e0 +2.300971181828462e0,7.594550634918871e0,7.590100373557053e0,4.450261361817809e-3,7.594550634918871e0 +2.331650797586175e0,7.245041673585752e0,7.241104068945938e0,3.937604639814296e-3,7.245041673585752e0 +2.362330413343888e0,6.755341169163074e0,6.752226580629729e0,3.114588533344786e-3,6.755341169163074e0 +2.393010029101601e0,6.151643446193118e0,6.149538810225253e0,2.104635967865143e-3,6.151643446193118e0 +2.423689644859313e0,5.464911647152372e0,5.463871001281782e0,1.040645870589607e-3,5.464911647152372e0 +2.454369260617026e0,4.728565783725616e0,4.728516833078941e0,4.895064667476134e-5,4.728565783725616e0 +2.485048876374739e0,3.976106069601268e0,3.976869996679484e0,-7.639270782160423e-4,3.976106069601268e0 +2.515728492132452e0,3.238888660984108e0,3.240207673360869e0,-1.319012376761020e-3,3.238888660984108e0 +2.546408107890165e0,2.544255832237022e0,2.545820338318451e0,-1.564506081429773e-3,2.544255832237022e0 +2.577087723647877e0,1.914203390896280e0,1.915667395558472e0,-1.464004662191876e-3,1.914203390896280e0 +2.607767339405590e0,1.364780581349432e0,1.365746689105934e0,-9.661077565021881e-4,1.364780581349432e0 +2.638446955163303e0,9.065953132385687e-1,9.065281295332590e-1,6.718370530967022e-5,9.065953132385687e-1 +2.669126570921016e0,5.477744504926644e-1,5.457278491961594e-1,2.046601296505024e-3,5.477744504926644e-1 +2.699806186678729e0,3.054887341212001e-1,2.995637851445563e-1,5.924948976643751e-3,3.054887341212001e-1 +2.730485802436442e0,2.263931592284399e-1,2.168737554915928e-1,9.519403736847037e-3,2.263931592284399e-1 +2.761165418194155e0,2.764597280540505e-1,2.686193902273983e-1,7.840337826652222e-3,2.764597280540505e-1 +2.791845033951867e0,3.387747125398984e-1,3.329778384071310e-1,5.796874132767360e-3,3.387747125398984e-1 +2.822524649709580e0,3.771583002997147e-1,3.728526645956100e-1,4.305635704104749e-3,3.771583002997147e-1 +2.853204265467293e0,3.905553784828427e-1,3.874305587762821e-1,3.124819706560644e-3,3.905553784828427e-1 +2.883883881225006e0,3.844590788721317e-1,3.823077963355339e-1,2.151282536597854e-3,3.844590788721317e-1 +2.914563496982719e0,3.650071942940938e-1,3.636196885703041e-1,1.387505723789706e-3,3.650071942940938e-1 +2.945243112740431e0,3.379002518113067e-1,3.370278655756987e-1,8.723862356079803e-4,3.379002518113067e-1 +2.975922728498144e0,1.156407585389740e-33,1.154059954646660e-33,2.347630743079634e-36,1.156407585389740e-33 +3.006602344255857e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.037281960013570e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771283e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.098641191528996e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.129320807286708e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.160000423044421e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.190680038802134e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.221359654559847e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.252039270317560e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.282718886075272e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.313398501832985e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.344078117590698e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.374757733348411e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.405437349106124e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.436116964863837e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.466796580621549e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.497476196379262e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.528155812136975e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.558835427894688e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.589515043652401e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.620194659410114e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.650874275167826e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.681553890925539e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.712233506683252e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.742913122440965e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.773592738198678e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.804272353956391e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.834951969714103e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.865631585471816e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.896311201229529e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.926990816987242e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.957670432744955e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.988350048502667e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.019029664260381e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.049709280018093e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.080388895775806e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.111068511533519e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.141748127291232e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.172427743048944e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.203107358806657e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.233786974564370e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.264466590322083e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.295146206079796e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.325825821837508e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.356505437595222e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.387185053352934e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.417864669110647e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.448544284868360e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.479223900626073e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.509903516383786e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.540583132141498e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.571262747899211e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.601942363656924e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.632621979414637e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.663301595172349e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.693981210930063e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.724660826687775e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.755340442445489e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.786020058203201e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.816699673960914e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.847379289718627e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.878058905476339e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.908738521234052e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.939418136991765e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.970097752749478e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.000777368507190e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.031456984264904e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.062136600022616e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.092816215780330e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.123495831538042e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.154175447295755e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.184855063053468e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.215534678811180e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.246214294568893e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.276893910326606e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.307573526084319e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.338253141842032e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.368932757599745e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.399612373357457e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.430291989115171e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.460971604872883e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.491651220630596e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.522330836388309e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.553010452146022e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.583690067903735e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.614369683661447e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.645049299419160e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.675728915176873e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.706408530934586e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.737088146692298e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.767767762450012e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.798447378207724e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.829126993965438e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.859806609723150e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.890486225480863e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.921165841238576e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.951845456996288e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.982525072754001e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.013204688511714e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.043884304269427e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.074563920027139e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.105243535784853e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.166602767300279e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.197282383057991e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.227961998815704e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.258641614573417e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.289321230331129e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.320000846088842e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.350680461846555e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.381360077604268e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.412039693361981e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.442719309119694e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.473398924877406e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.504078540635120e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.534758156392832e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.565437772150545e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.596117387908258e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.626797003665970e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.657476619423684e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.688156235181396e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.718835850939109e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.749515466696822e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.780195082454535e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.810874698212247e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.841554313969961e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.872233929727673e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.902913545485386e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.933593161243099e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.964272777000811e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.994952392758525e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.025632008516237e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.056311624273950e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.086991240031663e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.117670855789376e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.148350471547088e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.179030087304802e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.209709703062514e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.240389318820228e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.271068934577940e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.301748550335653e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.332428166093366e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.363107781851078e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.393787397608791e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.424467013366504e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.455146629124217e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.485826244881930e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.516505860639643e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.547185476397355e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.577865092155069e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.608544707912781e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.639224323670494e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.669903939428207e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.700583555185919e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.731263170943633e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.761942786701345e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.792622402459058e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.823302018216771e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.853981633974484e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.884661249732196e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.915340865489910e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.946020481247622e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.976700097005335e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.007379712763047e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.038059328520761e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.068738944278474e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.099418560036186e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.130098175793899e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.160777791551611e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.191457407309326e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.222137023067038e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.252816638824751e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.283496254582463e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.314175870340176e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.344855486097888e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.375535101855602e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.406214717613315e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.436894333371027e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.467573949128740e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.498253564886452e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.528933180644167e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.559612796401879e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.590292412159592e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.620972027917304e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.651651643675017e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.682331259432731e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.713010875190443e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.743690490948156e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.774370106705868e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.805049722463581e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.835729338221293e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.866408953979008e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.897088569736720e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.927768185494433e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.958447801252145e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.989127417009858e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.019807032767572e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.050486648525284e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.081166264282997e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.111845880040709e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.142525495798422e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.173205111556134e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313849e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.234564343071561e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.265243958829274e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.295923574586986e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.326603190344699e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.357282806102413e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.387962421860125e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.418642037617838e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.449321653375550e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.480001269133263e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.510680884890977e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.541360500648690e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.572040116406402e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.602719732164115e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.633399347921827e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.664078963679540e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.694758579437254e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.725438195194966e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.756117810952679e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.786797426710391e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.817477042468104e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.848156658225818e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.878836273983531e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.909515889741243e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.940195505498956e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.970875121256668e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 diff --git a/doc/plots/feff_vs_larch_data/02_multi_path_model.csv b/doc/plots/feff_vs_larch_data/02_multi_path_model.csv new file mode 100644 index 0000000..8392972 --- /dev/null +++ b/doc/plots/feff_vs_larch_data/02_multi_path_model.csv @@ -0,0 +1,281 @@ +k,model,larch,diff +5.000000000000000e-2,0.000000000000000e0,-3.004169364982455e-1,3.004169364982455e-1 +1.000000000000000e-1,0.000000000000000e0,-3.028599019623773e-1,3.028599019623773e-1 +1.500000000000000e-1,0.000000000000000e0,-3.053028674265091e-1,3.053028674265091e-1 +2.000000000000000e-1,0.000000000000000e0,-3.086716147668306e-1,3.086716147668306e-1 +2.500000000000000e-1,0.000000000000000e0,-3.129124878200045e-1,3.129124878200045e-1 +3.000000000000000e-1,0.000000000000000e0,-3.179532062114368e-1,3.179532062114368e-1 +3.500000000000000e-1,0.000000000000000e0,-3.237002129304355e-1,3.237002129304355e-1 +4.000000000000000e-1,0.000000000000000e0,-3.300350931702580e-1,3.300350931702580e-1 +4.500000000000000e-1,0.000000000000000e0,-3.368094875634737e-1,3.368094875634737e-1 +5.000000000000000e-1,0.000000000000000e0,-3.438366516251072e-1,3.438366516251072e-1 +5.500000000000000e-1,0.000000000000000e0,-3.508707890133191e-1,3.508707890133191e-1 +6.000000000000001e-1,0.000000000000000e0,-3.574452979919543e-1,3.574452979919543e-1 +6.500000000000000e-1,-3.491983609031817e-1,-3.501577306932779e-1,9.593697900961984e-4 +7.000000000000001e-1,-3.396950119633946e-1,-3.405942413177491e-1,8.992293543544916e-4 +7.500000000000000e-1,-3.292556241362941e-1,-3.300357874890825e-1,7.801633527884100e-4 +8.000000000000000e-1,-3.178318891380741e-1,-3.183303142416022e-1,4.984251035280995e-4 +8.500000000000001e-1,-3.052055993908445e-1,-3.053143758861092e-1,1.087764952647507e-4 +9.000000000000000e-1,-2.902323086670041e-1,-2.908142127027583e-1,5.819040357542549e-4 +9.500000000000001e-1,-2.741305066122910e-1,-2.746697006743047e-1,5.391940620136926e-4 +1.000000000000000e0,-2.565778904604241e-1,-2.566904091810707e-1,1.125187206466038e-4 +1.050000000000000e0,-2.360948707957810e-1,-2.366915795844709e-1,5.967087886899203e-4 +1.100000000000000e0,-2.142513896276857e-1,-2.146150108471137e-1,3.636212194279842e-4 +1.150000000000000e0,-1.899508178408731e-1,-1.903978999284350e-1,4.470820875618897e-4 +1.200000000000000e0,-1.633841758024533e-1,-1.639657785887687e-1,5.816027863154716e-4 +1.250000000000000e0,-1.352877938192326e-1,-1.354458407271037e-1,1.580469078711066e-4 +1.300000000000000e0,-1.045072174908770e-1,-1.050901753780835e-1,5.829578872064978e-4 +1.350000000000000e0,-7.308924154740068e-2,-7.321869693233499e-2,1.294553849343072e-4 +1.400000000000000e0,-3.975379792458848e-2,-4.024892562746904e-2,4.951277028805642e-4 +1.450000000000000e0,-6.412353456483361e-3,-6.700430123979782e-3,2.880766674964209e-4 +1.500000000000000e0,2.718693409833110e-2,2.680692382766853e-2,3.800102706625653e-4 +1.550000000000000e0,5.991054608797167e-2,5.961777704622420e-2,2.927690417474649e-4 +1.600000000000000e0,9.105523531367131e-2,9.087616707522274e-2,1.790682384485709e-4 +1.650000000000000e0,1.197398420275398e-1,1.195655016592855e-1,1.743403682543943e-4 +1.700000000000000e0,1.448967051689082e-1,1.448409228968288e-1,5.578227207941877e-5 +1.750000000000000e0,1.660691276104865e-1,1.659637995759865e-1,1.053280345000573e-4 +1.800000000000000e0,1.822582861058053e-1,1.822495368952257e-1,8.749210579611644e-6 +1.850000000000000e0,1.930151761640759e-1,1.931074963665654e-1,-9.232020248942097e-5 +1.900000000000000e0,1.979212759540252e-1,1.979268769105310e-1,-5.600956505841248e-6 +1.950000000000000e0,1.961065199345659e-1,1.963472264424164e-1,-2.407065078505188e-4 +2.000000000000000e0,1.884247056346568e-1,1.884735806610938e-1,-4.887502643705077e-5 +2.050000000000000e0,1.744067711204739e-1,1.746564628031881e-1,-2.496916827141871e-4 +2.100000000000000e0,1.551804918425035e-1,1.554951523414868e-1,-3.146604989832658e-4 +2.150000000000000e0,1.301967234596300e-1,1.316825343937293e-1,-1.485810934099302e-3 +2.200000000000000e0,1.023695981914217e-1,1.040714544493425e-1,-1.701856257920756e-3 +2.250000000000000e0,7.307760529358988e-2,7.400141872601719e-2,-9.238134324273117e-4 +2.300000000000000e0,4.307821746050125e-2,4.302716422678934e-2,5.105323371190629e-5 +2.350000000000000e0,1.351196146252312e-2,1.309155149630827e-2,4.204099662148512e-4 +2.400000000000000e0,-1.253263018858248e-2,-1.310367525509092e-2,5.710450665084368e-4 +2.450000000000000e0,-3.295384493975013e-2,-3.302927308564903e-2,7.542814589889951e-5 +2.500000000000000e0,-4.741343887007212e-2,-4.640763667407481e-2,-1.005802195997316e-3 +2.550000000000000e0,-5.857755193934153e-2,-5.581488933794546e-2,-2.762662601396071e-3 +2.600000000000000e0,-6.582935515203633e-2,-6.316030171637775e-2,-2.669053435658583e-3 +2.650000000000000e0,-6.926191710030548e-2,-6.841524811782886e-2,-8.466689824766227e-4 +2.700000000000000e0,-6.972603701708860e-2,-7.020515977365513e-2,4.791227565665301e-4 +2.750000000000000e0,-6.709414698228230e-2,-6.792518666129713e-2,8.310396790148222e-4 +2.800000000000000e0,-6.152743108084417e-2,-6.218768247809864e-2,6.602513972544660e-4 +2.850000000000000e0,-5.373934617283999e-2,-5.391038856201589e-2,1.710423891758961e-4 +2.900000000000000e0,-4.398447628209316e-2,-4.402784078806626e-2,4.336450597310082e-5 +2.950000000000000e0,-3.263767666487972e-2,-3.306749999586004e-2,4.298233309803223e-4 +3.000000000000000e0,-2.077214698615164e-2,-2.139550839460681e-2,6.233614084551684e-4 +3.050000000000000e0,-9.303049543195966e-3,-9.494087244318345e-3,1.910377011223787e-4 +3.100000000000000e0,2.497580812287743e-3,1.986307935410877e-3,5.112728768768659e-4 +3.150000000000000e0,1.314078641203213e-2,1.223227768008341e-2,9.085087319487192e-4 +3.200000000000000e0,2.147296536178511e-2,2.061319465981407e-2,8.597707019710465e-4 +3.250000000000000e0,2.698618938826624e-2,2.682767743475605e-2,1.585119535101910e-4 +3.300000000000000e0,3.153636151438162e-2,3.080642829899852e-2,7.299332153831023e-4 +3.350000000000000e0,3.350380817007133e-2,3.240420343293558e-2,1.099604737135745e-3 +3.400000000000000e0,3.231725723832418e-2,3.145052796512837e-2,8.667292731958098e-4 +3.450000000000000e0,2.800676664848346e-2,2.793031572819431e-2,7.645092028915265e-5 +3.500000000000000e0,2.273274416477415e-2,2.208217948402324e-2,6.505646807509098e-4 +3.550000000000000e0,1.518901702638021e-2,1.430805893604275e-2,8.809580903374626e-4 +3.600000000000000e0,5.691728032863530e-3,5.071568423474790e-3,6.201596093887395e-4 +3.650000000000000e0,-5.105145554847076e-3,-5.114776248795718e-3,9.630693948641661e-6 +3.700000000000000e0,-1.541129414098124e-2,-1.569654914697634e-2,2.852550059951053e-4 +3.750000000000000e0,-2.577608945812855e-2,-2.607612265720093e-2,3.000331990723817e-4 +3.800000000000000e0,-3.550501434552959e-2,-3.566079301176169e-2,1.557786662320926e-4 +3.850000000000000e0,-4.389655639591855e-2,-4.390194528857828e-2,5.388892659725919e-6 +3.900000000000000e0,-5.023443701094575e-2,-5.031916717402932e-2,8.473016308357256e-5 +3.950000000000000e0,-5.442233604283994e-2,-5.451108543180543e-2,8.874938896548390e-5 +4.000000000000000e0,-5.611196948215846e-2,-5.616685805409583e-2,5.488857193737540e-5 +4.050000000000000e0,-5.506965863573338e-2,-5.507776164441665e-2,8.103008683271740e-6 +4.100000000000001e0,-5.113551920000868e-2,-5.116981200038889e-2,3.429280038021176e-5 +4.150000000000000e0,-4.459099463761396e-2,-4.457573836426813e-2,-1.525627334583030e-5 +4.200000000000000e0,-3.564337419179663e-2,-3.559125171731317e-2,-5.212247448346113e-5 +4.250000000000000e0,-2.464484051915339e-2,-2.463226353660548e-2,-1.257698254791134e-5 +4.300000000000000e0,-1.223998426142313e-2,-1.217229435385378e-2,-6.768990756935225e-5 +4.350000000000001e0,1.258479713350642e-3,1.325784372530570e-3,-6.730465917992767e-5 +4.400000000000000e0,1.531973427366163e-2,1.535716815824066e-2,-3.743388457902973e-5 +4.450000000000000e0,2.937561194247524e-2,2.936615493296542e-2,9.457009509824393e-6 +4.500000000000000e0,4.276758691916657e-2,4.274594134592042e-2,2.164557324615263e-5 +4.550000000000000e0,5.486134223799236e-2,5.486448541991695e-2,-3.143181924583627e-6 +4.600000000000001e0,6.510426843852829e-2,6.512292880250635e-2,-1.866036397805970e-5 +4.650000000000000e0,7.296601970777372e-2,7.298261099723956e-2,-1.659128946583655e-5 +4.700000000000000e0,7.787296452534598e-2,7.797359943831612e-2,-1.006349129701462e-4 +4.750000000000000e0,7.956504249161518e-2,7.970604884231750e-2,-1.410063507023135e-4 +4.800000000000001e0,7.783443000099062e-2,7.792979811745450e-2,-9.536811646387866e-5 +4.850000000000001e0,7.254398825044242e-2,7.256811010372075e-2,-2.412185327832495e-5 +4.900000000000000e0,6.368062985150964e-2,6.374292834357240e-2,-6.229849206275395e-5 +4.950000000000000e0,5.172362183588739e-2,5.176424792215213e-2,-4.062608626474035e-5 +5.000000000000000e0,3.707744159680799e-2,3.708679445097439e-2,-9.352854166401470e-6 +5.050000000000001e0,2.026692238191084e-2,2.028890202940853e-2,-2.197964749768577e-5 +5.100000000000001e0,1.952170816148651e-3,2.043620105910488e-3,-9.144928976183731e-5 +5.150000000000000e0,-1.700989579757915e-2,-1.689608707626589e-2,-1.138087213132660e-4 +5.200000000000000e0,-3.575983219198860e-2,-3.569114462319386e-2,-6.868756879474525e-5 +5.250000000000000e0,-5.344184920049206e-2,-5.343881363381126e-2,-3.035566680804902e-6 +5.300000000000001e0,-6.914433162747530e-2,-6.918674245826684e-2,4.241083079153940e-5 +5.350000000000001e0,-8.189801064278987e-2,-8.199176590436191e-2,9.375526157204273e-5 +5.400000000000000e0,-9.097560237245129e-2,-9.104752414147881e-2,7.192176902751091e-5 +5.450000000000000e0,-9.573981344784095e-2,-9.576293313974685e-2,2.311969190589569e-5 +5.500000000000000e0,-9.577002699560939e-2,-9.582510348764021e-2,5.507649203081999e-5 +5.550000000000001e0,-9.111580576560233e-2,-9.117747200460113e-2,6.166623899880874e-5 +5.600000000000001e0,-8.191570551860239e-2,-8.196131420674235e-2,4.560868813996422e-5 +5.650000000000000e0,-6.846819447300656e-2,-6.850780851480594e-2,3.961404179937678e-5 +5.700000000000000e0,-5.125253392504378e-2,-5.136344085249149e-2,1.109069274477098e-4 +5.750000000000000e0,-3.124941797138702e-2,-3.134786704913027e-2,9.844907774324979e-5 +5.800000000000001e0,-9.484780366745851e-3,-9.517892503830238e-3,3.311213708438732e-5 +5.850000000000001e0,1.288776165058020e-2,1.290790471926332e-2,-2.014306868311673e-5 +5.900000000000000e0,3.462018491047508e-2,3.467740318976290e-2,-5.721827928781287e-5 +5.950000000000000e0,5.456082925429497e-2,5.462173699974320e-2,-6.090774544822986e-5 +6.000000000000000e0,7.165377289203903e-2,7.168550683085380e-2,-3.173393881476805e-5 +6.050000000000001e0,8.496068340951762e-2,8.497689966557199e-2,-1.621625605437160e-5 +6.100000000000001e0,9.369973095049633e-2,9.380451620196921e-2,-1.047852514728803e-4 +6.150000000000000e0,9.748997583644371e-2,9.771826242502329e-2,-2.282865885795821e-4 +6.200000000000000e0,9.620275218884232e-2,9.655034700885455e-2,-3.475948200122314e-4 +6.250000000000000e0,8.999378465965795e-2,9.042444162599965e-2,-4.306569663417026e-4 +6.300000000000001e0,7.928785513747602e-2,7.974471058205626e-2,-4.568554445802397e-4 +6.350000000000001e0,6.474714116072529e-2,6.516667031937531e-2,-4.195291586500255e-4 +6.400000000000000e0,4.722583387501166e-2,4.755225752158828e-2,-3.264236465766179e-4 +6.450000000000000e0,2.771454459319589e-2,2.791264198559455e-2,-1.980973923986634e-4 +6.500000000000000e0,7.278606333014379e-3,7.343161939455978e-3,-6.455560644159919e-5 +6.550000000000001e0,-1.306788312275481e-2,-1.304480497806292e-2,-2.307814469189144e-5 +6.600000000000001e0,-3.221906061939370e-2,-3.219083999017847e-2,-2.822062921522400e-5 +6.650000000000000e0,-4.912854153331825e-2,-4.914553666907882e-2,1.699513576057521e-5 +6.700000000000000e0,-6.302982568606752e-2,-6.311887298760602e-2,8.904730153849738e-5 +6.750000000000000e0,-7.335243896455468e-2,-7.351619187007080e-2,1.637529055161235e-4 +6.800000000000001e0,-7.974006304182819e-2,-7.995986094812153e-2,2.197979062933397e-4 +6.850000000000001e0,-8.205476651784185e-2,-8.229629580956938e-2,2.415292917275214e-4 +6.900000000000000e0,-8.036842156988430e-2,-8.058919906344893e-2,2.207774935646251e-4 +6.950000000000000e0,-7.494320365898834e-2,-7.510081705469535e-2,1.576133957070097e-4 +7.000000000000000e0,-6.620364227331556e-2,-6.626371511773414e-2,6.007284441858496e-5 +7.050000000000001e0,-5.459940946338553e-2,-5.464597211380164e-2,4.656265041611679e-5 +7.100000000000001e0,-4.079147483571333e-2,-4.091261535907783e-2,1.211405233644963e-4 +7.150000000000000e0,-2.562561221099070e-2,-2.578621339315133e-2,1.606011821606301e-4 +7.200000000000000e0,-9.843917660161627e-3,-1.000961466334053e-2,1.656970031789044e-4 +7.250000000000000e0,5.829932063587435e-3,5.687694874403858e-3,1.422371891835767e-4 +7.300000000000001e0,2.071835821673546e-2,2.061852607306291e-2,9.983214367255064e-5 +7.350000000000001e0,3.421216022441310e-2,3.416169392849584e-2,5.046629591726193e-5 +7.400000000000000e0,4.578754733005702e-2,4.578052771482832e-2,7.019615228698317e-6 +7.450000000000000e0,5.501845248403645e-2,5.503661933270341e-2,-1.816684866696311e-5 +7.500000000000000e0,6.158486823272165e-2,6.159947819025628e-2,-1.460995753462674e-5 +7.550000000000001e0,6.524267464136155e-2,6.525281269187035e-2,-1.013805050879835e-5 +7.600000000000001e0,6.585210256250768e-2,6.589806180341043e-2,-4.595924090275427e-5 +7.650000000000000e0,6.346373520351814e-2,6.355572798545993e-2,-9.199278194178817e-5 +7.700000000000000e0,5.822829208897003e-2,5.836432872040654e-2,-1.360366314365064e-4 +7.750000000000000e0,5.040877079809791e-2,5.057668810277387e-2,-1.679173046759616e-4 +7.800000000000001e0,4.037277531875717e-2,4.055322392412655e-2,-1.804486053693793e-4 +7.850000000000001e0,2.858153591566781e-2,2.875166014355713e-2,-1.701242278893123e-4 +7.900000000000000e0,1.557511483119511e-2,1.571260818020697e-2,-1.374933490118600e-4 +7.950000000000000e0,1.953458858162302e-3,2.040635690074977e-3,-8.717683191267417e-5 +8.000000000000000e0,-1.164673142735089e-2,-1.161923358825463e-2,-2.749783909626602e-5 +8.050000000000001e0,-2.462961146047463e-2,-2.460916373588093e-2,-2.044772459370084e-5 +8.100000000000000e0,-3.632848048783674e-2,-3.628880069227626e-2,-3.967979556047940e-5 +8.150000000000000e0,-4.610637796099417e-2,-4.606846109828023e-2,-3.791686271394090e-5 +8.200000000000001e0,-5.346447037269439e-2,-5.344319014553962e-2,-2.128022715476574e-5 +8.250000000000000e0,-5.802144090527036e-2,-5.802394625834032e-2,2.505353069962024e-6 +8.300000000000001e0,-5.953846857148080e-2,-5.956400130884991e-2,2.553273736910500e-5 +8.350000000000000e0,-5.793719855001068e-2,-5.797824662570020e-2,4.104807568951901e-5 +8.400000000000000e0,-5.330888128343401e-2,-5.335341712962859e-2,4.453584619457107e-5 +8.450000000000001e0,-4.591340262336865e-2,-4.594781832001561e-2,3.441569664695832e-5 +8.500000000000000e0,-3.616763733612088e-2,-3.617989765830226e-2,1.226032218137191e-5 +8.550000000000001e0,-2.459530048931392e-2,-2.460583248218271e-2,1.053199286879872e-5 +8.600000000000000e0,-1.185980646839407e-2,-1.188655892518760e-2,2.675245679352803e-5 +8.650000000000000e0,1.289957768951806e-3,1.252149569892617e-3,3.780819905918869e-5 +8.700000000000001e0,1.410561769290349e-2,1.406354259587437e-2,4.207509702911644e-5 +8.750000000000000e0,2.586536655730074e-2,2.582610436815986e-2,3.926218914088175e-5 +8.800000000000001e0,3.591898312663109e-2,3.588847223560181e-2,3.051089102928256e-5 +8.850000000000000e0,4.372808309814372e-2,4.370980205862922e-2,1.828103951449778e-5 +8.900000000000000e0,4.889867825250485e-2,4.889264819318998e-2,6.030059314869607e-6 +8.950000000000001e0,5.120370723128879e-2,5.120598732031820e-2,-2.280089029402244e-6 +9.000000000000000e0,5.059398936538503e-2,5.059677865335512e-2,-2.789287970081378e-6 +9.050000000000001e0,4.718714820358908e-2,4.718936501786623e-2,-2.216814277151979e-6 +9.100000000000000e0,4.126679303142348e-2,4.127336919480561e-2,-6.576163382128464e-6 +9.150000000000000e0,3.327177500024790e-2,3.328099287909089e-2,-9.217878842997240e-6 +9.200000000000001e0,2.374558501719455e-2,2.375442166148617e-2,-8.836644291611295e-6 +9.250000000000000e0,1.330093621084101e-2,1.330663439539874e-2,-5.698184557728636e-6 +9.300000000000001e0,2.577769048672776e-3,2.578933644436964e-3,-1.164595764188096e-6 +9.350000000000000e0,-7.798553295367355e-3,-7.801506838576524e-3,2.953543209168602e-6 +9.400000000000000e0,-1.725585245851822e-2,-1.726093010848120e-2,5.077649962974967e-6 +9.450000000000001e0,-2.530794546172513e-2,-2.531238596777028e-2,4.440506045151615e-6 +9.500000000000000e0,-3.157965963018407e-2,-3.158111769657664e-2,1.458066392567847e-6 +9.550000000000001e0,-3.582235660851261e-2,-3.582065422478199e-2,-1.702383730622925e-6 +9.600000000000001e0,-3.792676964965881e-2,-3.791928905386622e-2,-7.480595792593026e-6 +9.650000000000000e0,-3.790938451079114e-2,-3.789565765274304e-2,-1.372685804810342e-5 +9.700000000000001e0,-3.590393902807513e-2,-3.588634825141755e-2,-1.759077665757641e-5 +9.750000000000000e0,-3.214539344122772e-2,-3.212780033956540e-2,-1.759310166232070e-5 +9.800000000000001e0,-2.694750011146618e-2,-2.693374608299488e-2,-1.375402847130641e-5 +9.850000000000001e0,-2.067765565878801e-2,-2.067022516148691e-2,-7.430497301102318e-6 +9.900000000000000e0,-1.373108339165208e-2,-1.373016067368768e-2,-9.227179643914868e-7 +9.950000000000001e0,-6.506200704752087e-3,-6.509267104854669e-3,3.066400102582495e-6 +1.000000000000000e1,6.173050123482390e-4,6.152789012362301e-4,2.026111112008941e-6 +1.005000000000000e1,7.323234137911071e-3,7.302358590583296e-3,2.087554732777518e-5 +1.010000000000000e1,1.331457307231575e-2,1.325972964240328e-2,5.484342991247081e-5 +1.015000000000000e1,1.833849785463354e-2,1.825308506849581e-2,8.541278613772782e-5 +1.020000000000000e1,2.221970875381894e-2,2.211118322356765e-2,1.085255302512959e-4 +1.025000000000000e1,2.484844724757783e-2,2.472689265424967e-2,1.215545933281638e-4 +1.030000000000000e1,2.617842966857075e-2,2.605511906886627e-2,1.233105997044785e-4 +1.035000000000000e1,2.622234537739588e-2,2.610840712617058e-2,1.139382512252950e-4 +1.040000000000000e1,2.504572144779711e-2,2.495099023307391e-2,9.473121472319823e-5 +1.045000000000000e1,2.275985340554801e-2,2.269196134851711e-2,6.789205703089732e-5 +1.050000000000000e1,1.951433639524643e-2,1.947807689616761e-2,3.625949907882370e-5 +1.055000000000000e1,1.548953626762017e-2,1.548651581173615e-2,3.020455884017448e-6 +1.060000000000000e1,1.088914893546780e-2,1.091772869919564e-2,-2.857976372784045e-5 +1.065000000000000e1,5.932838580410636e-3,5.988356868860783e-3,-5.551828845014751e-5 +1.070000000000000e1,8.488431931221183e-4,9.240996723423827e-4,-7.525647922026438e-5 +1.075000000000000e1,-4.133598016368423e-3,-4.047626250061810e-3,-8.597176630661257e-5 +1.080000000000000e1,-8.792105017537532e-3,-8.705358193318769e-3,-8.674682421876308e-5 +1.085000000000000e1,-1.291931836175107e-2,-1.284161674919462e-2,-7.770161255644080e-5 +1.090000000000000e1,-1.633123561016335e-2,-1.627118251850052e-2,-6.005309166283446e-5 +1.095000000000000e1,-1.887543924988304e-2,-1.883935058800270e-2,-3.608866188033535e-5 +1.100000000000000e1,-2.043878379785987e-2,-2.042974061629809e-2,-9.043181561779745e-6 +1.105000000000000e1,-2.098709126776106e-2,-2.097111932397222e-2,-1.597194378883879e-5 +1.110000000000000e1,-2.047721831550625e-2,-2.044261908193109e-2,-3.459923357515549e-5 +1.115000000000000e1,-1.892169093723231e-2,-1.887677581293924e-2,-4.491512429306496e-5 +1.120000000000000e1,-1.640568525849711e-2,-1.635986214076925e-2,-4.582311772786604e-5 +1.125000000000000e1,-1.306652273742673e-2,-1.302913588531016e-2,-3.738685211657038e-5 +1.130000000000000e1,-9.087627734628274e-3,-9.066864128071334e-3,-2.076360655694012e-5 +1.135000000000000e1,-4.689275345040681e-3,-4.691240978768427e-3,1.965633727746101e-6 +1.140000000000000e1,-1.165394717391206e-4,-1.445949023572931e-4,2.805543061817255e-5 +1.145000000000000e1,4.374875492156894e-3,4.320454723196527e-3,5.442076896036707e-5 +1.150000000000000e1,8.534007497082153e-3,8.456011404361636e-3,7.799609272051734e-5 +1.155000000000000e1,1.213014501575748e-2,1.203405287472282e-2,9.609214103465519e-5 +1.160000000000000e1,1.496733473973177e-2,1.486062176532719e-2,1.067129744045815e-4 +1.165000000000000e1,1.689678721063114e-2,1.678798884481127e-2,1.087983658198746e-4 +1.170000000000000e1,1.782621384586831e-2,1.772385037507346e-2,1.023634707948452e-4 +1.175000000000000e1,1.772535413104633e-2,1.763683630385892e-2,8.851782718741555e-5 +1.180000000000000e1,1.662724746019813e-2,1.655788917865322e-2,6.935828154491439e-5 +1.185000000000000e1,1.462514308168207e-2,1.457739900690658e-2,4.774407477549196e-5 +1.190000000000000e1,1.186529231824356e-2,1.183831677503229e-2,2.697554321127657e-5 +1.195000000000000e1,8.536197023475991e-3,8.525787835432275e-3,1.040918804371543e-5 +1.200000000000000e1,4.855166706066986e-3,4.854116812889405e-3,1.049893177581737e-6 +1.205000000000000e1,1.046830165940458e-3,1.052064474702776e-3,-5.234308762318025e-6 +1.210000000000000e1,-2.671508209183838e-3,-2.652463426366250e-3,-1.904478281758827e-5 +1.215000000000000e1,-6.083875343702552e-3,-6.046951107058132e-3,-3.692423664442002e-5 +1.220000000000000e1,-9.002169898141931e-3,-8.947141658624402e-3,-5.502823951752944e-5 +1.225000000000000e1,-1.127735369036881e-2,-1.120748348649864e-2,-6.987020387016867e-5 +1.230000000000000e1,-1.280722029269028e-2,-1.272845816555719e-2,-7.876212713308663e-5 +1.235000000000000e1,-1.354053086492761e-2,-1.346042014195473e-2,-8.011072297287730e-5 +1.240000000000000e1,-1.347741070700745e-2,-1.340386655696342e-2,-7.354415004403279e-5 +1.245000000000000e1,-1.266620171615076e-2,-1.260633406837283e-2,-5.986764777792669e-5 +1.250000000000000e1,-1.119723386852147e-2,-1.115636598434161e-2,-4.086788417985605e-5 +1.255000000000000e1,-9.194190770330313e-3,-9.175187672835865e-3,-1.900309749444835e-5 +1.260000000000000e1,-6.803884534393614e-3,-6.806857230623699e-3,2.972696230085260e-6 +1.265000000000000e1,-4.185315791435312e-3,-4.207714771755740e-3,2.239898032042800e-5 +1.270000000000000e1,-1.498875722219570e-3,-1.535937536557823e-3,3.706181433825364e-5 +1.275000000000000e1,1.103543590585718e-3,1.058073841363182e-3,4.546974922253581e-5 +1.280000000000000e1,3.486912256608330e-3,3.439887640553301e-3,4.702461605502872e-5 +1.285000000000000e1,5.539467714973173e-3,5.497393321000198e-3,4.207439397297535e-5 +1.290000000000000e1,7.176935086871892e-3,7.145084565856943e-3,3.185052101494900e-5 +1.295000000000000e1,8.344537223203576e-3,8.326232021603229e-3,1.830520160034724e-5 +1.300000000000000e1,9.016948136464286e-3,9.013074121423440e-3,3.874015040846238e-6 +1.305000000000000e1,9.211919750749005e-3,9.205291975930155e-3,6.627774818850074e-6 +1.310000000000000e1,8.938976680438315e-3,8.927164167346876e-3,1.181251309143906e-5 +1.315000000000000e1,8.236343091932599e-3,8.223804933539193e-3,1.253815839340547e-5 +1.320000000000000e1,7.166218283957006e-3,7.156761502240076e-3,9.456781716929603e-6 +1.325000000000000e1,5.802882961741044e-3,5.799403831750808e-3,3.479129990236265e-6 +1.330000000000000e1,4.228091727447907e-3,4.232447376886653e-3,-4.355649438745994e-6 +1.335000000000000e1,2.526848802906531e-3,2.539839825621324e-3,-1.299102271479311e-5 +1.340000000000000e1,7.837070535469573e-4,8.051485986428118e-4,-2.144154509585449e-5 +1.345000000000000e1,-9.203609431323983e-4,-8.915021848384764e-4,-2.885875829392189e-5 +1.350000000000000e1,-2.510544623670535e-3,-2.475968066201228e-3,-3.457655746930740e-5 +1.355000000000000e1,-3.920303337806008e-3,-3.882164293975624e-3,-3.813904383038417e-5 +1.360000000000000e1,-5.093094145043389e-3,-5.053780223639464e-3,-3.931392140392453e-5 +1.365000000000000e1,-5.983806472524893e-3,-5.945712562378935e-3,-3.809391014595806e-5 +1.370000000000000e1,-6.559961613977261e-3,-6.525273849625062e-3,-3.468776435219898e-5 +1.375000000000000e1,-6.802691627365772e-3,-6.773190012935771e-3,-2.950161443000116e-5 +1.380000000000000e1,-6.707463804890710e-3,-6.684353071111121e-3,-2.311073377958897e-5 +1.385000000000000e1,-6.284473339733615e-3,-6.268251719093956e-3,-1.622162063965888e-5 +1.390000000000000e1,-5.558596863762739e-3,-5.548972335890281e-3,-9.624527872458162e-6 +1.395000000000000e1,-4.568789741127684e-3,-4.564652509074928e-3,-4.137232052755895e-6 +1.400000000000000e1,-3.366823884054985e-3,-3.366282087129052e-3,-5.417969259325327e-7 diff --git a/doc/plots/feff_vs_larch_data/02_multi_path_model_rspace.csv b/doc/plots/feff_vs_larch_data/02_multi_path_model_rspace.csv new file mode 100644 index 0000000..b3b0b8d --- /dev/null +++ b/doc/plots/feff_vs_larch_data/02_multi_path_model_rspace.csv @@ -0,0 +1,327 @@ +r,model,larch,diff +0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771283e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313848e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.227184630308513e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.533980787885641e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.840776945462770e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.147573103039898e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.454369260617026e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.761165418194154e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771282e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.374757733348411e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.681553890925539e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.988350048502667e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.295146206079796e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.601942363656924e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.908738521234052e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.215534678811180e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.522330836388308e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.829126993965437e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.442719309119693e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.749515466696822e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.056311624273950e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.363107781851078e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.669903939428206e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.976700097005335e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.283496254582463e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.590292412159591e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.897088569736720e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313848e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.510680884890976e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.817477042468105e-1,2.540060197187081e-1,2.553850286629548e-1,-1.379008944246640e-3 +1.012427320004523e0,2.753720981015214e-1,2.773700692573147e-1,-1.997971155793365e-3 +1.043106935762236e0,2.717327131256034e-1,2.742770670542093e-1,-2.544353928605914e-3 +1.073786551519949e0,2.412550998326690e-1,2.441729641743932e-1,-2.917864341724197e-3 +1.104466167277662e0,1.859859393612390e-1,1.889918429470604e-1,-3.005903585821340e-3 +1.135145783035375e0,1.157919515253865e-1,1.182582178363633e-1,-2.466266310976767e-3 +1.165825398793087e0,7.885312271219243e-2,7.837947554052385e-2,4.736471716685758e-4 +1.196505014550800e0,1.448825393064433e-1,1.427294294079115e-1,2.153109898531819e-3 +1.227184630308513e0,2.409926417561092e-1,2.391737196053208e-1,1.818922150788327e-3 +1.257864246066226e0,3.297837621150675e-1,3.286532287453283e-1,1.130533369739228e-3 +1.288543861823939e0,3.967217161772927e-1,3.963912616020737e-1,3.304545752190191e-4 +1.319223477581652e0,4.321847670186574e-1,4.326909889509855e-1,-5.062219323280770e-4 +1.349903093339364e0,4.301799771043416e-1,4.315377812000465e-1,-1.357804095704906e-3 +1.380582709097077e0,3.890156418550046e-1,3.912867674815080e-1,-2.271125626503390e-3 +1.411262324854790e0,3.130259631674461e-1,3.164640346902656e-1,-3.438071522819497e-3 +1.441941940612503e0,2.193350517348692e-1,2.246797428410314e-1,-5.344691106162203e-3 +1.472621556370216e0,1.698430479841986e-1,1.770907230144649e-1,-7.247675030266298e-3 +1.503301172127929e0,2.503885211742414e-1,2.558046366909307e-1,-5.416115516689246e-3 +1.533980787885641e0,3.996623385292096e-1,4.036242613172282e-1,-3.961922788018601e-3 +1.564660403643354e0,5.598348128640122e-1,5.632972728087757e-1,-3.462459944763574e-3 +1.595340019401067e0,7.079828553062668e-1,7.113748343454036e-1,-3.391979039136794e-3 +1.626019635158780e0,8.305515912687177e-1,8.340567946636467e-1,-3.505203394928991e-3 +1.656699250916493e0,9.180068073441712e-1,9.217043406834635e-1,-3.697533339292347e-3 +1.687378866674206e0,9.639638917851899e-1,9.679124703544364e-1,-3.948578569246464e-3 +1.718058482431918e0,9.655883908010141e-1,9.699112280113334e-1,-4.322837210319341e-3 +1.748738098189631e0,9.256846127540328e-1,9.306825241621408e-1,-4.997911408108013e-3 +1.779417713947344e0,8.588482705141177e-1,8.651303088746435e-1,-6.282038360525766e-3 +1.810097329705057e0,8.055908508722817e-1,8.140013083598669e-1,-8.410457487585288e-3 +1.840776945462770e0,8.454376923654231e-1,8.561382465493879e-1,-1.070055418396476e-2 +1.871456561220483e0,1.055666019097279e0,1.067375423365470e0,-1.170940426819067e-2 +1.902136176978195e0,1.442216609203630e0,1.453719003110588e0,-1.150239390695806e-2 +1.932815792735908e0,1.969102441482596e0,1.979886036342371e0,-1.078359485977565e-2 +1.963495408493621e0,2.601615915466748e0,2.611399078447608e0,-9.783162980860016e-3 +1.994175024251334e0,3.309861360311007e0,3.318371059790075e0,-8.509699479068100e-3 +2.024854640009047e0,4.063881586023427e0,4.070843916057710e0,-6.962330034283148e-3 +2.055534255766760e0,4.831336178569493e0,4.836520335316854e0,-5.184156747361612e-3 +2.086213871524472e0,5.577534327642996e0,5.580798196562009e0,-3.263868919012758e-3 +2.116893487282185e0,6.266815582982720e0,6.268138522373226e0,-1.322939390505873e-3 +2.147573103039898e0,6.864628903630456e0,6.864127140187117e0,5.017634433395202e-4 +2.178252718797611e0,7.339873505462783e0,7.337796974752131e0,2.076530710652946e-3 +2.208932334555323e0,7.667165884475729e0,7.663877573900280e0,3.288310575449316e-3 +2.239611950313036e0,7.828761461454651e0,7.824702295865397e0,4.059165589254121e-3 +2.270291566070749e0,7.815920087756086e0,7.811564089002631e0,4.355998753455381e-3 +2.300971181828462e0,7.629572633006370e0,7.625378240483578e0,4.194392522792079e-3 +2.331650797586175e0,7.280221083850665e0,7.276584927693196e0,3.636156157469372e-3 +2.362330413343888e0,6.787082403543473e0,6.784301364735061e0,2.781038808412184e-3 +2.393010029101601e0,6.176560397357544e0,6.174806490396769e0,1.753906960774820e-3 +2.423689644859313e0,5.480193431914059e0,5.479504053047118e0,6.893788669408707e-4 +2.454369260617026e0,4.732273583907589e0,4.732557220530943e0,-2.836366233536225e-4 +2.485048876374739e0,3.967361238530924e0,3.968416095885512e0,-1.054857354588101e-3 +2.515728492132452e0,3.217928052881937e0,3.219468385324337e0,-1.540332442400150e-3 +2.546408107890165e0,2.512355423431360e0,2.514037462128713e0,-1.682038697353061e-3 +2.577087723647877e0,1.873511610918907e0,1.874946591812185e0,-1.434980893278093e-3 +2.607767339405590e0,1.318183422775963e0,1.318914615533435e0,-7.311927574722432e-4 +2.638446955163303e0,8.579752050564430e-1,8.573622136346003e-1,6.129914218426791e-4 +2.669126570921016e0,5.040731796491560e-1,5.009292718792376e-1,3.143907769918353e-3 +2.699806186678729e0,2.860261228246849e-1,2.783166476653689e-1,7.709475159315970e-3 +2.730485802436442e0,2.569081946386579e-1,2.474268256170372e-1,9.481369021620695e-3 +2.761165418194155e0,3.289904715226192e-1,3.218120248983861e-1,7.178446624233059e-3 +2.791845033951867e0,3.922800183600711e-1,3.868672855809198e-1,5.412732779151330e-3 +2.822524649709580e0,4.222225296291647e-1,4.179776638670318e-1,4.244865762132843e-3 +2.853204265467293e0,4.180446979458817e-1,4.146480962657721e-1,3.396601680109579e-3 +2.883883881225006e0,3.831524887364595e-1,3.804171695780840e-1,2.735319158375493e-3 +2.914563496982719e0,3.219355721838948e-1,3.197292981262581e-1,2.206274057636737e-3 +2.945243112740431e0,2.408644210479141e-1,2.390843214536085e-1,1.780099594305640e-3 +2.975922728498144e0,5.837642158968127e-34,5.786921330970920e-34,5.072082799720725e-36 +3.006602344255857e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.037281960013570e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771283e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.098641191528996e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.129320807286708e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.160000423044421e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.190680038802134e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.221359654559847e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.252039270317560e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.282718886075272e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.313398501832985e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.344078117590698e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.374757733348411e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.405437349106124e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.436116964863837e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.466796580621549e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.497476196379262e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.528155812136975e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.558835427894688e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.589515043652401e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.620194659410114e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.650874275167826e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.681553890925539e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.712233506683252e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.742913122440965e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.773592738198678e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.804272353956391e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.834951969714103e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.865631585471816e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.896311201229529e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.926990816987242e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.957670432744955e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.988350048502667e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.019029664260381e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.049709280018093e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.080388895775806e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.111068511533519e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.141748127291232e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.172427743048944e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.203107358806657e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.233786974564370e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.264466590322083e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.295146206079796e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.325825821837508e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.356505437595222e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.387185053352934e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.417864669110647e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.448544284868360e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.479223900626073e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.509903516383786e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.540583132141498e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.571262747899211e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.601942363656924e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.632621979414637e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.663301595172349e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.693981210930063e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.724660826687775e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.755340442445489e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.786020058203201e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.816699673960914e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.847379289718627e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.878058905476339e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.908738521234052e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.939418136991765e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.970097752749478e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.000777368507190e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.031456984264904e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.062136600022616e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.092816215780330e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.123495831538042e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.154175447295755e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.184855063053468e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.215534678811180e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.246214294568893e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.276893910326606e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.307573526084319e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.338253141842032e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.368932757599745e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.399612373357457e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.430291989115171e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.460971604872883e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.491651220630596e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.522330836388309e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.553010452146022e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.583690067903735e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.614369683661447e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.645049299419160e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.675728915176873e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.706408530934586e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.737088146692298e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.767767762450012e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.798447378207724e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.829126993965438e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.859806609723150e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.890486225480863e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.921165841238576e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.951845456996288e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.982525072754001e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.013204688511714e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.043884304269427e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.074563920027139e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.105243535784853e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.166602767300279e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.197282383057991e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.227961998815704e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.258641614573417e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.289321230331129e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.320000846088842e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.350680461846555e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.381360077604268e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.412039693361981e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.442719309119694e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.473398924877406e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.504078540635120e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.534758156392832e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.565437772150545e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.596117387908258e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.626797003665970e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.657476619423684e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.688156235181396e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.718835850939109e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.749515466696822e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.780195082454535e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.810874698212247e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.841554313969961e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.872233929727673e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.902913545485386e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.933593161243099e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.964272777000811e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.994952392758525e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.025632008516237e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.056311624273950e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.086991240031663e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.117670855789376e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.148350471547088e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.179030087304802e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.209709703062514e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.240389318820228e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.271068934577940e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.301748550335653e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.332428166093366e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.363107781851078e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.393787397608791e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.424467013366504e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.455146629124217e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.485826244881930e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.516505860639643e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.547185476397355e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.577865092155069e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.608544707912781e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.639224323670494e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.669903939428207e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.700583555185919e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.731263170943633e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.761942786701345e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.792622402459058e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.823302018216771e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.853981633974484e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.884661249732196e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.915340865489910e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.946020481247622e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.976700097005335e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.007379712763047e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.038059328520761e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.068738944278474e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.099418560036186e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.130098175793899e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.160777791551611e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.191457407309326e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.222137023067038e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.252816638824751e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.283496254582463e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.314175870340176e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.344855486097888e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.375535101855602e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.406214717613315e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.436894333371027e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.467573949128740e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.498253564886452e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.528933180644167e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.559612796401879e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.590292412159592e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.620972027917304e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.651651643675017e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.682331259432731e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.713010875190443e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.743690490948156e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.774370106705868e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.805049722463581e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.835729338221293e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.866408953979008e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.897088569736720e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.927768185494433e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.958447801252145e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.989127417009858e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.019807032767572e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.050486648525284e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.081166264282997e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.111845880040709e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.142525495798422e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.173205111556134e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313849e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.234564343071561e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.265243958829274e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.295923574586986e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.326603190344699e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.357282806102413e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.387962421860125e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.418642037617838e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.449321653375550e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.480001269133263e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.510680884890977e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.541360500648690e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.572040116406402e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.602719732164115e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.633399347921827e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.664078963679540e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.694758579437254e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.725438195194966e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.756117810952679e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.786797426710391e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.817477042468104e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.848156658225818e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.878836273983531e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.909515889741243e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.940195505498956e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.970875121256668e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 diff --git a/doc/plots/feff_vs_larch_data/02_multi_path_model_rspace_contrib.csv b/doc/plots/feff_vs_larch_data/02_multi_path_model_rspace_contrib.csv new file mode 100644 index 0000000..bbf8953 --- /dev/null +++ b/doc/plots/feff_vs_larch_data/02_multi_path_model_rspace_contrib.csv @@ -0,0 +1,327 @@ +r,total_model,total_larch,diff,feffcu01dat_00,feff0002dat_01 +0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771283e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313848e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.227184630308513e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.533980787885641e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.840776945462770e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.147573103039898e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.454369260617026e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.761165418194154e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771282e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.374757733348411e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.681553890925539e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.988350048502667e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.295146206079796e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.601942363656924e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.908738521234052e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.215534678811180e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.522330836388308e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.829126993965437e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.442719309119693e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.749515466696822e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.056311624273950e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.363107781851078e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.669903939428206e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.976700097005335e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.283496254582463e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.590292412159591e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.897088569736720e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313848e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.510680884890976e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.817477042468105e-1,2.540060197187081e-1,2.553850286629548e-1,-1.379008944246640e-3,2.544195718850788e-1,7.852155216570079e-4 +1.012427320004523e0,2.753720981015214e-1,2.773700692573147e-1,-1.997971155793365e-3,2.752296078851635e-1,7.786392148578144e-4 +1.043106935762236e0,2.717327131256034e-1,2.742770670542093e-1,-2.544353928605914e-3,2.709449904649241e-1,1.084832202406689e-3 +1.073786551519949e0,2.412550998326690e-1,2.441729641743932e-1,-2.917864341724197e-3,2.398127187400496e-1,1.577946846114963e-3 +1.104466167277662e0,1.859859393612390e-1,1.889918429470604e-1,-3.005903585821340e-3,1.839786848730161e-1,2.087682574207708e-3 +1.135145783035375e0,1.157919515253865e-1,1.182582178363633e-1,-2.466266310976767e-3,1.135063290399351e-1,2.482854786575078e-3 +1.165825398793087e0,7.885312271219243e-2,7.837947554052385e-2,4.736471716685758e-4,7.805589598998386e-2,2.655251503849246e-3 +1.196505014550800e0,1.448825393064433e-1,1.427294294079115e-1,2.153109898531819e-3,1.457144432219958e-1,2.527444348245657e-3 +1.227184630308513e0,2.409926417561092e-1,2.391737196053208e-1,1.818922150788327e-3,2.416529387298946e-1,2.082636015872479e-3 +1.257864246066226e0,3.297837621150675e-1,3.286532287453283e-1,1.130533369739228e-3,3.296717442421275e-1,1.465918899182665e-3 +1.288543861823939e0,3.967217161772927e-1,3.963912616020737e-1,3.304545752190191e-4,3.955496908458901e-1,1.375503303861332e-3 +1.319223477581652e0,4.321847670186574e-1,4.326909889509855e-1,-5.062219323280770e-4,4.298439203530746e-1,2.353040444044764e-3 +1.349903093339364e0,4.301799771043416e-1,4.315377812000465e-1,-1.357804095704906e-3,4.267144479959524e-1,3.702137770043998e-3 +1.380582709097077e0,3.890156418550046e-1,3.912867674815080e-1,-2.271125626503390e-3,3.845797472245795e-1,4.974584595324298e-3 +1.411262324854790e0,3.130259631674461e-1,3.164640346902656e-1,-3.438071522819497e-3,3.077835269468379e-1,5.901105853455275e-3 +1.441941940612503e0,2.193350517348692e-1,2.246797428410314e-1,-5.344691106162203e-3,2.133321265031469e-1,6.273747498944831e-3 +1.472621556370216e0,1.698430479841986e-1,1.770907230144649e-1,-7.247675030266298e-3,1.642071719148660e-1,5.955895637951875e-3 +1.503301172127929e0,2.503885211742414e-1,2.558046366909307e-1,-5.416115516689246e-3,2.471711155793025e-1,4.930597961586023e-3 +1.533980787885641e0,3.996623385292096e-1,4.036242613172282e-1,-3.961922788018601e-3,3.971028057463870e-1,3.452958858198208e-3 +1.564660403643354e0,5.598348128640122e-1,5.632972728087757e-1,-3.462459944763574e-3,5.570787916875454e-1,2.766295588956445e-3 +1.595340019401067e0,7.079828553062668e-1,7.113748343454036e-1,-3.391979039136794e-3,7.050240838921245e-1,4.489647156648300e-3 +1.626019635158780e0,8.305515912687177e-1,8.340567946636467e-1,-3.505203394928991e-3,8.277612385924962e-1,7.246516475341184e-3 +1.656699250916493e0,9.180068073441712e-1,9.217043406834635e-1,-3.697533339292347e-3,9.158746254134836e-1,9.940155810488184e-3 +1.687378866674206e0,9.639638917851899e-1,9.679124703544364e-1,-3.948578569246464e-3,9.628794049797390e-1,1.202214652858885e-2 +1.718058482431918e0,9.655883908010141e-1,9.699112280113334e-1,-4.322837210319341e-3,9.656541123058654e-1,1.310202600355934e-2 +1.748738098189631e0,9.256846127540328e-1,9.306825241621408e-1,-4.997911408108013e-3,9.266204948977835e-1,1.292558300216578e-2 +1.779417713947344e0,8.588482705141177e-1,8.651303088746435e-1,-6.282038360525766e-3,8.601036588323087e-1,1.143504194819719e-2 +1.810097329705057e0,8.055908508722817e-1,8.140013083598669e-1,-8.410457487585288e-3,8.068928409471963e-1,8.922090034662470e-3 +1.840776945462770e0,8.454376923654231e-1,8.561382465493879e-1,-1.070055418396476e-2,8.478192696762338e-1,6.592622994661669e-3 +1.871456561220483e0,1.055666019097279e0,1.067375423365470e0,-1.170940426819067e-2,1.061311074414427e0,7.330750268853829e-3 +1.902136176978195e0,1.442216609203630e0,1.453719003110588e0,-1.150239390695806e-2,1.452630835439992e0,1.132538796574250e-2 +1.932815792735908e0,1.969102441482596e0,1.979886036342371e0,-1.078359485977565e-2,1.984591108477463e0,1.609893999995509e-2 +1.963495408493621e0,2.601615915466748e0,2.611399078447608e0,-9.783162980860016e-3,2.621529475668214e0,2.026050342955889e-2 +1.994175024251334e0,3.309861360311007e0,3.318371059790075e0,-8.509699479068100e-3,3.332744962391723e0,2.299325228394616e-2 +2.024854640009047e0,4.063881586023427e0,4.070843916057710e0,-6.962330034283148e-3,4.087631649863540e0,2.375010390950852e-2 +2.055534255766760e0,4.831336178569493e0,4.836520335316854e0,-5.184156747361612e-3,4.853436166589821e0,2.224319365292109e-2 +2.086213871524472e0,5.577534327642996e0,5.580798196562009e0,-3.263868919012758e-3,5.595359047349070e0,1.851133814917671e-2 +2.116893487282185e0,6.266815582982720e0,6.268138522373226e0,-1.322939390505873e-3,6.277967201738252e0,1.312231688232778e-2 +2.147573103039898e0,6.864628903630456e0,6.864127140187117e0,5.017634433395202e-4,6.867261314131377e0,8.319387493783031e-3 +2.178252718797611e0,7.339873505462783e0,7.337796974752131e0,2.076530710652946e-3,7.332962907802561e0,1.032231381085811e-2 +2.208932334555323e0,7.667165884475729e0,7.663877573900280e0,3.288310575449316e-3,7.650691766957828e0,1.759234447325233e-2 +2.239611950313036e0,7.828761461454651e0,7.824702295865397e0,4.059165589254121e-3,7.803772599720386e0,2.523715852097826e-2 +2.270291566070749e0,7.815920087756086e0,7.811564089002631e0,4.355998753455381e-3,7.784473759773748e0,3.144638165054546e-2 +2.300971181828462e0,7.629572633006370e0,7.625378240483578e0,4.194392522792079e-3,7.594550634918871e0,3.522640581922410e-2 +2.331650797586175e0,7.280221083850665e0,7.276584927693196e0,3.636156157469372e-3,7.245041673585752e0,3.596317354443459e-2 +2.362330413343888e0,6.787082403543473e0,6.784301364735061e0,2.781038808412184e-3,6.755341169163074e0,3.340822112215637e-2 +2.393010029101601e0,6.176560397357544e0,6.174806490396769e0,1.753906960774820e-3,6.151643446193118e0,2.772827455890307e-2 +2.423689644859313e0,5.480193431914059e0,5.479504053047118e0,6.893788669408707e-4,5.464911647152372e0,1.964974409057203e-2 +2.454369260617026e0,4.732273583907589e0,4.732557220530943e0,-2.836366233536225e-4,4.728565783725616e0,1.143866961260111e-2 +2.485048876374739e0,3.967361238530924e0,3.968416095885512e0,-1.054857354588101e-3,3.976106069601268e0,1.159693522387347e-2 +2.515728492132452e0,3.217928052881937e0,3.219468385324337e0,-1.540332442400150e-3,3.238888660984108e0,2.116922866609242e-2 +2.546408107890165e0,2.512355423431360e0,2.514037462128713e0,-1.682038697353061e-3,2.544255832237022e0,3.202390149624688e-2 +2.577087723647877e0,1.873511610918907e0,1.874946591812185e0,-1.434980893278093e-3,1.914203390896280e0,4.176939291454707e-2 +2.607767339405590e0,1.318183422775963e0,1.318914615533435e0,-7.311927574722432e-4,1.364780581349432e0,4.956853171621960e-2 +2.638446955163303e0,8.579752050564430e-1,8.573622136346003e-1,6.129914218426791e-4,9.065953132385687e-1,5.513634643614457e-2 +2.669126570921016e0,5.040731796491560e-1,5.009292718792376e-1,3.143907769918353e-3,5.477744504926644e-1,5.854302663348670e-2 +2.699806186678729e0,2.860261228246849e-1,2.783166476653689e-1,7.709475159315970e-3,3.054887341212001e-1,6.003068417820552e-2 +2.730485802436442e0,2.569081946386579e-1,2.474268256170372e-1,9.481369021620695e-3,2.263931592284399e-1,5.977708064656349e-2 +2.761165418194155e0,3.289904715226192e-1,3.218120248983861e-1,7.178446624233059e-3,2.764597280540505e-1,5.770818112340811e-2 +2.791845033951867e0,3.922800183600711e-1,3.868672855809198e-1,5.412732779151330e-3,3.387747125398984e-1,5.357469641948517e-2 +2.822524649709580e0,4.222225296291647e-1,4.179776638670318e-1,4.244865762132843e-3,3.771583002997147e-1,4.765254050044569e-2 +2.853204265467293e0,4.180446979458817e-1,4.146480962657721e-1,3.396601680109579e-3,3.905553784828427e-1,4.286027444778678e-2 +2.883883881225006e0,3.831524887364595e-1,3.804171695780840e-1,2.735319158375493e-3,3.844590788721317e-1,4.767910665051835e-2 +2.914563496982719e0,3.219355721838948e-1,3.197292981262581e-1,2.206274057636737e-3,3.650071942940938e-1,6.933105779523635e-2 +2.945243112740431e0,2.408644210479141e-1,2.390843214536085e-1,1.780099594305640e-3,3.379002518113067e-1,1.057438710491853e-1 +2.975922728498144e0,5.837642158968127e-34,5.786921330970920e-34,5.072082799720725e-36,1.156407585389740e-33,5.743535940781606e-34 +3.006602344255857e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.037281960013570e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771283e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.098641191528996e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.129320807286708e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.160000423044421e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.190680038802134e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.221359654559847e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.252039270317560e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.282718886075272e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.313398501832985e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.344078117590698e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.374757733348411e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.405437349106124e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.436116964863837e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.466796580621549e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.497476196379262e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.528155812136975e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.558835427894688e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.589515043652401e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.620194659410114e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.650874275167826e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.681553890925539e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.712233506683252e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.742913122440965e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.773592738198678e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.804272353956391e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.834951969714103e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.865631585471816e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.896311201229529e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.926990816987242e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.957670432744955e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.988350048502667e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.019029664260381e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.049709280018093e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.080388895775806e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.111068511533519e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.141748127291232e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.172427743048944e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.203107358806657e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.233786974564370e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.264466590322083e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.295146206079796e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.325825821837508e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.356505437595222e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.387185053352934e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.417864669110647e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.448544284868360e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.479223900626073e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.509903516383786e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.540583132141498e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.571262747899211e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.601942363656924e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.632621979414637e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.663301595172349e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.693981210930063e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.724660826687775e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.755340442445489e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.786020058203201e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.816699673960914e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.847379289718627e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.878058905476339e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.908738521234052e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.939418136991765e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.970097752749478e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.000777368507190e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.031456984264904e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.062136600022616e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.092816215780330e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.123495831538042e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.154175447295755e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.184855063053468e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.215534678811180e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.246214294568893e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.276893910326606e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.307573526084319e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.338253141842032e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.368932757599745e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.399612373357457e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.430291989115171e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.460971604872883e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.491651220630596e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.522330836388309e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.553010452146022e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.583690067903735e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.614369683661447e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.645049299419160e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.675728915176873e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.706408530934586e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.737088146692298e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.767767762450012e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.798447378207724e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.829126993965438e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.859806609723150e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.890486225480863e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.921165841238576e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.951845456996288e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.982525072754001e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.013204688511714e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.043884304269427e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.074563920027139e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.105243535784853e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.166602767300279e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.197282383057991e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.227961998815704e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.258641614573417e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.289321230331129e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.320000846088842e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.350680461846555e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.381360077604268e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.412039693361981e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.442719309119694e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.473398924877406e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.504078540635120e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.534758156392832e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.565437772150545e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.596117387908258e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.626797003665970e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.657476619423684e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.688156235181396e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.718835850939109e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.749515466696822e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.780195082454535e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.810874698212247e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.841554313969961e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.872233929727673e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.902913545485386e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.933593161243099e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.964272777000811e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.994952392758525e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.025632008516237e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.056311624273950e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.086991240031663e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.117670855789376e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.148350471547088e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.179030087304802e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.209709703062514e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.240389318820228e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.271068934577940e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.301748550335653e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.332428166093366e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.363107781851078e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.393787397608791e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.424467013366504e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.455146629124217e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.485826244881930e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.516505860639643e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.547185476397355e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.577865092155069e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.608544707912781e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.639224323670494e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.669903939428207e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.700583555185919e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.731263170943633e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.761942786701345e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.792622402459058e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.823302018216771e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.853981633974484e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.884661249732196e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.915340865489910e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.946020481247622e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.976700097005335e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.007379712763047e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.038059328520761e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.068738944278474e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.099418560036186e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.130098175793899e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.160777791551611e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.191457407309326e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.222137023067038e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.252816638824751e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.283496254582463e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.314175870340176e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.344855486097888e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.375535101855602e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.406214717613315e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.436894333371027e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.467573949128740e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.498253564886452e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.528933180644167e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.559612796401879e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.590292412159592e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.620972027917304e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.651651643675017e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.682331259432731e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.713010875190443e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.743690490948156e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.774370106705868e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.805049722463581e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.835729338221293e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.866408953979008e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.897088569736720e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.927768185494433e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.958447801252145e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.989127417009858e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.019807032767572e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.050486648525284e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.081166264282997e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.111845880040709e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.142525495798422e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.173205111556134e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313849e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.234564343071561e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.265243958829274e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.295923574586986e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.326603190344699e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.357282806102413e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.387962421860125e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.418642037617838e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.449321653375550e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.480001269133263e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.510680884890977e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.541360500648690e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.572040116406402e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.602719732164115e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.633399347921827e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.664078963679540e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.694758579437254e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.725438195194966e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.756117810952679e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.786797426710391e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.817477042468104e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.848156658225818e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.878836273983531e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.909515889741243e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.940195505498956e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.970875121256668e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 diff --git a/doc/plots/feff_vs_larch_data/03_single_dataset_fit.csv b/doc/plots/feff_vs_larch_data/03_single_dataset_fit.csv new file mode 100644 index 0000000..cb523d4 --- /dev/null +++ b/doc/plots/feff_vs_larch_data/03_single_dataset_fit.csv @@ -0,0 +1,281 @@ +k,model,larch,diff +5.000000000000000e-2,0.000000000000000e0,-3.268976448800761e-1,3.268976448800761e-1 +1.000000000000000e-1,0.000000000000000e0,-3.297673845053191e-1,3.297673845053191e-1 +1.500000000000000e-1,0.000000000000000e0,-3.326371241305622e-1,3.326371241305622e-1 +2.000000000000000e-1,0.000000000000000e0,-3.365758531351953e-1,3.365758531351953e-1 +2.500000000000000e-1,0.000000000000000e0,-3.415002267804358e-1,3.415002267804358e-1 +3.000000000000000e-1,0.000000000000000e0,-3.472967572297996e-1,3.472967572297996e-1 +3.500000000000000e-1,0.000000000000000e0,-3.538170121631239e-1,3.538170121631239e-1 +4.000000000000000e-1,0.000000000000000e0,-3.608714103737301e-1,3.608714103737301e-1 +4.500000000000000e-1,0.000000000000000e0,-3.682203485404715e-1,3.682203485404715e-1 +5.000000000000000e-1,0.000000000000000e0,-3.755559045179838e-1,3.755559045179838e-1 +5.500000000000000e-1,0.000000000000000e0,-3.823918834449200e-1,3.823918834449200e-1 +6.000000000000001e-1,-3.777836934979649e-1,-3.765380316269572e-1,-1.245661871007664e-3 +6.500000000000000e-1,-3.673890890960972e-1,-3.665482948089570e-1,-8.407942871402341e-4 +7.000000000000001e-1,-3.561863631527134e-1,-3.550976042516860e-1,-1.088758901027387e-3 +7.500000000000000e-1,-3.434853298507125e-1,-3.420263598189173e-1,-1.458970031795126e-3 +8.000000000000000e-1,-3.280333920315563e-1,-3.271845322484740e-1,-8.488597830823008e-4 +8.500000000000001e-1,-3.112087816733519e-1,-3.104299815207995e-1,-7.788001525523836e-4 +9.000000000000000e-1,-2.930066528755024e-1,-2.916511900433462e-1,-1.355462832156151e-3 +9.500000000000001e-1,-2.714635245138833e-1,-2.707575981465084e-1,-7.059263673748761e-4 +1.000000000000000e0,-2.483893574106130e-1,-2.476546850239839e-1,-7.346723866291094e-4 +1.050000000000000e0,-2.232454900356748e-1,-2.223597504113360e-1,-8.857396243387994e-4 +1.100000000000000e0,-1.954054563351977e-1,-1.949945922223872e-1,-4.108641128104940e-4 +1.150000000000000e0,-1.665637434307494e-1,-1.656435969740152e-1,-9.201464567342443e-4 +1.200000000000000e0,-1.347440696770415e-1,-1.345071799266582e-1,-2.368897503833012e-4 +1.250000000000000e0,-1.023950481444940e-1,-1.019760440441987e-1,-4.190041002952588e-4 +1.300000000000000e0,-6.864970230842622e-2,-6.850143370976029e-2,-1.482685986659293e-4 +1.350000000000000e0,-3.465669701298425e-2,-3.460195351519825e-2,-5.474349778600285e-5 +1.400000000000000e0,-9.120879116824690e-4,-8.615806808538847e-4,-5.050723082858431e-5 +1.450000000000000e0,3.229697238026218e-2,3.206234833169036e-2,2.346240485718160e-4 +1.500000000000000e0,6.360521522080574e-2,6.351361318496372e-2,9.160203584201998e-5 +1.550000000000000e0,9.322614888324421e-2,9.284197110179941e-2,3.841777814447972e-4 +1.600000000000000e0,1.194642650798598e-1,1.192198127752086e-1,2.444523046511993e-4 +1.650000000000000e0,1.423104579858520e-1,1.418467050590829e-1,4.637529267690343e-4 +1.700000000000000e0,1.606630733846053e-1,1.601845173882635e-1,4.785559963418340e-4 +1.750000000000000e0,1.743888121858084e-1,1.738060039588686e-1,5.828082269398183e-4 +1.800000000000000e0,1.830084364262453e-1,1.824037495155314e-1,6.046869107138864e-4 +1.850000000000000e0,1.862742104557097e-1,1.857441106062279e-1,5.300998494817966e-4 +1.900000000000000e0,1.842081964287167e-1,1.836149319892036e-1,5.932644395130471e-4 +1.950000000000000e0,1.766059888218384e-1,1.761228810568809e-1,4.831077649575521e-4 +2.000000000000000e0,1.642664515646077e-1,1.637107029454708e-1,5.557486191369032e-4 +2.050000000000000e0,1.474141922485638e-1,1.469631014485319e-1,4.510908000318337e-4 +2.100000000000000e0,1.265907365134247e-1,1.265940844774778e-1,-3.347964053046493e-6 +2.150000000000000e0,1.023822419612164e-1,1.032873219147697e-1,-9.050799535533227e-4 +2.200000000000000e0,7.701515080768678e-2,7.792269290600756e-2,-9.075420983207794e-4 +2.250000000000000e0,5.153745565652759e-2,5.168819766163117e-2,-1.507420051035865e-4 +2.300000000000000e0,2.617762796337823e-2,2.583526733293109e-2,3.423606304471319e-4 +2.350000000000000e0,2.446562661639488e-3,1.937783854416020e-3,5.087788072234683e-4 +2.400000000000000e0,-1.767512799686694e-2,-1.805664473956577e-2,3.815167426988349e-4 +2.450000000000000e0,-3.274346580877790e-2,-3.266170080267471e-2,-8.176500610319187e-5 +2.500000000000000e0,-4.382518032107124e-2,-4.246418058289012e-2,-1.360999738181122e-3 +2.550000000000000e0,-5.224890881855145e-2,-4.965295685678019e-2,-2.595951961771252e-3 +2.600000000000000e0,-5.753296098847314e-2,-5.537310699533237e-2,-2.159853993140774e-3 +2.650000000000000e0,-5.979977007843909e-2,-5.926234440639008e-2,-5.374256720490078e-4 +2.700000000000000e0,-5.986915341257627e-2,-6.014050353844529e-2,2.713501258690132e-4 +2.750000000000000e0,-5.731650595775321e-2,-5.778603735051647e-2,4.695313927632616e-4 +2.800000000000000e0,-5.247040781674955e-2,-5.274698990234171e-2,2.765820855921558e-4 +2.850000000000000e0,-4.589837153834385e-2,-4.575698675201088e-2,-1.413847863329654e-4 +2.900000000000000e0,-3.759679142597292e-2,-3.750691013416840e-2,-8.988129180452498e-5 +2.950000000000000e0,-2.804338735305627e-2,-2.833331387462459e-2,2.899265215683226e-4 +3.000000000000000e0,-1.808576821783272e-2,-1.851009792258654e-2,4.243297047538223e-4 +3.050000000000000e0,-8.463656138237236e-3,-8.421382331279287e-3,-4.227380695794904e-5 +3.100000000000000e0,1.875012609451600e-3,1.381231289104644e-3,4.937813203469556e-4 +3.150000000000000e0,1.104750691948046e-2,1.020198060718492e-2,8.455263122955428e-4 +3.200000000000000e0,1.829156034133850e-2,1.752911923062438e-2,7.624411107141175e-4 +3.250000000000000e0,2.319802479461397e-2,2.312507094381292e-2,7.295385080104827e-5 +3.300000000000000e0,2.775469750671906e-2,2.690607056251670e-2,8.486269442023638e-4 +3.350000000000000e0,2.981545728932617e-2,2.867044610332271e-2,1.145011186003457e-3 +3.400000000000000e0,2.906282750573905e-2,2.820179323716468e-2,8.610342685743712e-4 +3.450000000000000e0,2.559955079337264e-2,2.542907697057061e-2,1.704738228020253e-4 +3.500000000000000e0,2.130999948281507e-2,2.050865401010817e-2,8.013454727068964e-4 +3.550000000000000e0,1.467695230637272e-2,1.372672199524562e-2,9.502303111270996e-4 +3.600000000000000e0,6.053656213176244e-3,5.437329484330872e-3,6.163267288453724e-4 +3.650000000000000e0,-3.846303654411999e-3,-3.938729376983998e-3,9.242572257199934e-5 +3.700000000000000e0,-1.358776472872560e-2,-1.391388231518069e-2,3.261175864550832e-4 +3.750000000000000e0,-2.365154505088231e-2,-2.393674479228043e-2,2.851997413981164e-4 +3.800000000000000e0,-3.334724748035984e-2,-3.343339656035325e-2,8.614907999341531e-5 +3.850000000000000e0,-4.191147131317721e-2,-4.183807772938228e-2,-7.339358379492705e-5 +3.900000000000000e0,-4.864506263161088e-2,-4.861931616865383e-2,-2.574646295705474e-5 +3.950000000000000e0,-5.335856535183749e-2,-5.330192308686196e-2,-5.664226497553715e-5 +4.000000000000000e0,-5.560824185505071e-2,-5.548615110580379e-2,-1.220907492469198e-4 +4.050000000000000e0,-5.503707212165573e-2,-5.486899261853788e-2,-1.680795031178475e-4 +4.100000000000001e0,-5.145783717421721e-2,-5.129724543895667e-2,-1.605917352605346e-4 +4.150000000000000e0,-4.505502007891991e-2,-4.484421785377745e-2,-2.108022251424632e-4 +4.200000000000000e0,-3.599424329122679e-2,-3.577239847693825e-2,-2.218448142885382e-4 +4.250000000000000e0,-2.466155027850797e-2,-2.449871051825350e-2,-1.628397602544684e-4 +4.300000000000000e0,-1.170763451368862e-2,-1.152355668102802e-2,-1.840778326606032e-4 +4.350000000000001e0,2.486117963808274e-3,2.626782176498646e-3,-1.406642126903727e-4 +4.400000000000000e0,1.729191834856057e-2,1.735188489634286e-2,-5.996654778229679e-5 +4.450000000000000e0,3.201871017917022e-2,3.198087201971325e-2,3.783815945697377e-5 +4.500000000000000e0,4.587078910788958e-2,4.578415531956627e-2,8.663378832331203e-5 +4.550000000000000e0,5.812835205576917e-2,5.802278862975022e-2,1.055634260189453e-4 +4.600000000000001e0,6.815488406839490e-2,6.801860689814104e-2,1.362771702538568e-4 +4.650000000000000e0,7.535484627589885e-2,7.519095819326974e-2,1.638880826291128e-4 +4.700000000000000e0,7.917809803261584e-2,7.907050484280662e-2,1.075931898092269e-4 +4.750000000000000e0,7.941765533533991e-2,7.932352553295795e-2,9.412980238196478e-5 +4.800000000000001e0,7.596874121023779e-2,7.581138773824495e-2,1.573534719928465e-4 +4.850000000000001e0,6.881951284455116e-2,6.861441912830618e-2,2.050937162449834e-4 +4.900000000000000e0,5.820662740473165e-2,5.804021216658433e-2,1.664152381473244e-4 +4.950000000000000e0,4.475018635974530e-2,4.458470583490288e-2,1.654805248424221e-4 +5.000000000000000e0,2.902832377319497e-2,2.887273754616966e-2,1.555862270253110e-4 +5.050000000000001e0,1.170840970566180e-2,1.162056570605317e-2,8.784399960863089e-5 +5.100000000000001e0,-6.426912477534976e-3,-6.406409710856075e-3,-2.050276667890129e-5 +5.150000000000000e0,-2.449440770132130e-2,-2.441194969227496e-2,-8.245800904634060e-5 +5.200000000000000e0,-4.165696293965118e-2,-4.157383280565753e-2,-8.313013399365021e-5 +5.250000000000000e0,-5.714688946028895e-2,-5.707107233779914e-2,-7.581712248980882e-5 +5.300000000000001e0,-7.016778260112058e-2,-7.009799183556946e-2,-6.979076555112262e-5 +5.350000000000001e0,-7.999659799978627e-2,-7.992801141411650e-2,-6.858658566977205e-5 +5.400000000000000e0,-8.614731703388397e-2,-8.601348762715172e-2,-1.338294067322471e-4 +5.450000000000000e0,-8.822410022823196e-2,-8.803362520742250e-2,-1.904750208094608e-4 +5.500000000000000e0,-8.609740606899487e-2,-8.592152147300551e-2,-1.758845959893562e-4 +5.550000000000001e0,-7.998111624582313e-2,-7.981037259893245e-2,-1.707436468906809e-4 +5.600000000000001e0,-7.015446554961875e-2,-6.997406329368848e-2,-1.804022559302731e-4 +5.650000000000000e0,-5.696813982272479e-2,-5.681246321899181e-2,-1.556766037329738e-4 +5.700000000000000e0,-4.094810516589030e-2,-4.087629954781662e-2,-7.180561807367675e-5 +5.750000000000000e0,-2.296693290685217e-2,-2.290966780584851e-2,-5.726510100365415e-5 +5.800000000000001e0,-3.885508256232132e-3,-3.808900432877702e-3,-7.660782335443001e-5 +5.850000000000001e0,1.536042889997003e-2,1.543935053365181e-2,-7.892163368178329e-5 +5.900000000000000e0,3.379894468894724e-2,3.386380321041620e-2,-6.485852146895926e-5 +5.950000000000000e0,5.056333815108487e-2,5.058289229438075e-2,-1.955414329588012e-5 +6.000000000000000e0,6.486275317510251e-2,6.481106695652265e-2,5.168621857985778e-5 +6.050000000000001e0,7.598135851812213e-2,7.588596955876613e-2,9.538895935599923e-5 +6.100000000000001e0,8.333136799958563e-2,8.328577021902621e-2,4.559778055941710e-5 +6.150000000000000e0,8.661819104622505e-2,8.665803993284260e-2,-3.984888661755226e-5 +6.200000000000000e0,8.572128384020780e-2,8.585009751283547e-2,-1.288136726276673e-4 +6.250000000000000e0,8.072316419742299e-2,8.091784206598349e-2,-1.946778685604916e-4 +6.300000000000001e0,7.190338304253563e-2,7.212316170648757e-2,-2.197786639519389e-4 +6.350000000000001e0,5.972300433301267e-2,5.992053020274670e-2,-1.975258697340318e-4 +6.400000000000000e0,4.480045228870663e-2,4.493346601035843e-2,-1.330137216517951e-4 +6.450000000000000e0,2.787999480075992e-2,2.792209412932242e-2,-4.209932856249696e-5 +6.500000000000000e0,9.794475125467494e-3,9.743550193725685e-3,5.092493174180951e-5 +6.550000000000001e0,-8.649198550871437e-3,-8.692666098155817e-3,4.346754728437943e-5 +6.600000000000001e0,-2.647225723104365e-2,-2.647263444314461e-2,3.772121009680551e-7 +6.650000000000000e0,-4.272166432872623e-2,-4.272516798296610e-2,3.503654239872533e-6 +6.700000000000000e0,-5.663038526589935e-2,-5.666526066338105e-2,3.487539748169705e-5 +6.750000000000000e0,-6.755852480732918e-2,-6.763314417566683e-2,7.461936833765004e-5 +6.800000000000001e0,-7.502255435362017e-2,-7.512650645126018e-2,1.039520976400116e-4 +6.850000000000001e0,-7.871635375816982e-2,-7.882422771626518e-2,1.078739580953614e-4 +6.900000000000000e0,-7.852317668738376e-2,-7.860048152759019e-2,7.730484020643247e-5 +6.950000000000000e0,-7.451811204244330e-2,-7.452857121851109e-2,1.045917606778968e-5 +7.000000000000000e0,-6.696108993561121e-2,-6.687442348336112e-2,-8.666645225009761e-5 +7.050000000000001e0,-5.616112842540004e-2,-5.608020389949824e-2,-8.092452590179738e-5 +7.100000000000001e0,-4.273563741591717e-2,-4.273884800733656e-2,3.210591419389175e-6 +7.150000000000000e0,-2.750312924673055e-2,-2.756105371595664e-2,5.792446922608940e-5 +7.200000000000000e0,-1.125562947624377e-2,-1.133714942722469e-2,8.151995098091940e-5 +7.250000000000000e0,5.182346517647962e-3,5.104386225835111e-3,7.796029181285098e-5 +7.300000000000001e0,2.099546135161509e-2,2.093963023745358e-2,5.583111416150588e-5 +7.350000000000001e0,3.541780922423953e-2,3.539092969323673e-2,2.687953100279777e-5 +7.400000000000000e0,4.776978023521901e-2,4.776549937115418e-2,4.280864064828971e-6 +7.450000000000000e0,5.748977653453086e-2,5.748897616249763e-2,8.003720332258601e-7 +7.500000000000000e0,6.415932042403459e-2,6.413229924008720e-2,2.702118394738717e-5 +7.550000000000001e0,6.747503790421891e-2,6.743065703094737e-2,4.438087327153506e-5 +7.600000000000001e0,6.731100801016585e-2,6.729370051909321e-2,1.730749107263507e-5 +7.650000000000000e0,6.378462695705714e-2,6.380681338443571e-2,-2.218642737857046e-5 +7.700000000000000e0,5.716227814194382e-2,5.722324317634090e-2,-6.096503439707857e-5 +7.750000000000000e0,4.785912897245064e-2,4.794765928744400e-2,-8.853031499335418e-5 +7.800000000000001e0,3.641414929684673e-2,3.651224781276700e-2,-9.809851592026964e-5 +7.850000000000001e0,2.345953380963931e-2,2.354673555345971e-2,-8.720174382040313e-5 +7.900000000000000e0,9.686235524453524e-3,9.744023012530714e-3,-5.778748807718989e-5 +7.950000000000000e0,-4.192531505021911e-3,-4.176698780340420e-3,-1.583272468149051e-5 +8.000000000000000e0,-1.747791006610563e-2,-1.750738053289593e-2,2.947046679029758e-5 +8.050000000000001e0,-2.956922861691992e-2,-2.958708967504839e-2,1.786105812847175e-5 +8.100000000000000e0,-3.984352963508932e-2,-3.983413356577017e-2,-9.396069319156375e-6 +8.150000000000000e0,-4.779168518870353e-2,-4.777453075574801e-2,-1.715443295552399e-5 +8.200000000000001e0,-5.307700692485089e-2,-5.306483634664998e-2,-1.217057820090961e-5 +8.250000000000000e0,-5.550906208471146e-2,-5.550704943038630e-2,-2.012654325159180e-6 +8.300000000000001e0,-5.504910603755565e-2,-5.505545080616733e-2,6.344768611679652e-6 +8.350000000000000e0,-5.180753466185976e-2,-5.181518410597468e-2,7.649444114916915e-6 +8.400000000000000e0,-4.603372758248873e-2,-4.603283996400761e-2,-8.876184811185128e-7 +8.450000000000001e0,-3.809903676730234e-2,-3.807974011877129e-2,-1.929664853104335e-5 +8.500000000000000e0,-2.847400764720174e-2,-2.842900706416297e-2,-4.500058303876647e-5 +8.550000000000001e0,-1.767405632757939e-2,-1.762776604187867e-2,-4.629028570071400e-5 +8.600000000000000e0,-6.298276260873051e-3,-6.265467805123305e-3,-3.280845574974572e-5 +8.650000000000000e0,5.035769775153548e-3,5.058164119561192e-3,-2.239434440764413e-5 +8.700000000000001e0,1.574785565201123e-2,1.576394147457535e-2,-1.608582256411653e-5 +8.750000000000000e0,2.530843583208224e-2,2.532237674565548e-2,-1.394091357323143e-5 +8.800000000000001e0,3.326440291236927e-2,3.327940889963035e-2,-1.500598726107694e-5 +8.850000000000000e0,3.926004624517588e-2,3.927746259345387e-2,-1.741634827798905e-5 +8.900000000000000e0,4.305227439245696e-2,4.307090031615517e-2,-1.862592369820254e-5 +8.950000000000001e0,4.451949437841507e-2,4.453524239994800e-2,-1.574802153293114e-5 +9.000000000000000e0,4.366389209502932e-2,4.366986774922136e-2,-5.975654192039159e-6 +9.050000000000001e0,4.059788562553945e-2,4.059426945086783e-2,3.616174671622341e-6 +9.100000000000000e0,3.554789109497152e-2,3.553864066000119e-2,9.250434970332899e-6 +9.150000000000000e0,2.884498268968012e-2,2.882912985981000e-2,1.585282987012077e-5 +9.200000000000001e0,2.089187345384983e-2,2.086773967534297e-2,2.413377850686571e-5 +9.250000000000000e0,1.214221599717891e-2,1.210864596828999e-2,3.357002888891916e-5 +9.300000000000001e0,3.075233369286040e-3,3.032445262751691e-3,4.278810653434925e-5 +9.350000000000000e0,-5.830113931287500e-3,-5.880191165762418e-3,5.007723447491771e-5 +9.400000000000000e0,-1.412005297681689e-2,-1.417398943150237e-2,5.393645468548813e-5 +9.450000000000001e0,-2.138873848399320e-2,-2.144230031957713e-2,5.356183558392902e-5 +9.500000000000000e0,-2.729769011539622e-2,-2.734688254021515e-2,4.919242481893002e-5 +9.550000000000001e0,-3.159036470265274e-2,-3.163332810904462e-2,4.296340639187851e-5 +9.600000000000001e0,-3.410925680714499e-2,-3.414161229092184e-2,3.235548377684971e-5 +9.650000000000000e0,-3.479031120286476e-2,-3.480980713837347e-2,1.949593550870654e-5 +9.700000000000001e0,-3.366547946004795e-2,-3.367274827856154e-2,7.268818513588016e-6 +9.750000000000000e0,-3.085890102197518e-2,-3.085638761297102e-2,-2.513409004162998e-6 +9.800000000000001e0,-2.657709911368139e-2,-2.656777425911979e-2,-9.324854561596624e-6 +9.850000000000001e0,-2.109523402313100e-2,-2.108134575971436e-2,-1.388826341664276e-5 +9.900000000000000e0,-1.474027688967873e-2,-1.472237059660488e-2,-1.790629307384800e-5 +9.950000000000001e0,-7.872098130852358e-3,-7.848486265504509e-3,-2.361186534784870e-5 +1.000000000000000e1,-8.635384146493817e-4,-8.303299601267044e-4,-3.320845452267737e-5 +1.005000000000000e1,5.947142276767835e-3,5.967696203880666e-3,-2.055392711283049e-5 +1.010000000000000e1,1.221286025361106e-2,1.220524907322407e-2,7.611180386994654e-6 +1.015000000000000e1,1.761801384364678e-2,1.758270819396180e-2,3.530564968498226e-5 +1.020000000000000e1,2.191356089327073e-2,2.185545223720625e-2,5.810865606448515e-5 +1.025000000000000e1,2.491746252846702e-2,2.484456504442948e-2,7.289748403754154e-5 +1.030000000000000e1,2.652176639049448e-2,2.644376433561458e-2,7.800205487989292e-5 +1.035000000000000e1,2.669553241056507e-2,2.662232364887630e-2,7.320876168876583e-5 +1.040000000000000e1,2.548359784981041e-2,2.542397138460611e-2,5.962646520429188e-5 +1.045000000000000e1,2.300139923154883e-2,2.296196189734932e-2,3.943733419950815e-5 +1.050000000000000e1,1.942627014354850e-2,1.941070745512368e-2,1.556268842481737e-5 +1.055000000000000e1,1.498580562358155e-2,1.499452686579414e-2,-8.721242212589991e-6 +1.060000000000000e1,9.944017843054674e-3,9.974198693185289e-3,-3.018085013061465e-5 +1.065000000000000e1,4.586098266189178e-3,4.632098406151893e-3,-4.600013996271506e-5 +1.070000000000000e1,-7.973548735147222e-4,-7.432539632589710e-4,-5.410091025575116e-5 +1.075000000000000e1,-5.925788701517317e-3,-5.872407045088559e-3,-5.338165642875762e-5 +1.080000000000000e1,-1.054302160801406e-2,-1.049916537225566e-2,-4.385623575840249e-5 +1.085000000000000e1,-1.442972752757565e-2,-1.440304556185425e-2,-2.668196572140277e-5 +1.090000000000000e1,-1.741348841485288e-2,-1.740941248044334e-2,-4.075934409535076e-6 +1.095000000000000e1,-1.937597675854539e-2,-1.939684951854412e-2,2.087275999872878e-5 +1.100000000000000e1,-2.025699963517992e-2,-2.030147859947670e-2,4.447896429677495e-5 +1.105000000000000e1,-2.008713961387045e-2,-2.011811528014801e-2,3.097566627756343e-5 +1.110000000000000e1,-1.889026388537436e-2,-1.889830850113327e-2,8.044615758911328e-6 +1.115000000000000e1,-1.675362180628563e-2,-1.674550547151661e-2,-8.116334769020517e-6 +1.120000000000000e1,-1.382440145974300e-2,-1.380769691825404e-2,-1.670454148895544e-5 +1.125000000000000e1,-1.028594025413751e-2,-1.026801122849810e-2,-1.792902563940539e-5 +1.130000000000000e1,-6.346686555935120e-3,-6.333830322864506e-3,-1.285623307061348e-5 +1.135000000000000e1,-2.228242395724569e-3,-2.225052784712364e-3,-3.189611012205038e-6 +1.140000000000000e1,1.846841791299773e-3,1.837849005904521e-3,8.992785395251640e-6 +1.145000000000000e1,5.666861037338006e-3,5.645344587323338e-3,2.151645001466883e-5 +1.150000000000000e1,9.041725533810552e-3,9.009347291000334e-3,3.237824281021769e-5 +1.155000000000000e1,1.181217107782361e-2,1.177219120098477e-2,3.997987683884360e-5 +1.160000000000000e1,1.385697877077420e-2,1.381367178822808e-2,4.330698254612596e-5 +1.165000000000000e1,1.509789533074890e-2,1.505585633405458e-2,4.203899669432028e-5 +1.170000000000000e1,1.550208020779305e-2,1.546549873722254e-2,3.658147057051392e-5 +1.175000000000000e1,1.508204476642966e-2,1.505402551560786e-2,2.801925082179801e-5 +1.180000000000000e1,1.389318446268050e-2,1.387518862882983e-2,1.799583385067062e-5 +1.185000000000000e1,1.202913000178999e-2,1.202059948383338e-2,8.530517956604339e-6 +1.190000000000000e1,9.615251568498392e-3,9.613461261101122e-3,1.790307397270610e-6 +1.195000000000000e1,6.800736180625739e-3,6.800898714359591e-3,-1.625337338519856e-7 +1.200000000000000e1,3.749718230862121e-3,3.745342343972282e-3,4.375886889839819e-6 +1.205000000000000e1,6.256576090357862e-4,6.154456833254968e-4,1.021192571028934e-5 +1.210000000000000e1,-2.414106607878190e-3,-2.423018484298121e-3,8.911876419931755e-6 +1.215000000000000e1,-5.212595700662888e-3,-5.215595463044012e-3,2.999762381123566e-6 +1.220000000000000e1,-7.631604085326800e-3,-7.626646693406831e-3,-4.957391919969446e-6 +1.225000000000000e1,-9.558197720907992e-3,-9.545630894253658e-3,-1.256682665433384e-5 +1.230000000000000e1,-1.090975331231557e-2,-1.089185057317416e-2,-1.790273914141494e-5 +1.235000000000000e1,-1.163719381629453e-2,-1.161747977356186e-2,-1.971404273267037e-5 +1.240000000000000e1,-1.172631486250230e-2,-1.170878356362018e-2,-1.753129888211989e-5 +1.245000000000000e1,-1.119720304832548e-2,-1.118553490485767e-2,-1.166814346781168e-5 +1.250000000000000e1,-1.010184941713039e-2,-1.009872585316787e-2,-3.123563962521489e-6 +1.255000000000000e1,-8.520154404354179e-3,-8.526753148078050e-3,6.598743723870704e-6 +1.260000000000000e1,-6.554599458345555e-3,-6.570329299746829e-3,1.572984140127322e-5 +1.265000000000000e1,-4.323921670669172e-3,-4.346426179192378e-3,2.250450852320663e-5 +1.270000000000000e1,-1.956168444021761e-3,-1.981596596233264e-3,2.542815221150303e-5 +1.275000000000000e1,4.184719487488460e-4,3.949609158195311e-4,2.351103292931491e-5 +1.280000000000000e1,2.674671297837844e-3,2.658228262054358e-3,1.644303578348608e-5 +1.285000000000000e1,4.698425553763374e-3,4.693736937645331e-3,4.688616118042957e-6 +1.290000000000000e1,6.392656985658043e-3,6.403167136452872e-3,-1.051015079482891e-5 +1.295000000000000e1,7.681688395190683e-3,7.708913462767189e-3,-2.722506757650567e-5 +1.300000000000000e1,8.514394540980920e-3,8.557415386360352e-3,-4.302084537943264e-5 +1.305000000000000e1,8.882264352829357e-3,8.921120829288290e-3,-3.885647645893338e-5 +1.310000000000000e1,8.768340116873764e-3,8.799060733982397e-3,-3.072061710863300e-5 +1.315000000000000e1,8.191235811459027e-3,8.216056673385493e-3,-2.482086192646601e-5 +1.320000000000000e1,7.199550105252097e-3,7.220508775011014e-3,-2.095866975891734e-5 +1.325000000000000e1,5.862290726879617e-3,5.880972324172317e-3,-1.868159729269923e-5 +1.330000000000000e1,4.264375541101022e-3,4.281770028317760e-3,-1.739448721673788e-5 +1.335000000000000e1,2.501444368914018e-3,2.517910101342152e-3,-1.646573242813356e-5 +1.340000000000000e1,6.742893367682573e-4,6.896092953572842e-4,-1.531995858902692e-5 +1.345000000000000e1,-1.116779322556939e-3,-1.103268397111659e-3,-1.351092544528052e-5 +1.350000000000000e1,-2.777323617648995e-3,-2.766552601704902e-3,-1.077101594409253e-5 +1.355000000000000e1,-4.223640950116789e-3,-4.216604818136516e-3,-7.036131980273259e-6 +1.360000000000000e1,-5.386856318328236e-3,-5.384409353799396e-3,-2.446964528840176e-6 +1.365000000000000e1,-6.216051232020142e-3,-6.218721903467787e-3,2.670671447644636e-6 +1.370000000000000e1,-6.680296957334652e-3,-6.688139474115473e-3,7.842516780820485e-6 +1.375000000000000e1,-6.769524607447529e-3,-6.782019522012581e-3,1.249491456505221e-5 +1.380000000000000e1,-6.494230674139711e-3,-6.510241987221761e-3,1.601131308204967e-5 +1.385000000000000e1,-5.884080187217380e-3,-5.901871631962295e-3,1.779144474491502e-5 +1.390000000000000e1,-4.985527395400274e-3,-5.002836222723251e-3,1.730882732297635e-5 +1.395000000000000e1,-3.858622742049733e-3,-3.872785596563409e-3,1.416285451367625e-5 +1.400000000000000e1,-2.573212619240187e-3,-2.581335079556789e-3,8.122460316602274e-6 diff --git a/doc/plots/feff_vs_larch_data/03_single_dataset_fit_rspace.csv b/doc/plots/feff_vs_larch_data/03_single_dataset_fit_rspace.csv new file mode 100644 index 0000000..89eec86 --- /dev/null +++ b/doc/plots/feff_vs_larch_data/03_single_dataset_fit_rspace.csv @@ -0,0 +1,327 @@ +r,model,larch,diff +0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771283e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313848e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.227184630308513e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.533980787885641e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.840776945462770e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.147573103039898e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.454369260617026e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.761165418194154e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771282e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.374757733348411e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.681553890925539e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.988350048502667e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.295146206079796e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.601942363656924e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.908738521234052e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.215534678811180e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.522330836388308e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.829126993965437e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.442719309119693e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.749515466696822e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.056311624273950e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.363107781851078e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.669903939428206e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.976700097005335e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.283496254582463e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.590292412159591e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.897088569736720e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313848e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.510680884890976e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.817477042468105e-1,2.397685957215776e-1,2.409123029015491e-1,-1.143707179971559e-3 +1.012427320004523e0,2.588380250667334e-1,2.605886922824429e-1,-1.750667215709434e-3 +1.043106935762236e0,2.545050711502052e-1,2.567681663706514e-1,-2.263095220446154e-3 +1.073786551519949e0,2.252441091259201e-1,2.278088376348592e-1,-2.564728508939018e-3 +1.104466167277662e0,1.733119956830510e-1,1.757988182110101e-1,-2.486822527959148e-3 +1.135145783035375e0,1.088777097732234e-1,1.103665438221547e-1,-1.488834048931340e-3 +1.165825398793087e0,7.860879115213310e-2,7.658321498184889e-2,2.025576170284205e-3 +1.196505014550800e0,1.403397583008528e-1,1.372614617253993e-1,3.078296575453443e-3 +1.227184630308513e0,2.288498928554160e-1,2.264028406672066e-1,2.447052188209398e-3 +1.257864246066226e0,3.104289385865827e-1,3.088173477632749e-1,1.611590823307751e-3 +1.288543861823939e0,3.715272571332995e-1,3.708102751078699e-1,7.169820254295800e-4 +1.319223477581652e0,4.033081917881178e-1,4.034889956966823e-1,-1.808039085645641e-4 +1.349903093339364e0,4.004022409441514e-1,4.014481691814850e-1,-1.045928237333626e-3 +1.380582709097077e0,3.614986493383731e-1,3.633770026022773e-1,-1.878353263904231e-3 +1.411262324854790e0,2.909821584491694e-1,2.937379540530679e-1,-2.755795603898492e-3 +1.441941940612503e0,2.054373090046174e-1,2.093049608340782e-1,-3.867651829460778e-3 +1.472621556370216e0,1.625748703070399e-1,1.670299198304239e-1,-4.455049523384047e-3 +1.503301172127929e0,2.375178865659095e-1,2.404414166954815e-1,-2.923530129572055e-3 +1.533980787885641e0,3.751359625431157e-1,3.772291005505661e-1,-2.093138007450368e-3 +1.564660403643354e0,5.234777408439037e-1,5.254827380979332e-1,-2.004997254029472e-3 +1.595340019401067e0,6.615302401167752e-1,6.637614906041317e-1,-2.231250487356506e-3 +1.626019635158780e0,7.768867422263902e-1,7.794455673402823e-1,-2.558825113892049e-3 +1.656699250916493e0,8.607684445026451e-1,8.636364384173174e-1,-2.867993914672295e-3 +1.687378866674206e0,9.071655371027857e-1,9.102595613760353e-1,-3.094024273249563e-3 +1.718058482431918e0,9.132543532843417e-1,9.164822231699079e-1,-3.227869885566226e-3 +1.748738098189631e0,8.815090085300797e-1,8.848401076954205e-1,-3.331099165340801e-3 +1.779417713947344e0,8.256558462313073e-1,8.292024446822387e-1,-3.546598450931415e-3 +1.810097329705057e0,7.836001142178889e-1,7.876332721441474e-1,-4.033157926258468e-3 +1.840776945462770e0,8.281069105061698e-1,8.327873112583813e-1,-4.680400752211544e-3 +1.871456561220483e0,1.029407725304403e0,1.034476829757782e0,-5.069104453378825e-3 +1.902136176978195e0,1.394825829187524e0,1.399930852167290e0,-5.105022979765783e-3 +1.932815792735908e0,1.892431523747905e0,1.897313276989095e0,-4.881753241189779e-3 +1.963495408493621e0,2.489388042455383e0,2.493790268476423e0,-4.402226021039901e-3 +1.994175024251334e0,3.156598863282998e0,3.160243952751536e0,-3.645089468537588e-3 +2.024854640009047e0,3.864934778271949e0,3.867555845716836e0,-2.621067444886105e-3 +2.055534255766760e0,4.583326515781353e0,4.584709364912864e0,-1.382849131510433e-3 +2.086213871524472e0,5.278896441609142e0,5.278914680558266e0,-1.823894912433843e-5 +2.116893487282185e0,5.918283968435682e0,5.916921705149762e0,1.362263285919596e-3 +2.147573103039898e0,6.469574115883695e0,6.466934144321860e0,2.639971561835708e-3 +2.178252718797611e0,6.904425624643970e0,6.900722839281300e0,3.702785362670546e-3 +2.208932334555323e0,7.200091463750395e0,7.195632820899375e0,4.458642851020045e-3 +2.239611950313036e0,7.341088731399807e0,7.336242542898918e0,4.846188500889248e-3 +2.270291566070749e0,7.320335352726051e0,7.315493891447317e0,4.841461278734194e-3 +2.300971181828462e0,7.139636555879432e0,7.135176682072848e0,4.459873806583303e-3 +2.331650797586175e0,6.809474542677327e0,6.805721186746712e0,3.753355930614433e-3 +2.362330413343888e0,6.348125634445642e0,6.345322445284424e0,2.803189161218356e-3 +2.393010029101601e0,5.780194549676210e0,5.778484889174112e0,1.709660502098309e-3 +2.423689644859313e0,5.134709511339747e0,5.134129389824130e0,5.801215156173711e-4 +2.454369260617026e0,4.442959880595987e0,4.443442596668608e0,-4.827160726206259e-4 +2.485048876374739e0,3.736277190351551e0,3.737667594403934e0,-1.390404052382443e-3 +2.515728492132452e0,3.043960640572078e0,3.046035264387412e0,-2.074623815333965e-3 +2.546408107890165e0,2.391532817361640e0,2.394020597599347e0,-2.487780237706794e-3 +2.577087723647877e0,1.799490962160354e0,1.802087415198536e0,-2.596453038182123e-3 +2.607767339405590e0,1.282723829318990e0,1.285087195659020e0,-2.363366340029760e-3 +2.638446955163303e0,8.509075676757930e-1,8.526106328771027e-1,-1.703065201309695e-3 +2.669126570921016e0,5.110370465835189e-1,5.113926013932527e-1,-3.555548097338157e-4 +2.699806186678729e0,2.778646236404715e-1,2.754545120061561e-1,2.410111634315371e-3 +2.730485802436442e0,1.984697068781066e-1,1.928409080411060e-1,5.628798837000543e-3 +2.761165418194155e0,2.480149447813440e-1,2.431522288756423e-1,4.862715905701642e-3 +2.791845033951867e0,3.091322573127973e-1,3.057266784535115e-1,3.405578859285718e-3 +2.822524649709580e0,3.465850707138043e-1,3.443695463710728e-1,2.215524342731534e-3 +2.853204265467293e0,3.598382660775792e-1,3.586017937006246e-1,1.236472376954623e-3 +2.883883881225006e0,3.543661501387461e-1,3.539242906860658e-1,4.418594526802710e-4 +2.914563496982719e0,3.361601429574415e-1,3.363168452139482e-1,-1.567022565067133e-4 +2.945243112740431e0,3.107606329189587e-1,3.113046885704739e-1,-5.440556515152184e-4 +2.975922728498144e0,1.062129183550729e-33,1.064852553263229e-33,-2.723369712500417e-36 +3.006602344255857e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.037281960013570e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771283e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.098641191528996e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.129320807286708e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.160000423044421e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.190680038802134e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.221359654559847e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.252039270317560e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.282718886075272e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.313398501832985e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.344078117590698e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.374757733348411e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.405437349106124e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.436116964863837e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.466796580621549e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.497476196379262e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.528155812136975e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.558835427894688e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.589515043652401e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.620194659410114e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.650874275167826e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.681553890925539e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.712233506683252e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.742913122440965e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.773592738198678e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.804272353956391e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.834951969714103e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.865631585471816e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.896311201229529e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.926990816987242e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.957670432744955e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.988350048502667e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.019029664260381e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.049709280018093e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.080388895775806e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.111068511533519e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.141748127291232e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.172427743048944e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.203107358806657e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.233786974564370e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.264466590322083e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.295146206079796e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.325825821837508e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.356505437595222e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.387185053352934e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.417864669110647e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.448544284868360e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.479223900626073e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.509903516383786e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.540583132141498e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.571262747899211e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.601942363656924e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.632621979414637e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.663301595172349e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.693981210930063e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.724660826687775e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.755340442445489e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.786020058203201e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.816699673960914e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.847379289718627e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.878058905476339e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.908738521234052e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.939418136991765e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.970097752749478e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.000777368507190e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.031456984264904e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.062136600022616e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.092816215780330e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.123495831538042e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.154175447295755e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.184855063053468e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.215534678811180e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.246214294568893e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.276893910326606e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.307573526084319e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.338253141842032e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.368932757599745e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.399612373357457e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.430291989115171e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.460971604872883e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.491651220630596e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.522330836388309e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.553010452146022e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.583690067903735e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.614369683661447e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.645049299419160e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.675728915176873e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.706408530934586e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.737088146692298e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.767767762450012e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.798447378207724e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.829126993965438e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.859806609723150e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.890486225480863e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.921165841238576e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.951845456996288e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.982525072754001e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.013204688511714e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.043884304269427e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.074563920027139e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.105243535784853e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.166602767300279e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.197282383057991e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.227961998815704e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.258641614573417e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.289321230331129e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.320000846088842e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.350680461846555e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.381360077604268e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.412039693361981e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.442719309119694e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.473398924877406e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.504078540635120e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.534758156392832e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.565437772150545e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.596117387908258e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.626797003665970e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.657476619423684e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.688156235181396e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.718835850939109e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.749515466696822e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.780195082454535e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.810874698212247e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.841554313969961e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.872233929727673e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.902913545485386e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.933593161243099e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.964272777000811e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.994952392758525e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.025632008516237e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.056311624273950e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.086991240031663e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.117670855789376e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.148350471547088e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.179030087304802e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.209709703062514e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.240389318820228e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.271068934577940e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.301748550335653e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.332428166093366e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.363107781851078e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.393787397608791e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.424467013366504e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.455146629124217e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.485826244881930e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.516505860639643e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.547185476397355e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.577865092155069e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.608544707912781e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.639224323670494e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.669903939428207e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.700583555185919e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.731263170943633e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.761942786701345e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.792622402459058e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.823302018216771e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.853981633974484e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.884661249732196e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.915340865489910e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.946020481247622e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.976700097005335e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.007379712763047e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.038059328520761e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.068738944278474e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.099418560036186e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.130098175793899e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.160777791551611e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.191457407309326e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.222137023067038e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.252816638824751e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.283496254582463e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.314175870340176e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.344855486097888e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.375535101855602e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.406214717613315e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.436894333371027e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.467573949128740e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.498253564886452e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.528933180644167e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.559612796401879e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.590292412159592e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.620972027917304e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.651651643675017e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.682331259432731e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.713010875190443e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.743690490948156e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.774370106705868e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.805049722463581e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.835729338221293e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.866408953979008e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.897088569736720e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.927768185494433e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.958447801252145e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.989127417009858e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.019807032767572e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.050486648525284e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.081166264282997e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.111845880040709e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.142525495798422e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.173205111556134e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313849e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.234564343071561e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.265243958829274e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.295923574586986e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.326603190344699e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.357282806102413e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.387962421860125e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.418642037617838e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.449321653375550e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.480001269133263e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.510680884890977e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.541360500648690e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.572040116406402e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.602719732164115e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.633399347921827e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.664078963679540e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.694758579437254e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.725438195194966e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.756117810952679e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.786797426710391e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.817477042468104e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.848156658225818e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.878836273983531e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.909515889741243e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.940195505498956e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.970875121256668e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 diff --git a/doc/plots/feff_vs_larch_data/03_single_dataset_fit_rspace_contrib.csv b/doc/plots/feff_vs_larch_data/03_single_dataset_fit_rspace_contrib.csv new file mode 100644 index 0000000..0cbf8aa --- /dev/null +++ b/doc/plots/feff_vs_larch_data/03_single_dataset_fit_rspace_contrib.csv @@ -0,0 +1,327 @@ +r,total_model,total_larch,diff,feffcu01dat_00 +0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771283e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313848e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.227184630308513e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.533980787885641e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.840776945462770e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.147573103039898e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.454369260617026e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.761165418194154e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771282e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.374757733348411e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.681553890925539e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.988350048502667e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.295146206079796e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.601942363656924e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.908738521234052e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.215534678811180e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.522330836388308e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.829126993965437e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.442719309119693e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.749515466696822e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.056311624273950e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.363107781851078e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.669903939428206e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.976700097005335e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.283496254582463e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.590292412159591e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.897088569736720e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313848e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.510680884890976e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.817477042468105e-1,2.397685957215776e-1,2.409123029015491e-1,-1.143707179971559e-3,2.397685957215776e-1 +1.012427320004523e0,2.588380250667334e-1,2.605886922824429e-1,-1.750667215709434e-3,2.588380250667334e-1 +1.043106935762236e0,2.545050711502052e-1,2.567681663706514e-1,-2.263095220446154e-3,2.545050711502052e-1 +1.073786551519949e0,2.252441091259201e-1,2.278088376348592e-1,-2.564728508939018e-3,2.252441091259201e-1 +1.104466167277662e0,1.733119956830510e-1,1.757988182110101e-1,-2.486822527959148e-3,1.733119956830510e-1 +1.135145783035375e0,1.088777097732234e-1,1.103665438221547e-1,-1.488834048931340e-3,1.088777097732234e-1 +1.165825398793087e0,7.860879115213310e-2,7.658321498184889e-2,2.025576170284205e-3,7.860879115213310e-2 +1.196505014550800e0,1.403397583008528e-1,1.372614617253993e-1,3.078296575453443e-3,1.403397583008528e-1 +1.227184630308513e0,2.288498928554160e-1,2.264028406672066e-1,2.447052188209398e-3,2.288498928554160e-1 +1.257864246066226e0,3.104289385865827e-1,3.088173477632749e-1,1.611590823307751e-3,3.104289385865827e-1 +1.288543861823939e0,3.715272571332995e-1,3.708102751078699e-1,7.169820254295800e-4,3.715272571332995e-1 +1.319223477581652e0,4.033081917881178e-1,4.034889956966823e-1,-1.808039085645641e-4,4.033081917881178e-1 +1.349903093339364e0,4.004022409441514e-1,4.014481691814850e-1,-1.045928237333626e-3,4.004022409441514e-1 +1.380582709097077e0,3.614986493383731e-1,3.633770026022773e-1,-1.878353263904231e-3,3.614986493383731e-1 +1.411262324854790e0,2.909821584491694e-1,2.937379540530679e-1,-2.755795603898492e-3,2.909821584491694e-1 +1.441941940612503e0,2.054373090046174e-1,2.093049608340782e-1,-3.867651829460778e-3,2.054373090046174e-1 +1.472621556370216e0,1.625748703070399e-1,1.670299198304239e-1,-4.455049523384047e-3,1.625748703070399e-1 +1.503301172127929e0,2.375178865659095e-1,2.404414166954815e-1,-2.923530129572055e-3,2.375178865659095e-1 +1.533980787885641e0,3.751359625431157e-1,3.772291005505661e-1,-2.093138007450368e-3,3.751359625431157e-1 +1.564660403643354e0,5.234777408439037e-1,5.254827380979332e-1,-2.004997254029472e-3,5.234777408439037e-1 +1.595340019401067e0,6.615302401167752e-1,6.637614906041317e-1,-2.231250487356506e-3,6.615302401167752e-1 +1.626019635158780e0,7.768867422263902e-1,7.794455673402823e-1,-2.558825113892049e-3,7.768867422263902e-1 +1.656699250916493e0,8.607684445026451e-1,8.636364384173174e-1,-2.867993914672295e-3,8.607684445026451e-1 +1.687378866674206e0,9.071655371027857e-1,9.102595613760353e-1,-3.094024273249563e-3,9.071655371027857e-1 +1.718058482431918e0,9.132543532843417e-1,9.164822231699079e-1,-3.227869885566226e-3,9.132543532843417e-1 +1.748738098189631e0,8.815090085300797e-1,8.848401076954205e-1,-3.331099165340801e-3,8.815090085300797e-1 +1.779417713947344e0,8.256558462313073e-1,8.292024446822387e-1,-3.546598450931415e-3,8.256558462313073e-1 +1.810097329705057e0,7.836001142178889e-1,7.876332721441474e-1,-4.033157926258468e-3,7.836001142178889e-1 +1.840776945462770e0,8.281069105061698e-1,8.327873112583813e-1,-4.680400752211544e-3,8.281069105061698e-1 +1.871456561220483e0,1.029407725304403e0,1.034476829757782e0,-5.069104453378825e-3,1.029407725304403e0 +1.902136176978195e0,1.394825829187524e0,1.399930852167290e0,-5.105022979765783e-3,1.394825829187524e0 +1.932815792735908e0,1.892431523747905e0,1.897313276989095e0,-4.881753241189779e-3,1.892431523747905e0 +1.963495408493621e0,2.489388042455383e0,2.493790268476423e0,-4.402226021039901e-3,2.489388042455383e0 +1.994175024251334e0,3.156598863282998e0,3.160243952751536e0,-3.645089468537588e-3,3.156598863282998e0 +2.024854640009047e0,3.864934778271949e0,3.867555845716836e0,-2.621067444886105e-3,3.864934778271949e0 +2.055534255766760e0,4.583326515781353e0,4.584709364912864e0,-1.382849131510433e-3,4.583326515781353e0 +2.086213871524472e0,5.278896441609142e0,5.278914680558266e0,-1.823894912433843e-5,5.278896441609142e0 +2.116893487282185e0,5.918283968435682e0,5.916921705149762e0,1.362263285919596e-3,5.918283968435682e0 +2.147573103039898e0,6.469574115883695e0,6.466934144321860e0,2.639971561835708e-3,6.469574115883695e0 +2.178252718797611e0,6.904425624643970e0,6.900722839281300e0,3.702785362670546e-3,6.904425624643970e0 +2.208932334555323e0,7.200091463750395e0,7.195632820899375e0,4.458642851020045e-3,7.200091463750395e0 +2.239611950313036e0,7.341088731399807e0,7.336242542898918e0,4.846188500889248e-3,7.341088731399807e0 +2.270291566070749e0,7.320335352726051e0,7.315493891447317e0,4.841461278734194e-3,7.320335352726051e0 +2.300971181828462e0,7.139636555879432e0,7.135176682072848e0,4.459873806583303e-3,7.139636555879432e0 +2.331650797586175e0,6.809474542677327e0,6.805721186746712e0,3.753355930614433e-3,6.809474542677327e0 +2.362330413343888e0,6.348125634445642e0,6.345322445284424e0,2.803189161218356e-3,6.348125634445642e0 +2.393010029101601e0,5.780194549676210e0,5.778484889174112e0,1.709660502098309e-3,5.780194549676210e0 +2.423689644859313e0,5.134709511339747e0,5.134129389824130e0,5.801215156173711e-4,5.134709511339747e0 +2.454369260617026e0,4.442959880595987e0,4.443442596668608e0,-4.827160726206259e-4,4.442959880595987e0 +2.485048876374739e0,3.736277190351551e0,3.737667594403934e0,-1.390404052382443e-3,3.736277190351551e0 +2.515728492132452e0,3.043960640572078e0,3.046035264387412e0,-2.074623815333965e-3,3.043960640572078e0 +2.546408107890165e0,2.391532817361640e0,2.394020597599347e0,-2.487780237706794e-3,2.391532817361640e0 +2.577087723647877e0,1.799490962160354e0,1.802087415198536e0,-2.596453038182123e-3,1.799490962160354e0 +2.607767339405590e0,1.282723829318990e0,1.285087195659020e0,-2.363366340029760e-3,1.282723829318990e0 +2.638446955163303e0,8.509075676757930e-1,8.526106328771027e-1,-1.703065201309695e-3,8.509075676757930e-1 +2.669126570921016e0,5.110370465835189e-1,5.113926013932527e-1,-3.555548097338157e-4,5.110370465835189e-1 +2.699806186678729e0,2.778646236404715e-1,2.754545120061561e-1,2.410111634315371e-3,2.778646236404715e-1 +2.730485802436442e0,1.984697068781066e-1,1.928409080411060e-1,5.628798837000543e-3,1.984697068781066e-1 +2.761165418194155e0,2.480149447813440e-1,2.431522288756423e-1,4.862715905701642e-3,2.480149447813440e-1 +2.791845033951867e0,3.091322573127973e-1,3.057266784535115e-1,3.405578859285718e-3,3.091322573127973e-1 +2.822524649709580e0,3.465850707138043e-1,3.443695463710728e-1,2.215524342731534e-3,3.465850707138043e-1 +2.853204265467293e0,3.598382660775792e-1,3.586017937006246e-1,1.236472376954623e-3,3.598382660775792e-1 +2.883883881225006e0,3.543661501387461e-1,3.539242906860658e-1,4.418594526802710e-4,3.543661501387461e-1 +2.914563496982719e0,3.361601429574415e-1,3.363168452139482e-1,-1.567022565067133e-4,3.361601429574415e-1 +2.945243112740431e0,3.107606329189587e-1,3.113046885704739e-1,-5.440556515152184e-4,3.107606329189587e-1 +2.975922728498144e0,1.062129183550729e-33,1.064852553263229e-33,-2.723369712500417e-36,1.062129183550729e-33 +3.006602344255857e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.037281960013570e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771283e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.098641191528996e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.129320807286708e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.160000423044421e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.190680038802134e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.221359654559847e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.252039270317560e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.282718886075272e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.313398501832985e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.344078117590698e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.374757733348411e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.405437349106124e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.436116964863837e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.466796580621549e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.497476196379262e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.528155812136975e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.558835427894688e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.589515043652401e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.620194659410114e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.650874275167826e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.681553890925539e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.712233506683252e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.742913122440965e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.773592738198678e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.804272353956391e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.834951969714103e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.865631585471816e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.896311201229529e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.926990816987242e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.957670432744955e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.988350048502667e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.019029664260381e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.049709280018093e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.080388895775806e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.111068511533519e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.141748127291232e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.172427743048944e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.203107358806657e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.233786974564370e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.264466590322083e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.295146206079796e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.325825821837508e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.356505437595222e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.387185053352934e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.417864669110647e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.448544284868360e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.479223900626073e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.509903516383786e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.540583132141498e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.571262747899211e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.601942363656924e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.632621979414637e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.663301595172349e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.693981210930063e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.724660826687775e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.755340442445489e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.786020058203201e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.816699673960914e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.847379289718627e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.878058905476339e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.908738521234052e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.939418136991765e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.970097752749478e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.000777368507190e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.031456984264904e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.062136600022616e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.092816215780330e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.123495831538042e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.154175447295755e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.184855063053468e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.215534678811180e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.246214294568893e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.276893910326606e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.307573526084319e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.338253141842032e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.368932757599745e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.399612373357457e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.430291989115171e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.460971604872883e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.491651220630596e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.522330836388309e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.553010452146022e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.583690067903735e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.614369683661447e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.645049299419160e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.675728915176873e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.706408530934586e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.737088146692298e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.767767762450012e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.798447378207724e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.829126993965438e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.859806609723150e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.890486225480863e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.921165841238576e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.951845456996288e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.982525072754001e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.013204688511714e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.043884304269427e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.074563920027139e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.105243535784853e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.166602767300279e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.197282383057991e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.227961998815704e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.258641614573417e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.289321230331129e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.320000846088842e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.350680461846555e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.381360077604268e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.412039693361981e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.442719309119694e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.473398924877406e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.504078540635120e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.534758156392832e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.565437772150545e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.596117387908258e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.626797003665970e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.657476619423684e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.688156235181396e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.718835850939109e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.749515466696822e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.780195082454535e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.810874698212247e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.841554313969961e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.872233929727673e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.902913545485386e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.933593161243099e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.964272777000811e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.994952392758525e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.025632008516237e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.056311624273950e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.086991240031663e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.117670855789376e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.148350471547088e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.179030087304802e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.209709703062514e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.240389318820228e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.271068934577940e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.301748550335653e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.332428166093366e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.363107781851078e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.393787397608791e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.424467013366504e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.455146629124217e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.485826244881930e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.516505860639643e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.547185476397355e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.577865092155069e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.608544707912781e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.639224323670494e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.669903939428207e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.700583555185919e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.731263170943633e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.761942786701345e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.792622402459058e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.823302018216771e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.853981633974484e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.884661249732196e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.915340865489910e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.946020481247622e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.976700097005335e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.007379712763047e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.038059328520761e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.068738944278474e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.099418560036186e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.130098175793899e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.160777791551611e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.191457407309326e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.222137023067038e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.252816638824751e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.283496254582463e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.314175870340176e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.344855486097888e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.375535101855602e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.406214717613315e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.436894333371027e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.467573949128740e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.498253564886452e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.528933180644167e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.559612796401879e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.590292412159592e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.620972027917304e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.651651643675017e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.682331259432731e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.713010875190443e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.743690490948156e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.774370106705868e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.805049722463581e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.835729338221293e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.866408953979008e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.897088569736720e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.927768185494433e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.958447801252145e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.989127417009858e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.019807032767572e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.050486648525284e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.081166264282997e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.111845880040709e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.142525495798422e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.173205111556134e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313849e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.234564343071561e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.265243958829274e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.295923574586986e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.326603190344699e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.357282806102413e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.387962421860125e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.418642037617838e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.449321653375550e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.480001269133263e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.510680884890977e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.541360500648690e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.572040116406402e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.602719732164115e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.633399347921827e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.664078963679540e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.694758579437254e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.725438195194966e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.756117810952679e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.786797426710391e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.817477042468104e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.848156658225818e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.878836273983531e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.909515889741243e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.940195505498956e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.970875121256668e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 diff --git a/doc/plots/feff_vs_larch_data/04_clone_template_path.csv b/doc/plots/feff_vs_larch_data/04_clone_template_path.csv new file mode 100644 index 0000000..c67ba88 --- /dev/null +++ b/doc/plots/feff_vs_larch_data/04_clone_template_path.csv @@ -0,0 +1,281 @@ +k,model,larch,diff +5.000000000000000e-2,0.000000000000000e0,-3.294014545590028e-1,3.294014545590028e-1 +1.000000000000000e-1,0.000000000000000e0,-3.325857487366470e-1,3.325857487366470e-1 +1.500000000000000e-1,0.000000000000000e0,-3.357700429142912e-1,3.357700429142912e-1 +2.000000000000000e-1,0.000000000000000e0,-3.401532904633558e-1,3.401532904633558e-1 +2.500000000000000e-1,0.000000000000000e0,-3.456560420239568e-1,3.456560420239568e-1 +3.000000000000000e-1,0.000000000000000e0,-3.521695009003528e-1,3.521695009003528e-1 +3.500000000000000e-1,0.000000000000000e0,-3.595505950839698e-1,3.595505950839698e-1 +4.000000000000000e-1,0.000000000000000e0,-3.676159293232869e-1,3.676159293232869e-1 +4.500000000000000e-1,0.000000000000000e0,-3.761342857813328e-1,3.761342857813328e-1 +5.000000000000000e-1,0.000000000000000e0,-3.848161215226475e-1,3.848161215226475e-1 +5.500000000000000e-1,0.000000000000000e0,-3.932912407666668e-1,3.932912407666668e-1 +6.000000000000001e-1,0.000000000000000e0,-4.009380735867983e-1,4.009380735867983e-1 +6.500000000000000e-1,-3.933498345221743e-1,-3.926716466366216e-1,-6.781878855526835e-4 +7.000000000000001e-1,-3.819963304667648e-1,-3.813331402971081e-1,-6.631901696566578e-4 +7.500000000000000e-1,-3.691062653461469e-1,-3.683470245398694e-1,-7.592408062774281e-4 +8.000000000000000e-1,-3.545935870248050e-1,-3.535384017595220e-1,-1.055185265282976e-3 +8.500000000000001e-1,-3.381666025946190e-1,-3.367438066643357e-1,-1.422795930283272e-3 +9.000000000000000e-1,-3.186261610789596e-1,-3.178195023572455e-1,-8.066587217140930e-4 +9.500000000000001e-1,-2.974758276102000e-1,-2.966649207098992e-1,-8.109069003007230e-4 +1.000000000000000e0,-2.744087729269208e-1,-2.731786232202901e-1,-1.230149706630712e-3 +1.050000000000000e0,-2.478787388919881e-1,-2.473011706388375e-1,-5.775682531505288e-4 +1.100000000000000e0,-2.199206390165607e-1,-2.191364633970085e-1,-7.841756195521854e-4 +1.150000000000000e0,-1.893718198361712e-1,-1.888065267837186e-1,-5.652930524525923e-4 +1.200000000000000e0,-1.567621911514822e-1,-1.564444046653403e-1,-3.177864861418356e-4 +1.250000000000000e0,-1.230615025467005e-1,-1.224036763166079e-1,-6.578262300926258e-4 +1.300000000000000e0,-8.722766658380751e-2,-8.715983524047755e-2,-6.783134332996599e-5 +1.350000000000000e0,-5.167820057250600e-2,-5.124494511630743e-2,-4.332554561985724e-4 +1.400000000000000e0,-1.516286950593998e-2,-1.526751063079347e-2,1.046411248534981e-4 +1.450000000000000e0,2.012033890098960e-2,2.009284886755197e-2,2.749003343762921e-5 +1.500000000000000e0,5.438331850205357e-2,5.411256444340888e-2,2.707540586446913e-4 +1.550000000000000e0,8.642868753739268e-2,8.611033042562016e-2,3.183571117725131e-4 +1.600000000000000e0,1.156195552608338e-1,1.152681180423988e-1,3.514372184350578e-4 +1.650000000000000e0,1.411293211276525e-1,1.406728273556015e-1,4.564937720509810e-4 +1.700000000000000e0,1.621493284822493e-1,1.616641557189680e-1,4.851727632812497e-4 +1.750000000000000e0,1.783657193472425e-1,1.777615901639631e-1,6.041291832793450e-4 +1.800000000000000e0,1.892311680251600e-1,1.885934374458280e-1,6.377305793320853e-4 +1.850000000000000e0,1.944670888632363e-1,1.939096951849520e-1,5.573936782842515e-4 +1.900000000000000e0,1.941933958023380e-1,1.934543094537796e-1,7.390863485584043e-4 +1.950000000000000e0,1.876983314896670e-1,1.872181652685968e-1,4.801662210701940e-4 +2.000000000000000e0,1.763021425903746e-1,1.756076414101513e-1,6.945011802232948e-4 +2.050000000000000e0,1.596507755761884e-1,1.592074863076734e-1,4.432892685150014e-4 +2.100000000000000e0,1.391123292150811e-1,1.387543676633363e-1,3.579615517447787e-4 +2.150000000000000e0,1.141847154213257e-1,1.149897343852503e-1,-8.050189639246391e-4 +2.200000000000000e0,8.772083663416394e-2,8.875688172901036e-2,-1.036045094846422e-3 +2.250000000000000e0,6.085995817376575e-2,6.126408875565007e-2,-4.041305818843210e-4 +2.300000000000000e0,3.416222623542854e-2,3.383069858273713e-2,3.315276526914129e-4 +2.350000000000000e0,8.499987859246530e-3,8.001530980010461e-3,4.984568792360689e-4 +2.400000000000000e0,-1.371518248646803e-2,-1.419485949073218e-2,4.796770042641459e-4 +2.450000000000000e0,-3.094965539969093e-2,-3.094240168596014e-2,-7.253713730788480e-6 +2.500000000000000e0,-4.324423750610622e-2,-4.224256148900268e-2,-1.001676017103541e-3 +2.550000000000000e0,-5.288094774908219e-2,-5.031380519059944e-2,-2.567142558482748e-3 +2.600000000000000e0,-5.919385014217095e-2,-5.670952968803743e-2,-2.484320454133521e-3 +2.650000000000000e0,-6.228250462395108e-2,-6.135428800005268e-2,-9.282166238984008e-4 +2.700000000000000e0,-6.286471188192082e-2,-6.305081412694059e-2,1.861022450197758e-4 +2.750000000000000e0,-6.079146395869075e-2,-6.127376324439794e-2,4.822992857071925e-4 +2.800000000000000e0,-5.617752327639013e-2,-5.652561559186974e-2,3.480923154796020e-4 +2.850000000000000e0,-4.961548384810257e-2,-4.955663879173896e-2,-5.884505636361004e-5 +2.900000000000000e0,-4.129042803196441e-2,-4.113529316986852e-2,-1.551348620958959e-4 +2.950000000000000e0,-3.144897676498536e-2,-3.168053048321991e-2,2.315537182345506e-4 +3.000000000000000e0,-2.101381875900931e-2,-2.146831418650914e-2,4.544954274998299e-4 +3.050000000000000e0,-1.078666968761761e-2,-1.087946208821198e-2,9.279240059436276e-5 +3.100000000000000e0,-3.658328612253402e-5,-4.587705779771952e-4,4.221872918546612e-4 +3.150000000000000e0,9.908778607543944e-3,9.061277594673041e-3,8.475010128709028e-4 +3.200000000000000e0,1.794161804680206e-2,1.708921245437348e-2,8.524055924285824e-4 +3.250000000000000e0,2.353788714038488e-2,2.332543994108142e-2,2.124471993034636e-4 +3.300000000000000e0,2.845993284754181e-2,2.767369495791551e-2,7.862378896262984e-4 +3.350000000000000e0,3.113273421708577e-2,2.994275657939049e-2,1.189977637695280e-3 +3.400000000000000e0,3.087844794678847e-2,2.989024823516422e-2,9.881997116242512e-4 +3.450000000000000e0,2.759802816960326e-2,2.740457688441883e-2,1.934512851844220e-4 +3.500000000000000e0,2.338274736300692e-2,2.261174459581147e-2,7.710027671954563e-4 +3.550000000000000e0,1.680649142113138e-2,1.579795282183295e-2,1.008538599298427e-3 +3.600000000000000e0,8.050019298092417e-3,7.323249415895688e-3,7.267698821967292e-4 +3.650000000000000e0,-2.326800026826028e-3,-2.380798998970953e-3,5.399897214492487e-5 +3.700000000000000e0,-1.248343460374727e-2,-1.281254498424808e-2,3.291103805008119e-4 +3.750000000000000e0,-2.307693654499889e-2,-2.339859823437767e-2,3.216616893787841e-4 +3.800000000000000e0,-3.340851867758332e-2,-3.353472147970279e-2,1.262028021194669e-4 +3.850000000000000e0,-4.271392486906688e-2,-4.262032967414725e-2,-9.359519491963092e-5 +3.900000000000000e0,-5.011298508177037e-2,-5.008641634667832e-2,-2.656873509205432e-5 +3.950000000000000e0,-5.547056870710668e-2,-5.541970665377990e-2,-5.086205332677923e-5 +4.000000000000000e0,-5.829997533584177e-2,-5.818284346494816e-2,-1.171318708936067e-4 +4.050000000000000e0,-5.822272468551810e-2,-5.803659160936112e-2,-1.861330761569885e-4 +4.100000000000001e0,-5.495009602229306e-2,-5.478653800353910e-2,-1.635580187539648e-4 +4.150000000000000e0,-4.868771567433998e-2,-4.847398543699171e-2,-2.137302373482683e-4 +4.200000000000000e0,-3.958346486722042e-2,-3.934649815839190e-2,-2.369667088285218e-4 +4.250000000000000e0,-2.798266148958015e-2,-2.782024409440195e-2,-1.624173951782007e-4 +4.300000000000000e0,-1.460905966157163e-2,-1.441432204924694e-2,-1.947376123246844e-4 +4.350000000000001e0,1.708154604113795e-4,3.265218023979571e-4,-1.557063419865776e-4 +4.400000000000000e0,1.570738195222854e-2,1.578191918956779e-2,-7.453723733925541e-5 +4.450000000000000e0,3.128333547122161e-2,3.125449153850474e-2,2.884393271686964e-5 +4.500000000000000e0,4.606982833697840e-2,4.598155098922993e-2,8.827734774847357e-5 +4.550000000000000e0,5.928839320149019e-2,5.917879554031483e-2,1.095976611753605e-4 +4.600000000000001e0,7.025617461902996e-2,7.011813343809929e-2,1.380411809306648e-4 +4.650000000000000e0,7.834759559880523e-2,7.816915293860129e-2,1.784426602039479e-4 +4.700000000000000e0,8.293599103796272e-2,8.281759304920717e-2,1.183979887555420e-4 +4.750000000000000e0,8.378075091735306e-2,8.368420542837066e-2,9.654548898239967e-5 +4.800000000000001e0,8.074332010516154e-2,8.058963229390792e-2,1.536878112536194e-4 +4.850000000000001e0,7.380818147708089e-2,7.358342092383775e-2,2.247605532431363e-4 +4.900000000000000e0,6.313132959213819e-2,6.295556973109265e-2,1.757598610455380e-4 +4.950000000000000e0,4.937709470557543e-2,4.920365892816373e-2,1.734357774117040e-4 +5.000000000000000e0,3.313406150086646e-2,3.296768579203947e-2,1.663757088269865e-4 +5.050000000000001e0,1.509638461233187e-2,1.498984481746126e-2,1.065397948706182e-4 +5.100000000000001e0,-3.940298406278003e-3,-3.929514776377779e-3,-1.078362990022431e-5 +5.150000000000000e0,-2.303873633895637e-2,-2.295628888039202e-2,-8.244745856434560e-5 +5.200000000000000e0,-4.131448910104496e-2,-4.122508671583548e-2,-8.940238520948468e-5 +5.250000000000000e0,-5.794288791419869e-2,-5.786692630852265e-2,-7.596160567603649e-5 +5.300000000000001e0,-7.210043550652176e-2,-7.202556967489648e-2,-7.486583162527594e-5 +5.350000000000001e0,-8.298292421327627e-2,-8.291373033798419e-2,-6.919387529208398e-5 +5.400000000000000e0,-9.005282880846696e-2,-8.992350683799055e-2,-1.293219704764093e-4 +5.450000000000000e0,-9.288373785682220e-2,-9.268088631045045e-2,-2.028515463717573e-4 +5.500000000000000e0,-9.126446851840538e-2,-9.107908727781257e-2,-1.853812405928079e-4 +5.550000000000001e0,-8.541253225989441e-2,-8.523224567628562e-2,-1.802865836087880e-4 +5.600000000000001e0,-7.559400546510658e-2,-7.540638119559814e-2,-1.876242695084407e-4 +5.650000000000000e0,-6.217813289571146e-2,-6.200189369554369e-2,-1.762392001677729e-4 +5.700000000000000e0,-4.565476476010333e-2,-4.557316986790264e-2,-8.159489220068566e-5 +5.750000000000000e0,-2.693981985488051e-2,-2.687967771539055e-2,-6.014213948996733e-5 +5.800000000000001e0,-6.929623010048761e-3,-6.849405836761214e-3,-8.021717328754712e-5 +5.850000000000001e0,1.340022856928914e-2,1.348432009170464e-2,-8.409152241549769e-5 +5.900000000000000e0,3.301707185799752e-2,3.308903116410555e-2,-7.195930610803120e-5 +5.950000000000000e0,5.099550992436262e-2,5.102264616099141e-2,-2.713623662878306e-5 +6.000000000000000e0,6.648579764560521e-2,6.644019174355857e-2,4.560590204663595e-5 +6.050000000000001e0,7.872363632996758e-2,7.862235679434557e-2,1.012795356220147e-4 +6.100000000000001e0,8.705038804368062e-2,8.699505008224447e-2,5.533796143615544e-5 +6.150000000000000e0,9.112583571099857e-2,9.115787654823546e-2,-3.204083723688800e-5 +6.200000000000000e0,9.079222393950741e-2,9.091884418325794e-2,-1.266202437505276e-4 +6.250000000000000e0,8.610618093899636e-2,8.630565955985785e-2,-1.994786208614902e-4 +6.300000000000001e0,7.733386279046547e-2,7.756464886558304e-2,-2.307860751175617e-4 +6.350000000000001e0,6.493598321455432e-2,6.514820479733918e-2,-2.122215827848606e-4 +6.400000000000000e0,4.954356683952801e-2,4.969138238178368e-2,-1.478155422556734e-4 +6.450000000000000e0,3.192570572354201e-2,3.197887233777263e-2,-5.316661423062502e-5 +6.500000000000000e0,1.295097297332003e-2,1.290412019320335e-2,4.685278011667612e-5 +6.550000000000001e0,-6.524375195506374e-3,-6.577220900253045e-3,5.284570474667089e-5 +6.600000000000001e0,-2.549604552574507e-2,-2.549764026540373e-2,1.594739658661304e-6 +6.650000000000000e0,-4.292720476567800e-2,-4.292794882956833e-2,7.440638903344343e-7 +6.700000000000000e0,-5.799193348621687e-2,-5.802370193848817e-2,3.176845227130520e-5 +6.750000000000000e0,-6.999355048299137e-2,-7.006731498927628e-2,7.376450628490683e-5 +6.800000000000001e0,-7.839662335123905e-2,-7.850324998118982e-2,1.066266299507707e-4 +6.850000000000001e0,-8.285050972351120e-2,-8.296445633348552e-2,1.139466099743247e-4 +6.900000000000000e0,-8.320341867729769e-2,-8.328877256613433e-2,8.535388883663952e-5 +6.950000000000000e0,-7.950646723858283e-2,-7.952454115866209e-2,1.807392007925623e-5 +7.000000000000000e0,-7.200770927345873e-2,-7.192526911410060e-2,-8.244015935812699e-5 +7.050000000000001e0,-6.102663679501834e-2,-6.093374572850791e-2,-9.289106651042683e-5 +7.100000000000001e0,-4.715822447977084e-2,-4.715640700691572e-2,-1.817472855117352e-6 +7.150000000000000e0,-3.127057586350327e-2,-3.132942550937055e-2,5.884964586727603e-5 +7.200000000000000e0,-1.419245366789403e-2,-1.427907649474588e-2,8.662282685185409e-5 +7.250000000000000e0,3.206818632528505e-3,3.121734130525496e-3,8.508450200300907e-5 +7.300000000000001e0,2.006142877389405e-2,1.999857567972660e-2,6.285309416745322e-5 +7.350000000000001e0,3.555196943392013e-2,3.551988516577422e-2,3.208426814590992e-5 +7.400000000000000e0,4.894504125748482e-2,4.893837819426151e-2,6.663063223305565e-6 +7.450000000000000e0,5.962766676612984e-2,5.962740437407831e-2,2.623920515240630e-7 +7.500000000000000e0,6.713492074604013e-2,6.711047149618247e-2,2.444924985765817e-5 +7.550000000000001e0,7.112971277945987e-2,7.108254557408521e-2,4.716720537466246e-5 +7.600000000000001e0,7.144312975794082e-2,7.142219975837473e-2,2.092999956608554e-5 +7.650000000000000e0,6.817442473409439e-2,6.819433118481183e-2,-1.990645071743569e-5 +7.700000000000000e0,6.158192913197427e-2,6.164319123625330e-2,-6.126210427902928e-5 +7.750000000000000e0,5.208452476067007e-2,5.217621235581463e-2,-9.168759514455865e-5 +7.800000000000001e0,4.023619778008427e-2,4.033975560878329e-2,-1.035578286990232e-4 +7.850000000000001e0,2.669443072041677e-2,2.678820095319883e-2,-9.377023278206095e-5 +7.900000000000000e0,1.218420590847094e-2,1.224811874907342e-2,-6.391284060248623e-5 +7.950000000000000e0,-2.540431272377477e-3,-2.520517219241452e-3,-1.991405313602531e-5 +8.000000000000000e0,-1.673523012414278e-2,-1.676400091345857e-2,2.877078931579763e-5 +8.050000000000001e0,-2.975086787274454e-2,-2.977333293763550e-2,2.246506489095995e-5 +8.100000000000000e0,-4.092721027658127e-2,-4.091886099415020e-2,-8.349282431069360e-6 +8.150000000000000e0,-4.969916393622173e-2,-4.968110509181467e-2,-1.805884440705952e-5 +8.200000000000001e0,-5.568962549830195e-2,-5.567600701799864e-2,-1.361848030331098e-5 +8.250000000000000e0,-5.867490312493456e-2,-5.867189565488429e-2,-3.007470050268857e-6 +8.300000000000001e0,-5.859168608235413e-2,-5.859796531610711e-2,6.279233752987112e-6 +8.350000000000000e0,-5.553554327085353e-2,-5.554400703826384e-2,8.463767410309131e-6 +8.400000000000000e0,-4.975128011782830e-2,-4.975159818027985e-2,3.180624515569663e-7 +8.450000000000001e0,-4.161589559815660e-2,-4.159742424055457e-2,-1.847135760203039e-5 +8.500000000000000e0,-3.161524255798577e-2,-3.156982764134590e-2,-4.541491663986874e-5 +8.550000000000001e0,-2.028975834514858e-2,-2.023998357483600e-2,-4.977477031258004e-5 +8.600000000000000e0,-8.264233547429799e-3,-8.228727770454299e-3,-3.550577697549948e-5 +8.650000000000000e0,3.803164324225128e-3,3.827479727038068e-3,-2.431540281294014e-5 +8.700000000000001e0,1.529196788800869e-2,1.530936795006152e-2,-1.740006205282890e-5 +8.750000000000000e0,2.563125240698433e-2,2.564617866034529e-2,-1.492625336095912e-5 +8.800000000000001e0,3.432757995700614e-2,3.434356122040055e-2,-1.598126339440870e-5 +8.850000000000000e0,4.098802886232267e-2,4.100669307998268e-2,-1.866421766000270e-5 +8.900000000000000e0,4.533726590003823e-2,4.535758178295143e-2,-2.031588291320080e-5 +8.950000000000001e0,4.722796354829686e-2,4.724583343258998e-2,-1.786988429312159e-5 +9.000000000000000e0,4.664423487694891e-2,4.665252827378931e-2,-8.293396840400313e-6 +9.050000000000001e0,4.368960656318698e-2,4.368722123280012e-2,2.385330386850404e-6 +9.100000000000000e0,3.858732198377435e-2,3.857880239993067e-2,8.519583843680234e-6 +9.150000000000000e0,3.167624995499012e-2,3.166068225402761e-2,1.556770096251131e-5 +9.200000000000001e0,2.337453014424528e-2,2.335012603780156e-2,2.440410644372754e-5 +9.250000000000000e0,1.415811488075553e-2,1.412354756874768e-2,3.456731200784761e-5 +9.300000000000001e0,4.534027584348971e-3,4.489379393336292e-3,4.464819101267919e-5 +9.350000000000000e0,-4.987091073128055e-3,-5.039917047772023e-3,5.282597464396823e-5 +9.400000000000000e0,-1.391768453832066e-2,-1.397513594748538e-2,5.745140916472470e-5 +9.450000000000001e0,-2.181785393071981e-2,-2.187543016706310e-2,5.757623634328884e-5 +9.500000000000000e0,-2.831658749209725e-2,-2.836992789242949e-2,5.334040033224546e-5 +9.550000000000001e0,-3.312774104552564e-2,-3.317484174443213e-2,4.710069890648955e-5 +9.600000000000001e0,-3.606926281188422e-2,-3.610552971219381e-2,3.626690030958390e-5 +9.650000000000000e0,-3.705866643648986e-2,-3.708136689927710e-2,2.270046278723958e-5 +9.700000000000001e0,-3.611551324914904e-2,-3.612505751102309e-2,9.544261874050441e-6 +9.750000000000000e0,-3.335853167489415e-2,-3.335737150533307e-2,-1.160169561080504e-6 +9.800000000000001e0,-2.899587663527535e-2,-2.898714746713086e-2,-8.729168144486904e-6 +9.850000000000001e0,-2.331107485485715e-2,-2.329725107638915e-2,-1.382377846800148e-5 +9.900000000000000e0,-1.664554704040209e-2,-1.662736038323953e-2,-1.818665716255691e-5 +9.950000000000001e0,-9.378746196795551e-3,-9.354567131054040e-3,-2.417906574151037e-5 +1.000000000000000e1,-1.907039491318586e-3,-1.872848172190767e-3,-3.419131912781861e-5 +1.005000000000000e1,5.404235166710302e-3,5.427492164462626e-3,-2.325699775232361e-5 +1.010000000000000e1,1.218533646774508e-2,1.217902825553127e-2,6.308212213805564e-6 +1.015000000000000e1,1.809120019085708e-2,1.805524144004871e-2,3.595875080837641e-5 +1.020000000000000e1,2.284708094427988e-2,2.278621937645637e-2,6.086156782351276e-5 +1.025000000000000e1,2.624816217274957e-2,2.617062965873060e-2,7.753251401897837e-5 +1.030000000000000e1,2.816774770982349e-2,2.808372682602689e-2,8.402088379659903e-5 +1.035000000000000e1,2.856104774863318e-2,2.848111496202296e-2,7.993278661022271e-5 +1.040000000000000e1,2.746451802482653e-2,2.739821257867673e-2,6.630544614980374e-5 +1.045000000000000e1,2.499094833124693e-2,2.494559303993540e-2,4.535529131152738e-5 +1.050000000000000e1,2.132071490286164e-2,2.130058386675655e-2,2.013103610509076e-5 +1.055000000000000e1,1.668979972203823e-2,1.669569129211092e-2,-5.891570072687896e-6 +1.060000000000000e1,1.137532938804813e-2,1.140456359473908e-2,-2.923420669094165e-5 +1.065000000000000e1,5.679490265444759e-3,5.726311416106131e-3,-4.682115066137211e-5 +1.070000000000000e1,-8.726875503420002e-5,-3.093868396967467e-5,-5.633007106452535e-5 +1.075000000000000e1,-5.622830517286351e-3,-5.566371271701225e-3,-5.645924558512604e-5 +1.080000000000000e1,-1.064893045034463e-2,-1.060184066582380e-2,-4.708978452082693e-5 +1.085000000000000e1,-1.492482328374384e-2,-1.489549275332029e-2,-2.933053042354812e-5 +1.090000000000000e1,-1.825844293772490e-2,-1.825299994212069e-2,-5.442995604204581e-6 +1.095000000000000e1,-2.051456098861919e-2,-2.053590767384609e-2,2.134668522689107e-5 +1.100000000000000e1,-2.161962766968572e-2,-2.166676060250415e-2,4.713293281843542e-5 +1.105000000000000e1,-2.159559534864929e-2,-2.163085686820075e-2,3.526151955146606e-5 +1.110000000000000e1,-2.046443938993497e-2,-2.047465442990558e-2,1.021503997061454e-5 +1.115000000000000e1,-1.830885617145468e-2,-1.830105771378189e-2,-7.798457672784920e-6 +1.120000000000000e1,-1.527973434119426e-2,-1.526194409035614e-2,-1.779025083811954e-5 +1.125000000000000e1,-1.156827494099190e-2,-1.154841037692295e-2,-1.986456406894745e-5 +1.130000000000000e1,-7.394402668203151e-3,-7.379338145569930e-3,-1.506452263322095e-5 +1.135000000000000e1,-2.994083168393990e-3,-2.988938879825488e-3,-5.144288568501455e-6 +1.140000000000000e1,1.393738318987807e-3,1.386031097737146e-3,7.707221250661265e-6 +1.145000000000000e1,5.539867629122553e-3,5.518704446114999e-3,2.116318300755381e-5 +1.150000000000000e1,9.236596131998970e-3,9.203547913928561e-3,3.304821807040975e-5 +1.155000000000000e1,1.230785136774734e-2,1.226625721756981e-2,4.159415017753083e-5 +1.160000000000000e1,1.461728280938584e-2,1.457164282457137e-2,4.563998481447139e-5 +1.165000000000000e1,1.607393015181462e-2,1.602917070210778e-2,4.475944970683612e-5 +1.170000000000000e1,1.663526412877974e-2,1.659595801810001e-2,3.930611067973905e-5 +1.175000000000000e1,1.630753841299902e-2,1.627716503008925e-2,3.037338290977007e-5 +1.180000000000000e1,1.514353743089125e-2,1.512386329484178e-2,1.967413604946761e-5 +1.185000000000000e1,1.323794111962595e-2,1.322858963079862e-2,9.351488827333970e-6 +1.190000000000000e1,1.072064680072079e-2,1.071890850872551e-2,1.738291995279778e-6 +1.195000000000000e1,7.748484652273935e-3,7.749397380750424e-3,-9.127284764888152e-7 +1.200000000000000e1,4.495832394312762e-3,4.492535878338436e-3,3.296515974326487e-6 +1.205000000000000e1,1.139103392292570e-3,1.129009678268843e-3,1.009371402372673e-5 +1.210000000000000e1,-2.152714439122786e-3,-2.162096817035537e-3,9.382377912751060e-6 +1.215000000000000e1,-5.209025567594740e-3,-5.212481968576560e-3,3.456400981819568e-6 +1.220000000000000e1,-7.877793579754848e-3,-7.872854994341653e-3,-4.938585413194821e-6 +1.225000000000000e1,-1.003312274718069e-2,-1.001991949450199e-2,-1.320325267870591e-5 +1.230000000000000e1,-1.158096075180669e-2,-1.156175306398890e-2,-1.920768781778735e-5 +1.235000000000000e1,-1.246289461516993e-2,-1.244136833240152e-2,-2.152628276840506e-5 +1.240000000000000e1,-1.265790760643554e-2,-1.263834178303834e-2,-1.956582339720549e-5 +1.245000000000000e1,-1.218207909792797e-2,-1.216849891701549e-2,-1.358018091248206e-5 +1.250000000000000e1,-1.108632031638649e-2,-1.108174336415266e-2,-4.576952233832643e-6 +1.255000000000000e1,-9.452340830374956e-3,-9.458208599265975e-3,5.867768891018241e-6 +1.260000000000000e1,-7.387128250522685e-3,-7.402989761817498e-3,1.586151129481361e-5 +1.265000000000000e1,-5.016292790597563e-3,-5.039776205606521e-3,2.348341500895725e-5 +1.270000000000000e1,-2.476675988617283e-3,-2.503750219292607e-3,2.707423067532409e-5 +1.275000000000000e1,9.135275883202123e-5,6.585776105391020e-5,2.549499777811103e-5 +1.280000000000000e1,2.551487588066863e-3,2.533162767047225e-3,1.832482101963824e-5 +1.285000000000000e1,4.778563507462853e-3,4.772588782592042e-3,5.974724870810681e-6 +1.290000000000000e1,6.664760814444041e-3,6.675057528337165e-3,-1.029671389312335e-5 +1.295000000000000e1,8.124638535517937e-3,8.153108738198085e-3,-2.847020268014790e-5 +1.300000000000000e1,9.098773393316471e-3,9.144722221219244e-3,-4.594882790277290e-5 +1.305000000000000e1,9.573023736130859e-3,9.615685819962095e-3,-4.266208383123596e-5 +1.310000000000000e1,9.526684153379480e-3,9.560466761592517e-3,-3.378260821303679e-5 +1.315000000000000e1,8.974337933570173e-3,9.001610557677649e-3,-2.727262410747583e-5 +1.320000000000000e1,7.964629733618809e-3,7.987590027620914e-3,-2.296029400210460e-5 +1.325000000000000e1,6.568921351944213e-3,6.589308887028172e-3,-2.038753508395823e-5 +1.330000000000000e1,4.876591077805821e-3,4.895520112888521e-3,-1.892903508269976e-5 +1.335000000000000e1,2.989535759130863e-3,3.007443206001367e-3,-1.790744687050474e-5 +1.340000000000000e1,1.016203720257591e-3,1.032898863024424e-3,-1.669514276683324e-5 +1.345000000000000e1,-9.345000515235114e-4,-9.197045512599945e-4,-1.479550026351687e-5 +1.350000000000000e1,-2.759100880277500e-3,-2.747201441313184e-3,-1.189943896431553e-5 +1.355000000000000e1,-4.364921923760323e-3,-4.357006341400600e-3,-7.915582359723644e-6 +1.360000000000000e1,-5.674660713431775e-3,-5.671685938644051e-3,-2.974774787724635e-6 +1.365000000000000e1,-6.629956592174362e-3,-6.632544991951675e-3,2.588399777313233e-6 +1.370000000000000e1,-7.193794241917706e-3,-7.202067296267993e-3,8.273054350286906e-6 +1.375000000000000e1,-7.351657864052230e-3,-7.365121355367849e-3,1.346349131561928e-5 +1.380000000000000e1,-7.111421971584849e-3,-7.128911471144582e-3,1.748949955973373e-5 +1.385000000000000e1,-6.502034179882653e-3,-6.521724465611306e-3,1.969028572865270e-5 +1.390000000000000e1,-5.571109107509659e-3,-5.590586389117912e-3,1.947728160825359e-5 +1.395000000000000e1,-4.381607239977331e-3,-4.397998944792540e-3,1.639170481520895e-5 +1.400000000000000e1,-3.007815706148290e-3,-3.017969208148637e-3,1.015350200034770e-5 diff --git a/doc/plots/feff_vs_larch_data/04_clone_template_path_rspace.csv b/doc/plots/feff_vs_larch_data/04_clone_template_path_rspace.csv new file mode 100644 index 0000000..0037358 --- /dev/null +++ b/doc/plots/feff_vs_larch_data/04_clone_template_path_rspace.csv @@ -0,0 +1,327 @@ +r,model,larch,diff +0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771283e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313848e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.227184630308513e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.533980787885641e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.840776945462770e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.147573103039898e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.454369260617026e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.761165418194154e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771282e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.374757733348411e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.681553890925539e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.988350048502667e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.295146206079796e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.601942363656924e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.908738521234052e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.215534678811180e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.522330836388308e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.829126993965437e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.442719309119693e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.749515466696822e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.056311624273950e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.363107781851078e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.669903939428206e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.976700097005335e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.283496254582463e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.590292412159591e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.897088569736720e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313848e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.510680884890976e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.817477042468105e-1,2.546203145149475e-1,2.558747282920494e-1,-1.254413777101893e-3 +1.012427320004523e0,2.753724348576841e-1,2.773025376727473e-1,-1.930102815063228e-3 +1.043106935762236e0,2.710659195751594e-1,2.735683477047668e-1,-2.502428129607492e-3 +1.073786551519949e0,2.399684267309739e-1,2.428152699477845e-1,-2.846843216810585e-3 +1.104466167277662e0,1.842789420687291e-1,1.870736439246672e-1,-2.794701855938109e-3 +1.135145783035375e0,1.142395046169686e-1,1.160528621453687e-1,-1.813357528400061e-3 +1.165825398793087e0,7.950281447883585e-2,7.754852264437105e-2,1.954291834464800e-3 +1.196505014550800e0,1.466486759838940e-1,1.435394888017387e-1,3.109187182155304e-3 +1.227184630308513e0,2.422436508506543e-1,2.398246866727718e-1,2.418964177882510e-3 +1.257864246066226e0,3.300682084895740e-1,3.285448278308771e-1,1.523380658696893e-3 +1.288543861823939e0,3.958183098329409e-1,3.952356005942735e-1,5.827092386673227e-4 +1.319223477581652e0,4.300376510725755e-1,4.303765632963322e-1,-3.389122237567044e-4 +1.349903093339364e0,4.269003312840998e-1,4.281042025947471e-1,-1.203871310647309e-3 +1.380582709097077e0,3.848640041108425e-1,3.868824236805590e-1,-2.018419569716490e-3 +1.411262324854790e0,3.083653777237352e-1,3.112457492914950e-1,-2.880371567759832e-3 +1.441941940612503e0,2.146486763618893e-1,2.186900221436502e-1,-4.041345781760908e-3 +1.472621556370216e0,1.666041325825462e-1,1.713715343640317e-1,-4.767401781485520e-3 +1.503301172127929e0,2.491666009330652e-1,2.522984049733616e-1,-3.131804040296393e-3 +1.533980787885641e0,3.984874247992353e-1,4.007499536517847e-1,-2.262528852549406e-3 +1.564660403643354e0,5.580611337316297e-1,5.602156878439984e-1,-2.154554112368756e-3 +1.595340019401067e0,7.057207146997573e-1,7.080747496897777e-1,-2.354034990020404e-3 +1.626019635158780e0,8.282600631355436e-1,8.309103089696968e-1,-2.650245834153186e-3 +1.656699250916493e0,9.162776160311931e-1,9.192091106321986e-1,-2.931494601005502e-3 +1.687378866674206e0,9.633313560527729e-1,9.664718537914971e-1,-3.140497738724268e-3 +1.718058482431918e0,9.663738905335385e-1,9.696463180008973e-1,-3.272427467358785e-3 +1.748738098189631e0,9.279460784947391e-1,9.313364995536739e-1,-3.390421058934834e-3 +1.779417713947344e0,8.625421043749649e-1,8.661831888946288e-1,-3.641084519663829e-3 +1.810097329705057e0,8.110273542230583e-1,8.152192139578609e-1,-4.191859734802628e-3 +1.840776945462770e0,8.536525765633464e-1,8.585669246158346e-1,-4.914348052488249e-3 +1.871456561220483e0,1.067804855685875e0,1.073147035846165e0,-5.342180160289534e-3 +1.902136176978195e0,1.458889149342183e0,1.464292537682443e0,-5.403388340259552e-3 +1.932815792735908e0,1.990340640185031e0,1.995552166800125e0,-5.211526615094275e-3 +1.963495408493621e0,2.626748917733633e0,2.631504866577784e0,-4.755948844150648e-3 +1.994175024251334e0,3.337460939865471e0,3.341457869106104e0,-3.996929240632330e-3 +2.024854640009047e0,4.091867683335625e0,4.094800195811356e0,-2.932512475730675e-3 +2.055534255766760e0,4.857205988854597e0,4.858817085637143e0,-1.611096782546007e-3 +2.086213871524472e0,5.598669461181842e0,5.598794766069281e0,-1.253048874385598e-4 +2.116893487282185e0,6.280822155883628e0,6.279420966997848e0,1.401188885780336e-3 +2.147573103039898e0,6.869665429161137e0,6.866835054406098e0,2.830374755038889e-3 +2.178252718797611e0,7.334924148440357e0,7.330896104199549e0,4.028044240808271e-3 +2.208932334555323e0,7.652223251191698e0,7.647342037861583e0,4.881213330114598e-3 +2.239611950313036e0,7.804893587202047e0,7.799580915633002e0,5.312671569044802e-3 +2.270291566070749e0,7.785209881133103e0,7.779919120036420e0,5.290761096683028e-3 +2.300971181828462e0,7.594933446364883e0,7.590100373557053e0,4.833072807829630e-3 +2.331650797586175e0,7.245107644921293e0,7.241104068945938e0,4.003575975355389e-3 +2.362330413343888e0,6.755130228634944e0,6.752226580629729e0,2.903648005214698e-3 +2.393010029101601e0,6.151197203472901e0,6.149538810225253e0,1.658393247647716e-3 +2.423689644859313e0,5.464271388218758e0,5.463871001281782e0,4.003869369757496e-4 +2.454369260617026e0,4.727770268701335e0,4.728516833078941e0,-7.465643776054520e-4 +2.485048876374739e0,3.975189047840169e0,3.976869996679484e0,-1.680948839315466e-3 +2.515728492132452e0,3.237875800909347e0,3.240207673360869e0,-2.331872451521999e-3 +2.546408107890165e0,2.543160324118626e0,2.545820338318451e0,-2.660014199825422e-3 +2.577087723647877e0,1.913018471756848e0,1.915667395558472e0,-2.648923801624292e-3 +2.607767339405590e0,1.363464597894800e0,1.365746689105934e0,-2.282091211133874e-3 +2.638446955163303e0,9.050373637189095e-1,9.065281295332590e-1,-1.490765814349482e-3 +2.669126570921016e0,5.457090620129530e-1,5.457278491961594e-1,-1.878718320635908e-5 +2.699806186678729e0,3.023906071866486e-1,2.995637851445563e-1,2.826822042092281e-3 +2.730485802436442e0,2.227060937535121e-1,2.168737554915928e-1,5.832338261919257e-3 +2.761165418194155e0,2.736872138780236e-1,2.686193902273983e-1,5.067823650625358e-3 +2.791845033951867e0,3.366369968819434e-1,3.329778384071310e-1,3.659158474812352e-3 +2.822524649709580e0,3.753305402417017e-1,3.728526645956100e-1,2.477875646091754e-3 +2.853204265467293e0,3.888889839518445e-1,3.874305587762821e-1,1.458425175562439e-3 +2.883883881225006e0,3.828854471353992e-1,3.823077963355339e-1,5.776507998653257e-4 +2.914563496982719e0,3.634906344773108e-1,3.636196885703041e-1,-1.290540929932971e-4 +2.945243112740431e0,3.364184483267424e-1,3.370278655756987e-1,-6.094172489563010e-4 +2.975922728498144e0,1.150928643638150e-33,1.154059954646660e-33,-3.131311008509900e-36 +3.006602344255857e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.037281960013570e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771283e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.098641191528996e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.129320807286708e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.160000423044421e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.190680038802134e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.221359654559847e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.252039270317560e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.282718886075272e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.313398501832985e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.344078117590698e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.374757733348411e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.405437349106124e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.436116964863837e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.466796580621549e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.497476196379262e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.528155812136975e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.558835427894688e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.589515043652401e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.620194659410114e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.650874275167826e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.681553890925539e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.712233506683252e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.742913122440965e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.773592738198678e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.804272353956391e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.834951969714103e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.865631585471816e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.896311201229529e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.926990816987242e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.957670432744955e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.988350048502667e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.019029664260381e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.049709280018093e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.080388895775806e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.111068511533519e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.141748127291232e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.172427743048944e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.203107358806657e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.233786974564370e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.264466590322083e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.295146206079796e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.325825821837508e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.356505437595222e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.387185053352934e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.417864669110647e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.448544284868360e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.479223900626073e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.509903516383786e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.540583132141498e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.571262747899211e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.601942363656924e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.632621979414637e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.663301595172349e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.693981210930063e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.724660826687775e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.755340442445489e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.786020058203201e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.816699673960914e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.847379289718627e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.878058905476339e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.908738521234052e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.939418136991765e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.970097752749478e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.000777368507190e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.031456984264904e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.062136600022616e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.092816215780330e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.123495831538042e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.154175447295755e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.184855063053468e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.215534678811180e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.246214294568893e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.276893910326606e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.307573526084319e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.338253141842032e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.368932757599745e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.399612373357457e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.430291989115171e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.460971604872883e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.491651220630596e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.522330836388309e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.553010452146022e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.583690067903735e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.614369683661447e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.645049299419160e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.675728915176873e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.706408530934586e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.737088146692298e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.767767762450012e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.798447378207724e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.829126993965438e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.859806609723150e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.890486225480863e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.921165841238576e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.951845456996288e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.982525072754001e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.013204688511714e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.043884304269427e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.074563920027139e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.105243535784853e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.166602767300279e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.197282383057991e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.227961998815704e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.258641614573417e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.289321230331129e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.320000846088842e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.350680461846555e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.381360077604268e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.412039693361981e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.442719309119694e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.473398924877406e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.504078540635120e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.534758156392832e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.565437772150545e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.596117387908258e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.626797003665970e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.657476619423684e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.688156235181396e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.718835850939109e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.749515466696822e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.780195082454535e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.810874698212247e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.841554313969961e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.872233929727673e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.902913545485386e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.933593161243099e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.964272777000811e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.994952392758525e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.025632008516237e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.056311624273950e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.086991240031663e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.117670855789376e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.148350471547088e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.179030087304802e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.209709703062514e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.240389318820228e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.271068934577940e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.301748550335653e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.332428166093366e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.363107781851078e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.393787397608791e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.424467013366504e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.455146629124217e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.485826244881930e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.516505860639643e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.547185476397355e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.577865092155069e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.608544707912781e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.639224323670494e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.669903939428207e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.700583555185919e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.731263170943633e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.761942786701345e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.792622402459058e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.823302018216771e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.853981633974484e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.884661249732196e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.915340865489910e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.946020481247622e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.976700097005335e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.007379712763047e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.038059328520761e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.068738944278474e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.099418560036186e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.130098175793899e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.160777791551611e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.191457407309326e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.222137023067038e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.252816638824751e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.283496254582463e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.314175870340176e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.344855486097888e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.375535101855602e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.406214717613315e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.436894333371027e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.467573949128740e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.498253564886452e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.528933180644167e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.559612796401879e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.590292412159592e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.620972027917304e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.651651643675017e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.682331259432731e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.713010875190443e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.743690490948156e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.774370106705868e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.805049722463581e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.835729338221293e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.866408953979008e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.897088569736720e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.927768185494433e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.958447801252145e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.989127417009858e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.019807032767572e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.050486648525284e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.081166264282997e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.111845880040709e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.142525495798422e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.173205111556134e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313849e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.234564343071561e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.265243958829274e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.295923574586986e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.326603190344699e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.357282806102413e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.387962421860125e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.418642037617838e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.449321653375550e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.480001269133263e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.510680884890977e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.541360500648690e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.572040116406402e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.602719732164115e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.633399347921827e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.664078963679540e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.694758579437254e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.725438195194966e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.756117810952679e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.786797426710391e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.817477042468104e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.848156658225818e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.878836273983531e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.909515889741243e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.940195505498956e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.970875121256668e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 diff --git a/doc/plots/feff_vs_larch_data/04_clone_template_path_rspace_contrib.csv b/doc/plots/feff_vs_larch_data/04_clone_template_path_rspace_contrib.csv new file mode 100644 index 0000000..7f95c04 --- /dev/null +++ b/doc/plots/feff_vs_larch_data/04_clone_template_path_rspace_contrib.csv @@ -0,0 +1,327 @@ +r,total_model,total_larch,diff,feffcu01dat_00 +0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771283e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313848e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.227184630308513e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.533980787885641e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.840776945462770e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.147573103039898e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.454369260617026e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.761165418194154e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771282e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.374757733348411e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.681553890925539e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.988350048502667e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.295146206079796e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.601942363656924e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.908738521234052e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.215534678811180e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.522330836388308e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.829126993965437e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.442719309119693e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.749515466696822e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.056311624273950e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.363107781851078e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.669903939428206e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.976700097005335e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.283496254582463e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.590292412159591e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.897088569736720e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313848e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.510680884890976e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.817477042468105e-1,2.546203145149475e-1,2.558747282920494e-1,-1.254413777101893e-3,2.546203145149475e-1 +1.012427320004523e0,2.753724348576841e-1,2.773025376727473e-1,-1.930102815063228e-3,2.753724348576841e-1 +1.043106935762236e0,2.710659195751594e-1,2.735683477047668e-1,-2.502428129607492e-3,2.710659195751594e-1 +1.073786551519949e0,2.399684267309739e-1,2.428152699477845e-1,-2.846843216810585e-3,2.399684267309739e-1 +1.104466167277662e0,1.842789420687291e-1,1.870736439246672e-1,-2.794701855938109e-3,1.842789420687291e-1 +1.135145783035375e0,1.142395046169686e-1,1.160528621453687e-1,-1.813357528400061e-3,1.142395046169686e-1 +1.165825398793087e0,7.950281447883585e-2,7.754852264437105e-2,1.954291834464800e-3,7.950281447883585e-2 +1.196505014550800e0,1.466486759838940e-1,1.435394888017387e-1,3.109187182155304e-3,1.466486759838940e-1 +1.227184630308513e0,2.422436508506543e-1,2.398246866727718e-1,2.418964177882510e-3,2.422436508506543e-1 +1.257864246066226e0,3.300682084895740e-1,3.285448278308771e-1,1.523380658696893e-3,3.300682084895740e-1 +1.288543861823939e0,3.958183098329409e-1,3.952356005942735e-1,5.827092386673227e-4,3.958183098329409e-1 +1.319223477581652e0,4.300376510725755e-1,4.303765632963322e-1,-3.389122237567044e-4,4.300376510725755e-1 +1.349903093339364e0,4.269003312840998e-1,4.281042025947471e-1,-1.203871310647309e-3,4.269003312840998e-1 +1.380582709097077e0,3.848640041108425e-1,3.868824236805590e-1,-2.018419569716490e-3,3.848640041108425e-1 +1.411262324854790e0,3.083653777237352e-1,3.112457492914950e-1,-2.880371567759832e-3,3.083653777237352e-1 +1.441941940612503e0,2.146486763618893e-1,2.186900221436502e-1,-4.041345781760908e-3,2.146486763618893e-1 +1.472621556370216e0,1.666041325825462e-1,1.713715343640317e-1,-4.767401781485520e-3,1.666041325825462e-1 +1.503301172127929e0,2.491666009330652e-1,2.522984049733616e-1,-3.131804040296393e-3,2.491666009330652e-1 +1.533980787885641e0,3.984874247992353e-1,4.007499536517847e-1,-2.262528852549406e-3,3.984874247992353e-1 +1.564660403643354e0,5.580611337316297e-1,5.602156878439984e-1,-2.154554112368756e-3,5.580611337316297e-1 +1.595340019401067e0,7.057207146997573e-1,7.080747496897777e-1,-2.354034990020404e-3,7.057207146997573e-1 +1.626019635158780e0,8.282600631355436e-1,8.309103089696968e-1,-2.650245834153186e-3,8.282600631355436e-1 +1.656699250916493e0,9.162776160311931e-1,9.192091106321986e-1,-2.931494601005502e-3,9.162776160311931e-1 +1.687378866674206e0,9.633313560527729e-1,9.664718537914971e-1,-3.140497738724268e-3,9.633313560527729e-1 +1.718058482431918e0,9.663738905335385e-1,9.696463180008973e-1,-3.272427467358785e-3,9.663738905335385e-1 +1.748738098189631e0,9.279460784947391e-1,9.313364995536739e-1,-3.390421058934834e-3,9.279460784947391e-1 +1.779417713947344e0,8.625421043749649e-1,8.661831888946288e-1,-3.641084519663829e-3,8.625421043749649e-1 +1.810097329705057e0,8.110273542230583e-1,8.152192139578609e-1,-4.191859734802628e-3,8.110273542230583e-1 +1.840776945462770e0,8.536525765633464e-1,8.585669246158346e-1,-4.914348052488249e-3,8.536525765633464e-1 +1.871456561220483e0,1.067804855685875e0,1.073147035846165e0,-5.342180160289534e-3,1.067804855685875e0 +1.902136176978195e0,1.458889149342183e0,1.464292537682443e0,-5.403388340259552e-3,1.458889149342183e0 +1.932815792735908e0,1.990340640185031e0,1.995552166800125e0,-5.211526615094275e-3,1.990340640185031e0 +1.963495408493621e0,2.626748917733633e0,2.631504866577784e0,-4.755948844150648e-3,2.626748917733633e0 +1.994175024251334e0,3.337460939865471e0,3.341457869106104e0,-3.996929240632330e-3,3.337460939865471e0 +2.024854640009047e0,4.091867683335625e0,4.094800195811356e0,-2.932512475730675e-3,4.091867683335625e0 +2.055534255766760e0,4.857205988854597e0,4.858817085637143e0,-1.611096782546007e-3,4.857205988854597e0 +2.086213871524472e0,5.598669461181842e0,5.598794766069281e0,-1.253048874385598e-4,5.598669461181842e0 +2.116893487282185e0,6.280822155883628e0,6.279420966997848e0,1.401188885780336e-3,6.280822155883628e0 +2.147573103039898e0,6.869665429161137e0,6.866835054406098e0,2.830374755038889e-3,6.869665429161137e0 +2.178252718797611e0,7.334924148440357e0,7.330896104199549e0,4.028044240808271e-3,7.334924148440357e0 +2.208932334555323e0,7.652223251191698e0,7.647342037861583e0,4.881213330114598e-3,7.652223251191698e0 +2.239611950313036e0,7.804893587202047e0,7.799580915633002e0,5.312671569044802e-3,7.804893587202047e0 +2.270291566070749e0,7.785209881133103e0,7.779919120036420e0,5.290761096683028e-3,7.785209881133103e0 +2.300971181828462e0,7.594933446364883e0,7.590100373557053e0,4.833072807829630e-3,7.594933446364883e0 +2.331650797586175e0,7.245107644921293e0,7.241104068945938e0,4.003575975355389e-3,7.245107644921293e0 +2.362330413343888e0,6.755130228634944e0,6.752226580629729e0,2.903648005214698e-3,6.755130228634944e0 +2.393010029101601e0,6.151197203472901e0,6.149538810225253e0,1.658393247647716e-3,6.151197203472901e0 +2.423689644859313e0,5.464271388218758e0,5.463871001281782e0,4.003869369757496e-4,5.464271388218758e0 +2.454369260617026e0,4.727770268701335e0,4.728516833078941e0,-7.465643776054520e-4,4.727770268701335e0 +2.485048876374739e0,3.975189047840169e0,3.976869996679484e0,-1.680948839315466e-3,3.975189047840169e0 +2.515728492132452e0,3.237875800909347e0,3.240207673360869e0,-2.331872451521999e-3,3.237875800909347e0 +2.546408107890165e0,2.543160324118626e0,2.545820338318451e0,-2.660014199825422e-3,2.543160324118626e0 +2.577087723647877e0,1.913018471756848e0,1.915667395558472e0,-2.648923801624292e-3,1.913018471756848e0 +2.607767339405590e0,1.363464597894800e0,1.365746689105934e0,-2.282091211133874e-3,1.363464597894800e0 +2.638446955163303e0,9.050373637189095e-1,9.065281295332590e-1,-1.490765814349482e-3,9.050373637189095e-1 +2.669126570921016e0,5.457090620129530e-1,5.457278491961594e-1,-1.878718320635908e-5,5.457090620129530e-1 +2.699806186678729e0,3.023906071866486e-1,2.995637851445563e-1,2.826822042092281e-3,3.023906071866486e-1 +2.730485802436442e0,2.227060937535121e-1,2.168737554915928e-1,5.832338261919257e-3,2.227060937535121e-1 +2.761165418194155e0,2.736872138780236e-1,2.686193902273983e-1,5.067823650625358e-3,2.736872138780236e-1 +2.791845033951867e0,3.366369968819434e-1,3.329778384071310e-1,3.659158474812352e-3,3.366369968819434e-1 +2.822524649709580e0,3.753305402417017e-1,3.728526645956100e-1,2.477875646091754e-3,3.753305402417017e-1 +2.853204265467293e0,3.888889839518445e-1,3.874305587762821e-1,1.458425175562439e-3,3.888889839518445e-1 +2.883883881225006e0,3.828854471353992e-1,3.823077963355339e-1,5.776507998653257e-4,3.828854471353992e-1 +2.914563496982719e0,3.634906344773108e-1,3.636196885703041e-1,-1.290540929932971e-4,3.634906344773108e-1 +2.945243112740431e0,3.364184483267424e-1,3.370278655756987e-1,-6.094172489563010e-4,3.364184483267424e-1 +2.975922728498144e0,1.150928643638150e-33,1.154059954646660e-33,-3.131311008509900e-36,1.150928643638150e-33 +3.006602344255857e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.037281960013570e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771283e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.098641191528996e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.129320807286708e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.160000423044421e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.190680038802134e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.221359654559847e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.252039270317560e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.282718886075272e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.313398501832985e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.344078117590698e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.374757733348411e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.405437349106124e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.436116964863837e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.466796580621549e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.497476196379262e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.528155812136975e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.558835427894688e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.589515043652401e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.620194659410114e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.650874275167826e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.681553890925539e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.712233506683252e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.742913122440965e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.773592738198678e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.804272353956391e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.834951969714103e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.865631585471816e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.896311201229529e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.926990816987242e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.957670432744955e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.988350048502667e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.019029664260381e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.049709280018093e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.080388895775806e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.111068511533519e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.141748127291232e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.172427743048944e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.203107358806657e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.233786974564370e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.264466590322083e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.295146206079796e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.325825821837508e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.356505437595222e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.387185053352934e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.417864669110647e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.448544284868360e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.479223900626073e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.509903516383786e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.540583132141498e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.571262747899211e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.601942363656924e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.632621979414637e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.663301595172349e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.693981210930063e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.724660826687775e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.755340442445489e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.786020058203201e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.816699673960914e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.847379289718627e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.878058905476339e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.908738521234052e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.939418136991765e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.970097752749478e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.000777368507190e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.031456984264904e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.062136600022616e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.092816215780330e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.123495831538042e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.154175447295755e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.184855063053468e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.215534678811180e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.246214294568893e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.276893910326606e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.307573526084319e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.338253141842032e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.368932757599745e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.399612373357457e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.430291989115171e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.460971604872883e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.491651220630596e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.522330836388309e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.553010452146022e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.583690067903735e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.614369683661447e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.645049299419160e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.675728915176873e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.706408530934586e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.737088146692298e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.767767762450012e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.798447378207724e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.829126993965438e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.859806609723150e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.890486225480863e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.921165841238576e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.951845456996288e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.982525072754001e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.013204688511714e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.043884304269427e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.074563920027139e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.105243535784853e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.166602767300279e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.197282383057991e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.227961998815704e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.258641614573417e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.289321230331129e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.320000846088842e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.350680461846555e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.381360077604268e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.412039693361981e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.442719309119694e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.473398924877406e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.504078540635120e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.534758156392832e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.565437772150545e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.596117387908258e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.626797003665970e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.657476619423684e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.688156235181396e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.718835850939109e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.749515466696822e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.780195082454535e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.810874698212247e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.841554313969961e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.872233929727673e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.902913545485386e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.933593161243099e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.964272777000811e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.994952392758525e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.025632008516237e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.056311624273950e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.086991240031663e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.117670855789376e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.148350471547088e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.179030087304802e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.209709703062514e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.240389318820228e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.271068934577940e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.301748550335653e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.332428166093366e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.363107781851078e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.393787397608791e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.424467013366504e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.455146629124217e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.485826244881930e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.516505860639643e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.547185476397355e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.577865092155069e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.608544707912781e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.639224323670494e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.669903939428207e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.700583555185919e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.731263170943633e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.761942786701345e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.792622402459058e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.823302018216771e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.853981633974484e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.884661249732196e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.915340865489910e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.946020481247622e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.976700097005335e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.007379712763047e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.038059328520761e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.068738944278474e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.099418560036186e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.130098175793899e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.160777791551611e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.191457407309326e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.222137023067038e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.252816638824751e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.283496254582463e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.314175870340176e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.344855486097888e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.375535101855602e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.406214717613315e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.436894333371027e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.467573949128740e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.498253564886452e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.528933180644167e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.559612796401879e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.590292412159592e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.620972027917304e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.651651643675017e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.682331259432731e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.713010875190443e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.743690490948156e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.774370106705868e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.805049722463581e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.835729338221293e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.866408953979008e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.897088569736720e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.927768185494433e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.958447801252145e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.989127417009858e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.019807032767572e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.050486648525284e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.081166264282997e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.111845880040709e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.142525495798422e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.173205111556134e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313849e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.234564343071561e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.265243958829274e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.295923574586986e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.326603190344699e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.357282806102413e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.387962421860125e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.418642037617838e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.449321653375550e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.480001269133263e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.510680884890977e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.541360500648690e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.572040116406402e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.602719732164115e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.633399347921827e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.664078963679540e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.694758579437254e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.725438195194966e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.756117810952679e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.786797426710391e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.817477042468104e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.848156658225818e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.878836273983531e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.909515889741243e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.940195505498956e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.970875121256668e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 diff --git a/doc/plots/feff_vs_larch_data/05_clone_template_ff2chi.csv b/doc/plots/feff_vs_larch_data/05_clone_template_ff2chi.csv new file mode 100644 index 0000000..faf4f64 --- /dev/null +++ b/doc/plots/feff_vs_larch_data/05_clone_template_ff2chi.csv @@ -0,0 +1,281 @@ +k,model,larch,diff +5.000000000000000e-2,0.000000000000000e0,-3.004169364982455e-1,3.004169364982455e-1 +1.000000000000000e-1,0.000000000000000e0,-3.028599019623773e-1,3.028599019623773e-1 +1.500000000000000e-1,0.000000000000000e0,-3.053028674265091e-1,3.053028674265091e-1 +2.000000000000000e-1,0.000000000000000e0,-3.086716147668306e-1,3.086716147668306e-1 +2.500000000000000e-1,0.000000000000000e0,-3.129124878200045e-1,3.129124878200045e-1 +3.000000000000000e-1,0.000000000000000e0,-3.179532062114368e-1,3.179532062114368e-1 +3.500000000000000e-1,0.000000000000000e0,-3.237002129304355e-1,3.237002129304355e-1 +4.000000000000000e-1,0.000000000000000e0,-3.300350931702580e-1,3.300350931702580e-1 +4.500000000000000e-1,0.000000000000000e0,-3.368094875634737e-1,3.368094875634737e-1 +5.000000000000000e-1,0.000000000000000e0,-3.438366516251072e-1,3.438366516251072e-1 +5.500000000000000e-1,0.000000000000000e0,-3.508707890133191e-1,3.508707890133191e-1 +6.000000000000001e-1,0.000000000000000e0,-3.574452979919543e-1,3.574452979919543e-1 +6.500000000000000e-1,-3.523174930975022e-1,-3.501577306932779e-1,-2.159762404224219e-3 +7.000000000000001e-1,-3.426913910382841e-1,-3.405942413177491e-1,-2.097149720534930e-3 +7.500000000000000e-1,-3.321288078791633e-1,-3.300357874890825e-1,-2.093020390080802e-3 +8.000000000000000e-1,-3.205578100829343e-1,-3.183303142416022e-1,-2.227495841332083e-3 +8.500000000000001e-1,-3.077196476335505e-1,-3.053143758861092e-1,-2.405271747441262e-3 +9.000000000000000e-1,-2.925367362671389e-1,-2.908142127027583e-1,-1.722523564380574e-3 +9.500000000000001e-1,-2.762021936793450e-1,-2.746697006743047e-1,-1.532493005040270e-3 +1.000000000000000e0,-2.583705085176175e-1,-2.566904091810707e-1,-1.680099336546836e-3 +1.050000000000000e0,-2.376030033086623e-1,-2.366915795844709e-1,-9.114237241913681e-4 +1.100000000000000e0,-2.154663255101087e-1,-2.146150108471137e-1,-8.513146629950674e-4 +1.150000000000000e0,-1.908389421422844e-1,-1.903978999284350e-1,-4.410422138493852e-4 +1.200000000000000e0,-1.639641168586428e-1,-1.639657785887687e-1,1.661730125918082e-6 +1.250000000000000e0,-1.355508689836914e-1,-1.354458407271037e-1,-1.050282565877025e-4 +1.300000000000000e0,-1.044795325323050e-1,-1.050901753780835e-1,6.106428457785112e-4 +1.350000000000000e0,-7.279942429658820e-2,-7.321869693233499e-2,4.192726357467869e-4 +1.400000000000000e0,-3.921386285805459e-2,-4.024892562746904e-2,1.035062769414445e-3 +1.450000000000000e0,-5.678315225520404e-3,-6.700430123979782e-3,1.022114898459377e-3 +1.500000000000000e0,2.808321888030793e-2,2.680692382766853e-2,1.276295052639403e-3 +1.550000000000000e0,6.090933208024793e-2,5.961777704622420e-2,1.291555034023728e-3 +1.600000000000000e0,9.211557743199089e-2,9.087616707522274e-2,1.239410356768153e-3 +1.650000000000000e0,1.208056843233354e-1,1.195655016592855e-1,1.240182664049932e-3 +1.700000000000000e0,1.459264013205887e-1,1.448409228968288e-1,1.085478423759972e-3 +1.750000000000000e0,1.670183060977718e-1,1.659637995759865e-1,1.054506521785292e-3 +1.800000000000000e0,1.830987078574464e-1,1.822495368952257e-1,8.491709622207300e-4 +1.850000000000000e0,1.937216863534724e-1,1.931074963665654e-1,6.141899869070988e-4 +1.900000000000000e0,1.984880167109840e-1,1.979268769105310e-1,5.611398004529422e-4 +1.950000000000000e0,1.965246740235040e-1,1.963472264424164e-1,1.774475810875920e-4 +2.000000000000000e0,1.887100052415502e-1,1.884735806610938e-1,2.364245804563347e-4 +2.050000000000000e0,1.745704065795553e-1,1.746564628031881e-1,-8.605622363277998e-5 +2.100000000000000e0,1.552561542835773e-1,1.554951523414868e-1,-2.389980579095008e-4 +2.150000000000000e0,1.302021674622118e-1,1.316825343937293e-1,-1.480366931517541e-3 +2.200000000000000e0,1.023365098715386e-1,1.040714544493425e-1,-1.734944577803904e-3 +2.250000000000000e0,7.303392593056107e-2,7.400141872601719e-2,-9.674927954561180e-4 +2.300000000000000e0,4.305280393452467e-2,4.302716422678934e-2,2.563970773532265e-5 +2.350000000000000e0,1.351500459899473e-2,1.309155149630827e-2,4.234531026864555e-4 +2.400000000000000e0,-1.250011036871016e-2,-1.310367525509092e-2,6.035648863807596e-4 +2.450000000000000e0,-3.290390532982276e-2,-3.302927308564903e-2,1.253677558262778e-4 +2.500000000000000e0,-4.735376800463570e-2,-4.640763667407481e-2,-9.461313305608940e-4 +2.550000000000000e0,-5.851912751425480e-2,-5.581488933794546e-2,-2.704238176309333e-3 +2.600000000000000e0,-6.578008221479126e-2,-6.316030171637775e-2,-2.619780498413507e-3 +2.650000000000000e0,-6.922943690873228e-2,-6.841524811782886e-2,-8.141887909034196e-4 +2.700000000000000e0,-6.971340830033083e-2,-7.020515977365513e-2,4.917514733242950e-4 +2.750000000000000e0,-6.710820133979953e-2,-6.792518666129713e-2,8.169853214975986e-4 +2.800000000000000e0,-6.156948369775896e-2,-6.218768247809864e-2,6.181987803396752e-4 +2.850000000000000e0,-5.380854918798672e-2,-5.391038856201589e-2,1.018393740291682e-4 +2.900000000000000e0,-4.408146748569393e-2,-4.402784078806626e-2,-5.362669762767197e-5 +2.950000000000000e0,-3.275562696930048e-2,-3.306749999586004e-2,3.118730265595573e-4 +3.000000000000000e0,-2.090255892147178e-2,-2.139550839460681e-2,4.929494731350306e-4 +3.050000000000000e0,-9.436937233394711e-3,-9.494087244318345e-3,5.715001092363413e-5 +3.100000000000000e0,2.365857211130369e-3,1.986307935410877e-3,3.795492757194922e-4 +3.150000000000000e0,1.302744832415575e-2,1.223227768008341e-2,7.951706440723384e-4 +3.200000000000000e0,2.138714961959674e-2,2.061319465981407e-2,7.739549597826703e-4 +3.250000000000000e0,2.693355373914871e-2,2.682767743475605e-2,1.058763043926582e-4 +3.300000000000000e0,3.151855376255715e-2,3.080642829899852e-2,7.121254635586369e-4 +3.350000000000000e0,3.353025412445557e-2,3.240420343293558e-2,1.126050691519984e-3 +3.400000000000000e0,3.238564099431517e-2,3.145052796512837e-2,9.351130291868001e-4 +3.450000000000000e0,2.810910682243808e-2,2.793031572819431e-2,1.787910942437701e-4 +3.500000000000000e0,2.286086179655019e-2,2.208217948402324e-2,7.786823125269481e-4 +3.550000000000000e0,1.533460920846680e-2,1.430805893604275e-2,1.026550272424055e-3 +3.600000000000000e0,5.837712265447766e-3,5.071568423474790e-3,7.661438419729761e-4 +3.650000000000000e0,-4.977537390997671e-3,-5.114776248795718e-3,1.372388577980475e-4 +3.700000000000000e0,-1.531449090783921e-2,-1.569654914697634e-2,3.820582391371296e-4 +3.750000000000000e0,-2.572410968980578e-2,-2.607612265720093e-2,3.520129673951454e-4 +3.800000000000000e0,-3.551169752084724e-2,-3.566079301176169e-2,1.490954909144498e-4 +3.850000000000000e0,-4.397133267416509e-2,-4.390194528857828e-2,-6.938738558681656e-5 +3.900000000000000e0,-5.037615737669032e-2,-5.031916717402932e-2,-5.699020266099197e-5 +3.950000000000000e0,-5.462892468167802e-2,-5.451108543180543e-2,-1.178392498725964e-4 +4.000000000000000e0,-5.637474066570291e-2,-5.616685805409583e-2,-2.078826116070770e-4 +4.050000000000000e0,-5.537378804592285e-2,-5.507776164441665e-2,-2.960264015061942e-4 +4.100000000000001e0,-5.145972682116273e-2,-5.116981200038889e-2,-2.899148207738331e-4 +4.150000000000000e0,-4.491240865432834e-2,-4.457573836426813e-2,-3.366702900602092e-4 +4.200000000000000e0,-3.593743891603053e-2,-3.559125171731317e-2,-3.461871987173598e-4 +4.250000000000000e0,-2.488732712517419e-2,-2.463226353660548e-2,-2.550635885687179e-4 +4.300000000000000e0,-1.241221563228704e-2,-1.217229435385378e-2,-2.399212784332614e-4 +4.350000000000001e0,1.172407309267463e-3,1.325784372530570e-3,-1.533770632631069e-4 +4.400000000000000e0,1.532970527787676e-2,1.535716815824066e-2,-2.746288036389703e-5 +4.450000000000000e0,2.948432055060255e-2,2.936615493296542e-2,1.181656176371393e-4 +4.500000000000000e0,4.296975862764872e-2,4.274594134592042e-2,2.238172817283016e-4 +4.550000000000000e0,5.514423471721199e-2,5.486448541991695e-2,2.797492972950455e-4 +4.600000000000001e0,6.544876955909414e-2,6.512292880250635e-2,3.258407565877863e-4 +4.650000000000000e0,7.334830040694645e-2,7.298261099723956e-2,3.656894097068958e-4 +4.700000000000000e0,7.826540615255365e-2,7.797359943831612e-2,2.918067142375219e-4 +4.750000000000000e0,7.994001989263896e-2,7.970604884231750e-2,2.339710503214687e-4 +4.800000000000001e0,7.816628636281601e-2,7.792979811745450e-2,2.364882453615158e-4 +4.850000000000001e0,7.281147731869930e-2,7.256811010372075e-2,2.433672149785571e-4 +4.900000000000000e0,6.386754914765569e-2,6.374292834357240e-2,1.246208040832919e-4 +4.950000000000000e0,5.182218520684885e-2,5.176424792215213e-2,5.793728469671855e-5 +5.000000000000000e0,3.708740508695731e-2,3.708679445097439e-2,6.106359829241570e-7 +5.050000000000001e0,2.019536980399582e-2,2.028890202940853e-2,-9.353222541270620e-5 +5.100000000000001e0,1.812145453781865e-3,2.043620105910488e-3,-2.314746521286234e-4 +5.150000000000000e0,-1.720044262733132e-2,-1.689608707626589e-2,-3.043555510654321e-4 +5.200000000000000e0,-3.598025897859355e-2,-3.569114462319386e-2,-2.891143553996889e-4 +5.250000000000000e0,-5.367073424014730e-2,-5.343881363381126e-2,-2.319206063360474e-4 +5.300000000000001e0,-6.936203244498834e-2,-6.918674245826684e-2,-1.752899867215052e-4 +5.350000000000001e0,-8.208823359172822e-2,-8.199176590436191e-2,-9.646768736630562e-5 +5.400000000000000e0,-9.112713767803990e-2,-9.104752414147881e-2,-7.961353656109338e-5 +5.450000000000000e0,-9.584763871955693e-2,-9.576293313974685e-2,-8.470557981007931e-5 +5.500000000000000e0,-9.583459404856744e-2,-9.582510348764021e-2,-9.490560927222225e-6 +5.550000000000001e0,-9.114351443863029e-2,-9.117747200460113e-2,3.395756597084076e-5 +5.600000000000001e0,-8.191717407777094e-2,-8.196131420674235e-2,4.414012897141495e-5 +5.650000000000000e0,-6.845687503128739e-2,-6.850780851480594e-2,5.093348351854765e-5 +5.700000000000000e0,-5.124191578450698e-2,-5.136344085249149e-2,1.215250679845112e-4 +5.750000000000000e0,-3.125209644757724e-2,-3.134786704913027e-2,9.577060155303158e-5 +5.800000000000001e0,-9.510198590533142e-3,-9.517892503830238e-3,7.693913297095525e-6 +5.850000000000001e0,1.283474901038389e-2,1.290790471926332e-2,-7.315570887942748e-5 +5.900000000000000e0,3.454010991582825e-2,3.467740318976290e-2,-1.372932739346494e-4 +5.950000000000000e0,5.445986882889496e-2,5.462173699974320e-2,-1.618681708482339e-4 +6.000000000000000e0,7.154307307600358e-2,7.168550683085380e-2,-1.424337548502214e-4 +6.050000000000001e0,8.485542237823678e-2,8.497689966557199e-2,-1.214772873352199e-4 +6.100000000000001e0,9.361696855460612e-2,9.380451620196921e-2,-1.875476473630899e-4 +6.150000000000000e0,9.744638540096442e-2,9.771826242502329e-2,-2.718770240588697e-4 +6.200000000000000e0,9.621260986366900e-2,9.655034700885455e-2,-3.377371451855488e-4 +6.250000000000000e0,9.006699153485827e-2,9.042444162599965e-2,-3.574500911413814e-4 +6.300000000000001e0,7.942838145635629e-2,7.974471058205626e-2,-3.163291256999684e-4 +6.350000000000001e0,6.495208041964422e-2,6.516667031937531e-2,-2.145898997310963e-4 +6.400000000000000e0,4.748518981686638e-2,4.755225752158828e-2,-6.706770472190288e-5 +6.450000000000000e0,2.801179539934751e-2,2.791264198559455e-2,9.915341375295317e-5 +6.500000000000000e0,7.592006140396590e-3,7.343161939455978e-3,2.488442009406120e-4 +6.550000000000001e0,-1.276369327680318e-2,-1.304480497806292e-2,2.811117012597349e-4 +6.600000000000001e0,-3.195110986306779e-2,-3.219083999017847e-2,2.397301271106836e-4 +6.650000000000000e0,-4.892121893553692e-2,-4.914553666907882e-2,2.243177335419025e-4 +6.700000000000000e0,-6.290316499904360e-2,-6.311887298760602e-2,2.157079885624219e-4 +6.750000000000000e0,-7.332000616049378e-2,-7.351619187007080e-2,1.961857095770236e-4 +6.800000000000001e0,-7.980744935248019e-2,-7.995986094812153e-2,1.524115956413469e-4 +6.850000000000001e0,-8.221885137169524e-2,-8.229629580956938e-2,7.744443787413569e-5 +6.900000000000000e0,-8.061749015642183e-2,-8.058919906344893e-2,-2.829109297290688e-5 +6.950000000000000e0,-7.525791516222036e-2,-7.510081705469535e-2,-1.570981075250111e-4 +7.000000000000000e0,-6.655875652830517e-2,-6.626371511773414e-2,-2.950414105710314e-4 +7.050000000000001e0,-5.496591069021932e-2,-5.464597211380164e-2,-3.199385764176763e-4 +7.100000000000001e0,-4.113866969848625e-2,-4.091261535907783e-2,-2.260543394084213e-4 +7.150000000000000e0,-2.592553930245547e-2,-2.578621339315133e-2,-1.393259093041416e-4 +7.200000000000000e0,-1.007331670117141e-2,-1.000961466334053e-2,-6.370203783087960e-5 +7.250000000000000e0,5.687517442674444e-3,5.687694874403858e-3,-1.774317294148814e-7 +7.300000000000001e0,2.067117268811830e-2,2.061852607306291e-2,5.264661505539545e-5 +7.350000000000001e0,3.425965640460694e-2,3.416169392849584e-2,9.796247611110198e-5 +7.400000000000000e0,4.592067844052399e-2,4.578052771482832e-2,1.401507256956688e-4 +7.450000000000000e0,5.522079321647071e-2,5.503661933270341e-2,1.841738837673051e-4 +7.500000000000000e0,6.183443460689673e-2,6.159947819025628e-2,2.349564166404597e-4 +7.550000000000001e0,6.551415909738761e-2,6.525281269187035e-2,2.613464055172682e-4 +7.600000000000001e0,6.611916877888760e-2,6.589806180341043e-2,2.211069754771700e-4 +7.650000000000000e0,6.370219027563712e-2,6.355572798545993e-2,1.464622901771878e-4 +7.700000000000000e0,5.841832232310374e-2,5.836432872040654e-2,5.399360269719988e-5 +7.750000000000000e0,5.053672475002929e-2,5.057668810277387e-2,-3.996335274457363e-5 +7.800000000000001e0,4.043224125439981e-2,4.055322392412655e-2,-1.209826697267449e-4 +7.850000000000001e0,2.857362353110716e-2,2.875166014355713e-2,-1.780366124499652e-4 +7.900000000000000e0,1.550793754275537e-2,1.571260818020697e-2,-2.046706374515955e-4 +7.950000000000000e0,1.840897687362917e-3,2.040635690074977e-3,-1.997380027120598e-4 +8.000000000000000e0,-1.178682739873464e-2,-1.161923358825463e-2,-1.675938104800101e-4 +8.050000000000001e0,-2.477744122781099e-2,-2.460916373588093e-2,-1.682774919300571e-4 +8.100000000000000e0,-3.646474953984656e-2,-3.628880069227626e-2,-1.759488475703008e-4 +8.150000000000000e0,-4.621432971362344e-2,-4.606846109828023e-2,-1.458686153432143e-4 +8.200000000000001e0,-5.353180648529583e-2,-5.344319014553962e-2,-8.861633975620897e-5 +8.250000000000000e0,-5.804154906095222e-2,-5.802394625834032e-2,-1.760280261189906e-5 +8.300000000000001e0,-5.951096757566483e-2,-5.956400130884991e-2,5.303373318507609e-5 +8.350000000000000e0,-5.786776160991770e-2,-5.797824662570020e-2,1.104850157824938e-4 +8.400000000000000e0,-5.320837859811499e-2,-5.335341712962859e-2,1.450385315135971e-4 +8.450000000000001e0,-4.579647800385429e-2,-4.594781832001561e-2,1.513403161613122e-4 +8.500000000000000e0,-3.605089264111588e-2,-3.617989765830226e-2,1.290050171863719e-4 +8.550000000000001e0,-2.449542140922279e-2,-2.460583248218271e-2,1.104110729599206e-4 +8.600000000000000e0,-1.179142645424995e-2,-1.188655892518760e-2,9.513247093764603e-5 +8.650000000000000e0,1.315930340848033e-3,1.252149569892617e-3,6.378077095541609e-5 +8.700000000000001e0,1.408325396472534e-2,1.406354259587437e-2,1.971136885096751e-5 +8.750000000000000e0,2.579438138369362e-2,2.582610436815986e-2,-3.172298446623908e-5 +8.800000000000001e0,3.580475381007248e-2,3.588847223560181e-2,-8.371842552932357e-5 +8.850000000000000e0,4.358103405937584e-2,4.370980205862922e-2,-1.287679992533833e-4 +8.900000000000000e0,4.873311261869357e-2,4.889264819318998e-2,-1.595355744964111e-4 +8.950000000000001e0,5.103622519353237e-2,5.120598732031820e-2,-1.697621267858287e-4 +9.000000000000000e0,5.044167513676719e-2,5.059677865335512e-2,-1.551035165879289e-4 +9.050000000000001e0,4.706581326671163e-2,4.718936501786623e-2,-1.235517511546033e-4 +9.100000000000000e0,4.118920692096585e-2,4.127336919480561e-2,-8.416227383975516e-5 +9.150000000000000e0,3.324629165296939e-2,3.328099287909089e-2,-3.470122612150156e-5 +9.200000000000001e0,2.377533337387406e-2,2.375442166148617e-2,2.091171238789366e-5 +9.250000000000000e0,1.338355348690712e-2,1.330663439539874e-2,7.691909150837895e-5 +9.300000000000001e0,2.705720060008067e-3,2.578933644436964e-3,1.267864155711030e-4 +9.350000000000000e0,-7.637119709717191e-3,-7.801506838576524e-3,1.643871288593331e-4 +9.400000000000000e0,-1.707581566873749e-2,-1.726093010848120e-2,1.851144397437103e-4 +9.450000000000001e0,-2.512564324924380e-2,-2.531238596777028e-2,1.867427185264781e-4 +9.500000000000000e0,-3.141121163093057e-2,-3.158111769657664e-2,1.699060656460624e-4 +9.550000000000001e0,-3.568203344430906e-2,-3.582065422478199e-2,1.386207804729284e-4 +9.600000000000001e0,-3.782566118582270e-2,-3.791928905386622e-2,9.362786804351791e-5 +9.650000000000000e0,-3.785444995017032e-2,-3.789565765274304e-2,4.120770257271672e-5 +9.700000000000001e0,-3.589747349732655e-2,-3.588634825141755e-2,-1.112524590900221e-5 +9.750000000000000e0,-3.218501628516569e-2,-3.212780033956540e-2,-5.721594560028492e-5 +9.800000000000001e0,-2.702662749357896e-2,-2.693374608299488e-2,-9.288141058408361e-5 +9.850000000000001e0,-2.078638723050587e-2,-2.067022516148691e-2,-1.161620690189567e-4 +9.900000000000000e0,-1.385739077853500e-2,-1.373016067368768e-2,-1.272301048473121e-4 +9.950000000000001e0,-6.637277356536296e-3,-6.509267104854669e-3,-1.280102516816265e-4 +1.000000000000000e1,4.936848362713869e-4,6.152789012362301e-4,-1.215940649648432e-4 +1.005000000000000e1,7.217421346723776e-3,7.302358590583296e-3,-8.493724385951959e-5 +1.010000000000000e1,1.323433089555362e-2,1.325972964240328e-2,-2.539874684966310e-5 +1.015000000000000e1,1.828822404143140e-2,1.825308506849581e-2,3.513897293559026e-5 +1.020000000000000e1,2.220020059308895e-2,2.211118322356765e-2,8.901736952130271e-5 +1.025000000000000e1,2.485709458526331e-2,2.472689265424967e-2,1.302019310136376e-4 +1.030000000000000e1,2.620977842944541e-2,2.605511906886627e-2,1.546593605791340e-4 +1.035000000000000e1,2.626895000971096e-2,2.610840712617058e-2,1.605428835403759e-4 +1.040000000000000e1,2.509917552722334e-2,2.495099023307391e-2,1.481852941494291e-4 +1.045000000000000e1,2.281187200846923e-2,2.269196134851711e-2,1.199106599521112e-4 +1.050000000000000e1,1.955776306662603e-2,1.947807689616761e-2,7.968617045842064e-5 +1.055000000000000e1,1.551916104294761e-2,1.548651581173615e-2,3.264523121145925e-5 +1.060000000000000e1,1.090224990134181e-2,1.091772869919564e-2,-1.547879785383267e-5 +1.065000000000000e1,5.929394519287480e-3,5.988356868860783e-3,-5.896234957330267e-5 +1.070000000000000e1,8.314046925713137e-4,9.240996723423827e-4,-9.269497977106901e-5 +1.075000000000000e1,-4.160351662479628e-3,-4.047626250061810e-3,-1.127254124178179e-4 +1.080000000000000e1,-8.822060253757463e-3,-8.705358193318769e-3,-1.167020604386938e-4 +1.085000000000000e1,-1.294578306080581e-2,-1.284161674919462e-2,-1.041663116111806e-4 +1.090000000000000e1,-1.634784979092982e-2,-1.627118251850052e-2,-7.666727242929688e-5 +1.095000000000000e1,-1.887703109886209e-2,-1.883935058800270e-2,-3.768051085938431e-5 +1.100000000000000e1,-2.042207038904027e-2,-2.042974061629809e-2,7.670227257824958e-6 +1.105000000000000e1,-2.095100882808711e-2,-2.097111932397222e-2,2.011049588511449e-5 +1.110000000000000e1,-2.042331566378722e-2,-2.044261908193109e-2,1.930341814387199e-5 +1.115000000000000e1,-1.885397015110354e-2,-1.887677581293924e-2,2.280566183569810e-5 +1.120000000000000e1,-1.633020261333360e-2,-1.635986214076925e-2,2.965952743564162e-5 +1.125000000000000e1,-1.299074151023742e-2,-1.302913588531016e-2,3.839437507274432e-5 +1.130000000000000e1,-9.019599751964796e-3,-9.066864128071334e-3,4.726437610653826e-5 +1.135000000000000e1,-4.636744887224663e-3,-4.691240978768427e-3,5.449609154376325e-5 +1.140000000000000e1,-8.607068457794288e-5,-1.445949023572931e-4,5.852421777935023e-5 +1.145000000000000e1,4.378650435607707e-3,4.320454723196527e-3,5.819571241118000e-5 +1.150000000000000e1,8.508936893908466e-3,8.456011404361636e-3,5.292548954683070e-5 +1.155000000000000e1,1.207684371131565e-2,1.203405287472282e-2,4.279083659282715e-5 +1.160000000000000e1,1.488917826380123e-2,1.486062176532719e-2,2.855649847403538e-5 +1.165000000000000e1,1.679961663623509e-2,1.678798884481127e-2,1.162779142381901e-5 +1.170000000000000e1,1.771778524508945e-2,1.772385037507346e-2,-6.065129984012679e-6 +1.175000000000000e1,1.761459333368842e-2,1.763683630385892e-2,-2.224297017050167e-5 +1.180000000000000e1,1.652339045370649e-2,1.655788917865322e-2,-3.449872494672157e-5 +1.185000000000000e1,1.453685287800350e-2,1.457739900690658e-2,-4.054612890308160e-5 +1.190000000000000e1,1.179984357161269e-2,1.183831677503229e-2,-3.847320341959434e-5 +1.195000000000000e1,8.498810355642096e-3,8.525787835432275e-3,-2.697747979017902e-5 +1.200000000000000e1,4.848556889160125e-3,4.854116812889405e-3,-5.559923729279298e-6 +1.205000000000000e1,1.071112370074364e-3,1.052064474702776e-3,1.904789537158819e-5 +1.210000000000000e1,-2.618803681929395e-3,-2.652463426366250e-3,3.365974443685473e-5 +1.215000000000000e1,-6.007603124096208e-3,-6.046951107058132e-3,3.934798296192313e-5 +1.220000000000000e1,-8.909035527598662e-3,-8.947141658624402e-3,3.810613102574016e-5 +1.225000000000000e1,-1.117524115730613e-2,-1.120748348649864e-2,3.224232919250662e-5 +1.230000000000000e1,-1.270443388852490e-2,-1.272845816555719e-2,2.402427703229910e-5 +1.235000000000000e1,-1.344503028618677e-2,-1.346042014195473e-2,1.538985576795583e-5 +1.240000000000000e1,-1.339611574615971e-2,-1.340386655696342e-2,7.750810803714911e-6 +1.245000000000000e1,-1.260443235120401e-2,-1.260633406837283e-2,1.901717168828129e-6 +1.250000000000000e1,-1.115833453019354e-2,-1.115636598434161e-2,-1.968545851931125e-6 +1.255000000000000e1,-9.179366137881813e-3,-9.175187672835865e-3,-4.178465045948446e-6 +1.260000000000000e1,-6.812250885410532e-3,-6.806857230623699e-3,-5.393654786832631e-6 +1.265000000000000e1,-4.214149310908996e-3,-4.207714771755740e-3,-6.434539153256369e-6 +1.270000000000000e1,-1.544019680169475e-3,-1.535937536557823e-3,-8.082143611651618e-6 +1.275000000000000e1,1.047165283848156e-3,1.058073841363182e-3,-1.090855751502656e-5 +1.280000000000000e1,3.424735586784660e-3,3.439887640553301e-3,-1.515205376864150e-5 +1.285000000000000e1,5.476744658267970e-3,5.497393321000198e-3,-2.064866273222745e-5 +1.290000000000000e1,7.118260983911896e-3,7.145084565856943e-3,-2.682358194504731e-5 +1.295000000000000e1,8.293493640786399e-3,8.326232021603229e-3,-3.273838081683036e-5 +1.300000000000000e1,8.975889717607381e-3,9.013074121423440e-3,-3.718440381605959e-5 +1.305000000000000e1,9.181908185759809e-3,9.205291975930155e-3,-2.338379017034591e-5 +1.310000000000000e1,8.919949845499587e-3,8.927164167346876e-3,-7.214321847288582e-6 +1.315000000000000e1,8.227221228219655e-3,8.223804933539193e-3,3.416294680461465e-6 +1.320000000000000e1,7.165211040884318e-3,7.156761502240076e-3,8.449538644241840e-6 +1.325000000000000e1,5.807837565574564e-3,5.799403831750808e-3,8.433733823756499e-6 +1.330000000000000e1,4.236842999812234e-3,4.232447376886653e-3,4.395622925580829e-6 +1.335000000000000e1,2.537526907317249e-3,2.539839825621324e-3,-2.312918304075116e-6 +1.340000000000000e1,7.949668451990251e-4,8.051485986428118e-4,-1.018175344378669e-5 +1.345000000000000e1,-9.092131540584962e-4,-8.915021848384764e-4,-1.771096922001977e-5 +1.350000000000000e1,-2.499536795114786e-3,-2.475968066201228e-3,-2.356872891355827e-5 +1.355000000000000e1,-3.908890957219708e-3,-3.882164293975624e-3,-2.672666324408414e-5 +1.360000000000000e1,-5.080342468301071e-3,-5.053780223639464e-3,-2.656224466160602e-5 +1.365000000000000e1,-5.968632384940492e-3,-5.945712562378935e-3,-2.291982256155765e-5 +1.370000000000000e1,-6.541398976095365e-3,-6.525273849625062e-3,-1.612512647030263e-5 +1.375000000000000e1,-6.780141880140730e-3,-6.773190012935771e-3,-6.951867204959584e-6 +1.380000000000000e1,-6.680896319911029e-3,-6.684353071111121e-3,3.456751200092353e-6 +1.385000000000000e1,-6.254547046105320e-3,-6.268251719093956e-3,1.370467298863597e-5 +1.390000000000000e1,-5.526685102599819e-3,-5.548972335890281e-3,2.228723329046178e-5 +1.395000000000000e1,-4.536902759721874e-3,-4.564652509074928e-3,2.774974935305409e-5 +1.400000000000000e1,-3.337436349157227e-3,-3.366282087129052e-3,2.884573797182557e-5 diff --git a/doc/plots/feff_vs_larch_data/05_clone_template_ff2chi_rspace.csv b/doc/plots/feff_vs_larch_data/05_clone_template_ff2chi_rspace.csv new file mode 100644 index 0000000..d0552e2 --- /dev/null +++ b/doc/plots/feff_vs_larch_data/05_clone_template_ff2chi_rspace.csv @@ -0,0 +1,327 @@ +r,model,larch,diff +0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771283e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313848e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.227184630308513e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.533980787885641e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.840776945462770e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.147573103039898e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.454369260617026e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.761165418194154e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771282e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.374757733348411e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.681553890925539e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.988350048502667e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.295146206079796e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.601942363656924e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.908738521234052e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.215534678811180e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.522330836388308e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.829126993965437e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.442719309119693e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.749515466696822e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.056311624273950e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.363107781851078e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.669903939428206e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.976700097005335e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.283496254582463e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.590292412159591e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.897088569736720e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313848e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.510680884890976e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.817477042468105e-1,2.542275124531819e-1,2.553850286629548e-1,-1.157516209772835e-3 +1.012427320004523e0,2.755066859299396e-1,2.773700692573147e-1,-1.863383327375123e-3 +1.043106935762236e0,2.718140979780035e-1,2.742770670542093e-1,-2.462969076205801e-3 +1.073786551519949e0,2.413419813862486e-1,2.441729641743932e-1,-2.830982788144615e-3 +1.104466167277662e0,1.861955244389259e-1,1.889918429470604e-1,-2.796318508134471e-3 +1.135145783035375e0,1.164297413354025e-1,1.182582178363633e-1,-1.828476500960838e-3 +1.165825398793087e0,8.030762937032303e-2,7.837947554052385e-2,1.928153829799176e-3 +1.196505014550800e0,1.459046996427647e-1,1.427294294079115e-1,3.175270234853228e-3 +1.227184630308513e0,2.416483911789112e-1,2.391737196053208e-1,2.474671573590409e-3 +1.257864246066226e0,3.302029510747190e-1,3.286532287453283e-1,1.549722329390713e-3 +1.288543861823939e0,3.969622364222018e-1,3.963912616020737e-1,5.709748201280784e-4 +1.319223477581652e0,4.322981224604749e-1,4.326909889509855e-1,-3.928664905105128e-4 +1.349903093339364e0,4.302388019973405e-1,4.315377812000465e-1,-1.298979202706052e-3 +1.380582709097077e0,3.891378310989247e-1,3.912867674815080e-1,-2.148936382583289e-3 +1.411262324854790e0,3.134253514573561e-1,3.164640346902656e-1,-3.038683232909511e-3 +1.441941940612503e0,2.204589188197808e-1,2.246797428410314e-1,-4.220824021250569e-3 +1.472621556370216e0,1.720873092507655e-1,1.770907230144649e-1,-5.003413763699477e-3 +1.503301172127929e0,2.523582569058126e-1,2.558046366909307e-1,-3.446379785118081e-3 +1.533980787885641e0,4.010291670583058e-1,4.036242613172282e-1,-2.595094258922459e-3 +1.564660403643354e0,5.607739174576459e-1,5.632972728087757e-1,-2.523355351129797e-3 +1.595340019401067e0,7.086161476957871e-1,7.113748343454036e-1,-2.758686649616537e-3 +1.626019635158780e0,8.309864128888684e-1,8.340567946636467e-1,-3.070381774778252e-3 +1.656699250916493e0,9.183690382774816e-1,9.217043406834635e-1,-3.335302405981899e-3 +1.687378866674206e0,9.644187737292348e-1,9.679124703544364e-1,-3.493696625201603e-3 +1.718058482431918e0,9.663650691272092e-1,9.699112280113334e-1,-3.546158884124240e-3 +1.748738098189631e0,9.271181015876662e-1,9.306825241621408e-1,-3.564422574474646e-3 +1.779417713947344e0,8.614339447739705e-1,8.651303088746435e-1,-3.696364100672977e-3 +1.810097329705057e0,8.099102901996458e-1,8.140013083598669e-1,-4.091018160221171e-3 +1.840776945462770e0,8.515358395121746e-1,8.561382465493879e-1,-4.602407037213263e-3 +1.871456561220483e0,1.062578352290379e0,1.067375423365470e0,-4.797071075090642e-3 +1.902136176978195e0,1.449088181661282e0,1.453719003110588e0,-4.630821449306932e-3 +1.932815792735908e0,1.975663420131147e0,1.979886036342371e0,-4.222616211223773e-3 +1.963495408493621e0,2.607817846602688e0,2.611399078447608e0,-3.581231844919763e-3 +1.994175024251334e0,3.315673170319335e0,3.318371059790075e0,-2.697889470739678e-3 +2.024854640009047e0,4.069242500403338e0,4.070843916057710e0,-1.601415654371330e-3 +2.055534255766760e0,4.836157852213509e0,4.836520335316854e0,-3.624831033457454e-4 +2.086213871524472e0,5.581715774618575e0,5.580798196562009e0,9.175780565655600e-4 +2.116893487282185e0,6.270260751118444e0,6.268138522373226e0,2.122228745218280e-3 +2.147573103039898e0,6.867263309439259e0,6.864127140187117e0,3.136169252142551e-3 +2.178252718797611e0,7.341657939998039e0,7.337796974752131e0,3.860965245908510e-3 +2.208932334555323e0,7.668105766610665e0,7.663877573900280e0,4.228192710385770e-3 +2.239611950313036e0,7.828910881141583e0,7.824702295865397e0,4.208585276185950e-3 +2.270291566070749e0,7.815380128445641e0,7.811564089002631e0,3.816039443010233e-3 +2.300971181828462e0,7.628484177703710e0,7.625378240483578e0,3.105937220131416e-3 +2.331650797586175e0,7.278752928168431e0,7.276584927693196e0,2.168000475235132e-3 +2.362330413343888e0,6.785416042841181e0,6.784301364735061e0,1.114678106119982e-3 +2.393010029101601e0,6.174873246266149e0,6.174806490396769e0,6.675586937987532e-5 +2.423689644859313e0,5.478642404474221e0,5.479504053047118e0,-8.616485728971668e-4 +2.454369260617026e0,4.730980852074667e0,4.732557220530943e0,-1.576368456275290e-3 +2.485048876374739e0,3.966403536083073e0,3.968416095885512e0,-2.012559802439640e-3 +2.515728492132452e0,3.217330002293668e0,3.219468385324337e0,-2.138383030668489e-3 +2.546408107890165e0,2.512085779832152e0,2.514037462128713e0,-1.951682296561508e-3 +2.577087723647877e0,1.873478238224464e0,1.874946591812185e0,-1.468353587721127e-3 +2.607767339405590e0,1.318215448037726e0,1.318914615533435e0,-6.991674957086413e-4 +2.638446955163303e0,8.577584787684803e-1,8.573622136346003e-1,3.962651338800249e-4 +2.669126570921016e0,5.029320904268886e-1,5.009292718792376e-1,2.002818547650942e-3 +2.699806186678729e0,2.825445575468918e-1,2.783166476653689e-1,4.227909881522940e-3 +2.730485802436442e0,2.516334410013912e-1,2.474268256170372e-1,4.206615384353990e-3 +2.761165418194155e0,3.241866233434724e-1,3.218120248983861e-1,2.374598445086307e-3 +2.791845033951867e0,3.881081261549684e-1,3.868672855809198e-1,1.240840574048607e-3 +2.822524649709580e0,4.186908811802824e-1,4.179776638670318e-1,7.132173132505804e-4 +2.853204265467293e0,4.153285143250289e-1,4.146480962657721e-1,6.804180592568376e-4 +2.883883881225006e0,3.815591168508575e-1,3.804171695780840e-1,1.141947272773502e-3 +2.914563496982719e0,3.218485982682083e-1,3.197292981262581e-1,2.119300141950164e-3 +2.945243112740431e0,2.426343066595474e-1,2.390843214536085e-1,3.549985205938855e-3 +2.975922728498144e0,5.962709216404098e-34,5.786921330970920e-34,1.757878854331785e-35 +3.006602344255857e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.037281960013570e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771283e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.098641191528996e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.129320807286708e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.160000423044421e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.190680038802134e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.221359654559847e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.252039270317560e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.282718886075272e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.313398501832985e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.344078117590698e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.374757733348411e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.405437349106124e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.436116964863837e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.466796580621549e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.497476196379262e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.528155812136975e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.558835427894688e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.589515043652401e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.620194659410114e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.650874275167826e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.681553890925539e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.712233506683252e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.742913122440965e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.773592738198678e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.804272353956391e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.834951969714103e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.865631585471816e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.896311201229529e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.926990816987242e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.957670432744955e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.988350048502667e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.019029664260381e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.049709280018093e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.080388895775806e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.111068511533519e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.141748127291232e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.172427743048944e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.203107358806657e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.233786974564370e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.264466590322083e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.295146206079796e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.325825821837508e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.356505437595222e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.387185053352934e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.417864669110647e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.448544284868360e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.479223900626073e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.509903516383786e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.540583132141498e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.571262747899211e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.601942363656924e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.632621979414637e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.663301595172349e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.693981210930063e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.724660826687775e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.755340442445489e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.786020058203201e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.816699673960914e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.847379289718627e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.878058905476339e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.908738521234052e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.939418136991765e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.970097752749478e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.000777368507190e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.031456984264904e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.062136600022616e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.092816215780330e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.123495831538042e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.154175447295755e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.184855063053468e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.215534678811180e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.246214294568893e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.276893910326606e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.307573526084319e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.338253141842032e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.368932757599745e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.399612373357457e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.430291989115171e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.460971604872883e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.491651220630596e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.522330836388309e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.553010452146022e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.583690067903735e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.614369683661447e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.645049299419160e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.675728915176873e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.706408530934586e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.737088146692298e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.767767762450012e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.798447378207724e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.829126993965438e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.859806609723150e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.890486225480863e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.921165841238576e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.951845456996288e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.982525072754001e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.013204688511714e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.043884304269427e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.074563920027139e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.105243535784853e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.166602767300279e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.197282383057991e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.227961998815704e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.258641614573417e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.289321230331129e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.320000846088842e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.350680461846555e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.381360077604268e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.412039693361981e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.442719309119694e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.473398924877406e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.504078540635120e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.534758156392832e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.565437772150545e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.596117387908258e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.626797003665970e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.657476619423684e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.688156235181396e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.718835850939109e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.749515466696822e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.780195082454535e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.810874698212247e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.841554313969961e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.872233929727673e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.902913545485386e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.933593161243099e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.964272777000811e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.994952392758525e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.025632008516237e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.056311624273950e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.086991240031663e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.117670855789376e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.148350471547088e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.179030087304802e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.209709703062514e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.240389318820228e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.271068934577940e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.301748550335653e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.332428166093366e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.363107781851078e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.393787397608791e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.424467013366504e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.455146629124217e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.485826244881930e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.516505860639643e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.547185476397355e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.577865092155069e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.608544707912781e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.639224323670494e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.669903939428207e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.700583555185919e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.731263170943633e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.761942786701345e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.792622402459058e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.823302018216771e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.853981633974484e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.884661249732196e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.915340865489910e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.946020481247622e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.976700097005335e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.007379712763047e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.038059328520761e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.068738944278474e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.099418560036186e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.130098175793899e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.160777791551611e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.191457407309326e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.222137023067038e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.252816638824751e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.283496254582463e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.314175870340176e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.344855486097888e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.375535101855602e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.406214717613315e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.436894333371027e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.467573949128740e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.498253564886452e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.528933180644167e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.559612796401879e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.590292412159592e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.620972027917304e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.651651643675017e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.682331259432731e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.713010875190443e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.743690490948156e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.774370106705868e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.805049722463581e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.835729338221293e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.866408953979008e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.897088569736720e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.927768185494433e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.958447801252145e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.989127417009858e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.019807032767572e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.050486648525284e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.081166264282997e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.111845880040709e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.142525495798422e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.173205111556134e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313849e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.234564343071561e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.265243958829274e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.295923574586986e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.326603190344699e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.357282806102413e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.387962421860125e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.418642037617838e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.449321653375550e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.480001269133263e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.510680884890977e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.541360500648690e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.572040116406402e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.602719732164115e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.633399347921827e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.664078963679540e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.694758579437254e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.725438195194966e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.756117810952679e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.786797426710391e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.817477042468104e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.848156658225818e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.878836273983531e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.909515889741243e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.940195505498956e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.970875121256668e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 diff --git a/doc/plots/feff_vs_larch_data/05_clone_template_ff2chi_rspace_contrib.csv b/doc/plots/feff_vs_larch_data/05_clone_template_ff2chi_rspace_contrib.csv new file mode 100644 index 0000000..7fa93ad --- /dev/null +++ b/doc/plots/feff_vs_larch_data/05_clone_template_ff2chi_rspace_contrib.csv @@ -0,0 +1,327 @@ +r,total_model,total_larch,diff,feffcu01dat_00,feff0002dat_01 +0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771283e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313848e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.227184630308513e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.533980787885641e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.840776945462770e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.147573103039898e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.454369260617026e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.761165418194154e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771282e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.374757733348411e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.681553890925539e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.988350048502667e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.295146206079796e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.601942363656924e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.908738521234052e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.215534678811180e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.522330836388308e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.829126993965437e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.442719309119693e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.749515466696822e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.056311624273950e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.363107781851078e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.669903939428206e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.976700097005335e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.283496254582463e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.590292412159591e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.897088569736720e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313848e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.510680884890976e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.817477042468105e-1,2.542275124531819e-1,2.553850286629548e-1,-1.157516209772835e-3,2.546257784115848e-1,7.608322697658940e-4 +1.012427320004523e0,2.755066859299396e-1,2.773700692573147e-1,-1.863383327375123e-3,2.753686185940593e-1,7.564103582342583e-4 +1.043106935762236e0,2.718140979780035e-1,2.742770670542093e-1,-2.462969076205801e-3,2.710539686368714e-1,1.051842648416796e-3 +1.073786551519949e0,2.413419813862486e-1,2.441729641743932e-1,-2.830982788144615e-3,2.399511398717190e-1,1.526356746269983e-3 +1.104466167277662e0,1.861955244389259e-1,1.889918429470604e-1,-2.796318508134471e-3,1.842618422624777e-1,2.016443012322473e-3 +1.135145783035375e0,1.164297413354025e-1,1.182582178363633e-1,-1.828476500960838e-3,1.142360421809327e-1,2.395790696850913e-3 +1.165825398793087e0,8.030762937032303e-2,7.837947554052385e-2,1.928153829799176e-3,7.954210731722501e-2,2.560357054238903e-3 +1.196505014550800e0,1.459046996427647e-1,1.427294294079115e-1,3.175270234853228e-3,1.466888144811293e-1,2.436081847322947e-3 +1.227184630308513e0,2.416483911789112e-1,2.391737196053208e-1,2.474671573590409e-3,2.422703195991794e-1,2.008023338403484e-3 +1.257864246066226e0,3.302029510747190e-1,3.286532287453283e-1,1.549722329390713e-3,3.300808905036974e-1,1.419330180477046e-3 +1.288543861823939e0,3.969622364222018e-1,3.963912616020737e-1,5.709748201280784e-4,3.958173086719548e-1,1.342546409111242e-3 +1.319223477581652e0,4.322981224604749e-1,4.326909889509855e-1,-3.928664905105128e-4,4.300246180001078e-1,2.284067445947694e-3 +1.349903093339364e0,4.302388019973405e-1,4.315377812000465e-1,-1.298979202706052e-3,4.268787673985743e-1,3.580808604449247e-3 +1.380582709097077e0,3.891378310989247e-1,3.912867674815080e-1,-2.148936382583289e-3,3.848397595573680e-1,4.803196051996079e-3 +1.411262324854790e0,3.134253514573561e-1,3.164640346902656e-1,-3.038683232909511e-3,3.083480402888782e-1,5.691882833773133e-3 +1.441941940612503e0,2.204589188197808e-1,2.246797428410314e-1,-4.220824021250569e-3,2.146567325925161e-1,6.047009725705450e-3 +1.472621556370216e0,1.720873092507655e-1,1.770907230144649e-1,-5.003413763699477e-3,1.666611087791446e-1,5.738052241767130e-3 +1.503301172127929e0,2.523582569058126e-1,2.558046366909307e-1,-3.446379785118081e-3,2.492270799312153e-1,4.750980033217733e-3 +1.533980787885641e0,4.010291670583058e-1,4.036242613172282e-1,-2.595094258922459e-3,3.985283492380998e-1,3.337735973045299e-3 +1.564660403643354e0,5.607739174576459e-1,5.632972728087757e-1,-2.523355351129797e-3,5.580840194251778e-1,2.701510897855555e-3 +1.595340019401067e0,7.086161476957871e-1,7.113748343454036e-1,-2.758686649616537e-3,7.057293412394020e-1,4.364017986956138e-3 +1.626019635158780e0,8.309864128888684e-1,8.340567946636467e-1,-3.070381774778252e-3,8.282594431113243e-1,7.012716131865006e-3 +1.656699250916493e0,9.183690382774816e-1,9.217043406834635e-1,-3.335302405981899e-3,9.162740736683994e-1,9.600052554118088e-3 +1.687378866674206e0,9.644187737292348e-1,9.679124703544364e-1,-3.493696625201603e-3,9.633325270402741e-1,1.159783804790670e-2 +1.718058482431918e0,9.663650691272092e-1,9.699112280113334e-1,-3.546158884124240e-3,9.663891155082631e-1,1.263064036041414e-2 +1.748738098189631e0,9.271181015876662e-1,9.306825241621408e-1,-3.564422574474646e-3,9.279878703883410e-1,1.245527927603815e-2 +1.779417713947344e0,8.614339447739705e-1,8.651303088746435e-1,-3.696364100672977e-3,8.626288713067385e-1,1.101932687182098e-2 +1.810097329705057e0,8.099102901996458e-1,8.140013083598669e-1,-4.091018160221171e-3,8.111825700470537e-1,8.610657051043804e-3 +1.840776945462770e0,8.515358395121746e-1,8.561382465493879e-1,-4.602407037213263e-3,8.538832708247479e-1,6.403009447720352e-3 +1.871456561220483e0,1.062578352290379e0,1.067375423365470e0,-4.797071075090642e-3,1.068080277511586e0,7.143675483603826e-3 +1.902136176978195e0,1.449088181661282e0,1.453719003110588e0,-4.630821449306932e-3,1.459178331289264e0,1.098237266088773e-2 +1.932815792735908e0,1.975663420131147e0,1.979886036342371e0,-4.222616211223773e-3,1.990631702270380e0,1.556469037146073e-2 +1.963495408493621e0,2.607817846602688e0,2.611399078447608e0,-3.581231844919763e-3,2.627036763244881e0,1.955687503128902e-2 +1.994175024251334e0,3.315673170319335e0,3.318371059790075e0,-2.697889470739678e-3,3.337739757335858e0,2.217275365986365e-2 +2.024854640009047e0,4.069242500403338e0,4.070843916057710e0,-1.601415654371330e-3,4.092129311863472e0,2.288682950520858e-2 +2.055534255766760e0,4.836157852213509e0,4.836520335316854e0,-3.624831033457454e-4,4.857440354425723e0,2.142460167680882e-2 +2.086213871524472e0,5.581715774618575e0,5.580798196562009e0,9.175780565655600e-4,5.598865654260220e0,1.782856532794795e-2 +2.116893487282185e0,6.270260751118444e0,6.268138522373226e0,2.122228745218280e-3,6.280969675881972e0,1.265804959868809e-2 +2.147573103039898e0,6.867263309439259e0,6.864127140187117e0,3.136169252142551e-3,6.869755382393032e0,8.105292025194133e-3 +2.178252718797611e0,7.341657939998039e0,7.337796974752131e0,3.860965245908510e-3,7.334950264102077e0,1.007493771336475e-2 +2.208932334555323e0,7.668105766610665e0,7.663877573900280e0,4.228192710385770e-3,7.652182618690939e0,1.704849718738714e-2 +2.239611950313036e0,7.828910881141583e0,7.824702295865397e0,4.208585276185950e-3,7.804787052324251e0,2.438420747686887e-2 +2.270291566070749e0,7.815380128445641e0,7.811564089002631e0,3.816039443010233e-3,7.785042074449588e0,3.033873848995566e-2 +2.300971181828462e0,7.628484177703710e0,7.625378240483578e0,3.105937220131416e-3,7.594712453851676e0,3.395455176945337e-2 +2.331650797586175e0,7.278752928168431e0,7.276584927693196e0,2.168000475235132e-3,7.244844364969165e0,3.464204610235275e-2 +2.362330413343888e0,6.785416042841181e0,6.784301364735061e0,1.114678106119982e-3,6.754837488272837e0,3.216546331500406e-2 +2.393010029101601e0,6.174873246266149e0,6.174806490396769e0,6.675586937987532e-5,6.150888726959490e0,2.669144022055613e-2 +2.423689644859313e0,5.478642404474221e0,5.479504053047118e0,-8.616485728971668e-4,5.463960721262562e0,1.893355743774615e-2 +2.454369260617026e0,4.730980852074667e0,4.732557220530943e0,-1.576368456275290e-3,4.727469760481891e0,1.111972305213112e-2 +2.485048876374739e0,3.966403536083073e0,3.968416095885512e0,-2.012559802439640e-3,3.974908980596900e0,1.136632795848122e-2 +2.515728492132452e0,3.217330002293668e0,3.219468385324337e0,-2.138383030668489e-3,3.237623733373593e0,2.053478285170073e-2 +2.546408107890165e0,2.512085779832152e0,2.514037462128713e0,-1.951682296561508e-3,2.542940679790775e0,3.094384244515060e-2 +2.577087723647877e0,1.873478238224464e0,1.874946591812185e0,-1.468353587721127e-3,1.912832350919592e0,4.029029638327815e-2 +2.607767339405590e0,1.318215448037726e0,1.318914615533435e0,-6.991674957086413e-4,1.363309704144826e0,4.776492864822671e-2 +2.638446955163303e0,8.577584787684803e-1,8.573622136346003e-1,3.962651338800249e-4,9.049077539996708e-1,5.309436660362967e-2 +2.669126570921016e0,5.029320904268886e-1,5.009292718792376e-1,2.002818547650942e-3,5.455941161732399e-1,5.634875764747396e-2 +2.699806186678729e0,2.825445575468918e-1,2.783166476653689e-1,4.227909881522940e-3,3.022752376595276e-1,5.776409886250245e-2 +2.730485802436442e0,2.516334410013912e-1,2.474268256170372e-1,4.206615384353990e-3,2.226026855418740e-1,5.751443653807381e-2 +2.761165418194155e0,3.241866233434724e-1,3.218120248983861e-1,2.374598445086307e-3,2.736160612593715e-1,5.553274500708590e-2 +2.791845033951867e0,3.881081261549684e-1,3.868672855809198e-1,1.240840574048607e-3,3.365789039785991e-1,5.158934814507291e-2 +2.822524649709580e0,4.186908811802824e-1,4.179776638670318e-1,7.132173132505804e-4,3.752750183975347e-1,4.597652573082496e-2 +2.853204265467293e0,4.153285143250289e-1,4.146480962657721e-1,6.804180592568376e-4,3.888320060850228e-1,4.154885509647410e-2 +2.883883881225006e0,3.815591168508575e-1,3.804171695780840e-1,1.141947272773502e-3,3.828256268222396e-1,4.642080093705236e-2 +2.914563496982719e0,3.218485982682083e-1,3.197292981262581e-1,2.119300141950164e-3,3.634282197800583e-1,6.738239100721634e-2 +2.945243112740431e0,2.426343066595474e-1,2.390843214536085e-1,3.549985205938855e-3,3.363551153720047e-1,1.024790958399520e-1 +2.975922728498144e0,5.962709216404098e-34,5.786921330970920e-34,1.757878854331785e-35,1.150698442414293e-33,5.555721855598404e-34 +3.006602344255857e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.037281960013570e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771283e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.098641191528996e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.129320807286708e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.160000423044421e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.190680038802134e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.221359654559847e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.252039270317560e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.282718886075272e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.313398501832985e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.344078117590698e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.374757733348411e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.405437349106124e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.436116964863837e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.466796580621549e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.497476196379262e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.528155812136975e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.558835427894688e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.589515043652401e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.620194659410114e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.650874275167826e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.681553890925539e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.712233506683252e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.742913122440965e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.773592738198678e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.804272353956391e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.834951969714103e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.865631585471816e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.896311201229529e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.926990816987242e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.957670432744955e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.988350048502667e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.019029664260381e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.049709280018093e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.080388895775806e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.111068511533519e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.141748127291232e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.172427743048944e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.203107358806657e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.233786974564370e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.264466590322083e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.295146206079796e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.325825821837508e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.356505437595222e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.387185053352934e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.417864669110647e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.448544284868360e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.479223900626073e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.509903516383786e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.540583132141498e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.571262747899211e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.601942363656924e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.632621979414637e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.663301595172349e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.693981210930063e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.724660826687775e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.755340442445489e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.786020058203201e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.816699673960914e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.847379289718627e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.878058905476339e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.908738521234052e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.939418136991765e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.970097752749478e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.000777368507190e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.031456984264904e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.062136600022616e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.092816215780330e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.123495831538042e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.154175447295755e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.184855063053468e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.215534678811180e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.246214294568893e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.276893910326606e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.307573526084319e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.338253141842032e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.368932757599745e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.399612373357457e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.430291989115171e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.460971604872883e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.491651220630596e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.522330836388309e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.553010452146022e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.583690067903735e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.614369683661447e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.645049299419160e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.675728915176873e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.706408530934586e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.737088146692298e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.767767762450012e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.798447378207724e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.829126993965438e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.859806609723150e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.890486225480863e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.921165841238576e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.951845456996288e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.982525072754001e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.013204688511714e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.043884304269427e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.074563920027139e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.105243535784853e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.166602767300279e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.197282383057991e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.227961998815704e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.258641614573417e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.289321230331129e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.320000846088842e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.350680461846555e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.381360077604268e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.412039693361981e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.442719309119694e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.473398924877406e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.504078540635120e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.534758156392832e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.565437772150545e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.596117387908258e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.626797003665970e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.657476619423684e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.688156235181396e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.718835850939109e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.749515466696822e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.780195082454535e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.810874698212247e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.841554313969961e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.872233929727673e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.902913545485386e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.933593161243099e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.964272777000811e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.994952392758525e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.025632008516237e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.056311624273950e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.086991240031663e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.117670855789376e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.148350471547088e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.179030087304802e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.209709703062514e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.240389318820228e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.271068934577940e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.301748550335653e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.332428166093366e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.363107781851078e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.393787397608791e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.424467013366504e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.455146629124217e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.485826244881930e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.516505860639643e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.547185476397355e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.577865092155069e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.608544707912781e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.639224323670494e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.669903939428207e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.700583555185919e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.731263170943633e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.761942786701345e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.792622402459058e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.823302018216771e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.853981633974484e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.884661249732196e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.915340865489910e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.946020481247622e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.976700097005335e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.007379712763047e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.038059328520761e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.068738944278474e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.099418560036186e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.130098175793899e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.160777791551611e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.191457407309326e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.222137023067038e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.252816638824751e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.283496254582463e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.314175870340176e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.344855486097888e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.375535101855602e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.406214717613315e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.436894333371027e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.467573949128740e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.498253564886452e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.528933180644167e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.559612796401879e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.590292412159592e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.620972027917304e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.651651643675017e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.682331259432731e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.713010875190443e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.743690490948156e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.774370106705868e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.805049722463581e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.835729338221293e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.866408953979008e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.897088569736720e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.927768185494433e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.958447801252145e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.989127417009858e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.019807032767572e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.050486648525284e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.081166264282997e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.111845880040709e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.142525495798422e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.173205111556134e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313849e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.234564343071561e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.265243958829274e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.295923574586986e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.326603190344699e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.357282806102413e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.387962421860125e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.418642037617838e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.449321653375550e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.480001269133263e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.510680884890977e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.541360500648690e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.572040116406402e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.602719732164115e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.633399347921827e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.664078963679540e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.694758579437254e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.725438195194966e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.756117810952679e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.786797426710391e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.817477042468104e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.848156658225818e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.878836273983531e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.909515889741243e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.940195505498956e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.970875121256668e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 diff --git a/doc/plots/feff_vs_larch_data/06_multi_dataset_ds1.csv b/doc/plots/feff_vs_larch_data/06_multi_dataset_ds1.csv new file mode 100644 index 0000000..06b82b3 --- /dev/null +++ b/doc/plots/feff_vs_larch_data/06_multi_dataset_ds1.csv @@ -0,0 +1,281 @@ +k,model,larch,diff +5.000000000000000e-2,0.000000000000000e0,-3.294014545590028e-1,3.294014545590028e-1 +1.000000000000000e-1,0.000000000000000e0,-3.325857487366470e-1,3.325857487366470e-1 +1.500000000000000e-1,0.000000000000000e0,-3.357700429142912e-1,3.357700429142912e-1 +2.000000000000000e-1,0.000000000000000e0,-3.401532904633558e-1,3.401532904633558e-1 +2.500000000000000e-1,0.000000000000000e0,-3.456560420239568e-1,3.456560420239568e-1 +3.000000000000000e-1,0.000000000000000e0,-3.521695009003528e-1,3.521695009003528e-1 +3.500000000000000e-1,0.000000000000000e0,-3.595505950839698e-1,3.595505950839698e-1 +4.000000000000000e-1,0.000000000000000e0,-3.676159293232869e-1,3.676159293232869e-1 +4.500000000000000e-1,0.000000000000000e0,-3.761342857813328e-1,3.761342857813328e-1 +5.000000000000000e-1,0.000000000000000e0,-3.848161215226475e-1,3.848161215226475e-1 +5.500000000000000e-1,0.000000000000000e0,-3.932912407666668e-1,3.932912407666668e-1 +6.000000000000001e-1,0.000000000000000e0,-4.009380735867983e-1,4.009380735867983e-1 +6.500000000000000e-1,-3.933364678422223e-1,-3.926716466366216e-1,-6.648212056007408e-4 +7.000000000000001e-1,-3.819860117922665e-1,-3.813331402971081e-1,-6.528714951584136e-4 +7.500000000000000e-1,-3.690918332022263e-1,-3.683470245398694e-1,-7.448086623568773e-4 +8.000000000000000e-1,-3.545741254440217e-1,-3.535384017595220e-1,-1.035723684499668e-3 +8.500000000000001e-1,-3.381519406981514e-1,-3.367438066643357e-1,-1.408134033815622e-3 +9.000000000000000e-1,-3.186050081739567e-1,-3.178195023572455e-1,-7.855058167112183e-4 +9.500000000000001e-1,-2.974487265105402e-1,-2.966649207098992e-1,-7.838058006409687e-4 +1.000000000000000e0,-2.743828723338870e-1,-2.731786232202901e-1,-1.204249113596900e-3 +1.050000000000000e0,-2.478469059519341e-1,-2.473011706388375e-1,-5.457353130965403e-4 +1.100000000000000e0,-2.198835691501629e-1,-2.191364633970085e-1,-7.471057531544256e-4 +1.150000000000000e0,-1.893352717860581e-1,-1.888065267837186e-1,-5.287450023395146e-4 +1.200000000000000e0,-1.567210152085331e-1,-1.564444046653403e-1,-2.766105431927235e-4 +1.250000000000000e0,-1.230211586266598e-1,-1.224036763166079e-1,-6.174823100518340e-4 +1.300000000000000e0,-8.718413567460374e-2,-8.715983524047755e-2,-2.430043412619820e-5 +1.350000000000000e0,-5.163257718289522e-2,-5.124494511630743e-2,-3.876320665877897e-4 +1.400000000000000e0,-1.511931781214598e-2,-1.526751063079347e-2,1.481928186474902e-4 +1.450000000000000e0,2.016424721405009e-2,2.009284886755197e-2,7.139834649811175e-5 +1.500000000000000e0,5.442416492035251e-2,5.411256444340888e-2,3.116004769436326e-4 +1.550000000000000e0,8.646809897062419e-2,8.611033042562016e-2,3.577685450040224e-4 +1.600000000000000e0,1.156549738933264e-1,1.152681180423988e-1,3.868558509276671e-4 +1.650000000000000e0,1.411611805102567e-1,1.406728273556015e-1,4.883531546551745e-4 +1.700000000000000e0,1.621765051133490e-1,1.616641557189680e-1,5.123493943809954e-4 +1.750000000000000e0,1.783881525827032e-1,1.777615901639631e-1,6.265624187400398e-4 +1.800000000000000e0,1.892485659473870e-1,1.885934374458280e-1,6.551285015590769e-4 +1.850000000000000e0,1.944790610906092e-1,1.939096951849520e-1,5.693659056572042e-4 +1.900000000000000e0,1.941995100995663e-1,1.934543094537796e-1,7.452006457866756e-4 +1.950000000000000e0,1.876996316535738e-1,1.872181652685968e-1,4.814663849770084e-4 +2.000000000000000e0,1.762981762821283e-1,1.756076414101513e-1,6.905348719769833e-4 +2.050000000000000e0,1.596429754387371e-1,1.592074863076734e-1,4.354891310636433e-4 +2.100000000000000e0,1.390995292208499e-1,1.387543676633363e-1,3.451615575136291e-4 +2.150000000000000e0,1.141694398177267e-1,1.149897343852503e-1,-8.202945675235829e-4 +2.200000000000000e0,8.770401147309473e-2,8.875688172901036e-2,-1.052870255915633e-3 +2.250000000000000e0,6.084242534209809e-2,6.126408875565007e-2,-4.216634135519801e-4 +2.300000000000000e0,3.414371331189037e-2,3.383069858273713e-2,3.130147291532451e-4 +2.350000000000000e0,8.482677356315688e-3,8.001530980010461e-3,4.811463763052266e-4 +2.400000000000000e0,-1.373010675620613e-2,-1.419485949073218e-2,4.647527345260465e-4 +2.450000000000000e0,-3.096099229911546e-2,-3.094240168596014e-2,-1.859061315531707e-5 +2.500000000000000e0,-4.325394474697131e-2,-4.224256148900268e-2,-1.011383257968637e-3 +2.550000000000000e0,-5.288870100491437e-2,-5.031380519059944e-2,-2.574895814314929e-3 +2.600000000000000e0,-5.919960919307867e-2,-5.670952968803743e-2,-2.490079505041244e-3 +2.650000000000000e0,-6.228631704070661e-2,-6.135428800005268e-2,-9.320290406539256e-4 +2.700000000000000e0,-6.286718114059718e-2,-6.305081412694059e-2,1.836329863434127e-4 +2.750000000000000e0,-6.079208619752933e-2,-6.127376324439794e-2,4.816770468686130e-4 +2.800000000000000e0,-5.617659786201468e-2,-5.652561559186974e-2,3.490177298550515e-4 +2.850000000000000e0,-4.961333928535588e-2,-4.955663879173896e-2,-5.670049361692492e-5 +2.900000000000000e0,-4.128683795612544e-2,-4.113529316986852e-2,-1.515447862569172e-4 +2.950000000000000e0,-3.144444229255648e-2,-3.168053048321991e-2,2.360881906634318e-4 +3.000000000000000e0,-2.100881796172321e-2,-2.146831418650914e-2,4.594962247859297e-4 +3.050000000000000e0,-1.078163524290504e-2,-1.087946208821198e-2,9.782684530693780e-5 +3.100000000000000e0,-3.069348339932706e-5,-4.587705779771952e-4,4.280770945778682e-4 +3.150000000000000e0,9.914164414804224e-3,9.061277594673041e-3,8.528868201311823e-4 +3.200000000000000e0,1.794609021427410e-2,1.708921245437348e-2,8.568777599006240e-4 +3.250000000000000e0,2.354117199656585e-2,2.332543994108142e-2,2.157320554844293e-4 +3.300000000000000e0,2.846332419993366e-2,2.767369495791551e-2,7.896292420181486e-4 +3.350000000000000e0,3.113479162564977e-2,2.994275657939049e-2,1.192035046259286e-3 +3.400000000000000e0,3.087895946040832e-2,2.989024823516422e-2,9.887112252441009e-4 +3.450000000000000e0,2.759693099381686e-2,2.740457688441883e-2,1.923541093980310e-4 +3.500000000000000e0,2.338124633163244e-2,2.261174459581147e-2,7.695017358209724e-4 +3.550000000000000e0,1.680358945814981e-2,1.579795282183295e-2,1.005636636316861e-3 +3.600000000000000e0,8.045866919473170e-3,7.323249415895688e-3,7.226175035774818e-4 +3.650000000000000e0,-2.331938759021662e-3,-2.380798998970953e-3,4.886023994929130e-5 +3.700000000000000e0,-1.248870274288472e-2,-1.281254498424808e-2,3.238422413633559e-4 +3.750000000000000e0,-2.308265152946325e-2,-2.339859823437767e-2,3.159467049144264e-4 +3.800000000000000e0,-3.341433664606457e-2,-3.353472147970279e-2,1.203848336382221e-4 +3.850000000000000e0,-4.271932803975675e-2,-4.262032967414725e-2,-9.899836560949699e-5 +3.900000000000000e0,-5.011790202354126e-2,-5.008641634667832e-2,-3.148567686293846e-5 +3.950000000000000e0,-5.547470551560178e-2,-5.541970665377990e-2,-5.499886182187830e-5 +4.000000000000000e0,-5.830307224982125e-2,-5.818284346494816e-2,-1.202287848730901e-4 +4.050000000000000e0,-5.822449252474706e-2,-5.803659160936112e-2,-1.879009153859454e-4 +4.100000000000001e0,-5.495052302585778e-2,-5.478653800353910e-2,-1.639850223186801e-4 +4.150000000000000e0,-4.868673827251153e-2,-4.847398543699171e-2,-2.127528355198166e-4 +4.200000000000000e0,-3.958109007881210e-2,-3.934649815839190e-2,-2.345919204201977e-4 +4.250000000000000e0,-2.797908757281363e-2,-2.782024409440195e-2,-1.588434784116771e-4 +4.300000000000000e0,-1.460436139697236e-2,-1.441432204924694e-2,-1.900393477254191e-4 +4.350000000000001e0,1.764455273480705e-4,3.265218023979571e-4,-1.500762750498866e-4 +4.400000000000000e0,1.571370376507279e-2,1.578191918956779e-2,-6.821542449500159e-5 +4.450000000000000e0,3.129006397787008e-2,3.125449153850474e-2,3.557243936533339e-5 +4.500000000000000e0,4.607662173455388e-2,4.598155098922993e-2,9.507074532395104e-5 +4.550000000000000e0,5.929494315412962e-2,5.917879554031483e-2,1.161476138147946e-4 +4.600000000000001e0,7.026218183033477e-2,7.011813343809929e-2,1.440483922354741e-4 +4.650000000000000e0,7.835272305096595e-2,7.816915293860129e-2,1.835701123646671e-4 +4.700000000000000e0,8.294001719785886e-2,8.281759304920717e-2,1.224241486516842e-4 +4.750000000000000e0,8.378349010112382e-2,8.368420542837066e-2,9.928467275316377e-5 +4.800000000000001e0,8.074464670676472e-2,8.058963229390792e-2,1.550144128567993e-4 +4.850000000000001e0,7.380794223529427e-2,7.358342092383775e-2,2.245213114565187e-4 +4.900000000000000e0,6.312965768932952e-2,6.295556973109265e-2,1.740879582368682e-4 +4.950000000000000e0,4.937407878338891e-2,4.920365892816373e-2,1.704198552251804e-4 +5.000000000000000e0,3.312985097895305e-2,3.296768579203947e-2,1.621651869135807e-4 +5.050000000000001e0,1.509115669526728e-2,1.498984481746126e-2,1.013118778060238e-4 +5.100000000000001e0,-3.946260641197281e-3,-3.929514776377779e-3,-1.674586481950190e-5 +5.150000000000000e0,-2.304515163722502e-2,-2.295628888039202e-2,-8.886275683299416e-5 +5.200000000000000e0,-4.132105879520972e-2,-4.122508671583548e-2,-9.597207937424301e-5 +5.250000000000000e0,-5.794934187946500e-2,-5.786692630852265e-2,-8.241557094235130e-5 +5.300000000000001e0,-7.210641109574137e-2,-7.202556967489648e-2,-8.084142084488488e-5 +5.350000000000001e0,-8.298814986246951e-2,-8.291373033798419e-2,-7.441952448532241e-5 +5.400000000000000e0,-9.005707286378975e-2,-8.992350683799055e-2,-1.335660257991977e-4 +5.450000000000000e0,-9.288674998084803e-2,-9.268088631045045e-2,-2.058636703975852e-4 +5.500000000000000e0,-9.126620406348990e-2,-9.107908727781257e-2,-1.871167856773298e-4 +5.550000000000001e0,-8.541293971886052e-2,-8.523224567628562e-2,-1.806940425748971e-4 +5.600000000000001e0,-7.559309665749203e-2,-7.540638119559814e-2,-1.867154618938882e-4 +5.650000000000000e0,-6.217589859645557e-2,-6.200189369554369e-2,-1.740049009118783e-4 +5.700000000000000e0,-4.565139040709371e-2,-4.557316986790264e-2,-7.822053919107064e-5 +5.750000000000000e0,-2.693549564562055e-2,-2.687967771539055e-2,-5.581793023000034e-5 +5.800000000000001e0,-6.924580849920783e-3,-6.849405836761214e-3,-7.517501315956916e-5 +5.850000000000001e0,1.340570938210975e-2,1.348432009170464e-2,-7.861070959488785e-5 +5.900000000000000e0,3.302271158883728e-2,3.308903116410555e-2,-6.631957526827270e-5 +5.950000000000000e0,5.100103156381335e-2,5.102264616099141e-2,-2.161459717806014e-5 +6.000000000000000e0,6.649093746103298e-2,6.644019174355857e-2,5.074571747440415e-5 +6.050000000000001e0,7.872812222143294e-2,7.862235679434557e-2,1.057654270873731e-4 +6.100000000000001e0,8.705402469344249e-2,8.699505008224447e-2,5.897461119802605e-5 +6.150000000000000e0,9.112847246117826e-2,9.115787654823546e-2,-2.940408705719155e-5 +6.200000000000000e0,9.079376450196382e-2,9.091884418325794e-2,-1.250796812941185e-4 +6.250000000000000e0,8.610658651583034e-2,8.630565955985785e-2,-1.990730440275118e-4 +6.300000000000001e0,7.733315223758006e-2,7.756464886558304e-2,-2.314966280029807e-4 +6.350000000000001e0,6.493423032247239e-2,6.514820479733918e-2,-2.139744748667904e-4 +6.400000000000000e0,4.954089494778430e-2,4.969138238178368e-2,-1.504874339993828e-4 +6.450000000000000e0,3.192228001266886e-2,3.197887233777263e-2,-5.659232510377143e-5 +6.500000000000000e0,1.294699088569694e-2,1.290412019320335e-2,4.287069249359586e-5 +6.550000000000001e0,-6.528733841268858e-3,-6.577220900253045e-3,4.848705898418716e-5 +6.600000000000001e0,-2.550048303339753e-2,-2.549764026540373e-2,-2.842767993799927e-6 +6.650000000000000e0,-4.293149082315700e-2,-4.292794882956833e-2,-3.541993588665471e-6 +6.700000000000000e0,-5.799585450253639e-2,-5.802370193848817e-2,2.784743595177913e-5 +6.750000000000000e0,-6.999691997213742e-2,-7.006731498927628e-2,7.039501713886065e-5 +6.800000000000001e0,-7.839929055438141e-2,-7.850324998118982e-2,1.039594268084088e-4 +6.850000000000001e0,-8.285236608331778e-2,-8.296445633348552e-2,1.120902501677429e-4 +6.900000000000000e0,-8.320440190124846e-2,-8.328877256613433e-2,8.437066488586886e-5 +6.950000000000000e0,-7.950656282115315e-2,-7.952454115866209e-2,1.797833750893929e-5 +7.000000000000000e0,-7.200694948266893e-2,-7.192526911410060e-2,-8.168036856832928e-5 +7.050000000000001e0,-6.102503764931893e-2,-6.093374572850791e-2,-9.129192081101800e-5 +7.100000000000001e0,-4.715596460975839e-2,-4.715640700691572e-2,4.423971573311314e-7 +7.150000000000000e0,-3.126780653754609e-2,-3.132942550937055e-2,6.161897182446058e-5 +7.200000000000000e0,-1.418934674330234e-2,-1.427907649474588e-2,8.972975144354300e-5 +7.250000000000000e0,3.210080746657780e-3,3.121734130525496e-3,8.834661613228408e-5 +7.300000000000001e0,2.006466332493347e-2,1.999857567972660e-2,6.608764520687344e-5 +7.350000000000001e0,3.555500315365531e-2,3.551988516577422e-2,3.511798788109061e-5 +7.400000000000000e0,4.894771929816903e-2,4.893837819426151e-2,9.341103907517523e-6 +7.450000000000000e0,5.962986029885618e-2,5.962740437407831e-2,2.455924777863827e-6 +7.500000000000000e0,6.713653286287868e-2,6.711047149618247e-2,2.606136669620895e-5 +7.550000000000001e0,7.113066020430946e-2,7.108254557408521e-2,4.811463022424967e-5 +7.600000000000001e0,7.144339742150581e-2,7.142219975837473e-2,2.119766313107840e-5 +7.650000000000000e0,6.817403092691227e-2,6.819433118481183e-2,-2.030025789956369e-5 +7.700000000000000e0,6.158092832307076e-2,6.164319123625330e-2,-6.226291318254390e-5 +7.750000000000000e0,5.208300300771936e-2,5.217621235581463e-2,-9.320934809527170e-5 +7.800000000000001e0,4.023426656770648e-2,4.033975560878329e-2,-1.054890410768089e-4 +7.850000000000001e0,2.669221962890589e-2,2.678820095319883e-2,-9.598132429294512e-5 +7.900000000000000e0,1.218185456513308e-2,1.224811874907342e-2,-6.626418394034377e-5 +7.950000000000000e0,-2.542781483896941e-3,-2.520517219241452e-3,-2.226426465548950e-5 +8.000000000000000e0,-1.673744412505803e-2,-1.676400091345857e-2,2.655678840054326e-5 +8.050000000000001e0,-2.975284207259603e-2,-2.977333293763550e-2,2.049086503946862e-5 +8.100000000000000e0,-4.092881577012762e-2,-4.091886099415020e-2,-9.954775977420727e-6 +8.150000000000000e0,-4.970032327478457e-2,-4.968110509181467e-2,-1.921818296989758e-5 +8.200000000000001e0,-5.569029072838668e-2,-5.567600701799864e-2,-1.428371038803694e-5 +8.250000000000000e0,-5.867505736719136e-2,-5.867189565488429e-2,-3.161712307069020e-6 +8.300000000000001e0,-5.859134325493867e-2,-5.859796531610711e-2,6.622061168443105e-6 +8.350000000000000e0,-5.553474604189492e-2,-5.554400703826384e-2,9.260996368914975e-6 +8.400000000000000e0,-4.975009626985154e-2,-4.975159818027985e-2,1.501910428310105e-6 +8.450000000000001e0,-4.161441307168446e-2,-4.159742424055457e-2,-1.698883112988964e-5 +8.500000000000000e0,-3.161356350781516e-2,-3.156982764134590e-2,-4.373586646925359e-5 +8.550000000000001e0,-2.028798317391288e-2,-2.023998357483600e-2,-4.799959907687487e-5 +8.600000000000000e0,-8.262483752769580e-3,-8.228727770454299e-3,-3.375598231528110e-5 +8.650000000000000e0,3.804782603598307e-3,3.827479727038068e-3,-2.269712343976049e-5 +8.700000000000001e0,1.529336049369358e-2,1.530936795006152e-2,-1.600745636794361e-5 +8.750000000000000e0,2.563234234078362e-2,2.564617866034529e-2,-1.383631956167197e-5 +8.800000000000001e0,3.432831136526431e-2,3.434356122040055e-2,-1.524985513624844e-5 +8.850000000000000e0,4.098836963189501e-2,4.100669307998268e-2,-1.832344808767178e-5 +8.900000000000000e0,4.533720876030186e-2,4.535758178295143e-2,-2.037302264957380e-5 +8.950000000000001e0,4.722752566413469e-2,4.724583343258998e-2,-1.830776845528764e-5 +9.000000000000000e0,4.664345600611968e-2,4.665252827378931e-2,-9.072267669628375e-6 +9.050000000000001e0,4.368854266449609e-2,4.368722123280012e-2,1.321431695962272e-6 +9.100000000000000e0,3.858604938753427e-2,3.857880239993067e-2,7.246987603598543e-6 +9.150000000000000e0,3.167485432792515e-2,3.166068225402761e-2,1.417207389754066e-5 +9.200000000000001e0,2.337310210678788e-2,2.335012603780156e-2,2.297606898632107e-5 +9.250000000000000e0,1.415674437647669e-2,1.412354756874768e-2,3.319680772900443e-5 +9.300000000000001e0,4.532798459791320e-3,4.489379393336292e-3,4.341906645502751e-5 +9.350000000000000e0,-4.988105962925169e-3,-5.039917047772023e-3,5.181108484685407e-5 +9.400000000000000e0,-1.391842742374786e-2,-1.397513594748538e-2,5.670852373751770e-5 +9.450000000000001e0,-2.181828520144345e-2,-2.187543016706310e-2,5.714496561964877e-5 +9.500000000000000e0,-2.831668759783673e-2,-2.836992789242949e-2,5.324029459276292e-5 +9.550000000000001e0,-3.312751109350938e-2,-3.317484174443213e-2,4.733065092275140e-5 +9.600000000000001e0,-3.606872494358515e-2,-3.610552971219381e-2,3.680476860865728e-5 +9.650000000000000e0,-3.705785995327456e-2,-3.708136689927710e-2,2.350694600254666e-5 +9.700000000000001e0,-3.611449287345078e-2,-3.612505751102309e-2,1.056463757231202e-5 +9.750000000000000e0,-3.335736389554454e-2,-3.335737150533307e-2,7.609788535423156e-9 +9.800000000000001e0,-2.899463544488601e-2,-2.898714746713086e-2,-7.487977755151615e-6 +9.850000000000001e0,-2.330983714691416e-2,-2.329725107638915e-2,-1.258607052501831e-5 +9.900000000000000e0,-1.664438794660699e-2,-1.662736038323953e-2,-1.702756336745270e-5 +9.950000000000001e0,-9.377734641297149e-3,-9.354567131054040e-3,-2.316751024310920e-5 +1.000000000000000e1,-1.906234218514638e-3,-1.872848172190767e-3,-3.338604632387122e-5 +1.005000000000000e1,5.404796040903769e-3,5.427492164462626e-3,-2.269612355885672e-5 +1.010000000000000e1,1.218561599515491e-2,1.217902825553127e-2,6.587739623637248e-6 +1.015000000000000e1,1.809118501014629e-2,1.805524144004871e-2,3.594357009758034e-5 +1.020000000000000e1,2.284677558689733e-2,2.278621937645637e-2,6.055621044095960e-5 +1.025000000000000e1,2.624758846704553e-2,2.617062965873060e-2,7.695880831493085e-5 +1.030000000000000e1,2.816694317167555e-2,2.808372682602689e-2,8.321634564866301e-5 +1.035000000000000e1,2.856006307540235e-2,2.848111496202296e-2,7.894811337938804e-5 +1.040000000000000e1,2.746341385955214e-2,2.739821257867673e-2,6.520128087540711e-5 +1.045000000000000e1,2.498979150310286e-2,2.494559303993540e-2,4.419846316745107e-5 +1.050000000000000e1,2.131957437603059e-2,2.130058386675655e-2,1.899050927403959e-5 +1.055000000000000e1,1.668874249709744e-2,1.669569129211092e-2,-6.948795013474868e-6 +1.060000000000000e1,1.137441659733109e-2,1.140456359473908e-2,-3.014699740798779e-5 +1.065000000000000e1,5.678773687167644e-3,5.726311416106131e-3,-4.753772893848710e-5 +1.070000000000000e1,-8.774956853821884e-5,-3.093868396967467e-5,-5.681088456854417e-5 +1.075000000000000e1,-5.623050342041670e-3,-5.566371271701225e-3,-5.667907034044573e-5 +1.080000000000000e1,-1.064887961703624e-2,-1.060184066582380e-2,-4.703895121244660e-5 +1.085000000000000e1,-1.492450797441384e-2,-1.489549275332029e-2,-2.901522109354827e-5 +1.090000000000000e1,-1.825788455474375e-2,-1.825299994212069e-2,-4.884612623056589e-6 +1.095000000000000e1,-2.051379465178299e-2,-2.053590767384609e-2,2.211302206309163e-5 +1.100000000000000e1,-2.161869994676633e-2,-2.166676060250415e-2,4.806065573782076e-5 +1.105000000000000e1,-2.159456744100995e-2,-2.163085686820075e-2,3.628942719080541e-5 +1.110000000000000e1,-2.046336188397524e-2,-2.047465442990558e-2,1.129254593033868e-5 +1.115000000000000e1,-1.830779148453950e-2,-1.830105771378189e-2,-6.733770757612334e-6 +1.120000000000000e1,-1.527874342525686e-2,-1.526194409035614e-2,-1.679933490072484e-5 +1.125000000000000e1,-1.156741378408689e-2,-1.154841037692295e-2,-1.900340716393979e-5 +1.130000000000000e1,-7.393719137940621e-3,-7.379338145569930e-3,-1.438099237069043e-5 +1.135000000000000e1,-2.993614373945278e-3,-2.988938879825488e-3,-4.675494119789781e-6 +1.140000000000000e1,1.393968002930263e-3,1.386031097737146e-3,7.936905193117565e-6 +1.145000000000000e1,5.539847773998297e-3,5.518704446114999e-3,2.114332788329815e-5 +1.150000000000000e1,9.236330646290725e-3,9.203547913928561e-3,3.278273236216427e-5 +1.155000000000000e1,1.230735805921599e-2,1.226625721756981e-2,4.110084164617861e-5 +1.160000000000000e1,1.461659215860809e-2,1.457164282457137e-2,4.494933403672609e-5 +1.165000000000000e1,1.607308338166130e-2,1.602917070210778e-2,4.391267955351774e-5 +1.170000000000000e1,1.663431069334359e-2,1.659595801810001e-2,3.835267524358171e-5 +1.175000000000000e1,1.630653306045604e-2,1.627716503008925e-2,2.936803036679425e-5 +1.180000000000000e1,1.514253701622722e-2,1.512386329484178e-2,1.867372138543433e-5 +1.185000000000000e1,1.323700135404695e-2,1.322858963079862e-2,8.411723248329117e-6 +1.190000000000000e1,1.071981912448925e-2,1.071890850872551e-2,9.106157637401441e-7 +1.195000000000000e1,7.747813406902977e-3,7.749397380750424e-3,-1.583973847447441e-6 +1.200000000000000e1,4.495352449372509e-3,4.492535878338436e-3,2.816571034073428e-6 +1.205000000000000e1,1.138837183365182e-3,1.129009678268843e-3,9.827505096338682e-6 +1.210000000000000e1,-2.152754680677382e-3,-2.162096817035537e-3,9.342136358155527e-6 +1.215000000000000e1,-5.208840147713914e-3,-5.212481968576560e-3,3.641820862645626e-6 +1.220000000000000e1,-7.877395423745761e-3,-7.872854994341653e-3,-4.540429404108551e-6 +1.225000000000000e1,-1.003253649442246e-2,-1.001991949450199e-2,-1.261699992046762e-5 +1.230000000000000e1,-1.158022120343713e-2,-1.156175306398890e-2,-1.846813944823139e-5 +1.235000000000000e1,-1.246204463338298e-2,-1.244136833240152e-2,-2.067630098145576e-5 +1.240000000000000e1,-1.265699559344238e-2,-1.263834178303834e-2,-1.865381040404117e-5 +1.245000000000000e1,-1.218115620421604e-2,-1.216849891701549e-2,-1.265728720055426e-5 +1.250000000000000e1,-1.108543754057782e-2,-1.108174336415266e-2,-3.694176425156001e-6 +1.255000000000000e1,-9.451546176179111e-3,-9.458208599265975e-3,6.662423086863448e-6 +1.260000000000000e1,-7.386464100005590e-3,-7.402989761817498e-3,1.652566181190810e-5 +1.265000000000000e1,-5.015793637789055e-3,-5.039776205606521e-3,2.398256781746544e-5 +1.270000000000000e1,-2.476366654400819e-3,-2.503750219292607e-3,2.738356489178804e-5 +1.275000000000000e1,9.145833909877638e-5,6.585776105391020e-5,2.560057804486618e-5 +1.280000000000000e1,2.551386946843573e-3,2.533162767047225e-3,1.822417979634866e-5 +1.285000000000000e1,4.778265576537009e-3,4.772588782592042e-3,5.676793944966660e-6 +1.290000000000000e1,6.664285222067114e-3,6.675057528337165e-3,-1.077230627005103e-5 +1.295000000000000e1,8.124014320982059e-3,8.153108738198085e-3,-2.909441721602596e-5 +1.300000000000000e1,9.098037222539896e-3,9.144722221219244e-3,-4.668499867934751e-5 +1.305000000000000e1,9.572219428705047e-3,9.615685819962095e-3,-4.346639125704828e-5 +1.310000000000000e1,9.525852888385301e-3,9.560466761592517e-3,-3.461387320721591e-5 +1.315000000000000e1,8.973526119073110e-3,9.001610557677649e-3,-2.808443860453924e-5 +1.320000000000000e1,7.963881966792700e-3,7.987590027620914e-3,-2.370806082821302e-5 +1.325000000000000e1,6.568277953887702e-3,6.589308887028172e-3,-2.103093314046942e-5 +1.330000000000000e1,4.876085911404945e-3,4.895520112888521e-3,-1.943420148357595e-5 +1.335000000000000e1,2.989194448085131e-3,3.007443206001367e-3,-1.824875791623607e-5 +1.340000000000000e1,1.016042362438267e-3,1.032898863024424e-3,-1.685650058615715e-5 +1.345000000000000e1,-9.344756129877832e-4,-9.197045512599945e-4,-1.477106172778869e-5 +1.350000000000000e1,-2.758895197590983e-3,-2.747201441313184e-3,-1.169375627779832e-5 +1.355000000000000e1,-4.364549500022622e-3,-4.357006341400600e-3,-7.543158622022247e-6 +1.360000000000000e1,-5.674145009500480e-3,-5.671685938644051e-3,-2.459070856429026e-6 +1.365000000000000e1,-6.629328551459121e-3,-6.632544991951675e-3,3.216440492554221e-6 +1.370000000000000e1,-7.193090425637451e-3,-7.202067296267993e-3,8.976870630542436e-6 +1.375000000000000e1,-7.350918309610118e-3,-7.365121355367849e-3,1.420304575773176e-5 +1.380000000000000e1,-7.110687900018784e-3,-7.128911471144582e-3,1.822357112579893e-5 +1.385000000000000e1,-6.501345684238788e-3,-6.521724465611306e-3,2.037878137251849e-5 +1.390000000000000e1,-5.570502952270244e-3,-5.590586389117912e-3,2.008343684766802e-5 +1.395000000000000e1,-4.381114892623029e-3,-4.397998944792540e-3,1.688405216951003e-5 +1.400000000000000e1,-3.007461706224606e-3,-3.017969208148637e-3,1.050750192403086e-5 diff --git a/doc/plots/feff_vs_larch_data/06_multi_dataset_ds1_rspace.csv b/doc/plots/feff_vs_larch_data/06_multi_dataset_ds1_rspace.csv new file mode 100644 index 0000000..629b790 --- /dev/null +++ b/doc/plots/feff_vs_larch_data/06_multi_dataset_ds1_rspace.csv @@ -0,0 +1,327 @@ +r,model,larch,diff +0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771283e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313848e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.227184630308513e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.533980787885641e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.840776945462770e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.147573103039898e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.454369260617026e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.761165418194154e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771282e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.374757733348411e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.681553890925539e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.988350048502667e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.295146206079796e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.601942363656924e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.908738521234052e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.215534678811180e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.522330836388308e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.829126993965437e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.442719309119693e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.749515466696822e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.056311624273950e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.363107781851078e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.669903939428206e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.976700097005335e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.283496254582463e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.590292412159591e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.897088569736720e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313848e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.510680884890976e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.817477042468105e-1,2.546230474567035e-1,2.558747282920494e-1,-1.251680835345881e-3 +1.012427320004523e0,2.753705451928694e-1,2.773025376727473e-1,-1.931992479877964e-3 +1.043106935762236e0,2.710599706886452e-1,2.735683477047668e-1,-2.508377016121610e-3 +1.073786551519949e0,2.399598042637487e-1,2.428152699477845e-1,-2.855465684035774e-3 +1.104466167277662e0,1.842703847005595e-1,1.870736439246672e-1,-2.803259224107679e-3 +1.135145783035375e0,1.142376860787416e-1,1.160528621453687e-1,-1.815176066627039e-3 +1.165825398793087e0,7.952224653313605e-2,7.754852264437105e-2,1.973723888765003e-3 +1.196505014550800e0,1.466686126783009e-1,1.435394888017387e-1,3.129123876562195e-3 +1.227184630308513e0,2.422569230669940e-1,2.398246866727718e-1,2.432236394222187e-3 +1.257864246066226e0,3.300745360178775e-1,3.285448278308771e-1,1.529708187000378e-3 +1.288543861823939e0,3.958178311975412e-1,3.952356005942735e-1,5.822306032676194e-4 +1.319223477581652e0,4.300311780122739e-1,4.303765632963322e-1,-3.453852840582528e-4 +1.349903093339364e0,4.268895963203056e-1,4.281042025947471e-1,-1.214606274441532e-3 +1.380582709097077e0,3.848519071676677e-1,3.868824236805590e-1,-2.030516512891323e-3 +1.411262324854790e0,3.083566733733141e-1,3.112457492914950e-1,-2.889075918180883e-3 +1.441941940612503e0,2.146525350689777e-1,2.186900221436502e-1,-4.037487074672497e-3 +1.472621556370216e0,1.666322769265994e-1,1.713715343640317e-1,-4.739257437432309e-3 +1.503301172127929e0,2.491965763805419e-1,2.522984049733616e-1,-3.101828592819739e-3 +1.533980787885641e0,3.985077453425581e-1,4.007499536517847e-1,-2.242208309226668e-3 +1.564660403643354e0,5.580725240932709e-1,5.602156878439984e-1,-2.143163750727539e-3 +1.595340019401067e0,7.057250400256482e-1,7.080747496897777e-1,-2.349709664129507e-3 +1.626019635158780e0,8.282598063289669e-1,8.309103089696968e-1,-2.650502640729857e-3 +1.656699250916493e0,9.162759119910453e-1,9.192091106321986e-1,-2.933198641153267e-3 +1.687378866674206e0,9.633319885384484e-1,9.664718537914971e-1,-3.139865253048768e-3 +1.718058482431918e0,9.663814853015655e-1,9.696463180008973e-1,-3.264832699331754e-3 +1.748738098189631e0,9.279668310790767e-1,9.313364995536739e-1,-3.369668474597187e-3 +1.779417713947344e0,8.625851357136251e-1,8.661831888946288e-1,-3.598053181003702e-3 +1.810097329705057e0,8.111043165614866e-1,8.152192139578609e-1,-4.114897396374273e-3 +1.840776945462770e0,8.537670098622300e-1,8.585669246158346e-1,-4.799914753604639e-3 +1.871456561220483e0,1.067941579479174e0,1.073147035846165e0,-5.205456366990102e-3 +1.902136176978195e0,1.459032840178840e0,1.464292537682443e0,-5.259697503602778e-3 +1.932815792735908e0,1.990485412443446e0,1.995552166800125e0,-5.066754356678915e-3 +1.963495408493621e0,2.626892236314216e0,2.631504866577784e0,-4.612630263567841e-3 +1.994175024251334e0,3.337599905042101e0,3.341457869106104e0,-3.857964064002406e-3 +2.024854640009047e0,4.091998220894070e0,4.094800195811356e0,-2.801974917286287e-3 +2.055534255766760e0,4.857323067979843e0,4.858817085637143e0,-1.494017657299729e-3 +2.086213871524472e0,5.598767631332963e0,5.598794766069281e0,-2.713473631743568e-5 +2.116893487282185e0,6.280896167083924e0,6.279420966997848e0,1.475200086075823e-3 +2.147573103039898e0,6.869710829478365e0,6.866835054406098e0,2.875775072266329e-3 +2.178252718797611e0,7.334937791103841e0,7.330896104199549e0,4.041686904292519e-3 +2.208932334555323e0,7.652203663068011e0,7.647342037861583e0,4.861625206427966e-3 +2.239611950313036e0,7.804841167367546e0,7.799580915633002e0,5.260251734544141e-3 +2.270291566070749e0,7.785126916177555e0,7.779919120036420e0,5.207796141134757e-3 +2.300971181828462e0,7.594823947289765e0,7.590100373557053e0,4.723573732711372e-3 +2.331650797586175e0,7.244977027561553e0,7.241104068945938e0,3.872958615614763e-3 +2.362330413343888e0,6.754984873830030e0,6.752226580629729e0,2.758293200300521e-3 +2.393010029101601e0,6.151043943375170e0,6.149538810225253e0,1.505133149916738e-3 +2.423689644859313e0,5.464116970197089e0,5.463871001281782e0,2.459689153067046e-4 +2.454369260617026e0,4.727620847791227e0,4.728516833078941e0,-8.959852877135077e-4 +2.485048876374739e0,3.975049752546514e0,3.976869996679484e0,-1.820244132970661e-3 +2.515728492132452e0,3.237750405503932e0,3.240207673360869e0,-2.457267856936785e-3 +2.546408107890165e0,2.543051043057968e0,2.545820338318451e0,-2.769295260483418e-3 +2.577087723647877e0,1.912925866002298e0,1.915667395558472e0,-2.741529556173905e-3 +2.607767339405590e0,1.363387539337986e0,1.365746689105934e0,-2.359149767947821e-3 +2.638446955163303e0,9.049729143250297e-1,9.065281295332590e-1,-1.555215208229321e-3 +2.669126570921016e0,5.456519713837195e-1,5.457278491961594e-1,-7.587781243989511e-5 +2.699806186678729e0,3.023334372290988e-1,2.995637851445563e-1,2.769652084542495e-3 +2.730485802436442e0,2.226549970601994e-1,2.168737554915928e-1,5.781241568606543e-3 +2.761165418194155e0,2.736521103842465e-1,2.686193902273983e-1,5.032720156848247e-3 +2.791845033951867e0,3.366083323547611e-1,3.329778384071310e-1,3.630493947630042e-3 +2.822524649709580e0,3.753031188003854e-1,3.728526645956100e-1,2.450454204775465e-3 +2.853204265467293e0,3.888608137005197e-1,3.874305587762821e-1,1.430254924237651e-3 +2.883883881225006e0,3.828558444491955e-1,3.823077963355339e-1,5.480481136616033e-4 +2.914563496982719e0,3.634597273021040e-1,3.636196885703041e-1,-1.599612682000595e-4 +2.945243112740431e0,3.363870753876250e-1,3.370278655756987e-1,-6.407901880737255e-4 +2.975922728498144e0,1.150814612633580e-33,1.154059954646660e-33,-3.245342013079871e-36 +3.006602344255857e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.037281960013570e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771283e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.098641191528996e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.129320807286708e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.160000423044421e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.190680038802134e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.221359654559847e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.252039270317560e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.282718886075272e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.313398501832985e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.344078117590698e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.374757733348411e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.405437349106124e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.436116964863837e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.466796580621549e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.497476196379262e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.528155812136975e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.558835427894688e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.589515043652401e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.620194659410114e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.650874275167826e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.681553890925539e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.712233506683252e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.742913122440965e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.773592738198678e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.804272353956391e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.834951969714103e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.865631585471816e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.896311201229529e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.926990816987242e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.957670432744955e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.988350048502667e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.019029664260381e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.049709280018093e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.080388895775806e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.111068511533519e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.141748127291232e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.172427743048944e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.203107358806657e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.233786974564370e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.264466590322083e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.295146206079796e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.325825821837508e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.356505437595222e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.387185053352934e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.417864669110647e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.448544284868360e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.479223900626073e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.509903516383786e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.540583132141498e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.571262747899211e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.601942363656924e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.632621979414637e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.663301595172349e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.693981210930063e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.724660826687775e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.755340442445489e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.786020058203201e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.816699673960914e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.847379289718627e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.878058905476339e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.908738521234052e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.939418136991765e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.970097752749478e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.000777368507190e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.031456984264904e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.062136600022616e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.092816215780330e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.123495831538042e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.154175447295755e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.184855063053468e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.215534678811180e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.246214294568893e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.276893910326606e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.307573526084319e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.338253141842032e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.368932757599745e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.399612373357457e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.430291989115171e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.460971604872883e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.491651220630596e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.522330836388309e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.553010452146022e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.583690067903735e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.614369683661447e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.645049299419160e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.675728915176873e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.706408530934586e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.737088146692298e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.767767762450012e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.798447378207724e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.829126993965438e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.859806609723150e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.890486225480863e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.921165841238576e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.951845456996288e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.982525072754001e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.013204688511714e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.043884304269427e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.074563920027139e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.105243535784853e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.166602767300279e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.197282383057991e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.227961998815704e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.258641614573417e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.289321230331129e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.320000846088842e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.350680461846555e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.381360077604268e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.412039693361981e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.442719309119694e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.473398924877406e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.504078540635120e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.534758156392832e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.565437772150545e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.596117387908258e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.626797003665970e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.657476619423684e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.688156235181396e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.718835850939109e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.749515466696822e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.780195082454535e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.810874698212247e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.841554313969961e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.872233929727673e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.902913545485386e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.933593161243099e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.964272777000811e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.994952392758525e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.025632008516237e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.056311624273950e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.086991240031663e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.117670855789376e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.148350471547088e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.179030087304802e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.209709703062514e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.240389318820228e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.271068934577940e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.301748550335653e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.332428166093366e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.363107781851078e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.393787397608791e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.424467013366504e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.455146629124217e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.485826244881930e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.516505860639643e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.547185476397355e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.577865092155069e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.608544707912781e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.639224323670494e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.669903939428207e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.700583555185919e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.731263170943633e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.761942786701345e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.792622402459058e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.823302018216771e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.853981633974484e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.884661249732196e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.915340865489910e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.946020481247622e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.976700097005335e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.007379712763047e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.038059328520761e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.068738944278474e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.099418560036186e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.130098175793899e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.160777791551611e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.191457407309326e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.222137023067038e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.252816638824751e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.283496254582463e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.314175870340176e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.344855486097888e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.375535101855602e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.406214717613315e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.436894333371027e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.467573949128740e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.498253564886452e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.528933180644167e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.559612796401879e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.590292412159592e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.620972027917304e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.651651643675017e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.682331259432731e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.713010875190443e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.743690490948156e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.774370106705868e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.805049722463581e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.835729338221293e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.866408953979008e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.897088569736720e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.927768185494433e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.958447801252145e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.989127417009858e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.019807032767572e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.050486648525284e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.081166264282997e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.111845880040709e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.142525495798422e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.173205111556134e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313849e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.234564343071561e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.265243958829274e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.295923574586986e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.326603190344699e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.357282806102413e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.387962421860125e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.418642037617838e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.449321653375550e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.480001269133263e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.510680884890977e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.541360500648690e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.572040116406402e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.602719732164115e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.633399347921827e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.664078963679540e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.694758579437254e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.725438195194966e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.756117810952679e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.786797426710391e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.817477042468104e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.848156658225818e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.878836273983531e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.909515889741243e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.940195505498956e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.970875121256668e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 diff --git a/doc/plots/feff_vs_larch_data/06_multi_dataset_ds1_rspace_contrib.csv b/doc/plots/feff_vs_larch_data/06_multi_dataset_ds1_rspace_contrib.csv new file mode 100644 index 0000000..099986d --- /dev/null +++ b/doc/plots/feff_vs_larch_data/06_multi_dataset_ds1_rspace_contrib.csv @@ -0,0 +1,327 @@ +r,total_model,total_larch,diff,feffcu01dat_00 +0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771283e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313848e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.227184630308513e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.533980787885641e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.840776945462770e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.147573103039898e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.454369260617026e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.761165418194154e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771282e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.374757733348411e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.681553890925539e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.988350048502667e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.295146206079796e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.601942363656924e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.908738521234052e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.215534678811180e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.522330836388308e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.829126993965437e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.442719309119693e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.749515466696822e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.056311624273950e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.363107781851078e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.669903939428206e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.976700097005335e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.283496254582463e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.590292412159591e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.897088569736720e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313848e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.510680884890976e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.817477042468105e-1,2.546230474567035e-1,2.558747282920494e-1,-1.251680835345881e-3,2.546230474567035e-1 +1.012427320004523e0,2.753705451928694e-1,2.773025376727473e-1,-1.931992479877964e-3,2.753705451928694e-1 +1.043106935762236e0,2.710599706886452e-1,2.735683477047668e-1,-2.508377016121610e-3,2.710599706886452e-1 +1.073786551519949e0,2.399598042637487e-1,2.428152699477845e-1,-2.855465684035774e-3,2.399598042637487e-1 +1.104466167277662e0,1.842703847005595e-1,1.870736439246672e-1,-2.803259224107679e-3,1.842703847005595e-1 +1.135145783035375e0,1.142376860787416e-1,1.160528621453687e-1,-1.815176066627039e-3,1.142376860787416e-1 +1.165825398793087e0,7.952224653313605e-2,7.754852264437105e-2,1.973723888765003e-3,7.952224653313605e-2 +1.196505014550800e0,1.466686126783009e-1,1.435394888017387e-1,3.129123876562195e-3,1.466686126783009e-1 +1.227184630308513e0,2.422569230669940e-1,2.398246866727718e-1,2.432236394222187e-3,2.422569230669940e-1 +1.257864246066226e0,3.300745360178775e-1,3.285448278308771e-1,1.529708187000378e-3,3.300745360178775e-1 +1.288543861823939e0,3.958178311975412e-1,3.952356005942735e-1,5.822306032676194e-4,3.958178311975412e-1 +1.319223477581652e0,4.300311780122739e-1,4.303765632963322e-1,-3.453852840582528e-4,4.300311780122739e-1 +1.349903093339364e0,4.268895963203056e-1,4.281042025947471e-1,-1.214606274441532e-3,4.268895963203056e-1 +1.380582709097077e0,3.848519071676677e-1,3.868824236805590e-1,-2.030516512891323e-3,3.848519071676677e-1 +1.411262324854790e0,3.083566733733141e-1,3.112457492914950e-1,-2.889075918180883e-3,3.083566733733141e-1 +1.441941940612503e0,2.146525350689777e-1,2.186900221436502e-1,-4.037487074672497e-3,2.146525350689777e-1 +1.472621556370216e0,1.666322769265994e-1,1.713715343640317e-1,-4.739257437432309e-3,1.666322769265994e-1 +1.503301172127929e0,2.491965763805419e-1,2.522984049733616e-1,-3.101828592819739e-3,2.491965763805419e-1 +1.533980787885641e0,3.985077453425581e-1,4.007499536517847e-1,-2.242208309226668e-3,3.985077453425581e-1 +1.564660403643354e0,5.580725240932709e-1,5.602156878439984e-1,-2.143163750727539e-3,5.580725240932709e-1 +1.595340019401067e0,7.057250400256482e-1,7.080747496897777e-1,-2.349709664129507e-3,7.057250400256482e-1 +1.626019635158780e0,8.282598063289669e-1,8.309103089696968e-1,-2.650502640729857e-3,8.282598063289669e-1 +1.656699250916493e0,9.162759119910453e-1,9.192091106321986e-1,-2.933198641153267e-3,9.162759119910453e-1 +1.687378866674206e0,9.633319885384484e-1,9.664718537914971e-1,-3.139865253048768e-3,9.633319885384484e-1 +1.718058482431918e0,9.663814853015655e-1,9.696463180008973e-1,-3.264832699331754e-3,9.663814853015655e-1 +1.748738098189631e0,9.279668310790767e-1,9.313364995536739e-1,-3.369668474597187e-3,9.279668310790767e-1 +1.779417713947344e0,8.625851357136251e-1,8.661831888946288e-1,-3.598053181003702e-3,8.625851357136251e-1 +1.810097329705057e0,8.111043165614866e-1,8.152192139578609e-1,-4.114897396374273e-3,8.111043165614866e-1 +1.840776945462770e0,8.537670098622300e-1,8.585669246158346e-1,-4.799914753604639e-3,8.537670098622300e-1 +1.871456561220483e0,1.067941579479174e0,1.073147035846165e0,-5.205456366990102e-3,1.067941579479174e0 +1.902136176978195e0,1.459032840178840e0,1.464292537682443e0,-5.259697503602778e-3,1.459032840178840e0 +1.932815792735908e0,1.990485412443446e0,1.995552166800125e0,-5.066754356678915e-3,1.990485412443446e0 +1.963495408493621e0,2.626892236314216e0,2.631504866577784e0,-4.612630263567841e-3,2.626892236314216e0 +1.994175024251334e0,3.337599905042101e0,3.341457869106104e0,-3.857964064002406e-3,3.337599905042101e0 +2.024854640009047e0,4.091998220894070e0,4.094800195811356e0,-2.801974917286287e-3,4.091998220894070e0 +2.055534255766760e0,4.857323067979843e0,4.858817085637143e0,-1.494017657299729e-3,4.857323067979843e0 +2.086213871524472e0,5.598767631332963e0,5.598794766069281e0,-2.713473631743568e-5,5.598767631332963e0 +2.116893487282185e0,6.280896167083924e0,6.279420966997848e0,1.475200086075823e-3,6.280896167083924e0 +2.147573103039898e0,6.869710829478365e0,6.866835054406098e0,2.875775072266329e-3,6.869710829478365e0 +2.178252718797611e0,7.334937791103841e0,7.330896104199549e0,4.041686904292519e-3,7.334937791103841e0 +2.208932334555323e0,7.652203663068011e0,7.647342037861583e0,4.861625206427966e-3,7.652203663068011e0 +2.239611950313036e0,7.804841167367546e0,7.799580915633002e0,5.260251734544141e-3,7.804841167367546e0 +2.270291566070749e0,7.785126916177555e0,7.779919120036420e0,5.207796141134757e-3,7.785126916177555e0 +2.300971181828462e0,7.594823947289765e0,7.590100373557053e0,4.723573732711372e-3,7.594823947289765e0 +2.331650797586175e0,7.244977027561553e0,7.241104068945938e0,3.872958615614763e-3,7.244977027561553e0 +2.362330413343888e0,6.754984873830030e0,6.752226580629729e0,2.758293200300521e-3,6.754984873830030e0 +2.393010029101601e0,6.151043943375170e0,6.149538810225253e0,1.505133149916738e-3,6.151043943375170e0 +2.423689644859313e0,5.464116970197089e0,5.463871001281782e0,2.459689153067046e-4,5.464116970197089e0 +2.454369260617026e0,4.727620847791227e0,4.728516833078941e0,-8.959852877135077e-4,4.727620847791227e0 +2.485048876374739e0,3.975049752546514e0,3.976869996679484e0,-1.820244132970661e-3,3.975049752546514e0 +2.515728492132452e0,3.237750405503932e0,3.240207673360869e0,-2.457267856936785e-3,3.237750405503932e0 +2.546408107890165e0,2.543051043057968e0,2.545820338318451e0,-2.769295260483418e-3,2.543051043057968e0 +2.577087723647877e0,1.912925866002298e0,1.915667395558472e0,-2.741529556173905e-3,1.912925866002298e0 +2.607767339405590e0,1.363387539337986e0,1.365746689105934e0,-2.359149767947821e-3,1.363387539337986e0 +2.638446955163303e0,9.049729143250297e-1,9.065281295332590e-1,-1.555215208229321e-3,9.049729143250297e-1 +2.669126570921016e0,5.456519713837195e-1,5.457278491961594e-1,-7.587781243989511e-5,5.456519713837195e-1 +2.699806186678729e0,3.023334372290988e-1,2.995637851445563e-1,2.769652084542495e-3,3.023334372290988e-1 +2.730485802436442e0,2.226549970601994e-1,2.168737554915928e-1,5.781241568606543e-3,2.226549970601994e-1 +2.761165418194155e0,2.736521103842465e-1,2.686193902273983e-1,5.032720156848247e-3,2.736521103842465e-1 +2.791845033951867e0,3.366083323547611e-1,3.329778384071310e-1,3.630493947630042e-3,3.366083323547611e-1 +2.822524649709580e0,3.753031188003854e-1,3.728526645956100e-1,2.450454204775465e-3,3.753031188003854e-1 +2.853204265467293e0,3.888608137005197e-1,3.874305587762821e-1,1.430254924237651e-3,3.888608137005197e-1 +2.883883881225006e0,3.828558444491955e-1,3.823077963355339e-1,5.480481136616033e-4,3.828558444491955e-1 +2.914563496982719e0,3.634597273021040e-1,3.636196885703041e-1,-1.599612682000595e-4,3.634597273021040e-1 +2.945243112740431e0,3.363870753876250e-1,3.370278655756987e-1,-6.407901880737255e-4,3.363870753876250e-1 +2.975922728498144e0,1.150814612633580e-33,1.154059954646660e-33,-3.245342013079871e-36,1.150814612633580e-33 +3.006602344255857e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.037281960013570e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771283e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.098641191528996e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.129320807286708e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.160000423044421e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.190680038802134e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.221359654559847e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.252039270317560e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.282718886075272e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.313398501832985e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.344078117590698e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.374757733348411e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.405437349106124e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.436116964863837e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.466796580621549e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.497476196379262e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.528155812136975e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.558835427894688e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.589515043652401e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.620194659410114e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.650874275167826e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.681553890925539e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.712233506683252e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.742913122440965e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.773592738198678e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.804272353956391e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.834951969714103e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.865631585471816e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.896311201229529e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.926990816987242e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.957670432744955e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.988350048502667e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.019029664260381e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.049709280018093e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.080388895775806e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.111068511533519e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.141748127291232e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.172427743048944e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.203107358806657e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.233786974564370e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.264466590322083e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.295146206079796e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.325825821837508e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.356505437595222e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.387185053352934e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.417864669110647e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.448544284868360e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.479223900626073e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.509903516383786e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.540583132141498e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.571262747899211e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.601942363656924e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.632621979414637e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.663301595172349e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.693981210930063e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.724660826687775e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.755340442445489e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.786020058203201e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.816699673960914e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.847379289718627e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.878058905476339e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.908738521234052e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.939418136991765e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.970097752749478e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.000777368507190e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.031456984264904e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.062136600022616e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.092816215780330e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.123495831538042e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.154175447295755e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.184855063053468e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.215534678811180e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.246214294568893e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.276893910326606e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.307573526084319e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.338253141842032e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.368932757599745e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.399612373357457e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.430291989115171e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.460971604872883e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.491651220630596e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.522330836388309e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.553010452146022e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.583690067903735e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.614369683661447e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.645049299419160e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.675728915176873e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.706408530934586e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.737088146692298e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.767767762450012e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.798447378207724e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.829126993965438e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.859806609723150e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.890486225480863e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.921165841238576e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.951845456996288e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.982525072754001e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.013204688511714e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.043884304269427e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.074563920027139e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.105243535784853e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.166602767300279e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.197282383057991e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.227961998815704e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.258641614573417e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.289321230331129e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.320000846088842e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.350680461846555e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.381360077604268e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.412039693361981e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.442719309119694e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.473398924877406e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.504078540635120e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.534758156392832e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.565437772150545e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.596117387908258e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.626797003665970e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.657476619423684e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.688156235181396e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.718835850939109e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.749515466696822e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.780195082454535e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.810874698212247e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.841554313969961e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.872233929727673e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.902913545485386e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.933593161243099e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.964272777000811e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.994952392758525e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.025632008516237e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.056311624273950e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.086991240031663e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.117670855789376e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.148350471547088e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.179030087304802e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.209709703062514e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.240389318820228e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.271068934577940e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.301748550335653e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.332428166093366e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.363107781851078e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.393787397608791e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.424467013366504e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.455146629124217e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.485826244881930e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.516505860639643e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.547185476397355e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.577865092155069e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.608544707912781e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.639224323670494e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.669903939428207e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.700583555185919e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.731263170943633e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.761942786701345e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.792622402459058e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.823302018216771e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.853981633974484e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.884661249732196e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.915340865489910e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.946020481247622e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.976700097005335e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.007379712763047e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.038059328520761e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.068738944278474e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.099418560036186e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.130098175793899e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.160777791551611e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.191457407309326e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.222137023067038e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.252816638824751e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.283496254582463e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.314175870340176e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.344855486097888e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.375535101855602e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.406214717613315e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.436894333371027e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.467573949128740e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.498253564886452e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.528933180644167e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.559612796401879e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.590292412159592e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.620972027917304e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.651651643675017e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.682331259432731e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.713010875190443e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.743690490948156e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.774370106705868e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.805049722463581e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.835729338221293e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.866408953979008e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.897088569736720e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.927768185494433e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.958447801252145e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.989127417009858e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.019807032767572e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.050486648525284e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.081166264282997e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.111845880040709e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.142525495798422e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.173205111556134e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313849e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.234564343071561e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.265243958829274e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.295923574586986e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.326603190344699e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.357282806102413e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.387962421860125e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.418642037617838e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.449321653375550e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.480001269133263e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.510680884890977e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.541360500648690e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.572040116406402e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.602719732164115e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.633399347921827e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.664078963679540e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.694758579437254e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.725438195194966e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.756117810952679e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.786797426710391e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.817477042468104e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.848156658225818e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.878836273983531e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.909515889741243e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.940195505498956e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.970875121256668e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 diff --git a/doc/plots/feff_vs_larch_data/07_multi_dataset_ds2.csv b/doc/plots/feff_vs_larch_data/07_multi_dataset_ds2.csv new file mode 100644 index 0000000..aa88e23 --- /dev/null +++ b/doc/plots/feff_vs_larch_data/07_multi_dataset_ds2.csv @@ -0,0 +1,281 @@ +k,model,larch,diff +5.000000000000000e-2,0.000000000000000e0,-3.004169364982455e-1,3.004169364982455e-1 +1.000000000000000e-1,0.000000000000000e0,-3.028599019623773e-1,3.028599019623773e-1 +1.500000000000000e-1,0.000000000000000e0,-3.053028674265091e-1,3.053028674265091e-1 +2.000000000000000e-1,0.000000000000000e0,-3.086716147668306e-1,3.086716147668306e-1 +2.500000000000000e-1,0.000000000000000e0,-3.129124878200045e-1,3.129124878200045e-1 +3.000000000000000e-1,0.000000000000000e0,-3.179532062114368e-1,3.179532062114368e-1 +3.500000000000000e-1,0.000000000000000e0,-3.237002129304355e-1,3.237002129304355e-1 +4.000000000000000e-1,0.000000000000000e0,-3.300350931702580e-1,3.300350931702580e-1 +4.500000000000000e-1,0.000000000000000e0,-3.368094875634737e-1,3.368094875634737e-1 +5.000000000000000e-1,0.000000000000000e0,-3.438366516251072e-1,3.438366516251072e-1 +5.500000000000000e-1,0.000000000000000e0,-3.508707890133191e-1,3.508707890133191e-1 +6.000000000000001e-1,0.000000000000000e0,-3.574452979919543e-1,3.574452979919543e-1 +6.500000000000000e-1,-3.523128318346420e-1,-3.501577306932779e-1,-2.155101141364080e-3 +7.000000000000001e-1,-3.426835575176156e-1,-3.405942413177491e-1,-2.089316199866464e-3 +7.500000000000000e-1,-3.321243851890069e-1,-3.300357874890825e-1,-2.088597699924422e-3 +8.000000000000000e-1,-3.205578852230205e-1,-3.183303142416022e-1,-2.227570981418348e-3 +8.500000000000001e-1,-3.077163454110787e-1,-3.053143758861092e-1,-2.401969524969516e-3 +9.000000000000000e-1,-2.925399997429783e-1,-2.908142127027583e-1,-1.725787040219973e-3 +9.500000000000001e-1,-2.762119276418759e-1,-2.746697006743047e-1,-1.542226967571170e-3 +1.000000000000000e0,-2.583811518792906e-1,-2.566904091810707e-1,-1.690742698219949e-3 +1.050000000000000e0,-2.376209538029477e-1,-2.366915795844709e-1,-9.293742184767750e-4 +1.100000000000000e0,-2.154913030516494e-1,-2.146150108471137e-1,-8.762922045357779e-4 +1.150000000000000e0,-1.908663183141012e-1,-1.903978999284350e-1,-4.684183856661639e-4 +1.200000000000000e0,-1.639985531306323e-1,-1.639657785887687e-1,-3.277454186359496e-5 +1.250000000000000e0,-1.355875616736555e-1,-1.354458407271037e-1,-1.417209465517655e-4 +1.300000000000000e0,-1.045221410983823e-1,-1.050901753780835e-1,5.680342797012017e-4 +1.350000000000000e0,-7.284683198757985e-2,-7.321869693233499e-2,3.718649447551348e-4 +1.400000000000000e0,-3.926194392956799e-2,-4.024892562746904e-2,9.869816979010543e-4 +1.450000000000000e0,-5.729074741672301e-3,-6.700430123979782e-3,9.713553823074809e-4 +1.500000000000000e0,2.803364321211431e-2,2.680692382766853e-2,1.226719384445775e-3 +1.550000000000000e0,6.085974685061533e-2,5.961777704622420e-2,1.241969804391133e-3 +1.600000000000000e0,9.206928163717441e-2,9.087616707522274e-2,1.193114561951675e-3 +1.650000000000000e0,1.207626517109994e-1,1.195655016592855e-1,1.197150051713960e-3 +1.700000000000000e0,1.458886225902348e-1,1.448409228968288e-1,1.047699693406068e-3 +1.750000000000000e0,1.669861849392670e-1,1.659637995759865e-1,1.022385363280559e-3 +1.800000000000000e0,1.830732826743403e-1,1.822495368952257e-1,8.237457791146763e-4 +1.850000000000000e0,1.937035433932704e-1,1.931074963665654e-1,5.960470267050155e-4 +1.900000000000000e0,1.984778563797486e-1,1.979268769105310e-1,5.509794692175607e-4 +1.950000000000000e0,1.965217886848239e-1,1.963472264424164e-1,1.745622424075000e-4 +2.000000000000000e0,1.887146117155747e-1,1.884735806610938e-1,2.410310544808392e-4 +2.050000000000000e0,1.745809918079641e-1,1.746564628031881e-1,-7.547099522400846e-5 +2.100000000000000e0,1.552734706715508e-1,1.554951523414868e-1,-2.216816699359969e-4 +2.150000000000000e0,1.302232566528749e-1,1.316825343937293e-1,-1.459277740854470e-3 +2.200000000000000e0,1.023598088589667e-1,1.040714544493425e-1,-1.711645590375815e-3 +2.250000000000000e0,7.305797602777966e-2,7.400141872601719e-2,-9.434426982375260e-4 +2.300000000000000e0,4.307751810516241e-2,4.302716422678934e-2,5.035387837306476e-5 +2.350000000000000e0,1.353742279882151e-2,1.309155149630827e-2,4.458713025132406e-4 +2.400000000000000e0,-1.248162920479789e-2,-1.310367525509092e-2,6.220460502930243e-4 +2.450000000000000e0,-3.289080187791590e-2,-3.302927308564903e-2,1.384712077331304e-4 +2.500000000000000e0,-4.734372446664729e-2,-4.640763667407481e-2,-9.360877925724820e-4 +2.550000000000000e0,-5.851201607253632e-2,-5.581488933794546e-2,-2.697126734590861e-3 +2.600000000000000e0,-6.577577357644308e-2,-6.316030171637775e-2,-2.615471860065333e-3 +2.650000000000000e0,-6.922767012849848e-2,-6.841524811782886e-2,-8.124220106696250e-4 +2.700000000000000e0,-6.971328307876762e-2,-7.020515977365513e-2,4.918766948875108e-4 +2.750000000000000e0,-6.711011688418775e-2,-6.792518666129713e-2,8.150697771093784e-4 +2.800000000000000e0,-6.157292068682007e-2,-6.218768247809864e-2,6.147617912785688e-4 +2.850000000000000e0,-5.381299059849790e-2,-5.391038856201589e-2,9.739796351798669e-5 +2.900000000000000e0,-4.408703912588236e-2,-4.402784078806626e-2,-5.919833781610484e-5 +2.950000000000000e0,-3.276166916255226e-2,-3.306749999586004e-2,3.058308333077839e-4 +3.000000000000000e0,-2.090852128870149e-2,-2.139550839460681e-2,4.869871059053205e-4 +3.050000000000000e0,-9.442372027629049e-3,-9.494087244318345e-3,5.171521668929577e-5 +3.100000000000000e0,2.360064430496597e-3,1.986307935410877e-3,3.737564950857196e-4 +3.150000000000000e0,1.302265662950330e-2,1.223227768008341e-2,7.903789494198947e-4 +3.200000000000000e0,2.138364781080199e-2,2.061319465981407e-2,7.704531509879278e-4 +3.250000000000000e0,2.693147056936461e-2,2.682767743475605e-2,1.037931346085617e-4 +3.300000000000000e0,3.151644953071002e-2,3.080642829899852e-2,7.100212317115023e-4 +3.350000000000000e0,3.352946039502464e-2,3.240420343293558e-2,1.125256962089052e-3 +3.400000000000000e0,3.238621927753613e-2,3.145052796512837e-2,9.356913124077548e-4 +3.450000000000000e0,2.811100389994573e-2,2.793031572819431e-2,1.806881717514239e-4 +3.500000000000000e0,2.286282575628239e-2,2.208217948402324e-2,7.806462722591521e-4 +3.550000000000000e0,1.533757332027981e-2,1.430805893604275e-2,1.029514384237061e-3 +3.600000000000000e0,5.841528850502443e-3,5.071568423474790e-3,7.699604270276529e-4 +3.650000000000000e0,-4.973076119101373e-3,-5.114776248795718e-3,1.417001296943454e-4 +3.700000000000000e0,-1.531012734291091e-2,-1.569654914697634e-2,3.864218040654285e-4 +3.750000000000000e0,-2.571945468817239e-2,-2.607612265720093e-2,3.566679690285429e-4 +3.800000000000000e0,-3.550695429949059e-2,-3.566079301176169e-2,1.538387122710927e-4 +3.850000000000000e0,-4.396683868403361e-2,-4.390194528857828e-2,-6.489339545533157e-5 +3.900000000000000e0,-5.037191176458432e-2,-5.031916717402932e-2,-5.274459055499420e-5 +3.950000000000000e0,-5.462511245767838e-2,-5.451108543180543e-2,-1.140270258729523e-4 +4.000000000000000e0,-5.637155007178767e-2,-5.616685805409583e-2,-2.046920176918335e-4 +4.050000000000000e0,-5.537148248471460e-2,-5.507776164441665e-2,-2.937208402979466e-4 +4.100000000000001e0,-5.145836778499910e-2,-5.116981200038889e-2,-2.885557846102060e-4 +4.150000000000000e0,-4.491213876260953e-2,-4.457573836426813e-2,-3.364003983413952e-4 +4.200000000000000e0,-3.593837445759453e-2,-3.559125171731317e-2,-3.471227402813554e-4 +4.250000000000000e0,-2.488943908169619e-2,-2.463226353660548e-2,-2.571755450907140e-4 +4.300000000000000e0,-1.241557493693022e-2,-1.217229435385378e-2,-2.432805830764433e-4 +4.350000000000001e0,1.167836176728462e-3,1.325784372530570e-3,-1.579481958021076e-4 +4.400000000000000e0,1.532402598944850e-2,1.535716815824066e-2,-3.314216879216070e-5 +4.450000000000000e0,2.947771486000089e-2,2.936615493296542e-2,1.115599270354768e-4 +4.500000000000000e0,4.296252895210953e-2,4.274594134592042e-2,2.165876061891100e-4 +4.550000000000000e0,5.513670267387270e-2,5.486448541991695e-2,2.722172539557574e-4 +4.600000000000001e0,6.544130711831553e-2,6.512292880250635e-2,3.183783158091785e-4 +4.650000000000000e0,7.334136881182736e-2,7.298261099723956e-2,3.587578145878012e-4 +4.700000000000000e0,7.825940341835394e-2,7.797359943831612e-2,2.858039800378159e-4 +4.750000000000000e0,7.993533009240660e-2,7.970604884231750e-2,2.292812500891001e-4 +4.800000000000001e0,7.816323913885367e-2,7.792979811745450e-2,2.334410213991750e-4 +4.850000000000001e0,7.281041650434372e-2,7.256811010372075e-2,2.423064006229769e-4 +4.900000000000000e0,6.386849177220190e-2,6.374292834357240e-2,1.255634286295021e-4 +4.950000000000000e0,5.182513392140982e-2,5.176424792215213e-2,6.088599925768712e-5 +5.000000000000000e0,3.709223616842691e-2,3.708679445097439e-2,5.441717452522865e-6 +5.050000000000001e0,2.020186316736828e-2,2.028890202940853e-2,-8.703886204025277e-5 +5.100000000000001e0,1.819902861518070e-3,2.043620105910488e-3,-2.237172443924178e-4 +5.150000000000000e0,-1.719187175111095e-2,-1.689608707626589e-2,-2.957846748450586e-4 +5.200000000000000e0,-3.597138332924836e-2,-3.569114462319386e-2,-2.802387060545017e-4 +5.250000000000000e0,-5.366204880251965e-2,-5.343881363381126e-2,-2.232351687083967e-4 +5.300000000000001e0,-6.935413920241247e-2,-6.918674245826684e-2,-1.673967441456342e-4 +5.350000000000001e0,-8.208160605719070e-2,-8.199176590436191e-2,-8.984015282878510e-5 +5.400000000000000e0,-9.112215937976778e-2,-9.104752414147881e-2,-7.463523828897534e-5 +5.450000000000000e0,-9.584464868850510e-2,-9.576293313974685e-2,-8.171554875825715e-5 +5.500000000000000e0,-9.583363855900554e-2,-9.582510348764021e-2,-8.535071365320390e-6 +5.550000000000001e0,-9.114457198433652e-2,-9.117747200460113e-2,3.290002026461181e-5 +5.600000000000001e0,-8.192008895883050e-2,-8.196131420674235e-2,4.122524791184967e-5 +5.650000000000000e0,-6.846145811002184e-2,-6.850780851480594e-2,4.635040478409569e-5 +5.700000000000000e0,-5.124774277565088e-2,-5.136344085249149e-2,1.156980768406077e-4 +5.750000000000000e0,-3.125872258342960e-2,-3.134786704913027e-2,8.914446570067180e-5 +5.800000000000001e0,-9.517151098390277e-3,-9.517892503830238e-3,7.414054399614012e-7 +5.850000000000001e0,1.282795132582106e-2,1.290790471926332e-2,-7.995339344226207e-5 +5.900000000000000e0,3.453389132958515e-2,3.467740318976290e-2,-1.435118601777474e-4 +5.950000000000000e0,5.445456909458003e-2,5.462173699974320e-2,-1.671679051631625e-4 +6.000000000000000e0,7.153893527745174e-2,7.168550683085380e-2,-1.465715534020584e-4 +6.050000000000001e0,8.485261930119592e-2,8.497689966557199e-2,-1.242803643760754e-4 +6.100000000000001e0,9.361551665487493e-2,9.380451620196921e-2,-1.889995470942818e-4 +6.150000000000000e0,9.744620484620546e-2,9.771826242502329e-2,-2.720575788178331e-4 +6.200000000000000e0,9.621353825613399e-2,9.655034700885455e-2,-3.368087527205604e-4 +6.250000000000000e0,9.006880802056688e-2,9.042444162599965e-2,-3.556336054327675e-4 +6.300000000000001e0,7.943083383895121e-2,7.974471058205626e-2,-3.138767431050543e-4 +6.350000000000001e0,6.495491233611476e-2,6.516667031937531e-2,-2.117579832605493e-4 +6.400000000000000e0,4.748816519533267e-2,4.755225752158828e-2,-6.409232625561451e-5 +6.450000000000000e0,2.801471786525168e-2,2.791264198559455e-2,1.020758796571250e-4 +6.500000000000000e0,7.594731711312110e-3,7.343161939455978e-3,2.515697718561321e-4 +6.550000000000001e0,-1.276121502882761e-2,-1.304480497806292e-2,2.835899492353074e-4 +6.600000000000001e0,-3.194897237217748e-2,-3.219083999017847e-2,2.418676180009904e-4 +6.650000000000000e0,-4.891940602640053e-2,-4.914553666907882e-2,2.261306426782975e-4 +6.700000000000000e0,-6.290162726793201e-2,-6.311887298760602e-2,2.172457196740057e-4 +6.750000000000000e0,-7.331867857307030e-2,-7.351619187007080e-2,1.975132970005039e-4 +6.800000000000001e0,-7.980626914647326e-2,-7.995986094812153e-2,1.535918016482701e-4 +6.850000000000001e0,-8.221777385433532e-2,-8.229629580956938e-2,7.852195523405658e-5 +6.900000000000000e0,-8.061650034118535e-2,-8.058919906344893e-2,-2.730127773642455e-5 +6.950000000000000e0,-7.525703377510956e-2,-7.510081705469535e-2,-1.562167204142151e-4 +7.000000000000000e0,-6.655803965893239e-2,-6.626371511773414e-2,-2.943245411982515e-4 +7.050000000000001e0,-5.496550084891222e-2,-5.464597211380164e-2,-3.195287351105761e-4 +7.100000000000001e0,-4.113860996535212e-2,-4.091261535907783e-2,-2.259946062742949e-4 +7.150000000000000e0,-2.592592844540123e-2,-2.578621339315133e-2,-1.397150522498974e-4 +7.200000000000000e0,-1.007423598474659e-2,-1.000961466334053e-2,-6.462132140605710e-5 +7.250000000000000e0,5.686021186605869e-3,5.687694874403858e-3,-1.673687797989348e-6 +7.300000000000001e0,2.066910088273221e-2,2.061852607306291e-2,5.057480966930150e-5 +7.350000000000001e0,3.425706747887098e-2,3.416169392849584e-2,9.537355037514406e-5 +7.400000000000000e0,4.591769012448284e-2,4.578052771482832e-2,1.371624096545218e-4 +7.450000000000000e0,5.521757774431573e-2,5.503661933270341e-2,1.809584116123225e-4 +7.500000000000000e0,6.183120701889262e-2,6.159947819025628e-2,2.317288286363406e-4 +7.550000000000001e0,6.551118049711591e-2,6.525281269187035e-2,2.583678052455601e-4 +7.600000000000001e0,6.611667926321113e-2,6.589806180341043e-2,2.186174598007018e-4 +7.650000000000000e0,6.370041228481879e-2,6.355572798545993e-2,1.446842993588632e-4 +7.700000000000000e0,5.841743230794399e-2,5.836432872040654e-2,5.310358753744804e-5 +7.750000000000000e0,5.053683319670924e-2,5.057668810277387e-2,-3.985490606462500e-5 +7.800000000000001e0,4.043337844503837e-2,4.055322392412655e-2,-1.198454790881862e-4 +7.850000000000001e0,2.857573274841766e-2,2.875166014355713e-2,-1.759273951394656e-4 +7.900000000000000e0,1.551087665962361e-2,1.571260818020697e-2,-2.017315205833595e-4 +7.950000000000000e0,1.844449205919400e-3,2.040635690074977e-3,-1.961864841555768e-4 +8.000000000000000e0,-1.178293868362277e-2,-1.161923358825463e-2,-1.637050953681475e-4 +8.050000000000001e0,-2.477350572496408e-2,-2.460916373588093e-2,-1.643419890831437e-4 +8.100000000000000e0,-3.646111363111707e-2,-3.628880069227626e-2,-1.723129388408115e-4 +8.150000000000000e0,-4.621129115741179e-2,-4.606846109828023e-2,-1.428300591315573e-4 +8.200000000000001e0,-5.352961239019519e-2,-5.344319014553962e-2,-8.642224465556930e-5 +8.250000000000000e0,-5.804037324878135e-2,-5.802394625834032e-2,-1.642699044102774e-5 +8.300000000000001e0,-5.951089484715810e-2,-5.956400130884991e-2,5.310646169180699e-5 +8.350000000000000e0,-5.786878044908911e-2,-5.797824662570020e-2,1.094661766110894e-4 +8.400000000000000e0,-5.321038299110090e-2,-5.335341712962859e-2,1.430341385276895e-4 +8.450000000000001e0,-4.579927812618443e-2,-4.594781832001561e-2,1.485401938311759e-4 +8.500000000000000e0,-3.605423328118459e-2,-3.617989765830226e-2,1.256643771176610e-4 +8.550000000000001e0,-2.449901605802056e-2,-2.460583248218271e-2,1.068164241621559e-4 +8.600000000000000e0,-1.179495276068908e-2,-1.188655892518760e-2,9.160616449852520e-5 +8.650000000000000e0,1.312769364173554e-3,1.252149569892617e-3,6.061979428093663e-5 +8.700000000000001e0,1.408071324545469e-2,1.406354259587437e-2,1.717064958031353e-5 +8.750000000000000e0,2.579265193745745e-2,2.582610436815986e-2,-3.345243070240755e-5 +8.800000000000001e0,3.580394759422622e-2,3.588847223560181e-2,-8.452464137558707e-5 +8.850000000000000e0,4.358117679804221e-2,4.370980205862922e-2,-1.286252605870106e-4 +8.900000000000000e0,4.873414503064660e-2,4.889264819318998e-2,-1.585031625433789e-4 +8.950000000000001e0,5.103801220145804e-2,5.120598732031820e-2,-1.679751188601586e-4 +9.000000000000000e0,5.044402185347385e-2,5.059677865335512e-2,-1.527567998812623e-4 +9.050000000000001e0,4.706848938076125e-2,4.718936501786623e-2,-1.208756371049793e-4 +9.100000000000000e0,4.119196050858974e-2,4.127336919480561e-2,-8.140868621586694e-5 +9.150000000000000e0,3.324888081996772e-2,3.328099287909089e-2,-3.211205912317244e-5 +9.200000000000001e0,2.377754686747515e-2,2.375442166148617e-2,2.312520598898860e-5 +9.250000000000000e0,1.338522841997484e-2,1.330663439539874e-2,7.859402457609937e-5 +9.300000000000001e0,2.706753877105207e-3,2.578933644436964e-3,1.278202326682430e-4 +9.350000000000000e0,-7.636763894930200e-3,-7.801506838576524e-3,1.647429436463241e-4 +9.400000000000000e0,-1.707611051005146e-2,-1.726093010848120e-2,1.848195984297391e-4 +9.450000000000001e0,-2.512650481763656e-2,-2.531238596777028e-2,1.858811501337168e-4 +9.500000000000000e0,-3.141251210414787e-2,-3.158111769657664e-2,1.686055924287680e-4 +9.550000000000001e0,-3.568361725375290e-2,-3.582065422478199e-2,1.370369710290906e-4 +9.600000000000001e0,-3.782736198323299e-2,-3.791928905386622e-2,9.192707063322703e-5 +9.650000000000000e0,-3.785610930279819e-2,-3.789565765274304e-2,3.954834994485124e-5 +9.700000000000001e0,-3.589895491768690e-2,-3.588634825141755e-2,-1.260666626935053e-5 +9.750000000000000e0,-3.218621658003793e-2,-3.212780033956540e-2,-5.841624047252941e-5 +9.800000000000001e0,-2.702748357015102e-2,-2.693374608299488e-2,-9.373748715614180e-5 +9.850000000000001e0,-2.078687797568695e-2,-2.067022516148691e-2,-1.166528142000356e-4 +9.900000000000000e0,-1.385753419489154e-2,-1.373016067368768e-2,-1.273735212038579e-4 +9.950000000000001e0,-6.637123653500401e-3,-6.509267104854669e-3,-1.278565486457321e-4 +1.000000000000000e1,4.940630890638122e-4,6.152789012362301e-4,-1.212158121724179e-4 +1.005000000000000e1,7.217933934947915e-3,7.302358590583296e-3,-8.442465563538067e-5 +1.010000000000000e1,1.323490186994096e-2,1.325972964240328e-2,-2.482777246232311e-5 +1.015000000000000e1,1.828878122763607e-2,1.825308506849581e-2,3.569615914025479e-5 +1.020000000000000e1,2.220069051054260e-2,2.211118322356765e-2,8.950728697495330e-5 +1.025000000000000e1,2.485748724489511e-2,2.472689265424967e-2,1.305945906454435e-4 +1.030000000000000e1,2.621006852725899e-2,2.605511906886627e-2,1.549494583927176e-4 +1.035000000000000e1,2.626915459028968e-2,2.610840712617058e-2,1.607474641191001e-4 +1.040000000000000e1,2.509932862357412e-2,2.495099023307391e-2,1.483383905002099e-4 +1.045000000000000e1,2.281201711845354e-2,2.269196134851711e-2,1.200557699364210e-4 +1.050000000000000e1,1.955794456286224e-2,1.947807689616761e-2,7.986766669463435e-5 +1.055000000000000e1,1.551941570870848e-2,1.548651581173615e-2,3.289989697233091e-5 +1.060000000000000e1,1.090259973294149e-2,1.091772869919564e-2,-1.512896625414581e-5 +1.065000000000000e1,5.929841746453633e-3,5.988356868860783e-3,-5.851512240714982e-5 +1.070000000000000e1,8.319296685972140e-4,9.240996723423827e-4,-9.217000374516871e-5 +1.075000000000000e1,-4.159789420979792e-3,-4.047626250061810e-3,-1.121631709179822e-4 +1.080000000000000e1,-8.821517996228117e-3,-8.705358193318769e-3,-1.161598029093477e-4 +1.085000000000000e1,-1.294532819749118e-2,-1.284161674919462e-2,-1.037114482965520e-4 +1.090000000000000e1,-1.634755156165913e-2,-1.627118251850052e-2,-7.636904315860837e-5 +1.095000000000000e1,-1.887695153657612e-2,-1.883935058800270e-2,-3.760094857341995e-5 +1.100000000000000e1,-2.042225568733731e-2,-2.042974061629809e-2,7.484928960781873e-6 +1.105000000000000e1,-2.095147564513146e-2,-2.097111932397222e-2,1.964367884076806e-5 +1.110000000000000e1,-2.042407010625146e-2,-2.044261908193109e-2,1.854897567963101e-5 +1.115000000000000e1,-1.885497895509449e-2,-1.887677581293924e-2,2.179685784475111e-5 +1.120000000000000e1,-1.633140359777271e-2,-1.635986214076925e-2,2.845854299653172e-5 +1.125000000000000e1,-1.299204811650485e-2,-1.302913588531016e-2,3.708776880531790e-5 +1.130000000000000e1,-9.020908454908747e-3,-9.066864128071334e-3,4.595567316258674e-5 +1.135000000000000e1,-4.637944730576164e-3,-4.691240978768427e-3,5.329624819226230e-5 +1.140000000000000e1,-8.705395185246699e-5,-1.445949023572931e-4,5.754095050482613e-5 +1.145000000000000e1,4.377977535394180e-3,4.320454723196527e-3,5.752281219765371e-5 +1.150000000000000e1,8.508644654458058e-3,8.456011404361636e-3,5.263325009642258e-5 +1.155000000000000e1,1.207697148490535e-2,1.203405287472282e-2,4.291861018252893e-5 +1.160000000000000e1,1.488972993438748e-2,1.486062176532719e-2,2.910816906028652e-5 +1.165000000000000e1,1.680055949221298e-2,1.678798884481127e-2,1.257064740171551e-5 +1.170000000000000e1,1.771905237827549e-2,1.772385037507346e-2,-4.797996797971382e-6 +1.175000000000000e1,1.761608932581005e-2,1.763683630385892e-2,-2.074697804886269e-5 +1.180000000000000e1,1.652499977631685e-2,1.655788917865322e-2,-3.288940233636684e-5 +1.185000000000000e1,1.453845016157114e-2,1.457739900690658e-2,-3.894884533543752e-5 +1.190000000000000e1,1.180130472198820e-2,1.183831677503229e-2,-3.701205304408768e-5 +1.195000000000000e1,8.500023427936050e-3,8.525787835432275e-3,-2.576440749622530e-5 +1.200000000000000e1,4.849431674881385e-3,4.854116812889405e-3,-4.685138008019875e-6 +1.205000000000000e1,1.071589227928625e-3,1.052064474702776e-3,1.952475322584968e-5 +1.210000000000000e1,-2.618753988009100e-3,-2.652463426366250e-3,3.370943835715031e-5 +1.215000000000000e1,-6.007975050574828e-3,-6.046951107058132e-3,3.897605648330374e-5 +1.220000000000000e1,-8.909789745126961e-3,-8.947141658624402e-3,3.735191349744059e-5 +1.225000000000000e1,-1.117630902656331e-2,-1.120748348649864e-2,3.117445993532780e-5 +1.230000000000000e1,-1.270572440254033e-2,-1.272845816555719e-2,2.273376301686718e-5 +1.235000000000000e1,-1.344643872663137e-2,-1.346042014195473e-2,1.398141532336049e-5 +1.240000000000000e1,-1.339753316381708e-2,-1.340386655696342e-2,6.333393146337393e-6 +1.245000000000000e1,-1.260575493945107e-2,-1.260633406837283e-2,5.791289217609713e-7 +1.250000000000000e1,-1.115947201529546e-2,-1.115636598434161e-2,-3.106030953853312e-6 +1.255000000000000e1,-9.180248451402265e-3,-9.175187672835865e-3,-5.060778566400026e-6 +1.260000000000000e1,-6.812832593418122e-3,-6.806857230623699e-3,-5.975362794422186e-6 +1.265000000000000e1,-4.214411526838362e-3,-4.207714771755740e-3,-6.696755082622775e-6 +1.270000000000000e1,-1.543969454602780e-3,-1.535937536557823e-3,-8.031918044956819e-6 +1.275000000000000e1,1.047497851361504e-3,1.058073841363182e-3,-1.057599000167881e-5 +1.280000000000000e1,3.425302057319910e-3,3.439887640553301e-3,-1.458558323339139e-5 +1.285000000000000e1,5.477484177243085e-3,5.497393321000198e-3,-1.990914375711236e-5 +1.290000000000000e1,7.119106734274425e-3,7.145084565856943e-3,-2.597783158251807e-5 +1.295000000000000e1,8.294379141074032e-3,8.326232021603229e-3,-3.185288052919705e-5 +1.300000000000000e1,8.976754353173608e-3,9.013074121423440e-3,-3.631976824983174e-5 +1.305000000000000e1,9.182699469447369e-3,9.205291975930155e-3,-2.259250648278636e-5 +1.310000000000000e1,8.920633227258997e-3,8.927164167346876e-3,-6.530940087878453e-6 +1.315000000000000e1,8.227772176641010e-3,8.223804933539193e-3,3.967243101817008e-6 +1.320000000000000e1,7.165618678133854e-3,7.156761502240076e-3,8.857175893777977e-6 +1.325000000000000e1,5.808102927684534e-3,5.799403831750808e-3,8.699095933726274e-6 +1.330000000000000e1,4.236976302395368e-3,4.232447376886653e-3,4.528925508714976e-6 +1.335000000000000e1,2.537544275324560e-3,2.539839825621324e-3,-2.295550296764134e-6 +1.340000000000000e1,7.948869861187973e-4,8.051485986428118e-4,-1.026161252401449e-5 +1.345000000000000e1,-9.093718929306348e-4,-8.915021848384764e-4,-1.786970809215837e-5 +1.350000000000000e1,-2.499758634957572e-3,-2.475968066201228e-3,-2.379056875634420e-5 +1.355000000000000e1,-3.909163939122029e-3,-3.882164293975624e-3,-2.699964514640482e-5 +1.360000000000000e1,-5.080658673570144e-3,-5.053780223639464e-3,-2.687844993067966e-5 +1.365000000000000e1,-5.968987199017207e-3,-5.945712562378935e-3,-2.327463663827269e-5 +1.370000000000000e1,-6.541789602224997e-3,-6.525273849625062e-3,-1.651575259993543e-5 +1.375000000000000e1,-6.780565407121424e-3,-6.773190012935771e-3,-7.375394185653306e-6 +1.380000000000000e1,-6.681347702151842e-3,-6.684353071111121e-3,3.005368959279296e-6 +1.385000000000000e1,-6.255017358635246e-3,-6.268251719093956e-3,1.323436045870974e-5 +1.390000000000000e1,-5.527160389518306e-3,-5.548972335890281e-3,2.181194637197476e-5 +1.395000000000000e1,-4.537363708714357e-3,-4.564652509074928e-3,2.728880036057067e-5 +1.400000000000000e1,-3.337858908844144e-3,-3.366282087129052e-3,2.842317828490818e-5 diff --git a/doc/plots/feff_vs_larch_data/07_multi_dataset_ds2_rspace.csv b/doc/plots/feff_vs_larch_data/07_multi_dataset_ds2_rspace.csv new file mode 100644 index 0000000..74adb21 --- /dev/null +++ b/doc/plots/feff_vs_larch_data/07_multi_dataset_ds2_rspace.csv @@ -0,0 +1,327 @@ +r,model,larch,diff +0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771283e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313848e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.227184630308513e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.533980787885641e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.840776945462770e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.147573103039898e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.454369260617026e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.761165418194154e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771282e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.374757733348411e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.681553890925539e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.988350048502667e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.295146206079796e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.601942363656924e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.908738521234052e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.215534678811180e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.522330836388308e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.829126993965437e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.442719309119693e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.749515466696822e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.056311624273950e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.363107781851078e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.669903939428206e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.976700097005335e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.283496254582463e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.590292412159591e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.897088569736720e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313848e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.510680884890976e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.817477042468105e-1,2.542243448133096e-1,2.553850286629548e-1,-1.160683849645128e-3 +1.012427320004523e0,2.755083154629658e-1,2.773700692573147e-1,-1.861753794348886e-3 +1.043106935762236e0,2.718200172354714e-1,2.742770670542093e-1,-2.457049818737844e-3 +1.073786551519949e0,2.413508250030940e-1,2.441729641743932e-1,-2.822139171299226e-3 +1.104466167277662e0,1.862045110704414e-1,1.889918429470604e-1,-2.787331876618920e-3 +1.135145783035375e0,1.164320475307733e-1,1.182582178363633e-1,-1.826170305590027e-3 +1.165825398793087e0,8.028787836753139e-2,7.837947554052385e-2,1.908402827007535e-3 +1.196505014550800e0,1.458834994955585e-1,1.427294294079115e-1,3.154070087647010e-3 +1.227184630308513e0,2.416340255351369e-1,2.391737196053208e-1,2.460305929816053e-3 +1.257864246066226e0,3.301959149278146e-1,3.286532287453283e-1,1.542686182486319e-3 +1.288543861823939e0,3.969625252897892e-1,3.963912616020737e-1,5.712636877154842e-4 +1.319223477581652e0,4.323050043356680e-1,4.326909889509855e-1,-3.859846153174695e-4 +1.349903093339364e0,4.302505451016624e-1,4.315377812000465e-1,-1.287236098384104e-3 +1.380582709097077e0,3.891514359740552e-1,3.912867674815080e-1,-2.135331507452876e-3 +1.411262324854790e0,3.134358487986096e-1,3.164640346902656e-1,-3.028185891656043e-3 +1.441941940612503e0,2.204568111194963e-1,2.246797428410314e-1,-4.222931721535067e-3 +1.472621556370216e0,1.720601139343256e-1,1.770907230144649e-1,-5.030609080139303e-3 +1.503301172127929e0,2.523275617851282e-1,2.558046366909307e-1,-3.477074905802457e-3 +1.533980787885641e0,4.010082068218629e-1,4.036242613172282e-1,-2.616054495365283e-3 +1.564660403643354e0,5.607626180639543e-1,5.632972728087757e-1,-2.534654744821396e-3 +1.595340019401067e0,7.086127785345635e-1,7.113748343454036e-1,-2.762055810840103e-3 +1.626019635158780e0,8.309883956717454e-1,8.340567946636467e-1,-3.068398991901256e-3 +1.656699250916493e0,9.183729832330140e-1,9.217043406834635e-1,-3.331357450449546e-3 +1.687378866674206e0,9.644205469057665e-1,9.679124703544364e-1,-3.491923448669887e-3 +1.718058482431918e0,9.663596834206098e-1,9.699112280113334e-1,-3.551544590723599e-3 +1.748738098189631e0,9.270990767963212e-1,9.306825241621408e-1,-3.583447365819614e-3 +1.779417713947344e0,8.613920038729896e-1,8.651303088746435e-1,-3.738305001653841e-3 +1.810097329705057e0,8.098336901763237e-1,8.140013083598669e-1,-4.167618183543276e-3 +1.840776945462770e0,8.514207300427962e-1,8.561382465493879e-1,-4.717516506591690e-3 +1.871456561220483e0,1.062439399304522e0,1.067375423365470e0,-4.936024060947730e-3 +1.902136176978195e0,1.448940497415043e0,1.453719003110588e0,-4.778505695545832e-3 +1.932815792735908e0,1.975512871453226e0,1.979886036342371e0,-4.373164889144743e-3 +1.963495408493621e0,2.607667094287287e0,2.611399078447608e0,-3.731984160320945e-3 +1.994175024251334e0,3.315525487362408e0,3.318371059790075e0,-2.845572427666809e-3 +2.024854640009047e0,4.069102621590855e0,4.070843916057710e0,-1.741294466854448e-3 +2.055534255766760e0,4.836031715176632e0,4.836520335316854e0,-4.886201402225510e-4 +2.086213871524472e0,5.581609883644463e0,5.580798196562009e0,8.116870824537159e-4 +2.116893487282185e0,6.270181422160443e0,6.268138522373226e0,2.042899787217500e-3 +2.147573103039898e0,6.867215924543291e0,6.864127140187117e0,3.088784356173768e-3 +2.178252718797611e0,7.341646299920411e0,7.337796974752131e0,3.849325168280515e-3 +2.208932334555323e0,7.668131609264902e0,7.663877573900280e0,4.254035364622766e-3 +2.239611950313036e0,7.828973613018622e0,7.824702295865397e0,4.271317153224707e-3 +2.270291566070749e0,7.815476793159800e0,7.811564089002631e0,3.912704157169600e-3 +2.300971181828462e0,7.628609661209333e0,7.625378240483578e0,3.231420725754219e-3 +2.331650797586175e0,7.278900376053349e0,7.276584927693196e0,2.315448360152850e-3 +2.362330413343888e0,6.785577443788354e0,6.784301364735061e0,1.276079053292634e-3 +2.393010029101601e0,6.175040119473358e0,6.174806490396769e0,2.336290765887483e-4 +2.423689644859313e0,5.478806519291762e0,5.479504053047118e0,-6.975337553560834e-4 +2.454369260617026e0,4.731134906551643e0,4.732557220530943e0,-1.422313979299261e-3 +2.485048876374739e0,3.966541728163309e0,3.968416095885512e0,-1.874367722203729e-3 +2.515728492132452e0,3.217448443581120e0,3.219468385324337e0,-2.019941743216513e-3 +2.546408107890165e0,2.512182728718526e0,2.514037462128713e0,-1.854733410187048e-3 +2.577087723647877e0,1.873554173105448e0,1.874946591812185e0,-1.392418706736676e-3 +2.607767339405590e0,1.318273086357598e0,1.318914615533435e0,-6.415291758368191e-4 +2.638446955163303e0,8.578030622245684e-1,8.573622136346003e-1,4.408485899680681e-4 +2.669126570921016e0,5.029728363417973e-1,5.009292718792376e-1,2.043564462559710e-3 +2.699806186678729e0,2.825963378906927e-1,2.783166476653689e-1,4.279690225323762e-3 +2.730485802436442e0,2.516909802552219e-1,2.474268256170372e-1,4.264154638184720e-3 +2.761165418194155e0,3.242363499362707e-1,3.218120248983861e-1,2.424325037884534e-3 +2.791845033951867e0,3.881530745194183e-1,3.868672855809198e-1,1.285788938498511e-3 +2.822524649709580e0,4.187324967316027e-1,4.179776638670318e-1,7.548328645708424e-4 +2.853204265467293e0,4.153659858185260e-1,4.146480962657721e-1,7.178895527539253e-4 +2.883883881225006e0,3.815898740704892e-1,3.804171695780840e-1,1.172704492405197e-3 +2.914563496982719e0,3.218683524513687e-1,3.197292981262581e-1,2.139054325110634e-3 +2.945243112740431e0,2.426369808286596e-1,2.390843214536085e-1,3.552659375051059e-3 +2.975922728498144e0,5.961931138517930e-34,5.786921330970920e-34,1.750098075470099e-35 +3.006602344255857e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.037281960013570e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771283e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.098641191528996e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.129320807286708e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.160000423044421e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.190680038802134e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.221359654559847e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.252039270317560e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.282718886075272e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.313398501832985e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.344078117590698e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.374757733348411e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.405437349106124e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.436116964863837e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.466796580621549e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.497476196379262e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.528155812136975e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.558835427894688e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.589515043652401e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.620194659410114e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.650874275167826e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.681553890925539e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.712233506683252e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.742913122440965e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.773592738198678e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.804272353956391e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.834951969714103e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.865631585471816e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.896311201229529e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.926990816987242e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.957670432744955e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.988350048502667e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.019029664260381e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.049709280018093e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.080388895775806e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.111068511533519e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.141748127291232e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.172427743048944e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.203107358806657e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.233786974564370e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.264466590322083e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.295146206079796e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.325825821837508e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.356505437595222e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.387185053352934e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.417864669110647e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.448544284868360e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.479223900626073e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.509903516383786e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.540583132141498e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.571262747899211e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.601942363656924e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.632621979414637e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.663301595172349e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.693981210930063e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.724660826687775e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.755340442445489e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.786020058203201e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.816699673960914e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.847379289718627e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.878058905476339e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.908738521234052e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.939418136991765e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.970097752749478e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.000777368507190e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.031456984264904e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.062136600022616e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.092816215780330e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.123495831538042e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.154175447295755e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.184855063053468e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.215534678811180e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.246214294568893e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.276893910326606e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.307573526084319e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.338253141842032e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.368932757599745e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.399612373357457e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.430291989115171e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.460971604872883e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.491651220630596e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.522330836388309e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.553010452146022e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.583690067903735e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.614369683661447e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.645049299419160e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.675728915176873e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.706408530934586e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.737088146692298e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.767767762450012e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.798447378207724e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.829126993965438e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.859806609723150e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.890486225480863e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.921165841238576e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.951845456996288e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.982525072754001e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.013204688511714e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.043884304269427e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.074563920027139e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.105243535784853e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.166602767300279e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.197282383057991e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.227961998815704e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.258641614573417e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.289321230331129e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.320000846088842e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.350680461846555e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.381360077604268e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.412039693361981e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.442719309119694e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.473398924877406e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.504078540635120e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.534758156392832e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.565437772150545e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.596117387908258e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.626797003665970e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.657476619423684e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.688156235181396e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.718835850939109e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.749515466696822e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.780195082454535e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.810874698212247e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.841554313969961e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.872233929727673e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.902913545485386e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.933593161243099e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.964272777000811e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.994952392758525e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.025632008516237e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.056311624273950e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.086991240031663e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.117670855789376e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.148350471547088e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.179030087304802e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.209709703062514e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.240389318820228e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.271068934577940e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.301748550335653e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.332428166093366e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.363107781851078e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.393787397608791e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.424467013366504e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.455146629124217e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.485826244881930e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.516505860639643e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.547185476397355e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.577865092155069e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.608544707912781e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.639224323670494e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.669903939428207e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.700583555185919e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.731263170943633e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.761942786701345e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.792622402459058e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.823302018216771e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.853981633974484e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.884661249732196e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.915340865489910e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.946020481247622e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.976700097005335e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.007379712763047e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.038059328520761e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.068738944278474e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.099418560036186e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.130098175793899e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.160777791551611e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.191457407309326e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.222137023067038e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.252816638824751e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.283496254582463e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.314175870340176e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.344855486097888e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.375535101855602e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.406214717613315e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.436894333371027e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.467573949128740e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.498253564886452e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.528933180644167e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.559612796401879e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.590292412159592e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.620972027917304e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.651651643675017e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.682331259432731e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.713010875190443e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.743690490948156e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.774370106705868e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.805049722463581e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.835729338221293e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.866408953979008e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.897088569736720e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.927768185494433e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.958447801252145e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.989127417009858e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.019807032767572e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.050486648525284e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.081166264282997e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.111845880040709e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.142525495798422e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.173205111556134e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313849e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.234564343071561e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.265243958829274e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.295923574586986e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.326603190344699e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.357282806102413e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.387962421860125e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.418642037617838e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.449321653375550e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.480001269133263e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.510680884890977e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.541360500648690e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.572040116406402e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.602719732164115e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.633399347921827e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.664078963679540e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.694758579437254e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.725438195194966e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.756117810952679e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.786797426710391e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.817477042468104e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.848156658225818e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.878836273983531e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.909515889741243e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.940195505498956e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.970875121256668e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 diff --git a/doc/plots/feff_vs_larch_data/07_multi_dataset_ds2_rspace_contrib.csv b/doc/plots/feff_vs_larch_data/07_multi_dataset_ds2_rspace_contrib.csv new file mode 100644 index 0000000..977bf7c --- /dev/null +++ b/doc/plots/feff_vs_larch_data/07_multi_dataset_ds2_rspace_contrib.csv @@ -0,0 +1,327 @@ +r,total_model,total_larch,diff,feffcu01dat_00,feff0002dat_01 +0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771283e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313848e-2,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.227184630308513e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.533980787885641e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +1.840776945462770e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.147573103039898e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.454369260617026e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +2.761165418194154e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771282e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.374757733348411e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.681553890925539e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.988350048502667e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.295146206079796e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.601942363656924e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.908738521234052e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.215534678811180e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.522330836388308e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.829126993965437e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.442719309119693e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.749515466696822e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.056311624273950e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.363107781851078e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.669903939428206e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.976700097005335e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.283496254582463e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.590292412159591e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.897088569736720e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313848e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.510680884890976e-1,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.817477042468105e-1,2.542243448133096e-1,2.553850286629548e-1,-1.160683849645128e-3,2.546230474567035e-1,7.610773460788046e-4 +1.012427320004523e0,2.755083154629658e-1,2.773700692573147e-1,-1.861753794348886e-3,2.753705451928694e-1,7.564967023747042e-4 +1.043106935762236e0,2.718200172354714e-1,2.742770670542093e-1,-2.457049818737844e-3,2.710599706886452e-1,1.051945232216898e-3 +1.073786551519949e0,2.413508250030940e-1,2.441729641743932e-1,-2.822139171299226e-3,2.399598042637487e-1,1.526636038701484e-3 +1.104466167277662e0,1.862045110704414e-1,1.889918429470604e-1,-2.787331876618920e-3,1.842703847005595e-1,2.016947758607211e-3 +1.135145783035375e0,1.164320475307733e-1,1.182582178363633e-1,-1.826170305590027e-3,1.142376860787416e-1,2.396500861018988e-3 +1.165825398793087e0,8.028787836753139e-2,7.837947554052385e-2,1.908402827007535e-3,7.952224653313605e-2,2.561198491060784e-3 +1.196505014550800e0,1.458834994955585e-1,1.427294294079115e-1,3.154070087647010e-3,1.466686126783009e-1,2.436931864728190e-3 +1.227184630308513e0,2.416340255351369e-1,2.391737196053208e-1,2.460305929816053e-3,2.422569230669940e-1,2.008713354863344e-3 +1.257864246066226e0,3.301959149278146e-1,3.286532287453283e-1,1.542686182486319e-3,3.300745360178775e-1,1.419639727565393e-3 +1.288543861823939e0,3.969625252897892e-1,3.963912616020737e-1,5.712636877154842e-4,3.958178311975412e-1,1.342504974853917e-3 +1.319223477581652e0,4.323050043356680e-1,4.326909889509855e-1,-3.859846153174695e-4,4.300311780122739e-1,2.284371431609081e-3 +1.349903093339364e0,4.302505451016624e-1,4.315377812000465e-1,-1.287236098384104e-3,4.268895963203056e-1,3.581674243178142e-3 +1.380582709097077e0,3.891514359740552e-1,3.912867674815080e-1,-2.135331507452876e-3,3.848519071676677e-1,4.804607336929897e-3 +1.411262324854790e0,3.134358487986096e-1,3.164640346902656e-1,-3.028185891656043e-3,3.083566733733141e-1,5.693724039994707e-3 +1.441941940612503e0,2.204568111194963e-1,2.246797428410314e-1,-4.222931721535067e-3,2.146525350689777e-1,6.049078361667209e-3 +1.472621556370216e0,1.720601139343256e-1,1.770907230144649e-1,-5.030609080139303e-3,1.666322769265994e-1,5.740071079095187e-3 +1.503301172127929e0,2.523275617851282e-1,2.558046366909307e-1,-3.477074905802457e-3,2.491965763805419e-1,4.752613723473864e-3 +1.533980787885641e0,4.010082068218629e-1,4.036242613172282e-1,-2.616054495365283e-3,3.985077453425581e-1,3.338608068566216e-3 +1.564660403643354e0,5.607626180639543e-1,5.632972728087757e-1,-2.534654744821396e-3,5.580725240932709e-1,2.701625806565740e-3 +1.595340019401067e0,7.086127785345635e-1,7.113748343454036e-1,-2.762055810840103e-3,7.057250400256482e-1,4.364776098591157e-3 +1.626019635158780e0,8.309883956717454e-1,8.340567946636467e-1,-3.068398991901256e-3,8.282598063289669e-1,7.014641218697822e-3 +1.656699250916493e0,9.183729832330140e-1,9.217043406834635e-1,-3.331357450449546e-3,9.162759119910453e-1,9.603104231203047e-3 +1.687378866674206e0,9.644205469057665e-1,9.679124703544364e-1,-3.491923448669887e-3,9.633319885384484e-1,1.160178600341962e-2 +1.718058482431918e0,9.663596834206098e-1,9.699112280113334e-1,-3.551544590723599e-3,9.663814853015655e-1,1.263510310083597e-2 +1.748738098189631e0,9.270990767963212e-1,9.306825241621408e-1,-3.583447365819614e-3,9.279668310790767e-1,1.245975485245352e-2 +1.779417713947344e0,8.613920038729896e-1,8.651303088746435e-1,-3.738305001653841e-3,8.625851357136251e-1,1.102324181908794e-2 +1.810097329705057e0,8.098336901763237e-1,8.140013083598669e-1,-4.167618183543276e-3,8.111043165614866e-1,8.613446750656355e-3 +1.840776945462770e0,8.514207300427962e-1,8.561382465493879e-1,-4.717516506591690e-3,8.537670098622300e-1,6.404427854177596e-3 +1.871456561220483e0,1.062439399304522e0,1.067375423365470e0,-4.936024060947730e-3,1.067941579479174e0,7.145113868033457e-3 +1.902136176978195e0,1.448940497415043e0,1.453719003110588e0,-4.778505695545832e-3,1.459032840178840e0,1.098557493587721e-2 +1.932815792735908e0,1.975512871453226e0,1.979886036342371e0,-4.373164889144743e-3,1.990485412443446e0,1.556996289166571e-2 +1.963495408493621e0,2.607667094287287e0,2.611399078447608e0,-3.731984160320945e-3,2.626892236314216e0,1.956395761242955e-2 +1.994175024251334e0,3.315525487362408e0,3.318371059790075e0,-2.845572427666809e-3,3.337599905042101e0,2.218108449300011e-2 +2.024854640009047e0,4.069102621590855e0,4.070843916057710e0,-1.741294466854448e-3,4.091998220894070e0,2.289562427725780e-2 +2.055534255766760e0,4.836031715176632e0,4.836520335316854e0,-4.886201402225510e-4,4.857323067979843e0,2.143293231362624e-2 +2.086213871524472e0,5.581609883644463e0,5.580798196562009e0,8.116870824537159e-4,5.598767631332963e0,1.783545767099294e-2 +2.116893487282185e0,6.270181422160443e0,6.268138522373226e0,2.042899787217500e-3,6.280896167083924e0,1.266260997306844e-2 +2.147573103039898e0,6.867215924543291e0,6.864127140187117e0,3.088784356173768e-3,6.869710829478365e0,8.107218801327974e-3 +2.178252718797611e0,7.341646299920411e0,7.337796974752131e0,3.849325168280515e-3,7.334937791103841e0,1.007747363908966e-2 +2.208932334555323e0,7.668131609264902e0,7.663877573900280e0,4.254035364622766e-3,7.652203663068011e0,1.705431939929502e-2 +2.239611950313036e0,7.828973613018622e0,7.824702295865397e0,4.271317153224707e-3,7.804841167367546e0,2.439335418861642e-2 +2.270291566070749e0,7.815476793159800e0,7.811564089002631e0,3.912704157169600e-3,7.785126916177555e0,3.035058935623906e-2 +2.300971181828462e0,7.628609661209333e0,7.625378240483578e0,3.231420725754219e-3,7.594823947289765e0,3.396810939561368e-2 +2.331650797586175e0,7.278900376053349e0,7.276584927693196e0,2.315448360152850e-3,7.244977027561553e0,3.465604857268333e-2 +2.362330413343888e0,6.785577443788354e0,6.784301364735061e0,1.276079053292634e-3,6.754984873830030e0,3.217851041175171e-2 +2.393010029101601e0,6.175040119473358e0,6.174806490396769e0,2.336290765887483e-4,6.151043943375170e0,2.670214209949473e-2 +2.423689644859313e0,5.478806519291762e0,5.479504053047118e0,-6.975337553560834e-4,5.464116970197089e0,1.894071880079677e-2 +2.454369260617026e0,4.731134906551643e0,4.732557220530943e0,-1.422313979299261e-3,4.727620847791227e0,1.112290614329723e-2 +2.485048876374739e0,3.966541728163309e0,3.968416095885512e0,-1.874367722203729e-3,3.975049752546514e0,1.136984597828910e-2 +2.515728492132452e0,3.217448443581120e0,3.219468385324337e0,-2.019941743216513e-3,3.237750405503932e0,2.054316824574421e-2 +2.546408107890165e0,2.512182728718526e0,2.514037462128713e0,-1.854733410187048e-3,2.543051043057968e0,3.095721313226399e-2 +2.577087723647877e0,1.873554173105448e0,1.874946591812185e0,-1.392418706736676e-3,1.912925866002298e0,4.030797329358980e-2 +2.607767339405590e0,1.318273086357598e0,1.318914615533435e0,-6.415291758368191e-4,1.363387539337986e0,4.778587775249661e-2 +2.638446955163303e0,8.578030622245684e-1,8.573622136346003e-1,4.408485899680681e-4,9.049729143250297e-1,5.311735742442377e-2 +2.669126570921016e0,5.029728363417973e-1,5.009292718792376e-1,2.043564462559710e-3,5.456519713837195e-1,5.637251458783163e-2 +2.699806186678729e0,2.825963378906927e-1,2.783166476653689e-1,4.279690225323762e-3,3.023334372290988e-1,5.778742883624056e-2 +2.730485802436442e0,2.516909802552219e-1,2.474268256170372e-1,4.264154638184720e-3,2.226549970601994e-1,5.753628713874259e-2 +2.761165418194155e0,3.242363499362707e-1,3.218120248983861e-1,2.424325037884534e-3,2.736521103842465e-1,5.555215488046152e-2 +2.791845033951867e0,3.881530745194183e-1,3.868672855809198e-1,1.285788938498511e-3,3.366083323547611e-1,5.160532559136721e-2 +2.822524649709580e0,4.187324967316027e-1,4.179776638670318e-1,7.548328645708424e-4,3.753031188003854e-1,4.598810713614681e-2 +2.853204265467293e0,4.153659858185260e-1,4.146480962657721e-1,7.178895527539253e-4,3.888608137005197e-1,4.155632789080922e-2 +2.883883881225006e0,3.815898740704892e-1,3.804171695780840e-1,1.172704492405197e-3,3.828558444491955e-1,4.642939203009077e-2 +2.914563496982719e0,3.218683524513687e-1,3.197292981262581e-1,2.139054325110634e-3,3.634597273021040e-1,6.740048573518741e-2 +2.945243112740431e0,2.426369808286596e-1,2.390843214536085e-1,3.552659375051059e-3,3.363870753876250e-1,1.025120877987356e-1 +2.975922728498144e0,5.961931138517930e-34,5.786921330970920e-34,1.750098075470099e-35,1.150814612633580e-33,5.557649886508944e-34 +3.006602344255857e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.037281960013570e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.067961575771283e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.098641191528996e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.129320807286708e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.160000423044421e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.190680038802134e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.221359654559847e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.252039270317560e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.282718886075272e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.313398501832985e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.344078117590698e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.374757733348411e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.405437349106124e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.436116964863837e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.466796580621549e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.497476196379262e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.528155812136975e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.558835427894688e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.589515043652401e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.620194659410114e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.650874275167826e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.681553890925539e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.712233506683252e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.742913122440965e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.773592738198678e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.804272353956391e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.834951969714103e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.865631585471816e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.896311201229529e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.926990816987242e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.957670432744955e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +3.988350048502667e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.019029664260381e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.049709280018093e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.080388895775806e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.111068511533519e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.141748127291232e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.172427743048944e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.203107358806657e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.233786974564370e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.264466590322083e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.295146206079796e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.325825821837508e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.356505437595222e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.387185053352934e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.417864669110647e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.448544284868360e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.479223900626073e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.509903516383786e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.540583132141498e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.571262747899211e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.601942363656924e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.632621979414637e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.663301595172349e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.693981210930063e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.724660826687775e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.755340442445489e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.786020058203201e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.816699673960914e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.847379289718627e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.878058905476339e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.908738521234052e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.939418136991765e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +4.970097752749478e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.000777368507190e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.031456984264904e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.062136600022616e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.092816215780330e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.123495831538042e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.154175447295755e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.184855063053468e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.215534678811180e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.246214294568893e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.276893910326606e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.307573526084319e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.338253141842032e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.368932757599745e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.399612373357457e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.430291989115171e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.460971604872883e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.491651220630596e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.522330836388309e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.553010452146022e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.583690067903735e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.614369683661447e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.645049299419160e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.675728915176873e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.706408530934586e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.737088146692298e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.767767762450012e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.798447378207724e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.829126993965438e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.859806609723150e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.890486225480863e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.921165841238576e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.951845456996288e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +5.982525072754001e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.013204688511714e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.043884304269427e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.074563920027139e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.105243535784853e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.135923151542565e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.166602767300279e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.197282383057991e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.227961998815704e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.258641614573417e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.289321230331129e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.320000846088842e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.350680461846555e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.381360077604268e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.412039693361981e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.442719309119694e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.473398924877406e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.504078540635120e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.534758156392832e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.565437772150545e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.596117387908258e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.626797003665970e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.657476619423684e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.688156235181396e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.718835850939109e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.749515466696822e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.780195082454535e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.810874698212247e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.841554313969961e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.872233929727673e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.902913545485386e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.933593161243099e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.964272777000811e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +6.994952392758525e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.025632008516237e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.056311624273950e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.086991240031663e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.117670855789376e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.148350471547088e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.179030087304802e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.209709703062514e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.240389318820228e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.271068934577940e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.301748550335653e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.332428166093366e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.363107781851078e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.393787397608791e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.424467013366504e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.455146629124217e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.485826244881930e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.516505860639643e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.547185476397355e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.577865092155069e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.608544707912781e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.639224323670494e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.669903939428207e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.700583555185919e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.731263170943633e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.761942786701345e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.792622402459058e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.823302018216771e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.853981633974484e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.884661249732196e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.915340865489910e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.946020481247622e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +7.976700097005335e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.007379712763047e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.038059328520761e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.068738944278474e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.099418560036186e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.130098175793899e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.160777791551611e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.191457407309326e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.222137023067038e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.252816638824751e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.283496254582463e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.314175870340176e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.344855486097888e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.375535101855602e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.406214717613315e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.436894333371027e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.467573949128740e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.498253564886452e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.528933180644167e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.559612796401879e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.590292412159592e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.620972027917304e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.651651643675017e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.682331259432731e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.713010875190443e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.743690490948156e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.774370106705868e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.805049722463581e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.835729338221293e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.866408953979008e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.897088569736720e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.927768185494433e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.958447801252145e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +8.989127417009858e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.019807032767572e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.050486648525284e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.081166264282997e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.111845880040709e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.142525495798422e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.173205111556134e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.203884727313849e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.234564343071561e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.265243958829274e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.295923574586986e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.326603190344699e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.357282806102413e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.387962421860125e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.418642037617838e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.449321653375550e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.480001269133263e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.510680884890977e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.541360500648690e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.572040116406402e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.602719732164115e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.633399347921827e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.664078963679540e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.694758579437254e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.725438195194966e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.756117810952679e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.786797426710391e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.817477042468104e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.848156658225818e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.878836273983531e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.909515889741243e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.940195505498956e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 +9.970875121256668e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0,0.000000000000000e0 diff --git a/doc/plots/feff_vs_larch_index.md b/doc/plots/feff_vs_larch_index.md new file mode 100644 index 0000000..1fa8b8a --- /dev/null +++ b/doc/plots/feff_vs_larch_index.md @@ -0,0 +1,24 @@ +# FEFF: xraytsubaki vs xraylarch + +Generated comparison plots: +- `01_path_builder`: `doc/plots/feff_vs_larch_01_path_builder.svg`, `doc/plots/feff_vs_larch_01_path_builder.png` +- `01_path_builder_rspace`: `doc/plots/feff_vs_larch_01_path_builder_rspace.svg`, `doc/plots/feff_vs_larch_01_path_builder_rspace.png` +- `01_path_builder_rspace_contrib`: `doc/plots/feff_vs_larch_01_path_builder_rspace_contrib.svg`, `doc/plots/feff_vs_larch_01_path_builder_rspace_contrib.png` +- `02_multi_path_model`: `doc/plots/feff_vs_larch_02_multi_path_model.svg`, `doc/plots/feff_vs_larch_02_multi_path_model.png` +- `02_multi_path_model_rspace`: `doc/plots/feff_vs_larch_02_multi_path_model_rspace.svg`, `doc/plots/feff_vs_larch_02_multi_path_model_rspace.png` +- `02_multi_path_model_rspace_contrib`: `doc/plots/feff_vs_larch_02_multi_path_model_rspace_contrib.svg`, `doc/plots/feff_vs_larch_02_multi_path_model_rspace_contrib.png` +- `03_single_dataset_fit`: `doc/plots/feff_vs_larch_03_single_dataset_fit.svg`, `doc/plots/feff_vs_larch_03_single_dataset_fit.png` +- `03_single_dataset_fit_rspace`: `doc/plots/feff_vs_larch_03_single_dataset_fit_rspace.svg`, `doc/plots/feff_vs_larch_03_single_dataset_fit_rspace.png` +- `03_single_dataset_fit_rspace_contrib`: `doc/plots/feff_vs_larch_03_single_dataset_fit_rspace_contrib.svg`, `doc/plots/feff_vs_larch_03_single_dataset_fit_rspace_contrib.png` +- `04_clone_template_path`: `doc/plots/feff_vs_larch_04_clone_template_path.svg`, `doc/plots/feff_vs_larch_04_clone_template_path.png` +- `04_clone_template_path_rspace`: `doc/plots/feff_vs_larch_04_clone_template_path_rspace.svg`, `doc/plots/feff_vs_larch_04_clone_template_path_rspace.png` +- `04_clone_template_path_rspace_contrib`: `doc/plots/feff_vs_larch_04_clone_template_path_rspace_contrib.svg`, `doc/plots/feff_vs_larch_04_clone_template_path_rspace_contrib.png` +- `05_clone_template_ff2chi`: `doc/plots/feff_vs_larch_05_clone_template_ff2chi.svg`, `doc/plots/feff_vs_larch_05_clone_template_ff2chi.png` +- `05_clone_template_ff2chi_rspace`: `doc/plots/feff_vs_larch_05_clone_template_ff2chi_rspace.svg`, `doc/plots/feff_vs_larch_05_clone_template_ff2chi_rspace.png` +- `05_clone_template_ff2chi_rspace_contrib`: `doc/plots/feff_vs_larch_05_clone_template_ff2chi_rspace_contrib.svg`, `doc/plots/feff_vs_larch_05_clone_template_ff2chi_rspace_contrib.png` +- `06_multi_dataset_ds1`: `doc/plots/feff_vs_larch_06_multi_dataset_ds1.svg`, `doc/plots/feff_vs_larch_06_multi_dataset_ds1.png` +- `06_multi_dataset_ds1_rspace`: `doc/plots/feff_vs_larch_06_multi_dataset_ds1_rspace.svg`, `doc/plots/feff_vs_larch_06_multi_dataset_ds1_rspace.png` +- `06_multi_dataset_ds1_rspace_contrib`: `doc/plots/feff_vs_larch_06_multi_dataset_ds1_rspace_contrib.svg`, `doc/plots/feff_vs_larch_06_multi_dataset_ds1_rspace_contrib.png` +- `07_multi_dataset_ds2`: `doc/plots/feff_vs_larch_07_multi_dataset_ds2.svg`, `doc/plots/feff_vs_larch_07_multi_dataset_ds2.png` +- `07_multi_dataset_ds2_rspace`: `doc/plots/feff_vs_larch_07_multi_dataset_ds2_rspace.svg`, `doc/plots/feff_vs_larch_07_multi_dataset_ds2_rspace.png` +- `07_multi_dataset_ds2_rspace_contrib`: `doc/plots/feff_vs_larch_07_multi_dataset_ds2_rspace_contrib.svg`, `doc/plots/feff_vs_larch_07_multi_dataset_ds2_rspace_contrib.png` diff --git a/doc/scripts/generate_feff_vs_larch_plots.py b/doc/scripts/generate_feff_vs_larch_plots.py new file mode 100644 index 0000000..911a641 --- /dev/null +++ b/doc/scripts/generate_feff_vs_larch_plots.py @@ -0,0 +1,238 @@ +#!/usr/bin/env python3 +from __future__ import annotations + +import csv +import math +import os +from dataclasses import dataclass +from pathlib import Path +from typing import Dict, List + + +ROOT = Path(__file__).resolve().parents[2] +DATA_DIR = ROOT / "doc" / "plots" / "feff_vs_larch_data" +PLOT_DIR = ROOT / "doc" / "plots" + +CONTRIB_COLORS = [ + "#7b61ff", + "#f4a259", + "#00a6a6", + "#9b5de5", + "#43aa8b", + "#ef476f", + "#8d99ae", + "#ff7f50", +] + + +@dataclass +class Series: + name: str + x_name: str + x: List[float] + model: List[float] + larch: List[float] + diff: List[float] + contributions: Dict[str, List[float]] + + +def read_series(path: Path) -> Series: + with path.open() as f: + reader = csv.DictReader(f) + fields = reader.fieldnames or [] + if not fields: + raise ValueError(f"no headers in {path}") + x_name = fields[0] + contributions: Dict[str, List[float]] = {} + + if "model" in fields and "larch" in fields: + model_key = "model" + larch_key = "larch" + contrib_keys: List[str] = [] + elif "total_model" in fields and "total_larch" in fields: + model_key = "total_model" + larch_key = "total_larch" + contrib_keys = fields[4:] + for key in contrib_keys: + contributions[key] = [] + else: + raise ValueError(f"unsupported schema for {path.name}: {fields}") + + x, model, larch, diff = [], [], [], [] + for row in reader: + x.append(float(row[x_name])) + mv = float(row[model_key]) + lv = float(row[larch_key]) + model.append(mv) + larch.append(lv) + if "diff" in row and row["diff"] is not None and row["diff"] != "": + diff.append(float(row["diff"])) + else: + diff.append(mv - lv) + for key in contrib_keys: + contributions[key].append(float(row[key])) + + return Series(path.stem, x_name, x, model, larch, diff, contributions) + + +def line(points: List[tuple[float, float]], color: str, width: float = 1.6, dash: str | None = None) -> str: + pts = " ".join(f"{x:.2f},{y:.2f}" for x, y in points) + dash_attr = f' stroke-dasharray="{dash}"' if dash else "" + return f'' + + +def map_xy(xs: List[float], ys: List[float], x0: float, y0: float, w: float, h: float, xmin: float, xmax: float, ymin: float, ymax: float) -> List[tuple[float, float]]: + out = [] + xr = xmax - xmin if xmax > xmin else 1.0 + yr = ymax - ymin if ymax > ymin else 1.0 + for x, y in zip(xs, ys): + px = x0 + (x - xmin) / xr * w + py = y0 + h - (y - ymin) / yr * h + out.append((px, py)) + return out + + +def ticks(minv: float, maxv: float, n: int = 6) -> List[float]: + if maxv <= minv: + return [minv] + step = (maxv - minv) / (n - 1) + return [minv + i * step for i in range(n)] + + +def fmt(v: float) -> str: + av = abs(v) + if av >= 1000 or (av > 0 and av < 1e-3): + return f"{v:.2e}" + return f"{v:.4f}" + + +def axis_labels(x_name: str) -> tuple[str, str]: + if x_name.lower() == "r": + return "R (\u00c5)", "|\u03c7(R)|" + return "k (\u00c5\u207b\u00b9)", "\u03c7(k)" + + +def write_plot(series: Series) -> None: + width, height = 1400, 840 + left, right = 90, 40 + top, mid_gap, bottom = 52, 60, 56 + plot_h = 500 + resid_h = 170 + plot_w = width - left - right + + x_min, x_max = min(series.x), max(series.x) + y_min = min(min(series.model), min(series.larch)) + y_max = max(max(series.model), max(series.larch)) + for vals in series.contributions.values(): + y_min = min(y_min, min(vals)) + y_max = max(y_max, max(vals)) + if abs(y_max - y_min) < 1e-12: + y_max += 1e-6 + y_min -= 1e-6 + + d_min, d_max = min(series.diff), max(series.diff) + dm = max(abs(d_min), abs(d_max)) + d_min, d_max = (-dm, dm) if dm > 0 else (-1e-8, 1e-8) + + p_model = map_xy(series.x, series.model, left, top, plot_w, plot_h, x_min, x_max, y_min, y_max) + p_larch = map_xy(series.x, series.larch, left, top, plot_w, plot_h, x_min, x_max, y_min, y_max) + p_diff = map_xy(series.x, series.diff, left, top + plot_h + mid_gap, plot_w, resid_h, x_min, x_max, d_min, d_max) + p_contrib = { + name: map_xy(series.x, vals, left, top, plot_w, plot_h, x_min, x_max, y_min, y_max) + for name, vals in series.contributions.items() + } + + rms = math.sqrt(sum(v * v for v in series.diff) / max(1, len(series.diff))) + max_abs = max(abs(v) for v in series.diff) if series.diff else 0.0 + x_ticks = ticks(x_min, x_max) + y_ticks = ticks(y_min, y_max) + d_ticks = ticks(d_min, d_max) + x_label, y_label = axis_labels(series.x_name) + + parts = [] + parts.append(f'') + parts.append('') + parts.append('') + subtitle = f"RMS(diff)={rms:.3e}, Max|diff|={max_abs:.3e}, contributions={len(series.contributions)}" + parts.append(f'{series.name}: xraytsubaki vs xraylarch') + parts.append(f'{subtitle}') + + for xt in x_ticks: + px = left + (xt - x_min) / (x_max - x_min) * plot_w + parts.append(f'') + parts.append(f'') + parts.append(f'{fmt(xt)}') + + for yt in y_ticks: + py = top + plot_h - (yt - y_min) / (y_max - y_min) * plot_h + parts.append(f'') + parts.append(f'{fmt(yt)}') + + for dt in d_ticks: + py = top + plot_h + mid_gap + resid_h - (dt - d_min) / (d_max - d_min) * resid_h + parts.append(f'') + parts.append(f'{fmt(dt)}') + + parts.append(f'') + parts.append(f'') + + for idx, (name, points) in enumerate(p_contrib.items()): + color = CONTRIB_COLORS[idx % len(CONTRIB_COLORS)] + parts.append(line(points, color, width=1.1)) + + parts.append(line(p_larch, "#2e6fdb", width=1.8, dash="5,4")) + parts.append(line(p_model, "#cc3f3f", width=1.8)) + parts.append(line(p_diff, "#2a9d5b", width=1.4)) + + parts.append(f'{y_label}') + parts.append(f'diff') + parts.append(f'{x_label}') + + legend_x = left + 8 + legend_y = top + 18 + parts.append(f'') + parts.append(f'xraytsubaki total') + parts.append(f'') + parts.append(f'xraylarch total') + parts.append(f'') + parts.append(f'diff') + + if series.contributions: + start_y = legend_y + 20 + for idx, name in enumerate(series.contributions.keys()): + color = CONTRIB_COLORS[idx % len(CONTRIB_COLORS)] + y = start_y + idx * 16 + parts.append(f'') + parts.append(f'{name}') + + parts.append("") + + out_path = PLOT_DIR / f"feff_vs_larch_{series.name}.svg" + out_path.write_text("\n".join(parts)) + + +def write_index(series_list: List[Series]) -> None: + lines = ["# FEFF: xraytsubaki vs xraylarch", "", "Generated comparison plots:"] + for s in series_list: + lines.append( + f"- `{s.name}`: `doc/plots/feff_vs_larch_{s.name}.svg`, `doc/plots/feff_vs_larch_{s.name}.png`" + ) + (PLOT_DIR / "feff_vs_larch_index.md").write_text("\n".join(lines) + "\n") + + +def main() -> None: + if not DATA_DIR.exists(): + raise SystemExit(f"missing data directory: {DATA_DIR}") + os.makedirs(PLOT_DIR, exist_ok=True) + series_paths = sorted(DATA_DIR.glob("*.csv")) + if not series_paths: + raise SystemExit("no comparison csv files found") + series_list = [read_series(p) for p in series_paths] + for series in series_list: + write_plot(series) + write_index(series_list) + print(f"Generated {len(series_list)} plot(s) under {PLOT_DIR}") + + +if __name__ == "__main__": + main() diff --git a/doc/scripts/generate_feff_vs_larch_png.py b/doc/scripts/generate_feff_vs_larch_png.py new file mode 100644 index 0000000..5fe9e13 --- /dev/null +++ b/doc/scripts/generate_feff_vs_larch_png.py @@ -0,0 +1,255 @@ +#!/usr/bin/env python3 +from __future__ import annotations + +import csv +import math +from dataclasses import dataclass +from pathlib import Path +from typing import Dict, List, Tuple + +from PIL import Image, ImageDraw, ImageFont + + +ROOT = Path(__file__).resolve().parents[2] +DATA_DIR = ROOT / "doc" / "plots" / "feff_vs_larch_data" +PLOT_DIR = ROOT / "doc" / "plots" + +CONTRIB_COLORS = [ + (123, 97, 255), + (244, 162, 89), + (0, 166, 166), + (155, 93, 229), + (67, 170, 139), + (239, 71, 111), + (141, 153, 174), + (255, 127, 80), +] + + +@dataclass +class Series: + name: str + x_name: str + x: List[float] + model: List[float] + larch: List[float] + diff: List[float] + contributions: Dict[str, List[float]] + + +def read_series(path: Path) -> Series: + with path.open() as f: + reader = csv.DictReader(f) + fields = reader.fieldnames or [] + if not fields: + raise ValueError(f"no headers in {path}") + x_name = fields[0] + contributions: Dict[str, List[float]] = {} + + if "model" in fields and "larch" in fields: + model_key = "model" + larch_key = "larch" + contrib_keys: List[str] = [] + elif "total_model" in fields and "total_larch" in fields: + model_key = "total_model" + larch_key = "total_larch" + contrib_keys = fields[4:] + for key in contrib_keys: + contributions[key] = [] + else: + raise ValueError(f"unsupported schema in {path.name}: {fields}") + + x, model, larch, diff = [], [], [], [] + for row in reader: + x.append(float(row[x_name])) + mv = float(row[model_key]) + lv = float(row[larch_key]) + model.append(mv) + larch.append(lv) + if "diff" in row and row["diff"] is not None and row["diff"] != "": + diff.append(float(row["diff"])) + else: + diff.append(mv - lv) + for key in contrib_keys: + contributions[key].append(float(row[key])) + + return Series(path.stem, x_name, x, model, larch, diff, contributions) + + +def ticks(minv: float, maxv: float, n: int = 6) -> List[float]: + if maxv <= minv: + return [minv] + step = (maxv - minv) / (n - 1) + return [minv + i * step for i in range(n)] + + +def fmt(v: float) -> str: + av = abs(v) + if av >= 1000 or (av > 0 and av < 1e-3): + return f"{v:.2e}" + return f"{v:.4f}" + + +def axis_labels(x_name: str) -> Tuple[str, str]: + if x_name.lower() == "r": + return "R (A)", "|chi(R)|" + return "k (A^-1)", "chi(k)" + + +def map_points( + xs: List[float], + ys: List[float], + x0: int, + y0: int, + w: int, + h: int, + xmin: float, + xmax: float, + ymin: float, + ymax: float, +) -> List[Tuple[int, int]]: + out = [] + xr = xmax - xmin if xmax > xmin else 1.0 + yr = ymax - ymin if ymax > ymin else 1.0 + for x, y in zip(xs, ys): + px = int(round(x0 + (x - xmin) / xr * w)) + py = int(round(y0 + h - (y - ymin) / yr * h)) + out.append((px, py)) + return out + + +def draw_plot(series: Series) -> None: + width, height = 1900, 1180 + left, right = 130, 70 + top, mid_gap, bottom = 90, 100, 80 + plot_h = 680 + resid_h = 220 + plot_w = width - left - right + + x_min, x_max = min(series.x), max(series.x) + y_min = min(min(series.model), min(series.larch)) + y_max = max(max(series.model), max(series.larch)) + for vals in series.contributions.values(): + y_min = min(y_min, min(vals)) + y_max = max(y_max, max(vals)) + if abs(y_max - y_min) < 1.0e-12: + y_max += 1.0e-6 + y_min -= 1.0e-6 + + d_min, d_max = min(series.diff), max(series.diff) + dm = max(abs(d_min), abs(d_max)) + d_min, d_max = (-dm, dm) if dm > 0 else (-1.0e-8, 1.0e-8) + + img = Image.new("RGB", (width, height), "white") + draw = ImageDraw.Draw(img) + font = ImageFont.load_default() + + p_model = map_points(series.x, series.model, left, top, plot_w, plot_h, x_min, x_max, y_min, y_max) + p_larch = map_points(series.x, series.larch, left, top, plot_w, plot_h, x_min, x_max, y_min, y_max) + p_diff = map_points( + series.x, + series.diff, + left, + top + plot_h + mid_gap, + plot_w, + resid_h, + x_min, + x_max, + d_min, + d_max, + ) + p_contrib = { + name: map_points(series.x, vals, left, top, plot_w, plot_h, x_min, x_max, y_min, y_max) + for name, vals in series.contributions.items() + } + + x_ticks = ticks(x_min, x_max) + y_ticks = ticks(y_min, y_max) + d_ticks = ticks(d_min, d_max) + + grid_col = (236, 236, 236) + axis_col = (170, 170, 170) + text_col = (30, 30, 30) + + for xt in x_ticks: + px = int(round(left + (xt - x_min) / (x_max - x_min) * plot_w)) + draw.line([(px, top), (px, top + plot_h)], fill=grid_col, width=1) + draw.line([(px, top + plot_h + mid_gap), (px, top + plot_h + mid_gap + resid_h)], fill=grid_col, width=1) + t = fmt(xt) + tw, th = draw.textbbox((0, 0), t, font=font)[2:] + draw.text((px - tw // 2, height - bottom + 14), t, fill=text_col, font=font) + + for yt in y_ticks: + py = int(round(top + plot_h - (yt - y_min) / (y_max - y_min) * plot_h)) + draw.line([(left, py), (left + plot_w, py)], fill=grid_col, width=1) + t = fmt(yt) + tw, th = draw.textbbox((0, 0), t, font=font)[2:] + draw.text((left - 14 - tw, py - th // 2), t, fill=text_col, font=font) + + for dt in d_ticks: + py = int(round(top + plot_h + mid_gap + resid_h - (dt - d_min) / (d_max - d_min) * resid_h)) + draw.line([(left, py), (left + plot_w, py)], fill=grid_col, width=1) + t = fmt(dt) + tw, th = draw.textbbox((0, 0), t, font=font)[2:] + draw.text((left - 14 - tw, py - th // 2), t, fill=text_col, font=font) + + draw.rectangle([left, top, left + plot_w, top + plot_h], outline=axis_col, width=2) + draw.rectangle( + [left, top + plot_h + mid_gap, left + plot_w, top + plot_h + mid_gap + resid_h], + outline=axis_col, + width=2, + ) + + for idx, (_name, pts) in enumerate(p_contrib.items()): + draw.line(pts, fill=CONTRIB_COLORS[idx % len(CONTRIB_COLORS)], width=2) + draw.line(p_larch, fill=(45, 99, 214), width=4) + draw.line(p_model, fill=(204, 63, 63), width=4) + draw.line(p_diff, fill=(40, 157, 90), width=3) + + rms = math.sqrt(sum(v * v for v in series.diff) / max(1, len(series.diff))) + max_abs = max(abs(v) for v in series.diff) if series.diff else 0.0 + x_label, y_label = axis_labels(series.x_name) + title = f"{series.name}: xraytsubaki vs xraylarch" + subtitle = f"RMS(diff)={rms:.3e}, Max|diff|={max_abs:.3e}, contributions={len(series.contributions)}" + draw.text((left, 22), title, fill=text_col, font=font) + draw.text((left, 46), subtitle, fill=(70, 70, 70), font=font) + + draw.text((left + plot_w + 12, top + 8), y_label, fill=text_col, font=font) + draw.text((left + plot_w + 12, top + plot_h + mid_gap + 8), "diff", fill=text_col, font=font) + draw.text((left + plot_w // 2 - 30, height - 18), x_label, fill=text_col, font=font) + + legend_y = top + 20 + lx = left + 8 + draw.line([(lx, legend_y), (lx + 40, legend_y)], fill=(204, 63, 63), width=4) + draw.text((lx + 48, legend_y - 8), "xraytsubaki total", fill=text_col, font=font) + lx += 250 + draw.line([(lx, legend_y), (lx + 40, legend_y)], fill=(45, 99, 214), width=4) + draw.text((lx + 48, legend_y - 8), "xraylarch total", fill=text_col, font=font) + lx += 220 + draw.line([(lx, legend_y), (lx + 40, legend_y)], fill=(40, 157, 90), width=3) + draw.text((lx + 48, legend_y - 8), "diff", fill=text_col, font=font) + + if series.contributions: + y = legend_y + 22 + for idx, name in enumerate(series.contributions.keys()): + draw.line([(left + 8, y), (left + 26, y)], fill=CONTRIB_COLORS[idx % len(CONTRIB_COLORS)], width=2) + draw.text((left + 32, y - 8), name, fill=text_col, font=font) + y += 16 + + out_path = PLOT_DIR / f"feff_vs_larch_{series.name}.png" + img.save(out_path, "PNG", optimize=True) + + +def main() -> None: + if not DATA_DIR.exists(): + raise SystemExit(f"missing data directory: {DATA_DIR}") + series_paths = sorted(DATA_DIR.glob("*.csv")) + if not series_paths: + raise SystemExit("no comparison csv files found") + for path in series_paths: + draw_plot(read_series(path)) + print(f"Generated {len(series_paths)} PNG plot(s) under {PLOT_DIR}") + + +if __name__ == "__main__": + main() diff --git a/plans/fitting-api-redesign.md b/plans/fitting-api-redesign.md new file mode 100644 index 0000000..b912332 --- /dev/null +++ b/plans/fitting-api-redesign.md @@ -0,0 +1,264 @@ +# Plan: Simplified Builder API + Multi-Dataset Fitting + Extended Expressions + +## Context + +The current fitting API requires ~10 types, redundant variable declarations, and a limited expression parser. This plan delivers: +1. Consuming-Self builder with clone-and-reuse +2. Auto-discovery of variables from expressions +3. Multi-dataset fitting with shared parameters +4. Full math expression engine (larch parity) +5. Unified parameter specification via `Param` struct + simple tuple shortcuts + +--- + +## Target API + +### Paths (builder methods on existing `FeffPathModel`) +```rust +// Build and clone for variations +let base_path = feffpath("feffcu01.dat", FeffFlavor::Feff85L)? + .set_s02("amp").set_e0("de0").set_deltar("dr"); + +let path1 = base_path.clone().set_sigma2("sig2"); +let path2 = base_path.clone().set_sigma2("sig2_2"); + +// Expressions work: .set_sigma2("sig2 * sqrt(reff)") +``` + +### Parameters — two methods +```rust +// Quick: set_inits() for simple (name, value) tuples +fit.set_inits([("amp", 0.95), ("sig2", 0.003), ("de0", 0.0)]) + +// Full: params() for Param structs with bounds/fixed/expr +fit.params([ + Param::new("amp", 0.95), + Param::new("sig2", 0.003).bounds(0.0, 0.02), + Param::fixed("de0", 1.4), + Param::expr("scale", "amp * 2"), +]) +``` + +### Single-dataset fit +```rust +let result = FeffFit::new() + .data(&k, &chi) + .add_path(feffpath("feff01.dat", FeffFlavor::Feff85L)? + .set_s02("amp").set_e0("de0").set_sigma2("sig2").set_deltar("dr")) + .set_inits([("amp", 0.95), ("sig2", 0.003)]) + .set_bounds("sig2", 0.0, 0.02) + .krange(2.0, 14.0).rrange(1.0, 3.0) + .fit()?; +``` + +### Clone-and-reuse template +```rust +let base = FeffFit::new() + .params([Param::new("amp", 0.95), Param::new("sig2", 0.003).bounds(0.0, 0.02)]) + .krange(2.0, 14.0).rrange(1.0, 3.0); + +let r1 = base.clone().data(&k1, &chi1).add_path(path1).fit()?; +let r2 = base.clone().data(&k2, &chi2).add_path(path2).fit()?; +``` + +### Multi-dataset global fit +```rust +let ds1 = FeffFitDataset::new() + .data(&k1, &chi1) + .add_path(feffpath("feff01.dat", FeffFlavor::Feff85L)? + .set_s02("amp").set_e0("de0").set_sigma2("sig2")) + .krange(2.0, 14.0).rrange(1.0, 3.0); + +let ds2 = FeffFitDataset::new() + .data(&k2, &chi2) + .add_path(feffpath("feff02.dat", FeffFlavor::Feff85L)? + .set_s02("amp").set_e0("de0_2").set_sigma2("sig2")) + .krange(2.0, 12.0).rrange(1.0, 4.0); + +let result = FeffFit::new() + .add_dataset(ds1).add_dataset(ds2) + .params([Param::new("amp", 0.9), Param::new("sig2", 0.003).bounds(0.0, 0.02)]) + .fit()?; +``` + +--- + +## Step 1: Extend expression parser — `variables.rs` + +Extend `ExprParser::parse_primary()`: after parsing an identifier, check for `(` → parse as function call. + +**Single-arg functions:** `abs`, `exp`, `log`, `log10`, `sqrt`, `sin`, `cos`, `tan`, `asin`, `acos`, `atan`, `sinh`, `cosh`, `tanh`, `ceil`, `floor`, `round` + +**Two-arg functions:** `min`, `max`, `atan2` + +**Constants:** `pi` → `π`, `e` → Euler's number + +**Also add:** `pub fn extract_symbols(expr: &str) -> Vec` — extracts user variable names, excluding function names, constants, and `"reff"`. + +**File:** `crates/xraytsubaki/src/xafs/fitting/variables.rs` + +--- + +## Step 2: Add `Param` struct — `types.rs` + +```rust +/// Lightweight parameter specification for the builder API. +#[derive(Debug, Clone)] +pub struct Param { + pub name: String, + pub value: f64, + pub vary: bool, + pub min: Option, + pub max: Option, + pub expr: Option, +} + +impl Param { + /// Varying parameter with initial value. + pub fn new(name: impl Into, value: f64) -> Self { ... } + /// Fixed parameter (vary=false). + pub fn fixed(name: impl Into, value: f64) -> Self { ... } + /// Expression-derived parameter (vary=false). + pub fn expr(name: impl Into, expr: impl Into) -> Self { ... } + /// Set bounds (consuming Self). + pub fn bounds(mut self, min: f64, max: f64) -> Self { ... } + + /// Convert to FitVariable. + pub fn to_fit_variable(&self) -> FitVariable { ... } +} +``` + +**File:** `crates/xraytsubaki/src/xafs/fitting/types.rs` + +--- + +## Step 3: Add builder methods to `FeffPathModel` — `types.rs` + +Consuming-Self setters accepting `Into`: +`set_s02`, `set_e0`, `set_ei`, `set_deltar`, `set_sigma2`, `set_third`, `set_fourth`, `set_degen`, `set_label`, `set_use_path` + +**File:** `crates/xraytsubaki/src/xafs/fitting/types.rs` + +--- + +## Step 4: Add builder methods to `FeffFitDataset` — `types.rs` + +Consuming-Self methods: +`new()`, `data(k, chi)`, `epsilon_k(f64)`, `add_path(FeffPathModel)`, `krange(kmin, kmax)`, `rrange(rmin, rmax)`, `kweight(f64)`, `dk(f64)`, `window(FTWindow)`, `rwindow(FTWindow)`, `dr(f64)` + +**File:** `crates/xraytsubaki/src/xafs/fitting/types.rs` + +--- + +## Step 5: Restructure `FeffFitResult` — `types.rs` + +New `DatasetResult` struct for per-dataset outputs. `FeffFitResult` gets `datasets: Vec`, `n_idp: f64`, and `dataset()` convenience method. Remove flat data/model fields. + +**File:** `crates/xraytsubaki/src/xafs/fitting/types.rs` + +--- + +## Step 6: Add `compute_n_idp()` — `transform.rs` + +`pub fn compute_n_idp(transform: &FeffFitTransform) -> f64` +Formula: `1.0 + 2.0 * (rmax - rmin) * (kmax - kmin) / π` + +**File:** `crates/xraytsubaki/src/xafs/fitting/transform.rs` + +--- + +## Step 7: Multi-dataset solver — `solver.rs` + +- `FeffFitMultiProblem` holding `Vec`, shared `FitVariables`, per-dataset `TransformOutput` +- `LeastSquaresProblem` impl: concatenated residuals, block-concatenated Jacobian +- `pub fn feffit_multi(datasets: &[FeffFitDataset], vars: &FitVariables) -> Result` +- `feffit()` delegates to `feffit_multi(&[dataset], vars)` +- Update existing solver tests for new `FeffFitResult` shape + +**File:** `crates/xraytsubaki/src/xafs/fitting/solver.rs` + +--- + +## Step 8: `FeffFit` builder — `builder.rs` (new) + +```rust +pub struct FeffFit { + datasets: Vec, + variables: FitVariables, + flavor: FeffFlavor, + default_dataset: FeffFitDataset, + has_default: bool, +} +``` + +**All methods consume and return `Self`.** + +| Method | Purpose | +|--------|---------| +| `data(k, chi)` | Set data on default dataset | +| `epsilon_k(f64)` | Set epsilon_k on default dataset | +| `add_path(FeffPathModel)` | Add path to default dataset | +| `krange(kmin, kmax)` | Set k-range on default dataset | +| `rrange(rmin, rmax)` | Set R-range on default dataset | +| `kweight(f64)`, `dk(f64)`, `window()`, `rwindow()`, `dr(f64)` | Transform config on default dataset | +| `add_dataset(FeffFitDataset)` | Add a pre-built dataset for multi-dataset fitting | +| `set_init(name, f64)` | Set single variable init value (auto-creates vary=true) | +| `set_inits(IntoIter<(Into, f64)>)` | Batch set init values from tuples | +| `set_bounds(name, min, max)` | Set bounds on a variable | +| `fix(name, f64)` | Fix variable (vary=false) | +| `var_expr(name, expr)` | Expression-derived variable | +| `params(IntoIter)` | Batch configure from Param structs | +| `set_flavor(FeffFlavor)` | Set default FEFF flavor | +| `fit(&self) -> Result` | Auto-discover variables, run fit | + +**Auto-discovery in `fit()`:** +1. Merge default dataset into datasets list (if used) +2. Scan all `PathParamSpec::Expression` + `var_expr` expressions +3. `extract_symbols()` → collect all referenced variable names +4. Auto-create missing symbols as `FitVariable::new(0.0, true)` +5. Skip built-in names (function names, constants, `"reff"`) +6. Call `feffit_multi()` + +**File:** `crates/xraytsubaki/src/xafs/fitting/builder.rs` + +--- + +## Step 9: Module registration + prelude + +**`fitting/mod.rs`:** Add `pub mod builder;`, re-export `FeffFit`, `Param`, `DatasetResult`, `feffit_multi` + +**`prelude.rs`:** Add `FeffFit`, `Param`, `DatasetResult`, `feffit_multi` + +--- + +## Step 10: Tests + +**Expression parser** (`variables.rs`): `exp(-2.0)`, `abs(-3.5)`, `max(a,b)`, `sqrt(4)`, `pi*2`, `log(e)`, `sin(pi/2)`, nested `exp(-sigma2*k^2)`, error on unknown function + +**Builder** (`builder.rs`): auto-discovery, `set_inits` tuples, `params` with Param structs, `set_bounds`, `fix`, `var_expr`, single-dataset parity, clone-reuse template, multi-dataset global fit, error cases, mixed literal/expression + +**Solver** (`solver.rs`): multi-dataset with shared truth params, update existing test for new result shape + +--- + +## Files summary + +| File | Action | +|------|--------| +| `fitting/variables.rs` | MODIFY — extend parser + `extract_symbols()` | +| `fitting/types.rs` | MODIFY — `Param`, builder methods, `DatasetResult`, restructure `FeffFitResult` | +| `fitting/transform.rs` | MODIFY — `compute_n_idp()` | +| `fitting/solver.rs` | MODIFY — `feffit_multi()`, update tests | +| `fitting/builder.rs` | CREATE — `FeffFit` builder | +| `fitting/mod.rs` | MODIFY — register builder, re-exports | +| `prelude.rs` | MODIFY — add new types | + +## Verification + +1. `cargo check` — compiles +2. `cargo clippy` — no warnings +3. `cargo test` — all pass +4. Expression: `exp(-sigma2 * k^2)` evaluates correctly +5. Single-dataset builder matches direct `feffit()` output +6. Multi-dataset fit converges with shared parameters +7. Clone-and-reuse produces valid independent fits From 0349488f81edfa4288f40a1c9cb679bde8c23e9d Mon Sep 17 00:00:00 2001 From: Ameyanagi Date: Tue, 10 Feb 2026 09:17:10 +0900 Subject: [PATCH 3/8] feat(fitting): add FEFF batch parallel API and benchmark --- crates/xraytsubaki/Cargo.toml | 4 + .../benches/feff_fitting_batch_benchmark.rs | 99 +++++++++++++++ crates/xraytsubaki/src/prelude.rs | 5 +- crates/xraytsubaki/src/xafs/fitting/mod.rs | 23 +++- crates/xraytsubaki/src/xafs/fitting/solver.rs | 119 +++++++++++++++++- crates/xraytsubaki/src/xafs/fitting/types.rs | 30 +++++ 6 files changed, 272 insertions(+), 8 deletions(-) create mode 100644 crates/xraytsubaki/benches/feff_fitting_batch_benchmark.rs diff --git a/crates/xraytsubaki/Cargo.toml b/crates/xraytsubaki/Cargo.toml index 73d23fe..64e04a9 100644 --- a/crates/xraytsubaki/Cargo.toml +++ b/crates/xraytsubaki/Cargo.toml @@ -57,3 +57,7 @@ harness = false [[bench]] name = "autobk_stage_benchmark" harness = false + +[[bench]] +name = "feff_fitting_batch_benchmark" +harness = false diff --git a/crates/xraytsubaki/benches/feff_fitting_batch_benchmark.rs b/crates/xraytsubaki/benches/feff_fitting_batch_benchmark.rs new file mode 100644 index 0000000..809086f --- /dev/null +++ b/crates/xraytsubaki/benches/feff_fitting_batch_benchmark.rs @@ -0,0 +1,99 @@ +mod perf; + +use criterion::{black_box, criterion_group, criterion_main, Criterion, Throughput}; +use nalgebra::DVector; +use perf::FlamegraphProfiler; +use xraytsubaki::xafs::fitting::{ + feffit_batch_with_options, feffpath, ff2chi, FeffBatchOptions, FeffBatchParallelMode, + FeffFitDataset, FeffFlavor, FitVariable, FitVariables, PathParamSpec, +}; + +pub const TOP_DIR: &str = env!("CARGO_MANIFEST_DIR"); + +fn fixture_dataset() -> FeffFitDataset { + let pathfile = format!("{TOP_DIR}/tests/testfiles/feffcu01.dat"); + let mut path = feffpath(&pathfile, FeffFlavor::Feff85L).unwrap(); + path.s02 = PathParamSpec::Expression("amp".to_string()); + path.e0 = PathParamSpec::Expression("de0".to_string()); + path.sigma2 = PathParamSpec::Expression("sig2".to_string()); + path.deltar = PathParamSpec::Expression("dr".to_string()); + + let k = DVector::from_iterator(140, (0..140).map(|i| 0.05 * (i as f64 + 1.0))); + let mut truth = FitVariables::new(); + truth.insert("amp", FitVariable::new(0.9, false)); + truth.insert("de0", FitVariable::new(1.1, false)); + truth.insert("sig2", FitVariable::new(0.0031, false)); + truth.insert("dr", FitVariable::new(0.01, false)); + let synthetic = ff2chi(&[path.clone()], &truth, &k).unwrap(); + + FeffFitDataset::new() + .data(&k, &synthetic.chi) + .epsilon_k(1.0) + .add_path(path) +} + +fn initial_variables() -> FitVariables { + let mut initial = FitVariables::new(); + initial.insert("amp", FitVariable::new(0.95, true)); + initial.insert("de0", FitVariable::new(0.0, true)); + initial.insert( + "sig2", + FitVariable::new(0.002, true).with_bounds(Some(0.0), Some(0.02)), + ); + initial.insert("dr", FitVariable::new(0.0, true)); + initial +} + +fn criterion_benchmark(c: &mut Criterion) { + let template = fixture_dataset(); + let vars = initial_variables(); + let batch = vec![template; 10_000]; + + let mut group = c.benchmark_group("feff_fitting_batch"); + group.throughput(Throughput::Elements(batch.len() as u64)); + + let serial = FeffBatchOptions { + parallel_mode: FeffBatchParallelMode::Serial, + chunk_size: 256, + max_threads: None, + }; + group.bench_function("feff_batch_independent_serial_10k", |b| { + b.iter(|| { + let out = feffit_batch_with_options(&batch, &vars, &serial).unwrap(); + black_box(out.len()) + }) + }); + + let rayon = FeffBatchOptions { + parallel_mode: FeffBatchParallelMode::Rayon, + chunk_size: 256, + max_threads: None, + }; + group.bench_function("feff_batch_independent_rayon_10k", |b| { + b.iter(|| { + let out = feffit_batch_with_options(&batch, &vars, &rayon).unwrap(); + black_box(out.len()) + }) + }); + + group.finish(); +} + +fn custom() -> Criterion { + let base = Criterion::default().sample_size(10); + let enable_profiler = + std::env::args().any(|arg| arg == "--profile-time" || arg.starts_with("--profile-time=")); + if enable_profiler { + base.with_profiler(FlamegraphProfiler::new(1000)) + } else { + base + } +} + +criterion_group! { + name = benches; + config = custom(); + targets = criterion_benchmark +} + +criterion_main!(benches); diff --git a/crates/xraytsubaki/src/prelude.rs b/crates/xraytsubaki/src/prelude.rs index b3ab180..23414c3 100644 --- a/crates/xraytsubaki/src/prelude.rs +++ b/crates/xraytsubaki/src/prelude.rs @@ -3,8 +3,9 @@ pub use crate::xafs::xasspectrum::XASSpectrum; pub use crate::xafs::background::{AUTOBKClampScalePolicy, AUTOBKSolver, BackgroundMethod, AUTOBK}; pub use crate::xafs::fitting::{ - feffit, feffit_multi, feffpath, ff2chi, parse_feff_path_file, path2chi, resolve_feff_commands, - run_feff, run_feff_and_load_paths, DatasetResult, FeffDat, FeffExecutionMode, FeffFit, + feffit, feffit_batch, feffit_batch_with_options, feffit_multi, feffpath, ff2chi, + parse_feff_path_file, path2chi, resolve_feff_commands, run_feff, run_feff_and_load_paths, + DatasetResult, FeffBatchOptions, FeffBatchParallelMode, FeffDat, FeffExecutionMode, FeffFit, FeffFitDataset, FeffFitResult, FeffFitTransform, FeffFlavor, FeffModuleCommand, FeffPathModel, FeffResolvedCommands, FeffRunRequest, FeffRunResult, FitSpace, FitVariable, FitVariables, FitWarning, Param, PathContribution, PathParamSpec, diff --git a/crates/xraytsubaki/src/xafs/fitting/mod.rs b/crates/xraytsubaki/src/xafs/fitting/mod.rs index 91d6d44..f52808b 100644 --- a/crates/xraytsubaki/src/xafs/fitting/mod.rs +++ b/crates/xraytsubaki/src/xafs/fitting/mod.rs @@ -15,10 +15,10 @@ pub use builder::FeffFit; pub use errors::FittingError; pub use path_model::FF2ChiOutput; pub use types::{ - DatasetResult, FeffDat, FeffExecutionMode, FeffFitDataset, FeffFitResult, FeffFitTransform, - FeffFlavor, FeffModuleCommand, FeffPathModel, FeffResolvedCommands, FeffRunRequest, - FeffRunResult, FitSpace, FitVariable, FitVariables, FitWarning, Param, PathContribution, - PathParamSpec, + DatasetResult, FeffBatchOptions, FeffBatchParallelMode, FeffDat, FeffExecutionMode, + FeffFitDataset, FeffFitResult, FeffFitTransform, FeffFlavor, FeffModuleCommand, FeffPathModel, + FeffResolvedCommands, FeffRunRequest, FeffRunResult, FitSpace, FitVariable, FitVariables, + FitWarning, Param, PathContribution, PathParamSpec, }; use crate::xafs::{Result, XAFSError}; @@ -55,6 +55,21 @@ pub fn feffit_multi(datasets: &[FeffFitDataset], vars: &FitVariables) -> Result< solver::feffit_multi(datasets, vars).map_err(XAFSError::from) } +pub fn feffit_batch( + datasets: &[FeffFitDataset], + vars: &FitVariables, +) -> Result> { + solver::feffit_batch(datasets, vars).map_err(XAFSError::from) +} + +pub fn feffit_batch_with_options( + datasets: &[FeffFitDataset], + vars: &FitVariables, + options: &FeffBatchOptions, +) -> Result> { + solver::feffit_batch_with_options(datasets, vars, options).map_err(XAFSError::from) +} + pub fn resolve_feff_commands(request: &FeffRunRequest) -> Result { runner::resolve_feff_commands(request).map_err(XAFSError::from) } diff --git a/crates/xraytsubaki/src/xafs/fitting/solver.rs b/crates/xraytsubaki/src/xafs/fitting/solver.rs index 74dc29f..700fec0 100644 --- a/crates/xraytsubaki/src/xafs/fitting/solver.rs +++ b/crates/xraytsubaki/src/xafs/fitting/solver.rs @@ -1,12 +1,16 @@ use levenberg_marquardt::{LeastSquaresProblem, LevenbergMarquardt}; use nalgebra::{DMatrix, DVector, Dyn, Owned}; +use rayon::prelude::*; use super::errors::FittingError; use super::path_model::ff2chi; use super::transform::{ apply_r_transform, compute_n_idp, residual_in_r_space, validate_transform, TransformOutput, }; -use super::types::{DatasetResult, FeffFitDataset, FeffFitResult, FitVariables, PathContribution}; +use super::types::{ + DatasetResult, FeffBatchOptions, FeffBatchParallelMode, FeffFitDataset, FeffFitResult, + FitVariables, PathContribution, +}; pub fn feffit( dataset: &FeffFitDataset, @@ -149,6 +153,58 @@ pub fn feffit_multi( Ok(out) } +pub fn feffit_batch( + datasets: &[FeffFitDataset], + variables: &FitVariables, +) -> Result, FittingError> { + feffit_batch_with_options(datasets, variables, &FeffBatchOptions::default()) +} + +pub fn feffit_batch_with_options( + datasets: &[FeffFitDataset], + variables: &FitVariables, + options: &FeffBatchOptions, +) -> Result, FittingError> { + if datasets.is_empty() { + return Ok(Vec::new()); + } + + let chunk_size = options.chunk_size.max(1); + let run_parallel = || { + (0..datasets.len()) + .into_par_iter() + .with_max_len(chunk_size) + .map(|idx| feffit(&datasets[idx], variables)) + .collect::>() + }; + + let raw_results = match options.parallel_mode { + FeffBatchParallelMode::Serial => datasets + .iter() + .map(|dataset| feffit(dataset, variables)) + .collect::>(), + FeffBatchParallelMode::Rayon => { + if let Some(max_threads) = options.max_threads { + let pool = rayon::ThreadPoolBuilder::new() + .num_threads(max_threads.max(1)) + .build() + .map_err(|err| FittingError::SolverFailed { + reason: format!("failed to build rayon thread pool: {err}"), + })?; + pool.install(run_parallel) + } else { + run_parallel() + } + } + }; + + let mut out = Vec::with_capacity(raw_results.len()); + for item in raw_results { + out.push(item?); + } + Ok(out) +} + fn validate_dataset(dataset: &FeffFitDataset) -> Result<(), FittingError> { if dataset.k.len() != dataset.chi.len() { return Err(FittingError::InvalidDataset { @@ -352,7 +408,9 @@ impl LeastSquaresProblem for FeffFitMultiProblem { mod tests { use super::*; use crate::xafs::fitting::path_model::feffpath; - use crate::xafs::fitting::types::{FeffFlavor, FitVariable, PathParamSpec}; + use crate::xafs::fitting::types::{ + FeffBatchOptions, FeffBatchParallelMode, FeffFlavor, FitVariable, PathParamSpec, + }; use crate::xafs::tests::TOP_DIR; #[test] @@ -456,4 +514,61 @@ mod tests { assert!(result.chi_square.is_finite()); assert_eq!(result.datasets.len(), 2); } + + #[test] + fn test_batch_parallel_preserves_order() { + let pathfile = format!("{TOP_DIR}/tests/testfiles/feffcu01.dat"); + let mut path = feffpath(pathfile, FeffFlavor::Feff85L).unwrap(); + path.s02 = PathParamSpec::Expression("amp".to_string()); + + let k = DVector::from_iterator(180, (0..180).map(|i| 0.05 * (i as f64 + 1.0))); + + let mut initial = FitVariables::new(); + initial.insert("amp", FitVariable::new(0.95, true)); + + let datasets = [0.70, 0.80, 0.90, 1.00] + .iter() + .map(|amp| { + let mut truth = FitVariables::new(); + truth.insert("amp", FitVariable::new(*amp, false)); + let synthetic = ff2chi(&[path.clone()], &truth, &k).unwrap(); + + FeffFitDataset::new() + .data(&k, &synthetic.chi) + .epsilon_k(1.0) + .add_path(path.clone()) + }) + .collect::>(); + + let serial = feffit_batch_with_options( + &datasets, + &initial, + &FeffBatchOptions { + parallel_mode: FeffBatchParallelMode::Serial, + chunk_size: 2, + max_threads: None, + }, + ) + .unwrap(); + let parallel = feffit_batch_with_options( + &datasets, + &initial, + &FeffBatchOptions { + parallel_mode: FeffBatchParallelMode::Rayon, + chunk_size: 2, + max_threads: Some(2), + }, + ) + .unwrap(); + + assert_eq!(serial.len(), datasets.len()); + assert_eq!(parallel.len(), datasets.len()); + + for idx in 0..datasets.len() { + assert!((parallel[idx].data_chi[5] - datasets[idx].chi[5]).abs() < 1.0e-12); + let amp_serial = serial[idx].variables.get("amp").unwrap().value; + let amp_parallel = parallel[idx].variables.get("amp").unwrap().value; + assert!((amp_serial - amp_parallel).abs() < 1.0e-8); + } + } } diff --git a/crates/xraytsubaki/src/xafs/fitting/types.rs b/crates/xraytsubaki/src/xafs/fitting/types.rs index 6278fc5..c0d2626 100644 --- a/crates/xraytsubaki/src/xafs/fitting/types.rs +++ b/crates/xraytsubaki/src/xafs/fitting/types.rs @@ -28,6 +28,36 @@ impl Default for FeffExecutionMode { } } +#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] +pub enum FeffBatchParallelMode { + Serial, + Rayon, +} + +impl Default for FeffBatchParallelMode { + fn default() -> Self { + Self::Serial + } +} + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +#[serde(default)] +pub struct FeffBatchOptions { + pub parallel_mode: FeffBatchParallelMode, + pub chunk_size: usize, + pub max_threads: Option, +} + +impl Default for FeffBatchOptions { + fn default() -> Self { + Self { + parallel_mode: FeffBatchParallelMode::Serial, + chunk_size: 256, + max_threads: None, + } + } +} + #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] #[serde(default)] pub struct FeffRunRequest { From 9891db4b7d0994c80034835cafbc53a9cc143263 Mon Sep 17 00:00:00 2001 From: Ameyanagi Date: Tue, 10 Feb 2026 17:17:54 +0900 Subject: [PATCH 4/8] refactor(fitting): simplify to joint/independent APIs with explicit batch strategy --- .../benches/feff_fitting_batch_benchmark.rs | 29 ++-- crates/xraytsubaki/src/prelude.rs | 6 +- .../xraytsubaki/src/xafs/fitting/builder.rs | 2 +- crates/xraytsubaki/src/xafs/fitting/mod.rs | 23 +--- crates/xraytsubaki/src/xafs/fitting/solver.rs | 124 ++++++++++-------- crates/xraytsubaki/src/xafs/fitting/types.rs | 56 ++++++-- 6 files changed, 138 insertions(+), 102 deletions(-) diff --git a/crates/xraytsubaki/benches/feff_fitting_batch_benchmark.rs b/crates/xraytsubaki/benches/feff_fitting_batch_benchmark.rs index 809086f..b9eb1ce 100644 --- a/crates/xraytsubaki/benches/feff_fitting_batch_benchmark.rs +++ b/crates/xraytsubaki/benches/feff_fitting_batch_benchmark.rs @@ -3,9 +3,10 @@ mod perf; use criterion::{black_box, criterion_group, criterion_main, Criterion, Throughput}; use nalgebra::DVector; use perf::FlamegraphProfiler; +use std::num::NonZeroUsize; use xraytsubaki::xafs::fitting::{ - feffit_batch_with_options, feffpath, ff2chi, FeffBatchOptions, FeffBatchParallelMode, - FeffFitDataset, FeffFlavor, FitVariable, FitVariables, PathParamSpec, + feffit_independent, feffpath, ff2chi, FeffBatchOptions, FeffFitDataset, FeffFlavor, + FitVariable, FitVariables, PathParamSpec, }; pub const TOP_DIR: &str = env!("CARGO_MANIFEST_DIR"); @@ -52,27 +53,23 @@ fn criterion_benchmark(c: &mut Criterion) { let mut group = c.benchmark_group("feff_fitting_batch"); group.throughput(Throughput::Elements(batch.len() as u64)); - let serial = FeffBatchOptions { - parallel_mode: FeffBatchParallelMode::Serial, - chunk_size: 256, - max_threads: None, - }; + let serial = FeffBatchOptions::sequential() + .with_chunk_size(NonZeroUsize::new(256).expect("nonzero constant")); group.bench_function("feff_batch_independent_serial_10k", |b| { b.iter(|| { - let out = feffit_batch_with_options(&batch, &vars, &serial).unwrap(); - black_box(out.len()) + let out = feffit_independent(&batch, &vars, &serial); + let ok_count = out.iter().filter(|item| item.is_ok()).count(); + black_box(ok_count) }) }); - let rayon = FeffBatchOptions { - parallel_mode: FeffBatchParallelMode::Rayon, - chunk_size: 256, - max_threads: None, - }; + let rayon = FeffBatchOptions::parallel() + .with_chunk_size(NonZeroUsize::new(256).expect("nonzero constant")); group.bench_function("feff_batch_independent_rayon_10k", |b| { b.iter(|| { - let out = feffit_batch_with_options(&batch, &vars, &rayon).unwrap(); - black_box(out.len()) + let out = feffit_independent(&batch, &vars, &rayon); + let ok_count = out.iter().filter(|item| item.is_ok()).count(); + black_box(ok_count) }) }); diff --git a/crates/xraytsubaki/src/prelude.rs b/crates/xraytsubaki/src/prelude.rs index 23414c3..e84e19d 100644 --- a/crates/xraytsubaki/src/prelude.rs +++ b/crates/xraytsubaki/src/prelude.rs @@ -3,9 +3,9 @@ pub use crate::xafs::xasspectrum::XASSpectrum; pub use crate::xafs::background::{AUTOBKClampScalePolicy, AUTOBKSolver, BackgroundMethod, AUTOBK}; pub use crate::xafs::fitting::{ - feffit, feffit_batch, feffit_batch_with_options, feffit_multi, feffpath, ff2chi, - parse_feff_path_file, path2chi, resolve_feff_commands, run_feff, run_feff_and_load_paths, - DatasetResult, FeffBatchOptions, FeffBatchParallelMode, FeffDat, FeffExecutionMode, FeffFit, + feffit_independent, feffit_joint, feffpath, ff2chi, parse_feff_path_file, path2chi, + resolve_feff_commands, run_feff, run_feff_and_load_paths, DatasetResult, + FeffBatchExecutionStrategy, FeffBatchOptions, FeffDat, FeffExecutionMode, FeffFit, FeffFitDataset, FeffFitResult, FeffFitTransform, FeffFlavor, FeffModuleCommand, FeffPathModel, FeffResolvedCommands, FeffRunRequest, FeffRunResult, FitSpace, FitVariable, FitVariables, FitWarning, Param, PathContribution, PathParamSpec, diff --git a/crates/xraytsubaki/src/xafs/fitting/builder.rs b/crates/xraytsubaki/src/xafs/fitting/builder.rs index b980e14..5f90d11 100644 --- a/crates/xraytsubaki/src/xafs/fitting/builder.rs +++ b/crates/xraytsubaki/src/xafs/fitting/builder.rs @@ -349,7 +349,7 @@ impl FeffFit { let mut warnings = Vec::new(); self.auto_discover_variables(&datasets, &mut vars, &mut warnings)?; - let mut result = solver::feffit_multi(&datasets, &vars)?; + let mut result = solver::feffit_joint(&datasets, &vars)?; result.warnings.extend(warnings); Ok(result) } diff --git a/crates/xraytsubaki/src/xafs/fitting/mod.rs b/crates/xraytsubaki/src/xafs/fitting/mod.rs index f52808b..9342391 100644 --- a/crates/xraytsubaki/src/xafs/fitting/mod.rs +++ b/crates/xraytsubaki/src/xafs/fitting/mod.rs @@ -15,7 +15,7 @@ pub use builder::FeffFit; pub use errors::FittingError; pub use path_model::FF2ChiOutput; pub use types::{ - DatasetResult, FeffBatchOptions, FeffBatchParallelMode, FeffDat, FeffExecutionMode, + DatasetResult, FeffBatchExecutionStrategy, FeffBatchOptions, FeffDat, FeffExecutionMode, FeffFitDataset, FeffFitResult, FeffFitTransform, FeffFlavor, FeffModuleCommand, FeffPathModel, FeffResolvedCommands, FeffRunRequest, FeffRunResult, FitSpace, FitVariable, FitVariables, FitWarning, Param, PathContribution, PathParamSpec, @@ -47,27 +47,16 @@ pub fn ff2chi( path_model::ff2chi(paths, vars, k).map_err(XAFSError::from) } -pub fn feffit(dataset: &FeffFitDataset, vars: &FitVariables) -> Result { - solver::feffit(dataset, vars).map_err(XAFSError::from) +pub fn feffit_joint(datasets: &[FeffFitDataset], vars: &FitVariables) -> Result { + solver::feffit_joint(datasets, vars).map_err(XAFSError::from) } -pub fn feffit_multi(datasets: &[FeffFitDataset], vars: &FitVariables) -> Result { - solver::feffit_multi(datasets, vars).map_err(XAFSError::from) -} - -pub fn feffit_batch( - datasets: &[FeffFitDataset], - vars: &FitVariables, -) -> Result> { - solver::feffit_batch(datasets, vars).map_err(XAFSError::from) -} - -pub fn feffit_batch_with_options( +pub fn feffit_independent( datasets: &[FeffFitDataset], vars: &FitVariables, options: &FeffBatchOptions, -) -> Result> { - solver::feffit_batch_with_options(datasets, vars, options).map_err(XAFSError::from) +) -> Vec> { + solver::feffit_independent(datasets, vars, options) } pub fn resolve_feff_commands(request: &FeffRunRequest) -> Result { diff --git a/crates/xraytsubaki/src/xafs/fitting/solver.rs b/crates/xraytsubaki/src/xafs/fitting/solver.rs index 700fec0..bffda2c 100644 --- a/crates/xraytsubaki/src/xafs/fitting/solver.rs +++ b/crates/xraytsubaki/src/xafs/fitting/solver.rs @@ -8,18 +8,18 @@ use super::transform::{ apply_r_transform, compute_n_idp, residual_in_r_space, validate_transform, TransformOutput, }; use super::types::{ - DatasetResult, FeffBatchOptions, FeffBatchParallelMode, FeffFitDataset, FeffFitResult, + DatasetResult, FeffBatchExecutionStrategy, FeffBatchOptions, FeffFitDataset, FeffFitResult, FitVariables, PathContribution, }; -pub fn feffit( +fn feffit( dataset: &FeffFitDataset, variables: &FitVariables, ) -> Result { - feffit_multi(std::slice::from_ref(dataset), variables) + feffit_joint(std::slice::from_ref(dataset), variables) } -pub fn feffit_multi( +pub fn feffit_joint( datasets: &[FeffFitDataset], variables: &FitVariables, ) -> Result { @@ -153,23 +153,16 @@ pub fn feffit_multi( Ok(out) } -pub fn feffit_batch( - datasets: &[FeffFitDataset], - variables: &FitVariables, -) -> Result, FittingError> { - feffit_batch_with_options(datasets, variables, &FeffBatchOptions::default()) -} - -pub fn feffit_batch_with_options( +pub fn feffit_independent( datasets: &[FeffFitDataset], variables: &FitVariables, options: &FeffBatchOptions, -) -> Result, FittingError> { +) -> Vec> { if datasets.is_empty() { - return Ok(Vec::new()); + return Vec::new(); } - let chunk_size = options.chunk_size.max(1); + let chunk_size = options.chunk_size.get(); let run_parallel = || { (0..datasets.len()) .into_par_iter() @@ -178,31 +171,26 @@ pub fn feffit_batch_with_options( .collect::>() }; - let raw_results = match options.parallel_mode { - FeffBatchParallelMode::Serial => datasets + match options.strategy { + FeffBatchExecutionStrategy::Sequential => datasets .iter() .map(|dataset| feffit(dataset, variables)) .collect::>(), - FeffBatchParallelMode::Rayon => { - if let Some(max_threads) = options.max_threads { - let pool = rayon::ThreadPoolBuilder::new() - .num_threads(max_threads.max(1)) - .build() - .map_err(|err| FittingError::SolverFailed { - reason: format!("failed to build rayon thread pool: {err}"), - })?; - pool.install(run_parallel) - } else { - run_parallel() + FeffBatchExecutionStrategy::GlobalPool => run_parallel(), + FeffBatchExecutionStrategy::DedicatedPool { threads } => { + let pool = rayon::ThreadPoolBuilder::new() + .num_threads(threads.get()) + .build() + .map_err(|err| FittingError::SolverFailed { + reason: format!("failed to build rayon thread pool: {err}"), + }); + + match pool { + Ok(pool) => pool.install(run_parallel), + Err(err) => vec![Err(err); datasets.len()], } } - }; - - let mut out = Vec::with_capacity(raw_results.len()); - for item in raw_results { - out.push(item?); } - Ok(out) } fn validate_dataset(dataset: &FeffFitDataset) -> Result<(), FittingError> { @@ -407,9 +395,11 @@ impl LeastSquaresProblem for FeffFitMultiProblem { #[cfg(test)] mod tests { use super::*; + use std::num::NonZeroUsize; + use crate::xafs::fitting::path_model::feffpath; use crate::xafs::fitting::types::{ - FeffBatchOptions, FeffBatchParallelMode, FeffFlavor, FitVariable, PathParamSpec, + FeffBatchExecutionStrategy, FeffBatchOptions, FeffFlavor, FitVariable, PathParamSpec, }; use crate::xafs::tests::TOP_DIR; @@ -466,7 +456,7 @@ mod tests { } #[test] - fn test_multi_dataset_fit_runs() { + fn test_joint_dataset_fit_runs() { let pathfile = format!("{TOP_DIR}/tests/testfiles/feffcu01.dat"); let mut path1 = feffpath(pathfile.clone(), FeffFlavor::Feff85L).unwrap(); path1.s02 = PathParamSpec::Expression("amp".to_string()); @@ -510,7 +500,7 @@ mod tests { initial.insert("sig2_2", FitVariable::new(0.0020, true)); initial.insert("dr", FitVariable::new(0.0, true)); - let result = feffit_multi(&[ds1, ds2], &initial).unwrap(); + let result = feffit_joint(&[ds1, ds2], &initial).unwrap(); assert!(result.chi_square.is_finite()); assert_eq!(result.datasets.len(), 2); } @@ -540,35 +530,61 @@ mod tests { }) .collect::>(); - let serial = feffit_batch_with_options( + let serial = feffit_independent( &datasets, &initial, &FeffBatchOptions { - parallel_mode: FeffBatchParallelMode::Serial, - chunk_size: 2, - max_threads: None, + strategy: FeffBatchExecutionStrategy::Sequential, + chunk_size: NonZeroUsize::new(2).expect("nonzero constant"), }, - ) - .unwrap(); - let parallel = feffit_batch_with_options( + ); + let parallel = feffit_independent( &datasets, &initial, - &FeffBatchOptions { - parallel_mode: FeffBatchParallelMode::Rayon, - chunk_size: 2, - max_threads: Some(2), - }, - ) - .unwrap(); + &FeffBatchOptions::dedicated(NonZeroUsize::new(2).expect("nonzero constant")) + .with_chunk_size(NonZeroUsize::new(2).expect("nonzero constant")), + ); assert_eq!(serial.len(), datasets.len()); assert_eq!(parallel.len(), datasets.len()); for idx in 0..datasets.len() { - assert!((parallel[idx].data_chi[5] - datasets[idx].chi[5]).abs() < 1.0e-12); - let amp_serial = serial[idx].variables.get("amp").unwrap().value; - let amp_parallel = parallel[idx].variables.get("amp").unwrap().value; + let serial_result = serial[idx].as_ref().unwrap(); + let parallel_result = parallel[idx].as_ref().unwrap(); + assert!((parallel_result.data_chi[5] - datasets[idx].chi[5]).abs() < 1.0e-12); + let amp_serial = serial_result.variables.get("amp").unwrap().value; + let amp_parallel = parallel_result.variables.get("amp").unwrap().value; assert!((amp_serial - amp_parallel).abs() < 1.0e-8); } } + + #[test] + fn test_independent_batch_collects_per_item_failures() { + let pathfile = format!("{TOP_DIR}/tests/testfiles/feffcu01.dat"); + let mut path = feffpath(pathfile, FeffFlavor::Feff85L).unwrap(); + path.s02 = PathParamSpec::Expression("amp".to_string()); + + let k = DVector::from_iterator(140, (0..140).map(|i| 0.05 * (i as f64 + 1.0))); + let mut truth = FitVariables::new(); + truth.insert("amp", FitVariable::new(0.9, false)); + let synthetic = ff2chi(&[path.clone()], &truth, &k).unwrap(); + + let valid = FeffFitDataset::new() + .data(&k, &synthetic.chi) + .epsilon_k(1.0) + .add_path(path); + let invalid = FeffFitDataset::new() + .data(&k, &DVector::zeros(k.len() - 1)) + .epsilon_k(1.0); + let datasets = vec![valid.clone(), invalid, valid]; + + let mut initial = FitVariables::new(); + initial.insert("amp", FitVariable::new(0.95, true)); + + let out = feffit_independent(&datasets, &initial, &FeffBatchOptions::parallel()); + assert_eq!(out.len(), datasets.len()); + assert!(out[0].is_ok()); + assert!(out[1].is_err()); + assert!(out[2].is_ok()); + } } diff --git a/crates/xraytsubaki/src/xafs/fitting/types.rs b/crates/xraytsubaki/src/xafs/fitting/types.rs index c0d2626..3861f26 100644 --- a/crates/xraytsubaki/src/xafs/fitting/types.rs +++ b/crates/xraytsubaki/src/xafs/fitting/types.rs @@ -1,4 +1,5 @@ use std::collections::BTreeMap; +use std::num::NonZeroUsize; use std::path::PathBuf; use nalgebra::DVector; @@ -29,35 +30,68 @@ impl Default for FeffExecutionMode { } #[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] -pub enum FeffBatchParallelMode { - Serial, - Rayon, +pub enum FeffBatchExecutionStrategy { + Sequential, + GlobalPool, + DedicatedPool { threads: NonZeroUsize }, } -impl Default for FeffBatchParallelMode { +impl Default for FeffBatchExecutionStrategy { fn default() -> Self { - Self::Serial + Self::GlobalPool } } #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] #[serde(default)] pub struct FeffBatchOptions { - pub parallel_mode: FeffBatchParallelMode, - pub chunk_size: usize, - pub max_threads: Option, + pub strategy: FeffBatchExecutionStrategy, + pub chunk_size: NonZeroUsize, } impl Default for FeffBatchOptions { fn default() -> Self { Self { - parallel_mode: FeffBatchParallelMode::Serial, - chunk_size: 256, - max_threads: None, + strategy: FeffBatchExecutionStrategy::GlobalPool, + chunk_size: NonZeroUsize::new(256).expect("nonzero constant"), } } } +impl FeffBatchOptions { + pub fn new() -> Self { + Self::default() + } + + pub fn parallel() -> Self { + Self::default() + } + + pub fn sequential() -> Self { + Self { + strategy: FeffBatchExecutionStrategy::Sequential, + ..Self::default() + } + } + + pub fn dedicated(threads: NonZeroUsize) -> Self { + Self { + strategy: FeffBatchExecutionStrategy::DedicatedPool { threads }, + ..Self::default() + } + } + + pub fn with_strategy(mut self, strategy: FeffBatchExecutionStrategy) -> Self { + self.strategy = strategy; + self + } + + pub fn with_chunk_size(mut self, chunk_size: NonZeroUsize) -> Self { + self.chunk_size = chunk_size; + self + } +} + #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] #[serde(default)] pub struct FeffRunRequest { From 997001ed9ef20371ca160e8ceeb08d104721e9f4 Mon Sep 17 00:00:00 2001 From: Ameyanagi Date: Tue, 10 Feb 2026 17:55:31 +0900 Subject: [PATCH 5/8] fix(fitting): reject non-finite k values in path chi --- .../xraytsubaki/src/xafs/fitting/path_model.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/crates/xraytsubaki/src/xafs/fitting/path_model.rs b/crates/xraytsubaki/src/xafs/fitting/path_model.rs index 400e650..38fb402 100644 --- a/crates/xraytsubaki/src/xafs/fitting/path_model.rs +++ b/crates/xraytsubaki/src/xafs/fitting/path_model.rs @@ -100,6 +100,11 @@ pub(crate) fn calc_path_chi( reason: "k grid must contain at least 3 points".to_string(), }); } + if let Some(index) = k.iter().position(|kv| !kv.is_finite()) { + return Err(FittingError::InvalidDataset { + reason: format!("k grid contains non-finite value at index {index}"), + }); + } let reff = path.feff.reff; let q = k.map(|kv| { @@ -257,6 +262,19 @@ mod tests { assert!(chi.iter().all(|value| value.is_finite())); } + #[test] + fn test_path2chi_rejects_non_finite_k_grid() { + let pathfile = format!("{TOP_DIR}/tests/testfiles/feffcu01.dat"); + let path = feffpath(pathfile, FeffFlavor::Feff85L).unwrap(); + let vars = FitVariables::new(); + + let mut k = DVector::from_iterator(240, (0..240).map(|i| 0.05 * (i as f64 + 1.0))); + k[10] = f64::NAN; + + let err = path2chi(&path, &vars, &k).unwrap_err(); + assert!(matches!(err, FittingError::InvalidDataset { .. })); + } + #[test] fn test_ff2chi_combines_multiple_paths() { let pathfile1 = format!("{TOP_DIR}/tests/testfiles/feffcu01.dat"); From 8ac9f738c386af8d2da94faf57d0b5dd027ebdb6 Mon Sep 17 00:00:00 2001 From: Ameyanagi Date: Tue, 10 Feb 2026 18:03:40 +0900 Subject: [PATCH 6/8] fix(fitting): harden param validation and strict-gate linting --- .../examples/feff_compare_export.rs | 63 ++++++++++++------- .../xraytsubaki/src/xafs/fitting/builder.rs | 10 ++- crates/xraytsubaki/src/xafs/fitting/runner.rs | 18 +++--- crates/xraytsubaki/src/xafs/fitting/solver.rs | 16 +++-- .../xraytsubaki/src/xafs/fitting/transform.rs | 6 +- crates/xraytsubaki/src/xafs/fitting/types.rs | 22 +++---- .../xraytsubaki/src/xafs/fitting/variables.rs | 29 +++++++-- .../tests/feff_builder_examples.rs | 20 +++--- 8 files changed, 112 insertions(+), 72 deletions(-) diff --git a/crates/xraytsubaki/examples/feff_compare_export.rs b/crates/xraytsubaki/examples/feff_compare_export.rs index 44255d4..9f40243 100644 --- a/crates/xraytsubaki/examples/feff_compare_export.rs +++ b/crates/xraytsubaki/examples/feff_compare_export.rs @@ -14,8 +14,7 @@ fn fixture_path(name: &str) -> PathBuf { } fn output_dir() -> PathBuf { - Path::new(env!("CARGO_MANIFEST_DIR")) - .join("../../doc/plots/feff_vs_larch_data") + Path::new(env!("CARGO_MANIFEST_DIR")).join("../../doc/plots/feff_vs_larch_data") } fn load_two_column(path: &Path) -> Result<(DVector, DVector), Box> { @@ -28,14 +27,8 @@ fn load_two_column(path: &Path) -> Result<(DVector, DVector), Box FitVariables { fn export_path_builder() -> Result<(), Box> { let base_path = feffpath( - fixture_path("feffcu01.dat").to_str().ok_or("invalid path")?, + fixture_path("feffcu01.dat") + .to_str() + .ok_or("invalid path")?, FeffFlavor::Feff85L, )? .set_s02("amp") @@ -193,7 +188,12 @@ fn export_path_builder() -> Result<(), Box> { let (k, larch) = load_two_column(&fixture_path("feff_path_chi_larch_ref.txt"))?; let model = path2chi(&path, &larch_truth_variables(), &k)?; - write_comparison_csv(&output_dir().join("01_path_builder.csv"), &k, &model, &larch)?; + write_comparison_csv( + &output_dir().join("01_path_builder.csv"), + &k, + &model, + &larch, + )?; write_rspace_comparison_csv( &output_dir().join("01_path_builder_rspace.csv"), &k, @@ -211,7 +211,9 @@ fn export_path_builder() -> Result<(), Box> { fn export_multi_path_model() -> Result<(), Box> { let path1 = feffpath( - fixture_path("feffcu01.dat").to_str().ok_or("invalid path")?, + fixture_path("feffcu01.dat") + .to_str() + .ok_or("invalid path")?, FeffFlavor::Feff85L, )? .set_s02("amp") @@ -219,7 +221,9 @@ fn export_multi_path_model() -> Result<(), Box> { .set_sigma2("sig2") .set_deltar("dr"); let path2 = feffpath( - fixture_path("feff0002.dat").to_str().ok_or("invalid path")?, + fixture_path("feff0002.dat") + .to_str() + .ok_or("invalid path")?, FeffFlavor::Feff85L, )? .set_s02("amp2") @@ -230,7 +234,12 @@ fn export_multi_path_model() -> Result<(), Box> { let (k, larch) = load_two_column(&fixture_path("feff_ff2chi_larch_ref.txt"))?; let out = ff2chi(&[path1, path2], &larch_truth_variables(), &k)?; let model = out.chi.clone(); - write_comparison_csv(&output_dir().join("02_multi_path_model.csv"), &k, &model, &larch)?; + write_comparison_csv( + &output_dir().join("02_multi_path_model.csv"), + &k, + &model, + &larch, + )?; write_rspace_comparison_csv( &output_dir().join("02_multi_path_model_rspace.csv"), &k, @@ -248,7 +257,9 @@ fn export_multi_path_model() -> Result<(), Box> { fn export_single_dataset_fit() -> Result<(), Box> { let path = feffpath( - fixture_path("feffcu01.dat").to_str().ok_or("invalid path")?, + fixture_path("feffcu01.dat") + .to_str() + .ok_or("invalid path")?, FeffFlavor::Feff85L, )? .set_s02("amp") @@ -292,7 +303,9 @@ fn export_single_dataset_fit() -> Result<(), Box> { fn export_clone_template() -> Result<(), Box> { let path1 = feffpath( - fixture_path("feffcu01.dat").to_str().ok_or("invalid path")?, + fixture_path("feffcu01.dat") + .to_str() + .ok_or("invalid path")?, FeffFlavor::Feff85L, )? .set_s02("amp") @@ -300,7 +313,9 @@ fn export_clone_template() -> Result<(), Box> { .set_sigma2("sig2") .set_deltar("dr"); let path2 = feffpath( - fixture_path("feff0002.dat").to_str().ok_or("invalid path")?, + fixture_path("feff0002.dat") + .to_str() + .ok_or("invalid path")?, FeffFlavor::Feff85L, )? .set_s02("amp2") @@ -383,7 +398,9 @@ fn export_clone_template() -> Result<(), Box> { fn export_multi_dataset() -> Result<(), Box> { let ds1_path = feffpath( - fixture_path("feffcu01.dat").to_str().ok_or("invalid path")?, + fixture_path("feffcu01.dat") + .to_str() + .ok_or("invalid path")?, FeffFlavor::Feff85L, )? .set_s02("amp") @@ -391,7 +408,9 @@ fn export_multi_dataset() -> Result<(), Box> { .set_sigma2("sig2") .set_deltar("dr"); let ds2_path1 = feffpath( - fixture_path("feffcu01.dat").to_str().ok_or("invalid path")?, + fixture_path("feffcu01.dat") + .to_str() + .ok_or("invalid path")?, FeffFlavor::Feff85L, )? .set_s02("amp") @@ -399,7 +418,9 @@ fn export_multi_dataset() -> Result<(), Box> { .set_sigma2("sig2") .set_deltar("dr"); let ds2_path2 = feffpath( - fixture_path("feff0002.dat").to_str().ok_or("invalid path")?, + fixture_path("feff0002.dat") + .to_str() + .ok_or("invalid path")?, FeffFlavor::Feff85L, )? .set_s02("amp2") diff --git a/crates/xraytsubaki/src/xafs/fitting/builder.rs b/crates/xraytsubaki/src/xafs/fitting/builder.rs index 5f90d11..7b34499 100644 --- a/crates/xraytsubaki/src/xafs/fitting/builder.rs +++ b/crates/xraytsubaki/src/xafs/fitting/builder.rs @@ -437,7 +437,7 @@ mod tests { truth.insert("sig2", FitVariable::new(0.0030, false)); truth.insert("dr", FitVariable::new(0.01, false)); - let synthetic = ff2chi(&[path.clone()], &truth, &k).unwrap(); + let synthetic = ff2chi(std::slice::from_ref(&path), &truth, &k).unwrap(); let result = FeffFit::new() .data(&k, &synthetic.chi) .add_path(path) @@ -473,8 +473,12 @@ mod tests { truth.insert("sig2_2", FitVariable::new(0.004, false)); truth.insert("dr", FitVariable::new(0.01, false)); - let chi1 = ff2chi(&[path1.clone()], &truth, &k1).unwrap().chi; - let chi2 = ff2chi(&[path2.clone()], &truth, &k2).unwrap().chi; + let chi1 = ff2chi(std::slice::from_ref(&path1), &truth, &k1) + .unwrap() + .chi; + let chi2 = ff2chi(std::slice::from_ref(&path2), &truth, &k2) + .unwrap() + .chi; let ds1 = FeffFitDataset::new() .data(&k1, &chi1) .add_path(path1) diff --git a/crates/xraytsubaki/src/xafs/fitting/runner.rs b/crates/xraytsubaki/src/xafs/fitting/runner.rs index 3683856..94acad3 100644 --- a/crates/xraytsubaki/src/xafs/fitting/runner.rs +++ b/crates/xraytsubaki/src/xafs/fitting/runner.rs @@ -406,9 +406,9 @@ fn is_executable_file(path: &Path) -> bool { #[cfg(unix)] { use std::os::unix::fs::PermissionsExt; - return fs::metadata(path) + fs::metadata(path) .map(|meta| meta.permissions().mode() & 0o111 != 0) - .unwrap_or(false); + .unwrap_or(false) } #[cfg(not(unix))] @@ -425,14 +425,12 @@ struct StagedFeffInput { impl StagedFeffInput { fn restore(self) -> Result<(), FittingError> { - if self.staged_path.is_some() { - if self.target_path.exists() { - fs::remove_file(&self.target_path).map_err(|error| FittingError::IOFailed { - action: "remove staged feff.inp".to_string(), - path: self.target_path.display().to_string(), - reason: error.to_string(), - })?; - } + if self.staged_path.is_some() && self.target_path.exists() { + fs::remove_file(&self.target_path).map_err(|error| FittingError::IOFailed { + action: "remove staged feff.inp".to_string(), + path: self.target_path.display().to_string(), + reason: error.to_string(), + })?; } if let Some(backup_path) = self.backup_path { diff --git a/crates/xraytsubaki/src/xafs/fitting/solver.rs b/crates/xraytsubaki/src/xafs/fitting/solver.rs index bffda2c..f3a6105 100644 --- a/crates/xraytsubaki/src/xafs/fitting/solver.rs +++ b/crates/xraytsubaki/src/xafs/fitting/solver.rs @@ -382,10 +382,14 @@ impl LeastSquaresProblem for FeffFitMultiProblem { let mut jac = DMatrix::zeros(base.len(), x.len()); for i in 0..x.len() { + let step = (epsilon * x[i].abs().max(1.0)).max(epsilon); + if !step.is_finite() { + return None; + } let mut xt = x.clone(); - xt[i] += epsilon; + xt[i] += step; let fx1 = self.residual_for_parameter_vector(&xt); - jac.set_column(i, &((fx1 - &base) / epsilon)); + jac.set_column(i, &((fx1 - &base) / step)); } Some(jac) @@ -475,8 +479,12 @@ mod tests { truth.insert("sig2_2", FitVariable::new(0.004, false)); truth.insert("dr", FitVariable::new(0.01, false)); - let chi1 = ff2chi(&[path1.clone()], &truth, &k1).unwrap().chi; - let chi2 = ff2chi(&[path2.clone()], &truth, &k2).unwrap().chi; + let chi1 = ff2chi(std::slice::from_ref(&path1), &truth, &k1) + .unwrap() + .chi; + let chi2 = ff2chi(std::slice::from_ref(&path2), &truth, &k2) + .unwrap() + .chi; let ds1 = FeffFitDataset { k: k1, diff --git a/crates/xraytsubaki/src/xafs/fitting/transform.rs b/crates/xraytsubaki/src/xafs/fitting/transform.rs index 8793f22..a5ee6fd 100644 --- a/crates/xraytsubaki/src/xafs/fitting/transform.rs +++ b/crates/xraytsubaki/src/xafs/fitting/transform.rs @@ -1,3 +1,5 @@ +use std::cmp::Ordering; + use nalgebra::DVector; use num_complex::Complex64; @@ -22,7 +24,7 @@ pub fn validate_transform(transform: &FeffFitTransform) -> Result<(), FittingErr reason: "MVP only supports R-space fitting".to_string(), }); } - if !(transform.kmax > transform.kmin) { + if transform.kmax.partial_cmp(&transform.kmin) != Some(Ordering::Greater) { return Err(FittingError::InvalidTransform { reason: format!( "kmax ({}) must be larger than kmin ({})", @@ -30,7 +32,7 @@ pub fn validate_transform(transform: &FeffFitTransform) -> Result<(), FittingErr ), }); } - if !(transform.rmax > transform.rmin) { + if transform.rmax.partial_cmp(&transform.rmin) != Some(Ordering::Greater) { return Err(FittingError::InvalidTransform { reason: format!( "rmax ({}) must be larger than rmin ({})", diff --git a/crates/xraytsubaki/src/xafs/fitting/types.rs b/crates/xraytsubaki/src/xafs/fitting/types.rs index 3861f26..e978ba4 100644 --- a/crates/xraytsubaki/src/xafs/fitting/types.rs +++ b/crates/xraytsubaki/src/xafs/fitting/types.rs @@ -18,28 +18,20 @@ pub enum FitSpace { R, } -#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] +#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)] pub enum FeffExecutionMode { + #[default] Feff85LModules, } -impl Default for FeffExecutionMode { - fn default() -> Self { - Self::Feff85LModules - } -} - -#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] +#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)] pub enum FeffBatchExecutionStrategy { Sequential, + #[default] GlobalPool, - DedicatedPool { threads: NonZeroUsize }, -} - -impl Default for FeffBatchExecutionStrategy { - fn default() -> Self { - Self::GlobalPool - } + DedicatedPool { + threads: NonZeroUsize, + }, } #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] diff --git a/crates/xraytsubaki/src/xafs/fitting/variables.rs b/crates/xraytsubaki/src/xafs/fitting/variables.rs index 86048fe..7b6f627 100644 --- a/crates/xraytsubaki/src/xafs/fitting/variables.rs +++ b/crates/xraytsubaki/src/xafs/fitting/variables.rs @@ -93,17 +93,17 @@ impl FitVariables { resolve_one(name, &self.vars, &mut resolved, &mut visiting)?; } - Ok(BTreeMap::from_iter(resolved.into_iter())) + Ok(BTreeMap::from_iter(resolved)) } } pub fn resolve_path_param( spec: &PathParamSpec, - default: f64, + _default: f64, globals: &BTreeMap, locals: &BTreeMap, ) -> Result { - match spec { + let value = match spec { PathParamSpec::Value(value) => Ok(*value), PathParamSpec::Expression(expr) => eval_expression_with(expr, |symbol| { locals @@ -114,8 +114,20 @@ pub fn resolve_path_param( symbol: symbol.to_string(), }) }), + }?; + + if value.is_finite() { + return Ok(value); } - .map(|value| if value.is_finite() { value } else { default }) + + Err(FittingError::InvalidDataset { + reason: match spec { + PathParamSpec::Value(_) => "path parameter literal value is non-finite".to_string(), + PathParamSpec::Expression(expr) => { + format!("path parameter expression '{expr}' resolved to non-finite value") + } + }, + }) } pub fn eval_expression_with(expr: &str, resolver: F) -> Result @@ -201,4 +213,13 @@ mod tests { let symbols = extract_symbols("amp * sqrt(reff) + sig2"); assert_eq!(symbols, vec!["amp".to_string(), "sig2".to_string()]); } + + #[test] + fn test_resolve_path_param_rejects_non_finite_literal() { + let globals = BTreeMap::new(); + let locals = BTreeMap::new(); + let err = resolve_path_param(&PathParamSpec::Value(f64::NAN), 0.0, &globals, &locals) + .unwrap_err(); + assert!(matches!(err, FittingError::InvalidDataset { .. })); + } } diff --git a/crates/xraytsubaki/tests/feff_builder_examples.rs b/crates/xraytsubaki/tests/feff_builder_examples.rs index 0f2a886..086a9ae 100644 --- a/crates/xraytsubaki/tests/feff_builder_examples.rs +++ b/crates/xraytsubaki/tests/feff_builder_examples.rs @@ -31,7 +31,11 @@ fn assert_chi_matches_larch( expected: &DVector, epsilon: f64, ) { - assert_eq!(actual.len(), expected.len(), "model/expected length mismatch"); + assert_eq!( + actual.len(), + expected.len(), + "model/expected length mismatch" + ); assert_eq!(k.len(), expected.len(), "k/model length mismatch"); for i in 0..k.len() { if k[i] < 2.0 { @@ -218,16 +222,6 @@ fn example_multi_dataset_global_fit_matches_xraylarch_references() { .unwrap(); assert_eq!(result.datasets.len(), 2); - assert_chi_matches_larch( - &k1, - &result.datasets[0].model_chi, - &chi1_expected, - 8.0e-3, - ); - assert_chi_matches_larch( - &k2, - &result.datasets[1].model_chi, - &chi2_expected, - 8.0e-3, - ); + assert_chi_matches_larch(&k1, &result.datasets[0].model_chi, &chi1_expected, 8.0e-3); + assert_chi_matches_larch(&k2, &result.datasets[1].model_chi, &chi2_expected, 8.0e-3); } From 80a80246e4a9841d4252e34bf1bdf5e3b8d6c705 Mon Sep 17 00:00:00 2001 From: Ameyanagi Date: Tue, 10 Feb 2026 18:25:26 +0900 Subject: [PATCH 7/8] fix(solver): use dataset-local dof for reduced chi-square --- crates/xraytsubaki/src/xafs/fitting/solver.rs | 109 +++++++++++++++++- 1 file changed, 107 insertions(+), 2 deletions(-) diff --git a/crates/xraytsubaki/src/xafs/fitting/solver.rs b/crates/xraytsubaki/src/xafs/fitting/solver.rs index f3a6105..088d7c6 100644 --- a/crates/xraytsubaki/src/xafs/fitting/solver.rs +++ b/crates/xraytsubaki/src/xafs/fitting/solver.rs @@ -1,3 +1,5 @@ +use std::collections::BTreeSet; + use levenberg_marquardt::{LeastSquaresProblem, LevenbergMarquardt}; use nalgebra::{DMatrix, DVector, Dyn, Owned}; use rayon::prelude::*; @@ -9,8 +11,9 @@ use super::transform::{ }; use super::types::{ DatasetResult, FeffBatchExecutionStrategy, FeffBatchOptions, FeffFitDataset, FeffFitResult, - FitVariables, PathContribution, + FitVariables, PathContribution, PathParamSpec, }; +use super::variables::try_extract_symbols; fn feffit( dataset: &FeffFitDataset, @@ -77,7 +80,8 @@ pub fn feffit_joint( )?; let ds_chi_square = ds_residual.dot(&ds_residual); let ds_n_data = ds_residual.len(); - let ds_dof = ds_n_data.saturating_sub(n_vary).max(1); + let ds_n_vary = dataset_vary_count(dataset, &solved.variables, &solved.variable_names)?; + let ds_dof = ds_n_data.saturating_sub(ds_n_vary).max(1); let ds_reduced_chi_square = ds_chi_square / ds_dof as f64; let data_norm = dataset.chi.iter().map(|value| value.abs()).sum::(); @@ -153,6 +157,75 @@ pub fn feffit_joint( Ok(out) } +fn dataset_vary_count( + dataset: &FeffFitDataset, + variables: &FitVariables, + varying_names: &[String], +) -> Result { + let varying = varying_names + .iter() + .map(String::as_str) + .collect::>(); + let mut referenced = BTreeSet::::new(); + + for path in dataset.paths.iter().filter(|path| path.use_path) { + for spec in [ + &path.degen, + &path.s02, + &path.e0, + &path.ei, + &path.deltar, + &path.sigma2, + &path.third, + &path.fourth, + ] { + if let PathParamSpec::Expression(expr) = spec { + for symbol in try_extract_symbols(expr)? { + referenced.insert(symbol); + } + } + } + } + + let mut active = BTreeSet::::new(); + let mut visiting = BTreeSet::::new(); + + fn walk_symbol( + symbol: &str, + varying: &BTreeSet<&str>, + variables: &FitVariables, + active: &mut BTreeSet, + visiting: &mut BTreeSet, + ) -> Result<(), FittingError> { + if varying.contains(symbol) { + active.insert(symbol.to_string()); + return Ok(()); + } + if !visiting.insert(symbol.to_string()) { + return Ok(()); + } + + if let Some(expr) = variables + .vars + .get(symbol) + .and_then(|variable| variable.expr.as_ref()) + { + for dependency in try_extract_symbols(expr)? { + walk_symbol(&dependency, varying, variables, active, visiting)?; + } + } + + visiting.remove(symbol); + Ok(()) + } + + for symbol in referenced { + walk_symbol(&symbol, &varying, variables, &mut active, &mut visiting)?; + } + + Ok(active.len()) +} + pub fn feffit_independent( datasets: &[FeffFitDataset], variables: &FitVariables, @@ -511,6 +584,38 @@ mod tests { let result = feffit_joint(&[ds1, ds2], &initial).unwrap(); assert!(result.chi_square.is_finite()); assert_eq!(result.datasets.len(), 2); + + // Per-dataset reduced chi-square should use dataset-local varying parameter counts. + let expected0 = result.datasets[0].chi_square + / result.datasets[0].n_data.saturating_sub(4).max(1) as f64; + let expected1 = result.datasets[1].chi_square + / result.datasets[1].n_data.saturating_sub(4).max(1) as f64; + assert!((result.datasets[0].reduced_chi_square - expected0).abs() < 1.0e-10); + assert!((result.datasets[1].reduced_chi_square - expected1).abs() < 1.0e-10); + } + + #[test] + fn test_dataset_vary_count_tracks_expression_dependencies() { + let path1 = crate::xafs::fitting::types::FeffPathModel::default() + .set_s02("amp") + .set_sigma2("sig2_eff"); + let path2 = crate::xafs::fitting::types::FeffPathModel::default().set_s02("amp2"); + + let ds1 = FeffFitDataset::new().add_path(path1); + let ds2 = FeffFitDataset::new().add_path(path2); + + let mut vars = FitVariables::new(); + vars.insert("amp", FitVariable::new(1.0, true)); + vars.insert("amp2", FitVariable::new(1.0, true)); + vars.insert("sig2", FitVariable::new(0.003, true)); + vars.insert( + "sig2_eff", + FitVariable::new(0.0, false).with_expr("sig2 * 2.0"), + ); + let varying = vec!["amp".to_string(), "amp2".to_string(), "sig2".to_string()]; + + assert_eq!(dataset_vary_count(&ds1, &vars, &varying).unwrap(), 2); + assert_eq!(dataset_vary_count(&ds2, &vars, &varying).unwrap(), 1); } #[test] From 8f19fe49b80a73cb971aa2bad8a75dfe6a894351 Mon Sep 17 00:00:00 2001 From: Ameyanagi Date: Tue, 10 Feb 2026 18:51:45 +0900 Subject: [PATCH 8/8] harden feff parsing and interpolation against utf8/nan panics --- .../xraytsubaki/src/xafs/fitting/feffdat.rs | 49 +++++++++++++++++-- .../src/xafs/fitting/path_model.rs | 37 +++++++++++++- 2 files changed, 82 insertions(+), 4 deletions(-) diff --git a/crates/xraytsubaki/src/xafs/fitting/feffdat.rs b/crates/xraytsubaki/src/xafs/fitting/feffdat.rs index 2ca43ce..7903a79 100644 --- a/crates/xraytsubaki/src/xafs/fitting/feffdat.rs +++ b/crates/xraytsubaki/src/xafs/fitting/feffdat.rs @@ -6,6 +6,20 @@ use nalgebra::DVector; use super::errors::FittingError; use super::types::{FeffDat, FeffFlavor}; +fn split_at_char_boundary_prefix(line: &str, byte_limit: usize) -> (&str, &str) { + if byte_limit >= line.len() { + return (line, ""); + } + + let split_index = line + .char_indices() + .map(|(index, _)| index) + .take_while(|index| *index <= byte_limit) + .last() + .unwrap_or(0); + line.split_at(split_index) +} + pub fn parse_feff_path_file>( path: P, flavor: FeffFlavor, @@ -55,8 +69,9 @@ fn parse_feff85l_dat(path: &Path) -> Result { if title.is_none() { // FEFF files traditionally contain title/version in line 1. if line.len() > 64 { - title = Some(line[..64].trim().to_string()); - version = line[64..].trim().to_string(); + let (title_part, version_part) = split_at_char_boundary_prefix(line, 64); + title = Some(title_part.trim().to_string()); + version = version_part.trim().to_string(); } else { title = Some(line.to_string()); } @@ -68,7 +83,12 @@ fn parse_feff85l_dat(path: &Path) -> Result { continue; } - if line.len() > 8 && line[2..].contains("----") { + let has_path_separator = line + .char_indices() + .nth(2) + .map(|(index, _)| line[index..].contains("----")) + .unwrap_or(false); + if line.len() > 8 && has_path_separator { mode = Mode::Path; continue; } @@ -270,4 +290,27 @@ mod tests { let _ = fs::remove_file(tmp); assert!(matches!(err, FittingError::InvalidFeffData { .. })); } + + #[test] + fn test_parse_multibyte_title_and_path_separator_without_panic() { + let unique = format!( + "xfeff-multibyte-{}-{}.dat", + std::process::id(), + std::time::SystemTime::now() + .duration_since(std::time::UNIX_EPOCH) + .unwrap() + .as_nanos() + ); + let tmp = std::env::temp_dir().join(unique); + let title = format!("{} version", "あ".repeat(30)); + let content = format!( + "{title}\nあい---- path\n2 12.0 2.5 1.0 0.0\nk real[p]@#\n0.0 1.0 1.0 1.0 1.0 1.0 1.0\n1.0 1.0 1.0 1.0 1.0 1.0 1.0\n2.0 1.0 1.0 1.0 1.0 1.0 1.0\n" + ); + fs::write(&tmp, content).unwrap(); + + let parsed = parse_feff_path_file(&tmp, FeffFlavor::Feff85L).unwrap(); + let _ = fs::remove_file(tmp); + assert_eq!(parsed.k.len(), 3); + assert_eq!(parsed.nleg, 2); + } } diff --git a/crates/xraytsubaki/src/xafs/fitting/path_model.rs b/crates/xraytsubaki/src/xafs/fitting/path_model.rs index 38fb402..78bc52e 100644 --- a/crates/xraytsubaki/src/xafs/fitting/path_model.rs +++ b/crates/xraytsubaki/src/xafs/fitting/path_model.rs @@ -188,6 +188,21 @@ fn interp_linear_clamped( reason: "interpolation requires at least 2 FEFF grid points".to_string(), }); } + if let Some(index) = xin.iter().position(|value| !value.is_finite()) { + return Err(FittingError::InvalidFeffData { + reason: format!("FEFF k grid contains non-finite value at index {index}"), + }); + } + if let Some(index) = yin.iter().position(|value| !value.is_finite()) { + return Err(FittingError::InvalidFeffData { + reason: format!("FEFF data contains non-finite value at index {index}"), + }); + } + if let Some(index) = xout.iter().position(|value| !value.is_finite()) { + return Err(FittingError::InvalidDataset { + reason: format!("interpolation target grid contains non-finite value at index {index}"), + }); + } for i in 1..xin.len() { if xin[i] < xin[i - 1] { @@ -211,7 +226,7 @@ fn interp_linear_clamped( continue; } - let idx = match xs.binary_search_by(|probe| probe.partial_cmp(&x).unwrap()) { + let idx = match xs.binary_search_by(|probe| probe.total_cmp(&x)) { Ok(found) => found, Err(insert) => insert, }; @@ -359,4 +374,24 @@ mod tests { assert_abs_diff_eq!(actual, expected, epsilon = 4.0e-3); } } + + #[test] + fn test_interp_linear_clamped_rejects_non_finite_target_grid() { + let xin = DVector::from_vec(vec![1.0, 2.0, 3.0]); + let yin = DVector::from_vec(vec![10.0, 20.0, 30.0]); + let xout = DVector::from_vec(vec![1.5, f64::NAN]); + + let err = interp_linear_clamped(&xin, &yin, &xout).unwrap_err(); + assert!(matches!(err, FittingError::InvalidDataset { .. })); + } + + #[test] + fn test_interp_linear_clamped_rejects_non_finite_source_grid() { + let xin = DVector::from_vec(vec![1.0, f64::INFINITY, 3.0]); + let yin = DVector::from_vec(vec![10.0, 20.0, 30.0]); + let xout = DVector::from_vec(vec![1.5, 2.5]); + + let err = interp_linear_clamped(&xin, &yin, &xout).unwrap_err(); + assert!(matches!(err, FittingError::InvalidFeffData { .. })); + } }