Comments (6)
Thanks a lot for opening this issue Gabriel!
Would you mind posting the backtrace of the error (i.e. including the file names and line numbers)?
Probably it will be an easy fix, since the type checking is too strict somewhere. It seems to have returned a regular float somewhere instead of a float produced by NumPy, so both should be supported.
from species.
For aborting from multinest
, it may work to use Ctrl+Z
instead of Ctrl-C
.
from species.
With pleasure! By the way, with Crtl+Z
one only suspends ipython, unfortunately, but still this is fortunate because after a number of these warnings, the chain sort of works (the posteriors are not smooth but some non-pathological distribution is obtained).
Here is the backtrace (left me know if you need more):
~$ ipython3
Python 3.9.2 (default, Feb 28 2021, 17:03:44)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.20.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: from species import SpeciesInit
...: from species.data.database import Database
...: from species.fit.fit_model import FitModel
...: from species.read.read_model import ReadModel
In [2]: SpeciesInit()
...: database = Database()
==============
species v0.7.4
==============
Working folder: […]/Test
Configuration settings:
- Database: […]/Test/species_database.hdf5
- Data folder: […]/Test/data
- Interpolation method: linear
- Magnitude of Vega: 0.03
Creating species_database.hdf5... [DONE]
In [3]: database.add_object('beta Pic b', parallax=(50.93, 0.15), app_mag=None, flux_density=None,deredden=None, spectrum={'GPI_Y': ('betapicb_gpi_y.dat', None, 40.)}) # downloaded previously from Tomas' website
Adding object: beta Pic b
- Parallax (mas) = 50.93 +/- 0.15
- Spectrum:
- Database tag: GPI_Y
- Filename: betapicb_gpi_y.dat
- Data shape: (29, 3)
- Wavelength range (um): 0.98 - 1.13
- Mean flux (W m-2 um-1): 5.40e-15
- Mean error (W m-2 um-1): 1.87e-15
- Spectral resolution:
- GPI_Y: 40.0
In [4]: database.add_model(model='atmo-neq-weak', teff_range=(1500., 1800.))
Unpacking ATMO NEQ weak model spectra (276 MB)... [DONE]
Please cite Phillips et al. (2020) when using ATMO NEQ weak in a publication
Reference URL: https://ui.adsabs.harvard.edu/abs/2020A%26A...637A..38P/abstract
Wavelength range (um) = 0.2 - 6000
Spectral resolution = 10000
Teff range (K) = 1500.0 - 1800.0
Adding ATMO NEQ weak model spectra... [DONE]
Grid points stored in the database:
- Teff = [1500. 1600. 1700. 1800.]
- log(g) = [2.5 3. 3.5 4. 4.5 5. 5.5]
Number of grid points per parameter:
- teff: 4
- logg: 7
Fix missing grid points with a linear interpolation:
Number of stored grid points: 28
Number of interpolated grid points: 0
Number of missing grid points: 0
In [5]: fit = FitModel(object_name='beta Pic b', model='atmo-neq-weak', inc_phot=False, inc_spec=True, fit_corr=None, apply_weights=False, bounds={'teff': (1500., 1800.), 'radius': (0.5, 2.), 'GPI_Y': ((0.5, 1.5), None), 'disk
...: _teff': (100,1e4), 'disk_radius': (0.1,1e3)} )
Interpolating GPI_Y... [DONE]
Interpolating GPI_Y...[…]/species/species/read/read_model.py:143: UserWarning: The 'blackbody' model spectra are not present in the database. Will try to add the model grid. If this does not work (e.g. currently without an internet connection) then please use the 'add_model' method of 'Database' to add the grid of spectra at a later moment.
warnings.warn(
Unpacking blackbody model spectra (56 MB)... [DONE]
Wavelength range (um) = 0.1 - 5000
Spectral resolution = 1000
Teff range (K) = 10 - 20000
Adding blackbody model spectra... [DONE]
Grid points stored in the database:
- Teff = [1.00e+01 2.00e+01 3.00e+01 4.00e+01 5.00e+01 6.00e+01 7.00e+01 8.00e+01
9.00e+01 1.00e+02 1.50e+02 2.00e+02 2.50e+02 3.00e+02 3.50e+02 4.00e+02
4.50e+02 5.00e+02 5.50e+02 6.00e+02 6.50e+02 7.00e+02 7.50e+02 8.00e+02
8.50e+02 9.00e+02 9.50e+02 1.00e+03 1.05e+03 1.10e+03 1.15e+03 1.20e+03
1.25e+03 1.30e+03 1.35e+03 1.40e+03 1.45e+03 1.50e+03 1.55e+03 1.60e+03
1.65e+03 1.70e+03 1.75e+03 1.80e+03 1.85e+03 1.90e+03 1.95e+03 2.00e+03
2.05e+03 2.10e+03 2.15e+03 2.20e+03 2.25e+03 2.30e+03 2.35e+03 2.40e+03
2.45e+03 2.50e+03 2.55e+03 2.60e+03 2.65e+03 2.70e+03 2.75e+03 2.80e+03
2.85e+03 2.90e+03 2.95e+03 3.00e+03 3.05e+03 3.10e+03 3.15e+03 3.20e+03
3.25e+03 3.30e+03 3.35e+03 3.40e+03 3.45e+03 3.50e+03 3.55e+03 3.60e+03
3.65e+03 3.70e+03 3.75e+03 3.80e+03 3.85e+03 3.90e+03 3.95e+03 4.00e+03
4.05e+03 4.10e+03 4.15e+03 4.20e+03 4.25e+03 4.30e+03 4.35e+03 4.40e+03
4.45e+03 4.50e+03 4.55e+03 4.60e+03 4.65e+03 4.70e+03 4.75e+03 4.80e+03
4.85e+03 4.90e+03 4.95e+03 5.00e+03 5.10e+03 5.20e+03 5.30e+03 5.40e+03
5.50e+03 5.60e+03 5.70e+03 5.80e+03 5.90e+03 6.00e+03 6.10e+03 6.20e+03
6.30e+03 6.40e+03 6.50e+03 6.60e+03 6.70e+03 6.80e+03 6.90e+03 7.00e+03
7.10e+03 7.20e+03 7.30e+03 7.40e+03 7.50e+03 7.60e+03 7.70e+03 7.80e+03
7.90e+03 8.00e+03 8.10e+03 8.20e+03 8.30e+03 8.40e+03 8.50e+03 8.60e+03
8.70e+03 8.80e+03 8.90e+03 9.00e+03 9.10e+03 9.20e+03 9.30e+03 9.40e+03
9.50e+03 9.60e+03 9.70e+03 9.80e+03 9.90e+03 1.00e+04 1.01e+04 1.02e+04
1.03e+04 1.04e+04 1.05e+04 1.06e+04 1.07e+04 1.08e+04 1.09e+04 1.10e+04
1.11e+04 1.12e+04 1.13e+04 1.14e+04 1.15e+04 1.16e+04 1.17e+04 1.18e+04
1.19e+04 1.20e+04 1.21e+04 1.22e+04 1.23e+04 1.24e+04 1.25e+04 1.26e+04
1.27e+04 1.28e+04 1.29e+04 1.30e+04 1.31e+04 1.32e+04 1.33e+04 1.34e+04
1.35e+04 1.36e+04 1.37e+04 1.38e+04 1.39e+04 1.40e+04 1.41e+04 1.42e+04
1.43e+04 1.44e+04 1.45e+04 1.46e+04 1.47e+04 1.48e+04 1.49e+04 1.50e+04
1.51e+04 1.52e+04 1.53e+04 1.54e+04 1.55e+04 1.56e+04 1.57e+04 1.58e+04
1.59e+04 1.60e+04 1.61e+04 1.62e+04 1.63e+04 1.64e+04 1.65e+04 1.66e+04
1.67e+04 1.68e+04 1.69e+04 1.70e+04 1.71e+04 1.72e+04 1.73e+04 1.74e+04
1.75e+04 1.76e+04 1.77e+04 1.78e+04 1.79e+04 1.80e+04 1.81e+04 1.82e+04
1.83e+04 1.84e+04 1.85e+04 1.86e+04 1.87e+04 1.88e+04 1.89e+04 1.90e+04
1.91e+04 1.92e+04 1.93e+04 1.94e+04 1.95e+04 1.96e+04 1.97e+04 1.98e+04
1.99e+04 2.00e+04]
Number of grid points per parameter:
- teff: 258
[…]/species/species/util/data_util.py:379: RuntimeWarning: divide by zero encountered in log10
flux = np.log10(flux)
Number of stored grid points: 0
Number of interpolated grid points: 0
Number of missing grid points: 0
[DONE]
Fitting 7 parameters:
- teff
- logg
- radius
- parallax
- disk_teff
- disk_radius
- scaling_GPI_Y
Prior boundaries:
- teff = (1500.0, 1800.0)
- radius = (0.5, 2.0)
- disk_teff = (100, 10000.0)
- disk_radius = (0.1, 1000.0)
- logg = (2.5, 5.5)
- scaling_GPI_Y = (0.5, 1.5)
Weights for the log-likelihood function:
- GPI_Y = 1.00
In [6]: fit.run_ultranest(tag='betapic', min_num_live_points=500, output='betapic/', prior={'mass': (10., 9.)})
Running nested sampling with UltraNest...
Creating directory for new run betapic/run2
---------------------------------------------------------------------------
TypeCheckError Traceback (most recent call last)
<ipython-input-7-ca466f5e96fd> in <module>
----> 1 fit.run_ultranest(tag='betapic', min_num_live_points=500, output='betapic/', prior={'mass': (10., 9.)})
[…]/species/species/fit/fit_model.py in run_ultranest(self, tag, min_num_live_points, output, prior)
2088 return self.lnlike_func(params, prior=prior)
2089
-> 2090 sampler = ultranest.ReactiveNestedSampler(
2091 self.modelpar,
2092 lnlike_ultranest,
~/.local/lib/python3.9/site-packages/ultranest/integrator.py in __init__(self, param_names, loglike, transform, derived_param_names, wrapped_params, resume, run_num, log_dir, num_test_samples, draw_multiple, num_bootstraps, vectorized, ndraw_min, ndraw_max, storage_backend, warmstart_max_tau)
1194 self.ndraw_max = ndraw_max
1195 self.build_tregion = transform is not None
-> 1196 if not self._check_likelihood_function(transform, loglike, num_test_samples):
1197 assert self.log_to_disk
1198 if resume_similar and self.log_to_disk:
~/.local/lib/python3.9/site-packages/ultranest/integrator.py in _check_likelihood_function(self, transform, loglike, num_test_samples)
1256 "Error in transform function: returned shape is %s, expected %s" % (
1257 np.shape(p), (num_test_samples, self.num_params)))
-> 1258 logl = loglike(p)
1259 assert np.logical_and(u > 0, u < 1).all(), (
1260 "Error in transform function: u was modified!")
~/.local/lib/python3.9/site-packages/ultranest/utils.py in vectorized(args)
132 def vectorized(args):
133 """Vectorized version of function."""
--> 134 return np.asarray([function(arg) for arg in args])
135
136 # give a user-friendly name to the vectorized version of the function
~/.local/lib/python3.9/site-packages/ultranest/utils.py in <listcomp>(.0)
132 def vectorized(args):
133 """Vectorized version of function."""
--> 134 return np.asarray([function(arg) for arg in args])
135
136 # give a user-friendly name to the vectorized version of the function
[…]/species/species/fit/fit_model.py in lnlike_ultranest(params)
2086 """
2087
-> 2088 return self.lnlike_func(params, prior=prior)
2089
2090 sampler = ultranest.ReactiveNestedSampler(
~/.local/lib/python3.9/site-packages/typeguard/_functions.py in check_return_type(func_name, retval, annotation, memo)
165
166 try:
--> 167 check_type_internal(retval, annotation, memo)
168 except TypeCheckError as exc:
169 # Allow NotImplemented if this is a binary magic method (__eq__() et al)
~/.local/lib/python3.9/site-packages/typeguard/_checkers.py in check_type_internal(value, annotation, memo)
762 if isclass(origin_type):
763 if not isinstance(value, origin_type):
--> 764 raise TypeCheckError(f"is not an instance of {qualified_name(origin_type)}")
765 elif type(origin_type) is str: # noqa: E721
766 warnings.warn(
TypeCheckError: the return value (float) is not an instance of numpy.float64
I tried slightly different numbers and got the same problem.
On a different machine (with a slightly different python distribution, I guess), with the exact same commands, I get:
In [6]: fit.run_ultranest(tag='betapic', min_num_live_points=500, output='betapic/', prior={'mass': (10., 9.)})
Running nested sampling with UltraNest...
Creating directory for new run betapic/run4
---------------------------------------------------------------------------
AssertionError Traceback (most recent call last)
<ipython-input-5-ca466f5e96fd> in <module>
----> 1 fit.run_ultranest(tag='betapic', min_num_live_points=500, output='betapic/', prior={'mass': (10., 9.)})
~/.local/lib/python3.8/site-packages/typeguard/__init__.py in wrapper(*args, **kwargs)
1031 memo = _CallMemo(python_func, _localns, args=args, kwargs=kwargs)
1032 check_argument_types(memo)
-> 1033 retval = func(*args, **kwargs)
1034 try:
1035 check_return_type(retval, memo)
[…]/species/species/fit/fit_model.py in run_ultranest(self, tag, min_num_live_points, output, prior)
2088 return self.lnlike_func(params, prior=prior)
2089
-> 2090 sampler = ultranest.ReactiveNestedSampler(
2091 self.modelpar,
2092 lnlike_ultranest,
~/.local/lib/python3.8/site-packages/ultranest/integrator.py in __init__(self, param_names, loglike, transform, derived_param_names, wrapped_params, resume, run_num, log_dir, num_test_samples, draw_multiple, num_bootstraps, vectorized, ndraw_min, ndraw_max, storage_backend, warmstart_max_tau)
1187 self.ndraw_max = ndraw_max
1188 self.build_tregion = transform is not None
-> 1189 if not self._check_likelihood_function(transform, loglike, num_test_samples):
1190 assert self.log_to_disk
1191 if resume_similar and self.log_to_disk:
~/.local/lib/python3.8/site-packages/ultranest/integrator.py in _check_likelihood_function(self, transform, loglike, num_test_samples)
1254 assert np.shape(logl) == (num_test_samples,), (
1255 "Error in loglikelihood function: returned shape is %s, expected %s" % (np.shape(logl), (num_test_samples,)))
-> 1256 assert np.isfinite(logl).all(), (
1257 "Error in loglikelihood function: returned non-finite number: %s for input u=%s p=%s" % (logl, u, p))
1258
AssertionError: Error in loglikelihood function: returned non-finite number: [ -inf -45780.27996034] for input u=[[0.08830236 0.06385349 0.33097212 0.02408574 0.81923631 0.60554687
0.20954194]
[0.31167665 0.90636524 0.27903744 0.30300557 0.07012407 0.68003549
0.78115951]] p=[[1.52649071e+03 2.69156047e+00 9.96458175e-01 5.06336221e+01
8.21043949e+03 6.05586319e+02 7.09541940e-01]
[1.59350300e+03 5.21909573e+00 9.18556156e-01 5.08526337e+01
7.94228337e+02 6.80067485e+02 1.28115951e+00]]
This might be a more useful output. Something about an inf in the blackbody part?
from species.
It seems that UltraNest can not handle inf
. Other samplers typically do. I think this has been fixed in commit bc6a4d3 but please give it a try!
from species.
The first issue with the returned float
type has also been fixed.
from species.
Perfect, bedankt! Indeed it works.
from species.
Related Issues (20)
- Upper limits on photometric measurements? HOT 1
- Adding an arbitrary offset and scaling to atmospheric models HOT 16
- Adding priors to corner plot output in plot_posterior HOT 12
- Tutorial "Fitting data with a grid of model spectra" (and a few other pages): small things HOT 5
- database overview: list_models() and verbosity control? HOT 4
- Database problem: OSError: Unable to open file (file is already open for read-only) HOT 4
- Making unpacking/storing of atmospheric models more memory-efficient HOT 10
- Adding dynesty support (especially to retrievals) HOT 8
- Various small things HOT 7
- Fitting with nested sampling (UltraNest or MultiNest) HOT 4
- Enhancing plot_spectrum a bit HOT 21
- Running multinest or ultranest in parallel? HOT 11
- Higher-order interpolation? HOT 3
- Retrieval with radial velocity / rotational broadening vsini HOT 2
- Installation error: No matching distribution found for matplotlib~=3.8.0 HOT 3
- Using wavel_range with database.add_model() HOT 5
- wavelength / spectral spacing for exo-rem-highres grid HOT 9
- pypi package version HOT 1
- Different fsed for cloud species in retrieval HOT 4
- sonora elf-owl as successor to bobcat and cholla HOT 18
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from species.