cosmoforge 1.0.0rc1__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.
@@ -0,0 +1,64 @@
1
+ # Python-generated files
2
+ __pycache__/
3
+ *.py[oc]
4
+ build/
5
+ dist/
6
+ wheels/
7
+ *.egg-info
8
+
9
+ # Virtual environments
10
+ .venv
11
+ *inputs/
12
+ *outputs/
13
+ *logs/
14
+ *slurms/
15
+ *plots/
16
+ .coverage
17
+
18
+ # Ignore maps/templates except in test directories
19
+ *maps/
20
+ *templates/
21
+ !**/tests/data/**/maps/
22
+ !**/tests/data/**/templates/
23
+
24
+ # Test intermediate artifacts (regenerated during test runs)
25
+ **/tests/data/**/cov_matrix.dat
26
+ **/tests/data/**/errors.dat
27
+ **/tests/data/**/fisher.dat
28
+ **/tests/data/**/geometry.dat
29
+ **/tests/data/**/invCOV*.bin
30
+ **/tests/data/**/reduced_NCVM*.bin
31
+ # Exception: keep Fortran reference files for validation tests
32
+ !**/tests/data/**/fortran_reference/**
33
+
34
+ run_*.py
35
+ /src/*/.library
36
+ /.claude
37
+ /papers
38
+ /sync_to_cluster.sh
39
+
40
+ # Fortran reference/build directories
41
+ /src/*/.fortran
42
+
43
+ # Generated output files in test data
44
+ **/tests/data/**/output_*.bin
45
+ **/tests/data/**/output_*.dat
46
+ **/tests/data/**/*.png
47
+ *.png
48
+ /src/cosmoforge.picslike/tests/data/nside8/B/fortran_reference/theory_spectra
49
+ /src/cosmoforge.qube/benchmarks/sims/bench_T*
50
+ /src/cosmoforge.qube/benchmarks/sims/bench_QU*
51
+ /src/cosmoforge.qube/benchmarks/sims/bench_mpi*
52
+
53
+ # Heavy benchmark fixtures (kept locally, synced to cluster manually)
54
+ /src/cosmoforge.qube/benchmarks/data/
55
+
56
+ src/cosmoforge.qube/scripts/qml_vs_pcl_results.json
57
+ /src/cosmoforge.qube/benchmarks/results
58
+ /src/cosmoforge.qube/benchmarks/sims
59
+ *.json
60
+
61
+ # Local git worktrees
62
+ .worktrees/
63
+ /src/cosmoforge.qube/benchmarks/results
64
+ /src/cosmoforge.qube/benchmarks/sbatch
@@ -0,0 +1,227 @@
1
+ Metadata-Version: 2.4
2
+ Name: cosmoforge
3
+ Version: 1.0.0rc1
4
+ Summary: CosmoForge: umbrella metapackage installing cosmocore, qube-qml, and picslike.
5
+ Author-email: Giacomo Galloni <giacomo.galloni@unife.it>
6
+ Requires-Python: <3.14,>=3.11
7
+ Requires-Dist: cosmocore
8
+ Requires-Dist: picslike
9
+ Requires-Dist: qube-qml
10
+ Description-Content-Type: text/markdown
11
+
12
+ # CosmoForge
13
+
14
+ [![Build Status](https://github.com/ggalloni/CosmoForge/workflows/Test%20CosmoForge%20Packages/badge.svg?branch=master)](https://github.com/ggalloni/CosmoForge/actions)
15
+ [![Documentation](https://github.com/ggalloni/CosmoForge/workflows/Build%20and%20Deploy%20Documentation/badge.svg?branch=master)](https://ggalloni.github.io/CosmoForge/)
16
+ [![codecov](https://codecov.io/gh/ggalloni/CosmoForge/branch/master/graph/badge.svg?token=UOm3LdvL7J)](https://codecov.io/gh/ggalloni/CosmoForge)
17
+ [![PyPI](https://img.shields.io/pypi/v/cosmoforge.svg)](https://pypi.org/project/cosmoforge/)
18
+ [![Code style: Ruff](https://img.shields.io/badge/code%20style-ruff-000000.svg)](https://github.com/charliermarsh/ruff)
19
+ [![Python](https://img.shields.io/badge/python-3.11%7C3.12%7C3.13-blue.svg)](https://www.python.org/downloads/)
20
+ [![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
21
+
22
+ <p align="center">
23
+ <img src="https://raw.githubusercontent.com/ggalloni/CosmoForge/master/logos/logo_cosmoforge_light.png#gh-light-mode-only" alt="CosmoForge logo (light)" style="max-width:30%; height:auto;"/>
24
+ <img src="https://raw.githubusercontent.com/ggalloni/CosmoForge/master/logos/logo_cosmoforge_dark.png#gh-dark-mode-only" alt="CosmoForge logo (dark)" style="max-width:30%; height:auto;"/>
25
+ </p>
26
+
27
+ > **📚 [Complete Documentation](https://ggalloni.github.io/CosmoForge/) | [Installation Guide](https://ggalloni.github.io/CosmoForge/installation.html) | [Quick Start](https://ggalloni.github.io/CosmoForge/quickstart.html) | [API Reference](https://ggalloni.github.io/CosmoForge/api/cosmocore.html)**
28
+
29
+ CosmoForge is a comprehensive Python framework for power spectrum estimation and likelihood analysis of spin-0 and spin-2 fields on the sphere, using Fisher matrix, Quadratic Maximum Likelihood (QML), and pixel-based likelihood methods. While widely applicable to any sky signal (e.g. CMB, galaxy surveys, 21 cm), it is particularly optimized for the analysis of partial-sky, noisy observations with complex noise covariance.
30
+
31
+ ## Overview
32
+
33
+ CosmoForge consists of several interconnected packages designed for efficient and accurate cosmological parameter estimation:
34
+
35
+ - **cosmocore**: Core functionality for cosmological analysis including field management, matrix operations, and I/O utilities
36
+ - **qube-qml**: QML and Fisher matrix implementations for power spectrum estimation (imported as `qube`)
37
+ - **picslike**: Pixel-based Inference with Correlated-Skies Likelihood — pixel-space likelihood analysis for parameter estimation
38
+
39
+ ## Features
40
+
41
+ - **Fisher Matrix Analysis**: Fast Fisher matrix computation for cosmological parameter forecasting
42
+ - **QML Power Spectrum Estimation**: Quadratic Maximum Likelihood estimation for optimal power spectrum recovery
43
+ - **Pixel-Based Likelihood**: Direct likelihood evaluation in map pixel space for parameter estimation
44
+ - **MPI Parallelization**: Efficient parallel computation support for large-scale analyses
45
+ - **HEALPix Integration**: Full support for HEALPix pixelization scheme
46
+ - **Flexible Field Management**: Support for scalar (spin-0) and tensor (spin-2) fields
47
+ - **Beam and Noise Modeling**: Comprehensive instrumental effects modeling
48
+
49
+ ## Installation
50
+
51
+ > **📖 For detailed installation instructions, see the [Installation Guide](https://ggalloni.github.io/CosmoForge/installation.html)**
52
+
53
+ ### Requirements
54
+
55
+ - Python 3.11–3.13
56
+ - NumPy, SciPy
57
+ - healpy
58
+ - mpi4py (for parallel computation)
59
+
60
+ ### Install from PyPI
61
+
62
+ The umbrella distribution installs all three subpackages:
63
+
64
+ ```bash
65
+ pip install cosmoforge
66
+ ```
67
+
68
+ Or pick subpackages individually:
69
+
70
+ ```bash
71
+ pip install cosmocore # core utilities only
72
+ pip install qube-qml # adds QML / Fisher (imported as `qube`)
73
+ pip install picslike # adds pixel-space likelihood
74
+ ```
75
+
76
+ ### Install from source
77
+
78
+ ```bash
79
+ git clone https://github.com/ggalloni/CosmoForge.git
80
+ cd CosmoForge
81
+ uv sync --all-packages --all-extras --dev
82
+ ```
83
+
84
+ ## Quick Start
85
+
86
+ > **🚀 For comprehensive tutorials and examples, visit the [Quick Start Guide](https://ggalloni.github.io/CosmoForge/quickstart.html) and [Tutorials](https://ggalloni.github.io/CosmoForge/tutorials/index.html)**
87
+
88
+ ### Fisher Matrix Analysis
89
+
90
+ ```python
91
+ from qube import Fisher
92
+
93
+ # Initialize Fisher analysis
94
+ fisher = Fisher("config/fisher_config.yaml")
95
+ fisher.run()
96
+
97
+ # Get Fisher matrix
98
+ fisher_matrix = fisher.get_fisher_matrix()
99
+ ```
100
+
101
+ ### QML Power Spectrum Estimation
102
+
103
+ ```python
104
+ from qube import Spectra
105
+
106
+ # Initialize QML analysis
107
+ qml = Spectra("config/qml_config.yaml")
108
+ qml.run()
109
+
110
+ # Get power spectra
111
+ power_spectra = qml.get_power_spectra()
112
+ noise_bias = qml.get_noise_bias()
113
+ ```
114
+
115
+ ### Pixel-Based Likelihood Analysis
116
+
117
+ ```python
118
+ from picslike import PICSLike
119
+
120
+ # Initialize pixel-based likelihood
121
+ picslike = PICSLike(params_file="config/picslike_config.yaml")
122
+ picslike.run()
123
+
124
+ # Get results
125
+ chi_squared = picslike.get_chi_squared()
126
+ best_fit = picslike.get_best_fit()
127
+ ```
128
+
129
+ ### Using with Precomputed Fisher
130
+
131
+ ```python
132
+ from qube import Fisher, Spectra
133
+
134
+ # Compute Fisher matrix first
135
+ fisher = Fisher("config/fisher_config.yaml")
136
+ fisher.run()
137
+
138
+ # Reuse Fisher computation for QML
139
+ qml = Spectra("config/qml_config.yaml", fisher=fisher)
140
+ qml.run()
141
+ ```
142
+
143
+ ## Package Structure
144
+
145
+ ```text
146
+ CosmoForge/
147
+ ├── src/
148
+ │ ├── cosmoforge.cosmocore/ # Core functionality (published as `cosmocore`)
149
+ │ ├── cosmoforge.qube/ # QML and Fisher analysis (published as `qube-qml`, imported as `qube`)
150
+ │ ├── cosmoforge.picslike/ # Pixel-space likelihood (published as `picslike`)
151
+ │ └── cosmoforge.meta/ # Umbrella metapackage (published as `cosmoforge`)
152
+ ├── tests/ # Test suite
153
+ ├── docs/ # Documentation
154
+ └── examples/ # Example configurations
155
+ ```
156
+
157
+ ## Configuration
158
+
159
+ CosmoForge uses YAML configuration files to specify analysis parameters:
160
+
161
+ ```yaml
162
+ # Example configuration
163
+ nside: 4
164
+ lmax: 16
165
+ fields: "TEB"
166
+ maskfile: "data/mask.fits"
167
+ inputclfile: "data/fiducial_cls.txt"
168
+ # ... additional parameters
169
+ ```
170
+
171
+ ## Testing
172
+
173
+ Run the test suite:
174
+
175
+ ```bash
176
+ # Run all tests
177
+ uv run pytest
178
+
179
+ # Run specific package tests
180
+ uv run --package cosmocore pytest src/cosmoforge.cosmocore/tests/
181
+ uv run --package qube pytest src/cosmoforge.qube/tests/
182
+ uv run --package picslike pytest src/cosmoforge.picslike/tests/
183
+ ```
184
+
185
+ ## Performance
186
+
187
+ CosmoForge is designed for high-performance cosmological analysis:
188
+
189
+ - **Numba JIT compilation** for critical mathematical operations
190
+ - **MPI parallelization** for distributed computing
191
+ - **Optimized matrix operations** using LAPACK/BLAS
192
+ - **Memory-efficient algorithms** for large datasets
193
+
194
+ ## Contributing
195
+
196
+ 1. Fork the repository
197
+ 2. Create a feature branch
198
+ 3. Make your changes
199
+ 4. Add tests for new functionality
200
+ 5. Submit a pull request
201
+
202
+ ## License
203
+
204
+ [Add license information]
205
+
206
+ ## Citation
207
+
208
+ If you use CosmoForge in your research, please cite:
209
+
210
+ [Add citation information]
211
+
212
+ ## Support
213
+
214
+ > **📖 Complete documentation is available at: [https://ggalloni.github.io/CosmoForge/](https://ggalloni.github.io/CosmoForge/)**
215
+
216
+ For questions and support:
217
+
218
+ - Open an issue on GitHub
219
+ - Contact: [contact information]
220
+
221
+ ## Acknowledgments
222
+
223
+ CosmoForge builds upon established cosmological analysis methods and libraries:
224
+
225
+ - HEALPix for pixelization
226
+ - NumPy/SciPy for numerical computations
227
+ - MPI for parallelization
@@ -0,0 +1,216 @@
1
+ # CosmoForge
2
+
3
+ [![Build Status](https://github.com/ggalloni/CosmoForge/workflows/Test%20CosmoForge%20Packages/badge.svg?branch=master)](https://github.com/ggalloni/CosmoForge/actions)
4
+ [![Documentation](https://github.com/ggalloni/CosmoForge/workflows/Build%20and%20Deploy%20Documentation/badge.svg?branch=master)](https://ggalloni.github.io/CosmoForge/)
5
+ [![codecov](https://codecov.io/gh/ggalloni/CosmoForge/branch/master/graph/badge.svg?token=UOm3LdvL7J)](https://codecov.io/gh/ggalloni/CosmoForge)
6
+ [![PyPI](https://img.shields.io/pypi/v/cosmoforge.svg)](https://pypi.org/project/cosmoforge/)
7
+ [![Code style: Ruff](https://img.shields.io/badge/code%20style-ruff-000000.svg)](https://github.com/charliermarsh/ruff)
8
+ [![Python](https://img.shields.io/badge/python-3.11%7C3.12%7C3.13-blue.svg)](https://www.python.org/downloads/)
9
+ [![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
10
+
11
+ <p align="center">
12
+ <img src="https://raw.githubusercontent.com/ggalloni/CosmoForge/master/logos/logo_cosmoforge_light.png#gh-light-mode-only" alt="CosmoForge logo (light)" style="max-width:30%; height:auto;"/>
13
+ <img src="https://raw.githubusercontent.com/ggalloni/CosmoForge/master/logos/logo_cosmoforge_dark.png#gh-dark-mode-only" alt="CosmoForge logo (dark)" style="max-width:30%; height:auto;"/>
14
+ </p>
15
+
16
+ > **📚 [Complete Documentation](https://ggalloni.github.io/CosmoForge/) | [Installation Guide](https://ggalloni.github.io/CosmoForge/installation.html) | [Quick Start](https://ggalloni.github.io/CosmoForge/quickstart.html) | [API Reference](https://ggalloni.github.io/CosmoForge/api/cosmocore.html)**
17
+
18
+ CosmoForge is a comprehensive Python framework for power spectrum estimation and likelihood analysis of spin-0 and spin-2 fields on the sphere, using Fisher matrix, Quadratic Maximum Likelihood (QML), and pixel-based likelihood methods. While widely applicable to any sky signal (e.g. CMB, galaxy surveys, 21 cm), it is particularly optimized for the analysis of partial-sky, noisy observations with complex noise covariance.
19
+
20
+ ## Overview
21
+
22
+ CosmoForge consists of several interconnected packages designed for efficient and accurate cosmological parameter estimation:
23
+
24
+ - **cosmocore**: Core functionality for cosmological analysis including field management, matrix operations, and I/O utilities
25
+ - **qube-qml**: QML and Fisher matrix implementations for power spectrum estimation (imported as `qube`)
26
+ - **picslike**: Pixel-based Inference with Correlated-Skies Likelihood — pixel-space likelihood analysis for parameter estimation
27
+
28
+ ## Features
29
+
30
+ - **Fisher Matrix Analysis**: Fast Fisher matrix computation for cosmological parameter forecasting
31
+ - **QML Power Spectrum Estimation**: Quadratic Maximum Likelihood estimation for optimal power spectrum recovery
32
+ - **Pixel-Based Likelihood**: Direct likelihood evaluation in map pixel space for parameter estimation
33
+ - **MPI Parallelization**: Efficient parallel computation support for large-scale analyses
34
+ - **HEALPix Integration**: Full support for HEALPix pixelization scheme
35
+ - **Flexible Field Management**: Support for scalar (spin-0) and tensor (spin-2) fields
36
+ - **Beam and Noise Modeling**: Comprehensive instrumental effects modeling
37
+
38
+ ## Installation
39
+
40
+ > **📖 For detailed installation instructions, see the [Installation Guide](https://ggalloni.github.io/CosmoForge/installation.html)**
41
+
42
+ ### Requirements
43
+
44
+ - Python 3.11–3.13
45
+ - NumPy, SciPy
46
+ - healpy
47
+ - mpi4py (for parallel computation)
48
+
49
+ ### Install from PyPI
50
+
51
+ The umbrella distribution installs all three subpackages:
52
+
53
+ ```bash
54
+ pip install cosmoforge
55
+ ```
56
+
57
+ Or pick subpackages individually:
58
+
59
+ ```bash
60
+ pip install cosmocore # core utilities only
61
+ pip install qube-qml # adds QML / Fisher (imported as `qube`)
62
+ pip install picslike # adds pixel-space likelihood
63
+ ```
64
+
65
+ ### Install from source
66
+
67
+ ```bash
68
+ git clone https://github.com/ggalloni/CosmoForge.git
69
+ cd CosmoForge
70
+ uv sync --all-packages --all-extras --dev
71
+ ```
72
+
73
+ ## Quick Start
74
+
75
+ > **🚀 For comprehensive tutorials and examples, visit the [Quick Start Guide](https://ggalloni.github.io/CosmoForge/quickstart.html) and [Tutorials](https://ggalloni.github.io/CosmoForge/tutorials/index.html)**
76
+
77
+ ### Fisher Matrix Analysis
78
+
79
+ ```python
80
+ from qube import Fisher
81
+
82
+ # Initialize Fisher analysis
83
+ fisher = Fisher("config/fisher_config.yaml")
84
+ fisher.run()
85
+
86
+ # Get Fisher matrix
87
+ fisher_matrix = fisher.get_fisher_matrix()
88
+ ```
89
+
90
+ ### QML Power Spectrum Estimation
91
+
92
+ ```python
93
+ from qube import Spectra
94
+
95
+ # Initialize QML analysis
96
+ qml = Spectra("config/qml_config.yaml")
97
+ qml.run()
98
+
99
+ # Get power spectra
100
+ power_spectra = qml.get_power_spectra()
101
+ noise_bias = qml.get_noise_bias()
102
+ ```
103
+
104
+ ### Pixel-Based Likelihood Analysis
105
+
106
+ ```python
107
+ from picslike import PICSLike
108
+
109
+ # Initialize pixel-based likelihood
110
+ picslike = PICSLike(params_file="config/picslike_config.yaml")
111
+ picslike.run()
112
+
113
+ # Get results
114
+ chi_squared = picslike.get_chi_squared()
115
+ best_fit = picslike.get_best_fit()
116
+ ```
117
+
118
+ ### Using with Precomputed Fisher
119
+
120
+ ```python
121
+ from qube import Fisher, Spectra
122
+
123
+ # Compute Fisher matrix first
124
+ fisher = Fisher("config/fisher_config.yaml")
125
+ fisher.run()
126
+
127
+ # Reuse Fisher computation for QML
128
+ qml = Spectra("config/qml_config.yaml", fisher=fisher)
129
+ qml.run()
130
+ ```
131
+
132
+ ## Package Structure
133
+
134
+ ```text
135
+ CosmoForge/
136
+ ├── src/
137
+ │ ├── cosmoforge.cosmocore/ # Core functionality (published as `cosmocore`)
138
+ │ ├── cosmoforge.qube/ # QML and Fisher analysis (published as `qube-qml`, imported as `qube`)
139
+ │ ├── cosmoforge.picslike/ # Pixel-space likelihood (published as `picslike`)
140
+ │ └── cosmoforge.meta/ # Umbrella metapackage (published as `cosmoforge`)
141
+ ├── tests/ # Test suite
142
+ ├── docs/ # Documentation
143
+ └── examples/ # Example configurations
144
+ ```
145
+
146
+ ## Configuration
147
+
148
+ CosmoForge uses YAML configuration files to specify analysis parameters:
149
+
150
+ ```yaml
151
+ # Example configuration
152
+ nside: 4
153
+ lmax: 16
154
+ fields: "TEB"
155
+ maskfile: "data/mask.fits"
156
+ inputclfile: "data/fiducial_cls.txt"
157
+ # ... additional parameters
158
+ ```
159
+
160
+ ## Testing
161
+
162
+ Run the test suite:
163
+
164
+ ```bash
165
+ # Run all tests
166
+ uv run pytest
167
+
168
+ # Run specific package tests
169
+ uv run --package cosmocore pytest src/cosmoforge.cosmocore/tests/
170
+ uv run --package qube pytest src/cosmoforge.qube/tests/
171
+ uv run --package picslike pytest src/cosmoforge.picslike/tests/
172
+ ```
173
+
174
+ ## Performance
175
+
176
+ CosmoForge is designed for high-performance cosmological analysis:
177
+
178
+ - **Numba JIT compilation** for critical mathematical operations
179
+ - **MPI parallelization** for distributed computing
180
+ - **Optimized matrix operations** using LAPACK/BLAS
181
+ - **Memory-efficient algorithms** for large datasets
182
+
183
+ ## Contributing
184
+
185
+ 1. Fork the repository
186
+ 2. Create a feature branch
187
+ 3. Make your changes
188
+ 4. Add tests for new functionality
189
+ 5. Submit a pull request
190
+
191
+ ## License
192
+
193
+ [Add license information]
194
+
195
+ ## Citation
196
+
197
+ If you use CosmoForge in your research, please cite:
198
+
199
+ [Add citation information]
200
+
201
+ ## Support
202
+
203
+ > **📖 Complete documentation is available at: [https://ggalloni.github.io/CosmoForge/](https://ggalloni.github.io/CosmoForge/)**
204
+
205
+ For questions and support:
206
+
207
+ - Open an issue on GitHub
208
+ - Contact: [contact information]
209
+
210
+ ## Acknowledgments
211
+
212
+ CosmoForge builds upon established cosmological analysis methods and libraries:
213
+
214
+ - HEALPix for pixelization
215
+ - NumPy/SciPy for numerical computations
216
+ - MPI for parallelization
@@ -0,0 +1,26 @@
1
+ [project]
2
+ name = "cosmoforge"
3
+ version = "1.0.0rc1"
4
+ description = "CosmoForge: umbrella metapackage installing cosmocore, qube-qml, and picslike."
5
+ readme = "README.md"
6
+ authors = [
7
+ { name = "Giacomo Galloni", email = "giacomo.galloni@unife.it" }
8
+ ]
9
+ requires-python = ">=3.11,<3.14"
10
+ dependencies = [
11
+ "cosmocore",
12
+ "qube-qml",
13
+ "picslike",
14
+ ]
15
+
16
+ [build-system]
17
+ requires = ["hatchling"]
18
+ build-backend = "hatchling.build"
19
+
20
+ [tool.hatch.build.targets.wheel]
21
+ bypass-selection = true
22
+
23
+ [tool.uv.sources]
24
+ qube-qml = { workspace = true }
25
+ cosmocore = { workspace = true }
26
+ picslike = { workspace = true }
@@ -0,0 +1,83 @@
1
+ """Basic integration tests for the Meta package."""
2
+
3
+ import pytest
4
+
5
+
6
+ def test_import_cosmocore():
7
+ """Test that cosmocore can be imported successfully."""
8
+ try:
9
+ import cosmocore
10
+
11
+ assert hasattr(cosmocore, "__version__") or True # Package imported successfully
12
+ except ImportError as e:
13
+ pytest.fail(f"Failed to import cosmocore: {e}")
14
+
15
+
16
+ def test_import_qube():
17
+ """Test that qube can be imported successfully."""
18
+ try:
19
+ import qube
20
+
21
+ # Check for main classes
22
+ assert hasattr(qube, "Fisher") or hasattr(qube, "Spectra")
23
+ except ImportError as e:
24
+ pytest.fail(f"Failed to import qube: {e}")
25
+
26
+
27
+ def test_import_picslike():
28
+ """Test that picslike can be imported successfully."""
29
+ try:
30
+ import picslike
31
+
32
+ # Check for main classes
33
+ assert hasattr(picslike, "PICSLike")
34
+ except ImportError as e:
35
+ pytest.fail(f"Failed to import picslike: {e}")
36
+
37
+
38
+ def test_workspace_integration():
39
+ """Test that all workspace packages can be imported together."""
40
+ try:
41
+ import cosmocore
42
+ import picslike
43
+ import qube
44
+
45
+ # Test that packages are properly installed
46
+ assert cosmocore is not None
47
+ assert qube is not None
48
+ assert picslike is not None
49
+
50
+ # Test that we can access main functionality
51
+ assert hasattr(qube, "Fisher")
52
+ assert hasattr(picslike, "PICSLike")
53
+
54
+ except Exception as e:
55
+ pytest.fail(f"Workspace integration test failed: {e}")
56
+
57
+
58
+ def test_meta_package_exists():
59
+ """Test that the meta package itself can be imported."""
60
+ try:
61
+ import meta # noqa: F401
62
+
63
+ # Meta package should exist even if minimal
64
+ assert True # Import succeeded
65
+ except ImportError:
66
+ # If meta package doesn't exist, that's also fine
67
+ # This test just ensures no unexpected errors
68
+ pass
69
+
70
+
71
+ def test_basic_functionality():
72
+ """Test basic functionality across packages."""
73
+ try:
74
+ # Test importing core functionality
75
+ from cosmocore import create_field
76
+
77
+ # Test that functions are callable
78
+ assert callable(create_field)
79
+
80
+ except ImportError as e:
81
+ pytest.skip(f"Skipping functionality test due to import error: {e}")
82
+ except Exception as e:
83
+ pytest.fail(f"Basic functionality test failed: {e}")