zju-scatt-interface 0.9.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- zju_scatt_interface-0.9.0/CHANGELOG.md +69 -0
- zju_scatt_interface-0.9.0/LICENSE +21 -0
- zju_scatt_interface-0.9.0/MANIFEST.in +7 -0
- zju_scatt_interface-0.9.0/PKG-INFO +210 -0
- zju_scatt_interface-0.9.0/README.md +175 -0
- zju_scatt_interface-0.9.0/configs/bulk_scheme.all_profiles.example.json +173 -0
- zju_scatt_interface-0.9.0/configs/bulk_scheme.example.json +66 -0
- zju_scatt_interface-0.9.0/configs/bulk_scheme.example.py +61 -0
- zju_scatt_interface-0.9.0/configs/multidimensional_bulk_scheme.example.py +68 -0
- zju_scatt_interface-0.9.0/configs/optical_table_format.example.py +53 -0
- zju_scatt_interface-0.9.0/configs/recipes/black_carbon_bulk.json +59 -0
- zju_scatt_interface-0.9.0/configs/recipes/dust_bulk.json +53 -0
- zju_scatt_interface-0.9.0/configs/recipes/ice_multi_temperature_bulk.json +73 -0
- zju_scatt_interface-0.9.0/configs/recipes/sea_salt_bulk.json +41 -0
- zju_scatt_interface-0.9.0/docs/ARCHITECTURE.md +81 -0
- zju_scatt_interface-0.9.0/docs/BULK_CALCULATION.md +246 -0
- zju_scatt_interface-0.9.0/docs/CUSTOM_OPTICAL_TABLE_OUTPUT.md +122 -0
- zju_scatt_interface-0.9.0/docs/GPT_USAGE_GUIDE.md +62 -0
- zju_scatt_interface-0.9.0/docs/INSTALLATION.md +181 -0
- zju_scatt_interface-0.9.0/docs/INTERPOLATION.md +178 -0
- zju_scatt_interface-0.9.0/docs/L1_CEXT_AND_BULK_UNITS.md +134 -0
- zju_scatt_interface-0.9.0/docs/LIVE_TESTING.md +29 -0
- zju_scatt_interface-0.9.0/docs/MULTIDIMENSIONAL_BULK_SCHEMES.md +97 -0
- zju_scatt_interface-0.9.0/docs/NATIVE_MODEL_FORMATS.md +262 -0
- zju_scatt_interface-0.9.0/docs/OUTPUT_FORMATS.md +183 -0
- zju_scatt_interface-0.9.0/docs/PARTICLE_ADAPTERS.md +181 -0
- zju_scatt_interface-0.9.0/docs/PARTICLE_PARAMETER_REFERENCE.md +117 -0
- zju_scatt_interface-0.9.0/docs/PARTICLE_PROFILES.md +220 -0
- zju_scatt_interface-0.9.0/docs/PARTICLE_RECIPES.md +117 -0
- zju_scatt_interface-0.9.0/docs/PROJECT_TASK_LIST.md +493 -0
- zju_scatt_interface-0.9.0/docs/PYPI_PUBLICATION.md +104 -0
- zju_scatt_interface-0.9.0/docs/REFRACTIVE_INDEX_RESOLUTION.md +181 -0
- zju_scatt_interface-0.9.0/docs/REGISTRATION.md +14 -0
- zju_scatt_interface-0.9.0/docs/RELEASE_CHECKLIST.md +58 -0
- zju_scatt_interface-0.9.0/docs/SCHEME_API_AND_CLI.md +220 -0
- zju_scatt_interface-0.9.0/docs/SIZE_DISTRIBUTIONS.md +208 -0
- zju_scatt_interface-0.9.0/docs/SOURCE_DEPENDENCY_PLANNING.md +129 -0
- zju_scatt_interface-0.9.0/docs/STATUS_REPORT_2026-07-23.md +401 -0
- zju_scatt_interface-0.9.0/docs/STATUS_UPDATE_2026-07-24.md +84 -0
- zju_scatt_interface-0.9.0/docs/STATUS_UPDATE_2026-07-26_PHASE10.md +86 -0
- zju_scatt_interface-0.9.0/docs/STATUS_UPDATE_2026-07-26_PHASE8.md +72 -0
- zju_scatt_interface-0.9.0/docs/STATUS_UPDATE_2026-07-26_PHASE9.md +62 -0
- zju_scatt_interface-0.9.0/docs/STATUS_UPDATE_2026-07-28_PHASE11.md +98 -0
- zju_scatt_interface-0.9.0/docs/SYSTEM_ARCHITECTURE_REVIEW.md +235 -0
- zju_scatt_interface-0.9.0/docs/TROUBLESHOOTING.md +99 -0
- zju_scatt_interface-0.9.0/examples/data/observed_psd_example.csv +12 -0
- zju_scatt_interface-0.9.0/examples/download_native_references.py +69 -0
- zju_scatt_interface-0.9.0/examples/example_01_catalog_search.py +97 -0
- zju_scatt_interface-0.9.0/examples/example_02_target_wavelength_retrieval.py +105 -0
- zju_scatt_interface-0.9.0/examples/example_03_bulk_scheme_validation.py +60 -0
- zju_scatt_interface-0.9.0/examples/example_04_observed_psd_csv.py +118 -0
- zju_scatt_interface-0.9.0/examples/example_05_interpolation_modes.py +156 -0
- zju_scatt_interface-0.9.0/examples/example_06_weighted_ice_shapes.py +125 -0
- zju_scatt_interface-0.9.0/examples/example_07_multidimensional_bulk_scheme.py +86 -0
- zju_scatt_interface-0.9.0/examples/example_08_export_model_table.py +70 -0
- zju_scatt_interface-0.9.0/examples/example_09_phase4_psd_validation.py +318 -0
- zju_scatt_interface-0.9.0/examples/example_10_phase5_interpolation_validation.py +227 -0
- zju_scatt_interface-0.9.0/examples/example_11_phase6_particle_adapter_validation.py +232 -0
- zju_scatt_interface-0.9.0/examples/example_12_phase7_bulk_pipeline_validation.py +278 -0
- zju_scatt_interface-0.9.0/examples/example_13_phase8_output_validation.py +208 -0
- zju_scatt_interface-0.9.0/examples/example_14_phase9_typed_and_cli_validation.py +260 -0
- zju_scatt_interface-0.9.0/examples/example_15_phase10_usability_validation.py +168 -0
- zju_scatt_interface-0.9.0/examples/example_16_phase11_release_readiness_validation.py +368 -0
- zju_scatt_interface-0.9.0/examples/example_17_native_model_formats.py +181 -0
- zju_scatt_interface-0.9.0/examples/verify_native_references.py +85 -0
- zju_scatt_interface-0.9.0/pyproject.toml +48 -0
- zju_scatt_interface-0.9.0/setup.cfg +4 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/__init__.py +271 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/__main__.py +3 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/_engine.py +6156 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/_version.py +7 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/adapters.py +912 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/auth.py +66 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/bulk.py +1138 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/catalog.py +42 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/cli.py +1108 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/client.py +21 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/data/refractive_index/Black_carbon_refractive_index_statistics.csv +1972 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/data/refractive_index/Dust_refractive_index_statistics.csv +1972 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/data/refractive_index/Ice_refractive_index_statistics_extend100um.csv +9972 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/data/refractive_index/Ice_refractive_index_used.csv +2001 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/data/refractive_index/Nitrate_refractive_index_used.csv +26 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/data/refractive_index/Organic_carbon_refractive_index_used.csv +26 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/data/refractive_index/Sea_salt_refractive_index_statistics.csv +1972 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/data/refractive_index/Sea_salt_refractive_index_used.csv +26 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/data/refractive_index/Sulfate_refractive_index_used.csv +26 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/data/refractive_index/Water_refractive_index_used.csv +106 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/doctor.py +226 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/download.py +5 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/endpoints.py +65 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/errors.py +11 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/interpolation.py +1986 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/models.py +24 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/native_output.py +869 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/optical_models.py +74 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/planning.py +811 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/plotting.py +5 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/refractive_index.py +447 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/registry.py +828 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/retrieval.py +17 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/schemes/__init__.py +125 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/schemes/config.py +970 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/schemes/grid.py +464 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/schemes/output.py +1510 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/schemes/reference.py +207 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/schemes/table_output.py +525 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/size_distribution.py +708 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/source_schema.py +164 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface/storage.py +15 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface.egg-info/PKG-INFO +210 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface.egg-info/SOURCES.txt +148 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface.egg-info/dependency_links.txt +1 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface.egg-info/entry_points.txt +3 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface.egg-info/requires.txt +25 -0
- zju_scatt_interface-0.9.0/src/zju_scatt_interface.egg-info/top_level.txt +1 -0
- zju_scatt_interface-0.9.0/tests/data/trusted_bulk_reference_v1.json +19 -0
- zju_scatt_interface-0.9.0/tests/local_data.py +25 -0
- zju_scatt_interface-0.9.0/tests/test_adapters.py +398 -0
- zju_scatt_interface-0.9.0/tests/test_bulk_pipeline.py +305 -0
- zju_scatt_interface-0.9.0/tests/test_cli.py +125 -0
- zju_scatt_interface-0.9.0/tests/test_doctor.py +79 -0
- zju_scatt_interface-0.9.0/tests/test_engine_compatibility.py +844 -0
- zju_scatt_interface-0.9.0/tests/test_interpolation.py +640 -0
- zju_scatt_interface-0.9.0/tests/test_l1_cext_conversion.py +242 -0
- zju_scatt_interface-0.9.0/tests/test_live_download_opt_in.py +78 -0
- zju_scatt_interface-0.9.0/tests/test_multidimensional_bulk.py +182 -0
- zju_scatt_interface-0.9.0/tests/test_native_output.py +253 -0
- zju_scatt_interface-0.9.0/tests/test_phase10_examples.py +68 -0
- zju_scatt_interface-0.9.0/tests/test_phase10_reference_and_recipes.py +124 -0
- zju_scatt_interface-0.9.0/tests/test_phase11_module_boundaries.py +47 -0
- zju_scatt_interface-0.9.0/tests/test_phase11_numerical_regression.py +123 -0
- zju_scatt_interface-0.9.0/tests/test_phase11_output_robustness.py +106 -0
- zju_scatt_interface-0.9.0/tests/test_phase11_profile_matrix.py +399 -0
- zju_scatt_interface-0.9.0/tests/test_phase4_example.py +49 -0
- zju_scatt_interface-0.9.0/tests/test_phase5_example.py +45 -0
- zju_scatt_interface-0.9.0/tests/test_phase6_example.py +42 -0
- zju_scatt_interface-0.9.0/tests/test_phase7_example.py +43 -0
- zju_scatt_interface-0.9.0/tests/test_phase8_example.py +46 -0
- zju_scatt_interface-0.9.0/tests/test_phase8_output.py +270 -0
- zju_scatt_interface-0.9.0/tests/test_phase9_cli.py +218 -0
- zju_scatt_interface-0.9.0/tests/test_phase9_example.py +46 -0
- zju_scatt_interface-0.9.0/tests/test_phase9_scheme_api.py +217 -0
- zju_scatt_interface-0.9.0/tests/test_planning.py +258 -0
- zju_scatt_interface-0.9.0/tests/test_refractive_index.py +203 -0
- zju_scatt_interface-0.9.0/tests/test_registry.py +204 -0
- zju_scatt_interface-0.9.0/tests/test_scheme_config.py +75 -0
- zju_scatt_interface-0.9.0/tests/test_size_distribution.py +215 -0
- zju_scatt_interface-0.9.0/tests/test_super_spheroid_ice_requirements.py +604 -0
- zju_scatt_interface-0.9.0/tests/test_table_output.py +159 -0
- zju_scatt_interface-0.9.0/tools/prepare_release.py +86 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## Unreleased
|
|
4
|
+
|
|
5
|
+
## 0.9.0 - 2026-10-13 (prepared, not published)
|
|
6
|
+
|
|
7
|
+
- Set the initial public release candidate to `0.9.0`; plan further testing and
|
|
8
|
+
`0.9.x` fixes before considering `1.0.0`. Earlier `1.0.0a1` entries below
|
|
9
|
+
describe internal development checkpoints, not this public release.
|
|
10
|
+
|
|
11
|
+
- Included the September 2026 revised dust and black-carbon statistics and six
|
|
12
|
+
material reference CSVs in the release candidate.
|
|
13
|
+
- Recognized `Wavelength (in micrometers)` reference-table headers and tested all
|
|
14
|
+
twelve explicit ice temperature-column pairs.
|
|
15
|
+
- Added a regression check for the revised black-carbon means, clean staging and
|
|
16
|
+
artifact verification for releases, and a PyPI publication guide.
|
|
17
|
+
- Read build-time version metadata directly from `_version.py` and included tests,
|
|
18
|
+
Python scheme configurations, and the changelog in source distributions.
|
|
19
|
+
|
|
20
|
+
- Revised single-particle interpolation to combine logarithmic dimensional cross
|
|
21
|
+
sections and projected area, derive SSA/efficiencies afterward, interpolate
|
|
22
|
+
source-normalized phase ratios, and expose solid-angle-weighted phase L2 metrics.
|
|
23
|
+
- Added template-driven optical table export from in-memory results or canonical
|
|
24
|
+
NetCDF4/HDF5 products, with JSON/Python format specifications, unit transforms,
|
|
25
|
+
fixed-width rows, per-particle files, and phase-matrix long tables.
|
|
26
|
+
- Added retained multidimensional bulk-optics grids through `BulkDimension`,
|
|
27
|
+
`SingleBulkScheme`, and `MultiBulkScheme`, including particle-specific NetCDF4
|
|
28
|
+
and HDF5 dimensions, coordinate variables, phase matrices, and validation.
|
|
29
|
+
- Separated single-population calculation, custom aggregation, and output;
|
|
30
|
+
removed implicit `mixing_fraction` and `include_mixture` scheme behavior.
|
|
31
|
+
- Added Phase 11 eight-profile exact/interpolated fixture coverage, trusted
|
|
32
|
+
numerical references, output-corruption tests, opt-in live tests, expanded CI,
|
|
33
|
+
artifact checks, and clean-install validation.
|
|
34
|
+
- Corrected interpolation aliases so source symbols `n` and `alpha` map to
|
|
35
|
+
`roundness` and `aspect_ratio`.
|
|
36
|
+
- Separated package identity, exceptions, endpoints, and optical models from the
|
|
37
|
+
private compatibility engine.
|
|
38
|
+
- Completed Phase 10 user workflows with full BC, dust, sea-salt, and
|
|
39
|
+
multi-temperature ice recipes.
|
|
40
|
+
- Added observed-PSD CSV and interpolation/nearest/no-extrapolation examples.
|
|
41
|
+
- Added `bulk-opt schema` and Python machine-reference APIs for deterministic
|
|
42
|
+
GPT-assisted scheme creation.
|
|
43
|
+
- Added complete parameter, recipe, GPT-safety, and troubleshooting documentation,
|
|
44
|
+
plus Phase 10 tests and graphical validation.
|
|
45
|
+
|
|
46
|
+
## 1.0.0a1 - Phase 2 registry work
|
|
47
|
+
|
|
48
|
+
- Added canonical scientific profiles for all eight local L1 particle families.
|
|
49
|
+
- Added `zju-scatt describe [PARTICLE_TYPE]` and JSON metadata output.
|
|
50
|
+
- Added optional L1 NetCDF source-schema and major-revision validation.
|
|
51
|
+
- Added automatic extended-length Windows paths for long scientific filenames.
|
|
52
|
+
- Documented empirical profile coverage, RH storage conventions, and size meanings.
|
|
53
|
+
- Converted L1 `cext = k^2 Cext` to physical cross sections in `m2`.
|
|
54
|
+
- Converted `xsize_veq` and `xsize_maxd` to physical radii in `um`.
|
|
55
|
+
- Converted user number concentrations from `cm-3` to `m-3` internally so bulk
|
|
56
|
+
coefficients are returned in `m-1`.
|
|
57
|
+
- Prevented silent flattening of multidimensional RH, volume-fraction, and shape
|
|
58
|
+
dimensions.
|
|
59
|
+
|
|
60
|
+
## 1.0.0a1 - Phase 1 checkpoint (2026-07-23)
|
|
61
|
+
|
|
62
|
+
- Preserved the tested earlier command behavior behind the modular package.
|
|
63
|
+
- Added explicit direct and browser-assisted registration methods.
|
|
64
|
+
- Added actionable first-run and expired-session recovery guidance.
|
|
65
|
+
- Added the read-only `zju-scatt doctor` command with human and JSON reports.
|
|
66
|
+
- Added Windows, Linux, and macOS installation documentation.
|
|
67
|
+
- Added clean-install CI coverage for supported platforms and Python versions.
|
|
68
|
+
- Recorded the Python-first bulk-scheme design and minimal single-scattering-variable
|
|
69
|
+
policy for subsequent phases.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Senyi Kong and ZJU-SCATT Team
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: zju-scatt-interface
|
|
3
|
+
Version: 0.9.0
|
|
4
|
+
Summary: Search, retrieve, integrate, and visualize ZJU-SCATT optical data
|
|
5
|
+
Author: Senyi Kong
|
|
6
|
+
Maintainer: ZJU-SCATT Team
|
|
7
|
+
License-Expression: MIT
|
|
8
|
+
Project-URL: Homepage, https://zju_radiation.deep-time.org/
|
|
9
|
+
Project-URL: Data browser, https://zju_radiation.deep-time.org/download
|
|
10
|
+
Keywords: ZJU-SCATT,atmospheric-radiation,remote-sensing,climate,optical-properties
|
|
11
|
+
Requires-Python: >=3.9
|
|
12
|
+
Description-Content-Type: text/markdown
|
|
13
|
+
License-File: LICENSE
|
|
14
|
+
Provides-Extra: native
|
|
15
|
+
Requires-Dist: numpy>=1.23; extra == "native"
|
|
16
|
+
Requires-Dist: h5py>=3.9; extra == "native"
|
|
17
|
+
Requires-Dist: netCDF4>=1.6; extra == "native"
|
|
18
|
+
Provides-Extra: netcdf
|
|
19
|
+
Requires-Dist: h5py>=3.9; extra == "netcdf"
|
|
20
|
+
Requires-Dist: netCDF4>=1.6; extra == "netcdf"
|
|
21
|
+
Provides-Extra: plot
|
|
22
|
+
Requires-Dist: matplotlib>=3.7; extra == "plot"
|
|
23
|
+
Provides-Extra: all
|
|
24
|
+
Requires-Dist: numpy>=1.23; extra == "all"
|
|
25
|
+
Requires-Dist: h5py>=3.9; extra == "all"
|
|
26
|
+
Requires-Dist: matplotlib>=3.7; extra == "all"
|
|
27
|
+
Requires-Dist: netCDF4>=1.6; extra == "all"
|
|
28
|
+
Provides-Extra: dev
|
|
29
|
+
Requires-Dist: build>=1.2; extra == "dev"
|
|
30
|
+
Requires-Dist: h5py>=3.9; extra == "dev"
|
|
31
|
+
Requires-Dist: netCDF4>=1.6; extra == "dev"
|
|
32
|
+
Requires-Dist: ruff>=0.6; extra == "dev"
|
|
33
|
+
Requires-Dist: twine>=5.0; extra == "dev"
|
|
34
|
+
Dynamic: license-file
|
|
35
|
+
|
|
36
|
+
# ZJU-SCATT Interface
|
|
37
|
+
|
|
38
|
+
`zju_scatt_interface` is the modular Python and command-line interface for finding,
|
|
39
|
+
downloading, extracting, integrating, and plotting ZJU-SCATT optical data. It is
|
|
40
|
+
designed for users in atmospheric radiation, remote sensing, weather, and climate
|
|
41
|
+
modeling without requiring knowledge of the database's remote directory layout.
|
|
42
|
+
|
|
43
|
+
The current release candidate is `0.9.0`, intended for testing before `1.0.0`.
|
|
44
|
+
|
|
45
|
+
## Install from PyPI (after publication)
|
|
46
|
+
|
|
47
|
+
```console
|
|
48
|
+
python -m pip install "zju-scatt-interface[all]==0.9.0"
|
|
49
|
+
zju-scatt doctor --offline
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Use `zju-scatt-interface==0.9.0` for the standard-library-only core. The `[all]`
|
|
53
|
+
extra adds scientific file support and plotting. The import name is
|
|
54
|
+
`zju_scatt_interface`. Database downloads require separate registration.
|
|
55
|
+
|
|
56
|
+
This package provides the same `zju-scatt` command as the earlier `zju-scatt`
|
|
57
|
+
distribution; install them in separate virtual environments to avoid command
|
|
58
|
+
collisions. See `docs/PYPI_PUBLICATION.md` for release preparation and updates.
|
|
59
|
+
|
|
60
|
+
## Install for development
|
|
61
|
+
|
|
62
|
+
```console
|
|
63
|
+
python -m pip install -e ".[all]"
|
|
64
|
+
zju-scatt doctor --offline
|
|
65
|
+
zju-scatt --help
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
The short command remains `zju-scatt`; the descriptive package and long command are
|
|
69
|
+
`zju_scatt_interface` and `zju-scatt-interface`.
|
|
70
|
+
|
|
71
|
+
See `docs/INSTALLATION.md` for Windows, Linux, and macOS setup plus first-run
|
|
72
|
+
diagnostics.
|
|
73
|
+
|
|
74
|
+
Run a complete online diagnostic after registration:
|
|
75
|
+
|
|
76
|
+
```console
|
|
77
|
+
zju-scatt doctor
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Registration
|
|
81
|
+
|
|
82
|
+
Direct CLI registration is the default and covers normal use:
|
|
83
|
+
|
|
84
|
+
```console
|
|
85
|
+
zju-scatt register
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
For users who must complete the website form, the alternative is explicit:
|
|
89
|
+
|
|
90
|
+
```console
|
|
91
|
+
zju-scatt register --method browser
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
The terminal opens or prints the official page, explains how to obtain the session
|
|
95
|
+
token, validates it, and stores it without echoing it. `--browser-assisted` remains a
|
|
96
|
+
deprecated compatibility alias. Tokens must never be pasted into chat, committed, or
|
|
97
|
+
included in logs.
|
|
98
|
+
|
|
99
|
+
## Existing workflows retained
|
|
100
|
+
|
|
101
|
+
All v1 commands are retained during modular migration: `browse`, `list`, `search`,
|
|
102
|
+
`estimate`, `retrieve`, `download`, `bulk`, `register`, `session`, `metadata`, and
|
|
103
|
+
`check`. Retrieval and explicit downloads create their output directories as needed.
|
|
104
|
+
|
|
105
|
+
```console
|
|
106
|
+
zju-scatt retrieve --particle-type super_spheroid_ice \
|
|
107
|
+
--target-wavelength 0.67um --target-wavelength-mode interp \
|
|
108
|
+
--output-dir zju_scatt_data --yes
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
The retrieval selector identifies source files in refractive-index `(n,k)` space and
|
|
112
|
+
records provenance. The completed calculation pipeline separately records when a
|
|
113
|
+
single-particle interpolated product was generated, integrates the user PSD, runs
|
|
114
|
+
physical QA, and can write equivalent NetCDF4 or HDF5 bulk products.
|
|
115
|
+
|
|
116
|
+
## Python modules
|
|
117
|
+
|
|
118
|
+
| Module | Responsibility |
|
|
119
|
+
|---|---|
|
|
120
|
+
| `auth` | Direct registration, browser-token import, session validation |
|
|
121
|
+
| `catalog` | Browse/search, scientific filename metadata, manifests |
|
|
122
|
+
| `download` | Resumable downloads and automatic local storage |
|
|
123
|
+
| `retrieval` | High-level parameter requests and source selection |
|
|
124
|
+
| `planning` | Scheme dependency plans, verified cache, manifests, offline reports |
|
|
125
|
+
| `size_distribution` | Array/function/file PSDs, validation, conservative remapping |
|
|
126
|
+
| `bulk` | NetCDF loading and PSD-integrated optical properties |
|
|
127
|
+
| `schemes` | Typed multi-particle configs and NetCDF4/HDF5 output orchestration |
|
|
128
|
+
| `plotting` | Optional scientific plotting |
|
|
129
|
+
|
|
130
|
+
See `docs/ARCHITECTURE.md`, `docs/REGISTRATION.md`,
|
|
131
|
+
`docs/PARTICLE_PROFILES.md`, `docs/L1_CEXT_AND_BULK_UNITS.md`,
|
|
132
|
+
`docs/REFRACTIVE_INDEX_RESOLUTION.md`,
|
|
133
|
+
`docs/SOURCE_DEPENDENCY_PLANNING.md`,
|
|
134
|
+
`docs/SIZE_DISTRIBUTIONS.md`,
|
|
135
|
+
`docs/BULK_CALCULATION.md`, `docs/OUTPUT_FORMATS.md`,
|
|
136
|
+
`docs/SCHEME_API_AND_CLI.md`, `docs/MULTIDIMENSIONAL_BULK_SCHEMES.md`,
|
|
137
|
+
`docs/CUSTOM_OPTICAL_TABLE_OUTPUT.md`,
|
|
138
|
+
`docs/PARTICLE_PARAMETER_REFERENCE.md`, `docs/PARTICLE_RECIPES.md`,
|
|
139
|
+
`docs/GPT_USAGE_GUIDE.md`, `docs/TROUBLESHOOTING.md`,
|
|
140
|
+
`docs/LIVE_TESTING.md`, `docs/RELEASE_CHECKLIST.md`,
|
|
141
|
+
`docs/PROJECT_TASK_LIST.md`,
|
|
142
|
+
`docs/STATUS_REPORT_2026-07-23.md`, `docs/STATUS_UPDATE_2026-07-24.md`,
|
|
143
|
+
`docs/STATUS_UPDATE_2026-07-26_PHASE8.md`,
|
|
144
|
+
`docs/STATUS_UPDATE_2026-07-26_PHASE9.md`,
|
|
145
|
+
`docs/STATUS_UPDATE_2026-07-26_PHASE10.md`,
|
|
146
|
+
`docs/STATUS_UPDATE_2026-07-28_PHASE11.md`, the
|
|
147
|
+
configuration in `configs/`, and the runnable
|
|
148
|
+
scripts in `examples/`. Validate a scheme before running any network or scientific
|
|
149
|
+
calculation:
|
|
150
|
+
|
|
151
|
+
```console
|
|
152
|
+
zju-scatt scheme configs/bulk_scheme.example.json
|
|
153
|
+
zju-scatt scheme-sources configs/bulk_scheme.example.json \
|
|
154
|
+
--workspace zju_scatt_data
|
|
155
|
+
zju-scatt psd-check configs/bulk_scheme.example.json
|
|
156
|
+
zju-scatt bulk-opt validate configs/bulk_scheme.example.json
|
|
157
|
+
zju-scatt bulk-opt plan configs/bulk_scheme.example.json --dry-run
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
Generate the authoritative machine-readable reference or start from a complete
|
|
161
|
+
particle recipe:
|
|
162
|
+
|
|
163
|
+
```console
|
|
164
|
+
zju-scatt bulk-opt schema --json
|
|
165
|
+
zju-scatt bulk-opt schema --particle-type super_spheroid_ice --json
|
|
166
|
+
zju-scatt bulk-opt validate configs/recipes/ice_multi_temperature_bulk.json
|
|
167
|
+
python examples/example_04_observed_psd_csv.py
|
|
168
|
+
python examples/example_05_interpolation_modes.py
|
|
169
|
+
python examples/example_16_phase11_release_readiness_validation.py
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
## Verification
|
|
173
|
+
|
|
174
|
+
Native ARTS 2.x XML, CRTM CloudCoeff release-3 NetCDF/binary, and RTTOV13 HDF5
|
|
175
|
+
exports are available through structured JSON templates. See
|
|
176
|
+
[Native model formats](docs/NATIVE_MODEL_FORMATS.md) for the format assessment,
|
|
177
|
+
required variables and normalization, supported versions, and reference checks.
|
|
178
|
+
|
|
179
|
+
```console
|
|
180
|
+
python -m pip install -e ".[native]"
|
|
181
|
+
python examples/example_17_native_model_formats.py --output native_model_output
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
First install the package from the project root:
|
|
185
|
+
|
|
186
|
+
```console
|
|
187
|
+
python -m pip install -e .
|
|
188
|
+
python -m unittest discover -s tests -v
|
|
189
|
+
python -m zju_scatt_interface --help
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Run only the CLI tests:
|
|
193
|
+
|
|
194
|
+
```console
|
|
195
|
+
python tests/test_cli.py
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
For a quick source-tree run without installation:
|
|
199
|
+
|
|
200
|
+
```console
|
|
201
|
+
PYTHONPATH=src python tests/test_cli.py
|
|
202
|
+
PYTHONPATH=src python -m unittest discover -s tests -v
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
In Windows PowerShell, replace the inline assignment with:
|
|
206
|
+
|
|
207
|
+
```powershell
|
|
208
|
+
$env:PYTHONPATH = (Resolve-Path src).Path
|
|
209
|
+
python tests\test_cli.py
|
|
210
|
+
```
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
# ZJU-SCATT Interface
|
|
2
|
+
|
|
3
|
+
`zju_scatt_interface` is the modular Python and command-line interface for finding,
|
|
4
|
+
downloading, extracting, integrating, and plotting ZJU-SCATT optical data. It is
|
|
5
|
+
designed for users in atmospheric radiation, remote sensing, weather, and climate
|
|
6
|
+
modeling without requiring knowledge of the database's remote directory layout.
|
|
7
|
+
|
|
8
|
+
The current release candidate is `0.9.0`, intended for testing before `1.0.0`.
|
|
9
|
+
|
|
10
|
+
## Install from PyPI (after publication)
|
|
11
|
+
|
|
12
|
+
```console
|
|
13
|
+
python -m pip install "zju-scatt-interface[all]==0.9.0"
|
|
14
|
+
zju-scatt doctor --offline
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Use `zju-scatt-interface==0.9.0` for the standard-library-only core. The `[all]`
|
|
18
|
+
extra adds scientific file support and plotting. The import name is
|
|
19
|
+
`zju_scatt_interface`. Database downloads require separate registration.
|
|
20
|
+
|
|
21
|
+
This package provides the same `zju-scatt` command as the earlier `zju-scatt`
|
|
22
|
+
distribution; install them in separate virtual environments to avoid command
|
|
23
|
+
collisions. See `docs/PYPI_PUBLICATION.md` for release preparation and updates.
|
|
24
|
+
|
|
25
|
+
## Install for development
|
|
26
|
+
|
|
27
|
+
```console
|
|
28
|
+
python -m pip install -e ".[all]"
|
|
29
|
+
zju-scatt doctor --offline
|
|
30
|
+
zju-scatt --help
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
The short command remains `zju-scatt`; the descriptive package and long command are
|
|
34
|
+
`zju_scatt_interface` and `zju-scatt-interface`.
|
|
35
|
+
|
|
36
|
+
See `docs/INSTALLATION.md` for Windows, Linux, and macOS setup plus first-run
|
|
37
|
+
diagnostics.
|
|
38
|
+
|
|
39
|
+
Run a complete online diagnostic after registration:
|
|
40
|
+
|
|
41
|
+
```console
|
|
42
|
+
zju-scatt doctor
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Registration
|
|
46
|
+
|
|
47
|
+
Direct CLI registration is the default and covers normal use:
|
|
48
|
+
|
|
49
|
+
```console
|
|
50
|
+
zju-scatt register
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
For users who must complete the website form, the alternative is explicit:
|
|
54
|
+
|
|
55
|
+
```console
|
|
56
|
+
zju-scatt register --method browser
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
The terminal opens or prints the official page, explains how to obtain the session
|
|
60
|
+
token, validates it, and stores it without echoing it. `--browser-assisted` remains a
|
|
61
|
+
deprecated compatibility alias. Tokens must never be pasted into chat, committed, or
|
|
62
|
+
included in logs.
|
|
63
|
+
|
|
64
|
+
## Existing workflows retained
|
|
65
|
+
|
|
66
|
+
All v1 commands are retained during modular migration: `browse`, `list`, `search`,
|
|
67
|
+
`estimate`, `retrieve`, `download`, `bulk`, `register`, `session`, `metadata`, and
|
|
68
|
+
`check`. Retrieval and explicit downloads create their output directories as needed.
|
|
69
|
+
|
|
70
|
+
```console
|
|
71
|
+
zju-scatt retrieve --particle-type super_spheroid_ice \
|
|
72
|
+
--target-wavelength 0.67um --target-wavelength-mode interp \
|
|
73
|
+
--output-dir zju_scatt_data --yes
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
The retrieval selector identifies source files in refractive-index `(n,k)` space and
|
|
77
|
+
records provenance. The completed calculation pipeline separately records when a
|
|
78
|
+
single-particle interpolated product was generated, integrates the user PSD, runs
|
|
79
|
+
physical QA, and can write equivalent NetCDF4 or HDF5 bulk products.
|
|
80
|
+
|
|
81
|
+
## Python modules
|
|
82
|
+
|
|
83
|
+
| Module | Responsibility |
|
|
84
|
+
|---|---|
|
|
85
|
+
| `auth` | Direct registration, browser-token import, session validation |
|
|
86
|
+
| `catalog` | Browse/search, scientific filename metadata, manifests |
|
|
87
|
+
| `download` | Resumable downloads and automatic local storage |
|
|
88
|
+
| `retrieval` | High-level parameter requests and source selection |
|
|
89
|
+
| `planning` | Scheme dependency plans, verified cache, manifests, offline reports |
|
|
90
|
+
| `size_distribution` | Array/function/file PSDs, validation, conservative remapping |
|
|
91
|
+
| `bulk` | NetCDF loading and PSD-integrated optical properties |
|
|
92
|
+
| `schemes` | Typed multi-particle configs and NetCDF4/HDF5 output orchestration |
|
|
93
|
+
| `plotting` | Optional scientific plotting |
|
|
94
|
+
|
|
95
|
+
See `docs/ARCHITECTURE.md`, `docs/REGISTRATION.md`,
|
|
96
|
+
`docs/PARTICLE_PROFILES.md`, `docs/L1_CEXT_AND_BULK_UNITS.md`,
|
|
97
|
+
`docs/REFRACTIVE_INDEX_RESOLUTION.md`,
|
|
98
|
+
`docs/SOURCE_DEPENDENCY_PLANNING.md`,
|
|
99
|
+
`docs/SIZE_DISTRIBUTIONS.md`,
|
|
100
|
+
`docs/BULK_CALCULATION.md`, `docs/OUTPUT_FORMATS.md`,
|
|
101
|
+
`docs/SCHEME_API_AND_CLI.md`, `docs/MULTIDIMENSIONAL_BULK_SCHEMES.md`,
|
|
102
|
+
`docs/CUSTOM_OPTICAL_TABLE_OUTPUT.md`,
|
|
103
|
+
`docs/PARTICLE_PARAMETER_REFERENCE.md`, `docs/PARTICLE_RECIPES.md`,
|
|
104
|
+
`docs/GPT_USAGE_GUIDE.md`, `docs/TROUBLESHOOTING.md`,
|
|
105
|
+
`docs/LIVE_TESTING.md`, `docs/RELEASE_CHECKLIST.md`,
|
|
106
|
+
`docs/PROJECT_TASK_LIST.md`,
|
|
107
|
+
`docs/STATUS_REPORT_2026-07-23.md`, `docs/STATUS_UPDATE_2026-07-24.md`,
|
|
108
|
+
`docs/STATUS_UPDATE_2026-07-26_PHASE8.md`,
|
|
109
|
+
`docs/STATUS_UPDATE_2026-07-26_PHASE9.md`,
|
|
110
|
+
`docs/STATUS_UPDATE_2026-07-26_PHASE10.md`,
|
|
111
|
+
`docs/STATUS_UPDATE_2026-07-28_PHASE11.md`, the
|
|
112
|
+
configuration in `configs/`, and the runnable
|
|
113
|
+
scripts in `examples/`. Validate a scheme before running any network or scientific
|
|
114
|
+
calculation:
|
|
115
|
+
|
|
116
|
+
```console
|
|
117
|
+
zju-scatt scheme configs/bulk_scheme.example.json
|
|
118
|
+
zju-scatt scheme-sources configs/bulk_scheme.example.json \
|
|
119
|
+
--workspace zju_scatt_data
|
|
120
|
+
zju-scatt psd-check configs/bulk_scheme.example.json
|
|
121
|
+
zju-scatt bulk-opt validate configs/bulk_scheme.example.json
|
|
122
|
+
zju-scatt bulk-opt plan configs/bulk_scheme.example.json --dry-run
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Generate the authoritative machine-readable reference or start from a complete
|
|
126
|
+
particle recipe:
|
|
127
|
+
|
|
128
|
+
```console
|
|
129
|
+
zju-scatt bulk-opt schema --json
|
|
130
|
+
zju-scatt bulk-opt schema --particle-type super_spheroid_ice --json
|
|
131
|
+
zju-scatt bulk-opt validate configs/recipes/ice_multi_temperature_bulk.json
|
|
132
|
+
python examples/example_04_observed_psd_csv.py
|
|
133
|
+
python examples/example_05_interpolation_modes.py
|
|
134
|
+
python examples/example_16_phase11_release_readiness_validation.py
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## Verification
|
|
138
|
+
|
|
139
|
+
Native ARTS 2.x XML, CRTM CloudCoeff release-3 NetCDF/binary, and RTTOV13 HDF5
|
|
140
|
+
exports are available through structured JSON templates. See
|
|
141
|
+
[Native model formats](docs/NATIVE_MODEL_FORMATS.md) for the format assessment,
|
|
142
|
+
required variables and normalization, supported versions, and reference checks.
|
|
143
|
+
|
|
144
|
+
```console
|
|
145
|
+
python -m pip install -e ".[native]"
|
|
146
|
+
python examples/example_17_native_model_formats.py --output native_model_output
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
First install the package from the project root:
|
|
150
|
+
|
|
151
|
+
```console
|
|
152
|
+
python -m pip install -e .
|
|
153
|
+
python -m unittest discover -s tests -v
|
|
154
|
+
python -m zju_scatt_interface --help
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Run only the CLI tests:
|
|
158
|
+
|
|
159
|
+
```console
|
|
160
|
+
python tests/test_cli.py
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
For a quick source-tree run without installation:
|
|
164
|
+
|
|
165
|
+
```console
|
|
166
|
+
PYTHONPATH=src python tests/test_cli.py
|
|
167
|
+
PYTHONPATH=src python -m unittest discover -s tests -v
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
In Windows PowerShell, replace the inline assignment with:
|
|
171
|
+
|
|
172
|
+
```powershell
|
|
173
|
+
$env:PYTHONPATH = (Resolve-Path src).Path
|
|
174
|
+
python tests\test_cli.py
|
|
175
|
+
```
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": "1.0",
|
|
3
|
+
"name": "all_profile_parameter_reference",
|
|
4
|
+
"wavelength_unit": "um",
|
|
5
|
+
"wavelengths": [0.55],
|
|
6
|
+
"interpolation": "linear",
|
|
7
|
+
"particles": [
|
|
8
|
+
{
|
|
9
|
+
"name": "dust",
|
|
10
|
+
"particle_type": "super_spheroid",
|
|
11
|
+
"size_distribution": {
|
|
12
|
+
"size": [0.1, 0.3, 1.0, 3.0],
|
|
13
|
+
"dndr": [10.0, 40.0, 30.0, 5.0],
|
|
14
|
+
"size_unit": "um",
|
|
15
|
+
"size_definition": "volume_equivalent_sphere_radius"
|
|
16
|
+
},
|
|
17
|
+
"refractive_index": {
|
|
18
|
+
"mode": "fixed",
|
|
19
|
+
"real": 1.5,
|
|
20
|
+
"imaginary": 0.01
|
|
21
|
+
},
|
|
22
|
+
"shape_parameters": {
|
|
23
|
+
"roundness": {
|
|
24
|
+
"values": [2.0, 2.5],
|
|
25
|
+
"weights": [0.4, 0.6]
|
|
26
|
+
},
|
|
27
|
+
"aspect_ratio": 1.5
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"name": "black_carbon",
|
|
32
|
+
"particle_type": "encapsulated_fractal_aggregates_black_carbon",
|
|
33
|
+
"size_distribution": {
|
|
34
|
+
"size": [0.03, 0.1, 0.3, 1.0],
|
|
35
|
+
"dndr": [20.0, 100.0, 40.0, 2.0],
|
|
36
|
+
"size_unit": "um",
|
|
37
|
+
"size_definition": "volume_equivalent_sphere_radius"
|
|
38
|
+
},
|
|
39
|
+
"refractive_index": {
|
|
40
|
+
"mode": "fixed",
|
|
41
|
+
"black_carbon": {
|
|
42
|
+
"real": 1.85,
|
|
43
|
+
"imaginary": 0.55
|
|
44
|
+
},
|
|
45
|
+
"hygroscopic": {
|
|
46
|
+
"real": 1.4,
|
|
47
|
+
"imaginary": 0.05
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
"shape_parameters": {
|
|
51
|
+
"df": {
|
|
52
|
+
"values": [1.8, 2.4],
|
|
53
|
+
"weights": [0.5, 0.5]
|
|
54
|
+
},
|
|
55
|
+
"vf": 0.2
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"name": "sea_salt",
|
|
60
|
+
"particle_type": "coated_super_spheroid_seasalt",
|
|
61
|
+
"size_distribution": {
|
|
62
|
+
"size": [0.05, 0.2, 1.0, 5.0],
|
|
63
|
+
"dndr": [50.0, 100.0, 20.0, 1.0],
|
|
64
|
+
"size_definition": "maximum_dimension_radius"
|
|
65
|
+
},
|
|
66
|
+
"refractive_index": {
|
|
67
|
+
"mode": "database"
|
|
68
|
+
},
|
|
69
|
+
"shape_parameters": {
|
|
70
|
+
"relative_humidity": {
|
|
71
|
+
"values": [0.5, 0.8],
|
|
72
|
+
"weights": [0.3, 0.7]
|
|
73
|
+
},
|
|
74
|
+
"humidity_branch": "deliquescence"
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"name": "ice",
|
|
79
|
+
"particle_type": "super_spheroid_ice",
|
|
80
|
+
"size_distribution": {
|
|
81
|
+
"size": [5.0, 10.0, 30.0, 100.0],
|
|
82
|
+
"dndr": [1.0, 10.0, 5.0, 0.5],
|
|
83
|
+
"size_definition": "volume_equivalent_sphere_radius"
|
|
84
|
+
},
|
|
85
|
+
"refractive_index": {
|
|
86
|
+
"mode": "database_temperature",
|
|
87
|
+
"temperature_k": 250.0
|
|
88
|
+
},
|
|
89
|
+
"shape_ensemble": [
|
|
90
|
+
{
|
|
91
|
+
"roundness": 2.0,
|
|
92
|
+
"aspect_ratio": 1.0,
|
|
93
|
+
"weight": 0.4
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"roundness": 2.5,
|
|
97
|
+
"aspect_ratio": 1.5,
|
|
98
|
+
"weight": 0.6
|
|
99
|
+
}
|
|
100
|
+
]
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"name": "sulfate",
|
|
104
|
+
"particle_type": "sphere_sulfate",
|
|
105
|
+
"size_distribution": {
|
|
106
|
+
"size": [0.03, 0.1, 0.3, 1.0],
|
|
107
|
+
"dndr": [100.0, 500.0, 100.0, 5.0]
|
|
108
|
+
},
|
|
109
|
+
"refractive_index": {
|
|
110
|
+
"mode": "database"
|
|
111
|
+
},
|
|
112
|
+
"shape_parameters": {
|
|
113
|
+
"relative_humidity": 0.8
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"name": "nitrate",
|
|
118
|
+
"particle_type": "sphere_nitrate",
|
|
119
|
+
"size_distribution": {
|
|
120
|
+
"size": [0.03, 0.1, 0.3, 1.0],
|
|
121
|
+
"dndr": [100.0, 500.0, 100.0, 5.0]
|
|
122
|
+
},
|
|
123
|
+
"refractive_index": {
|
|
124
|
+
"mode": "database"
|
|
125
|
+
},
|
|
126
|
+
"shape_parameters": {
|
|
127
|
+
"relative_humidity": 0.8
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"name": "organic_carbon",
|
|
132
|
+
"particle_type": "sphere_organic_carbon",
|
|
133
|
+
"size_distribution": {
|
|
134
|
+
"size": [0.03, 0.1, 0.3, 1.0],
|
|
135
|
+
"dndr": [100.0, 500.0, 100.0, 5.0]
|
|
136
|
+
},
|
|
137
|
+
"refractive_index": {
|
|
138
|
+
"mode": "database"
|
|
139
|
+
},
|
|
140
|
+
"shape_parameters": {
|
|
141
|
+
"relative_humidity": 0.8
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"name": "water_cloud",
|
|
146
|
+
"particle_type": "sphere_water_cloud",
|
|
147
|
+
"size_distribution": {
|
|
148
|
+
"size": [1.0, 3.0, 10.0, 30.0],
|
|
149
|
+
"dndr": [1.0, 10.0, 50.0, 5.0]
|
|
150
|
+
},
|
|
151
|
+
"refractive_index": {
|
|
152
|
+
"mode": "database"
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
],
|
|
156
|
+
"calculation": {
|
|
157
|
+
"include_phase_matrix": true,
|
|
158
|
+
"scattering_angles_degrees": [0, 30, 60, 90, 120, 150, 180],
|
|
159
|
+
"truncation_policy": "truncate",
|
|
160
|
+
"check_convergence": true,
|
|
161
|
+
"convergence_tolerance": 0.05,
|
|
162
|
+
"strict_convergence": false,
|
|
163
|
+
"strict_qa": true
|
|
164
|
+
},
|
|
165
|
+
"output": {
|
|
166
|
+
"path": "outputs/all_profile_reference.h5",
|
|
167
|
+
"format": "hdf5",
|
|
168
|
+
"compression": true,
|
|
169
|
+
"compression_level": 4,
|
|
170
|
+
"chunk_wavelength": 32,
|
|
171
|
+
"atomic": true
|
|
172
|
+
}
|
|
173
|
+
}
|