jluastro / PopSyCLE

Population Synthesis for Compact-object Lensing Events
https://popsycle.readthedocs.io/en/latest/
16 stars 3 forks source link

refine_binary_events ephemeris bug #57

Open nsabrams opened 4 months ago

nsabrams commented 4 months ago

When refine_binary_events uses more than ~10 procs, one starts to run into issues which I think are race conditions when referencing the JPL ephemeris files which are used in the BAGLE models for parallax. These are returned as obscure errors such as:

  File "/global/cfs/cdirs/ulens/code/src/mambaforge3/envs/astro/lib/python3.10/multiprocessing/pool.py", line 125, in worker
    result = (True, func(*args, **kwds))
  File "/global/cfs/cdirs/ulens/code/src/mambaforge3/envs/astro/lib/python3.10/multiprocessing/pool.py", line 51, in starmapstar
    return list(itertools.starmap(args[0], args[1]))
  File "/global/homes/n/nsabrams/code/PopSyCLE/popsycle/synthetic.py", line 5463, in one_lightcurve_analysis
    param_dict = lightcurve_parameter_gen(model, model_parameter_dict, np.array([global_comp_idx]), obj_id_L, obj_id_S, name, save_phot, phot_dir, overwrite)
  File "/global/homes/n/nsabrams/code/PopSyCLE/popsycle/synthetic.py", line 5602, in lightcurve_parameter_gen
    phot = model.get_photometry(dt)
  File "/global/homes/n/nsabrams/code/BAGLE_Microlensing/src/bagle/model.py", line 6957, in get_photometry
    u_vec = self.get_u(t)
  File "/global/homes/n/nsabrams/code/BAGLE_Microlensing/src/bagle/model.py", line 6831, in get_u
    parallax_vec = parallax_in_direction(self.raL, self.decL, t)
  File "/global/cfs/cdirs/ulens/code/src/mambaforge3/envs/astro/lib/python3.10/site-packages/joblib/memory.py", line 655, in __call__
    return self._cached_call(args, kwargs)[0]
  File "/global/cfs/cdirs/ulens/code/src/mambaforge3/envs/astro/lib/python3.10/site-packages/joblib/memory.py", line 598, in _cached_call
    out, metadata = self.call(*args, **kwargs)
  File "/global/cfs/cdirs/ulens/code/src/mambaforge3/envs/astro/lib/python3.10/site-packages/joblib/memory.py", line 856, in call
    output = self.func(*args, **kwargs)
  File "/global/homes/n/nsabrams/code/BAGLE_Microlensing/src/bagle/model.py", line 12588, in parallax_in_direction
    sun_earth_pos = get_body_barycentric(body='sun', time=times) - get_body_barycentric(body='earth', time=times)
  File "/global/cfs/cdirs/ulens/code/src/mambaforge3/envs/astro/lib/python3.10/site-packages/astropy/coordinates/solar_system.py", line 400, in get_body_barycentric
    return _get_body_barycentric_posvel(body, time, ephemeris, get_velocity=False)
  File "/global/cfs/cdirs/ulens/code/src/mambaforge3/envs/astro/lib/python3.10/site-packages/astropy/coordinates/solar_system.py", line 318, in _get_body_barycentric_posvel
    for body_p_or_v, p_or_v in zip(
  File "/global/cfs/cdirs/ulens/code/src/mambaforge3/envs/astro/lib/python3.10/site-packages/jplephem/spk.py", line 209, in generate
    init, intlen, coefficients = self._data
  File "/global/cfs/cdirs/ulens/code/src/mambaforge3/envs/astro/lib/python3.10/site-packages/jplephem/descriptorlib.py", line 12, in __get__
    value = self.method(instance)
  File "/global/cfs/cdirs/ulens/code/src/mambaforge3/envs/astro/lib/python3.10/site-packages/jplephem/spk.py", line 173, in _data
    init, intlen, rsize, n = self.daf.read_array(self.end_i - 3, self.end_i)
  File "/global/cfs/cdirs/ulens/code/src/mambaforge3/envs/astro/lib/python3.10/site-packages/jplephem/daf.py", line 147, in read_array
    return ndarray(length, self.endian + 'd', data)
TypeError: buffer is too small for requested array

or

Traceback (most recent call last):
  File "/global/cfs/cdirs/ulens/code/src/mambaforge3/envs/astro/lib/python3.10/multiprocessing/pool.py", line 125, in worker
    result = (True, func(*args, **kwds))
  File "/global/cfs/cdirs/ulens/code/src/mambaforge3/envs/astro/lib/python3.10/multiprocessing/pool.py", line 51, in starmapstar
    return list(itertools.starmap(args[0], args[1]))
  File "/global/homes/n/nsabrams/code/PopSyCLE/popsycle/synthetic.py", line 5463, in one_lightcurve_analysis
    param_dict = lightcurve_parameter_gen(model, model_parameter_dict, np.array([global_comp_idx]), obj_id_L, obj_id_S, name, save_phot, phot_dir, overwrite)
  File "/global/homes/n/nsabrams/code/PopSyCLE/popsycle/synthetic.py", line 5602, in lightcurve_parameter_gen
    phot = model.get_photometry(dt)
  File "/global/homes/n/nsabrams/code/BAGLE_Microlensing/src/bagle/model.py", line 6957, in get_photometry
    u_vec = self.get_u(t)
  File "/global/homes/n/nsabrams/code/BAGLE_Microlensing/src/bagle/model.py", line 6831, in get_u
    parallax_vec = parallax_in_direction(self.raL, self.decL, t)
  File "/global/cfs/cdirs/ulens/code/src/mambaforge3/envs/astro/lib/python3.10/site-packages/joblib/memory.py", line 655, in __call__
    return self._cached_call(args, kwargs)[0]
  File "/global/cfs/cdirs/ulens/code/src/mambaforge3/envs/astro/lib/python3.10/site-packages/joblib/memory.py", line 598, in _cached_call
    out, metadata = self.call(*args, **kwargs)
  File "/global/cfs/cdirs/ulens/code/src/mambaforge3/envs/astro/lib/python3.10/site-packages/joblib/memory.py", line 856, in call
    output = self.func(*args, **kwargs)
  File "/global/homes/n/nsabrams/code/BAGLE_Microlensing/src/bagle/model.py", line 12588, in parallax_in_direction
    sun_earth_pos = get_body_barycentric(body='sun', time=times) - get_body_barycentric(body='earth', time=times)
  File "/global/cfs/cdirs/ulens/code/src/mambaforge3/envs/astro/lib/python3.10/site-packages/astropy/coordinates/solar_system.py", line 400, in get_body_barycentric
    return _get_body_barycentric_posvel(body, time, ephemeris, get_velocity=False)
  File "/global/cfs/cdirs/ulens/code/src/mambaforge3/envs/astro/lib/python3.10/site-packages/astropy/coordinates/solar_system.py", line 318, in _get_body_barycentric_posvel
    for body_p_or_v, p_or_v in zip(
  File "/global/cfs/cdirs/ulens/code/src/mambaforge3/envs/astro/lib/python3.10/site-packages/jplephem/spk.py", line 209, in generate
    init, intlen, coefficients = self._data
  File "/global/cfs/cdirs/ulens/code/src/mambaforge3/envs/astro/lib/python3.10/site-packages/jplephem/descriptorlib.py", line 12, in __get__
    value = self.method(instance)
  File "/global/cfs/cdirs/ulens/code/src/mambaforge3/envs/astro/lib/python3.10/site-packages/jplephem/spk.py", line 177, in _data
    coefficients.shape = (int(n), int(rsize))
ValueError: cannot reshape array of size 878920 into shape (0,0)
"""