We are pleased to announce the release of GalSim version 2.0.0. This version is almost completely feature-equivalent to the recent 1.6 version. The principal difference is a new installation procedure that does not require boost (the main problem that most people had when trying to install GalSim.)
Now you can get the new version of GalSim simply by running
pip install galsim
You can also obtain the new version from our
release page and install with
python setup.py install
as is also common for most Python packages. If you have any trouble with either of these new installation methods, please see our full
installation instructions and our new
FAQ page.
And you can continue to install with SCons if you prefer, although some of the options have changed. (E.g. to continue using Boost, use `USE_BOOST=True`.)
Finally, note that there are a few API changes from version 1.6 to 2.0. First, all the things that were deprecated in 1.x have now been removed. But there were also a few API changes that were hard to enact in a backwards-compatible way with deprecations. So we used the major version upgrade as an opportunity to make changes to the coordinate `project` and `deproject` functions, to add new GalSim error and warning classes, and to improve the way `gsparams` are set. See the full change log below for details.
As always, thank you for your interest in GalSim! And if you have any issues or feature requests, don't hesitate to
let us know.
Peace,
Mike, Rachel and Josh
Changes in version 2.0:
Dependency Changes:
- Officially no longer support Python 2.6. (#755)
- No longer support pre-astropy versions of pyfits (now bundled in astropy as astropy.io.fits). Nor astropy versions <1.0. (#755)
- No longer support pre-2016 version of the COSMOS catalog. You may be asked to run galsim_download_cosmos again if your version is found to be obsolete. (#755)
- Added LSSTDESC.Coord, which contains the functionality that used to be in GalSim as the Angle and CelestialCoord classes. We moved it to a separate repo so people could more easily use this functionality without requiring all of GalSim as a dependency. (#809b)
- Removed dependency on boost. (#809)
- Removed dependency on TMV. (#809)
- Added dependency on pybind11. (You can still use boost if you want using the SCons installation method.) (#809)
- Added dependency on Eigen. (You can still use TMV if you want using the SCons installation method.) (#809)
- FFTW is now the only dependency that pip cannot handle automatically. (#809)
API Changes:
- Changed the default maximum_fft_size in GSParams to 8192 from 4096. This increases the potential memory used by an FFT when drawing an object with an FFT from 256 MB to 1 GB. (#755)
- Changed the order of arguments of galsim.wfirst.allDetectorEffects. (#755)
- Most of the functionality associated with C++-layer objects has been redesigned or removed. These were non-public-API features, so if you have been using the public API, you should be fine. But if you have been relying on features of the exposed C++-layer, this might break your code. (#809)
- There were some minor API changes to the Angle and CelestialCoord classes we made when we moved it over into LSSTDESC.Coord. Some were to sever (weak) ties to other GalSim classes and some were just deemed API improvements. Most of these were already deprecated in v1.5. The ones that we were not able to deprecate (and preserve the existing functionality) in advance of v2.0 are the `CelestialCoord.project` and `deproject` functions. The new functionality has better units handing (taking and returning Angles rather then PositionD instances). If you have been using these functions, you should check the new doc strings for the appropriate types and units for the parameters and return values. (#809b)
- The return type of a LookupTable when given a list or tuple input is now a numpy array rather than a list or tuple. (#809e)
- The return type of Bandpass and SED calls when given a list or tuple input is also now a numpy array. (#809e)
- Similarly, the output of getShear, getConvergence and similar methods of NFWHalo and PowerSpectrum are always either scalars or numpy arrays. (#809e)
- The attribute half_light_radius of both InclinedExponential and InclinedSersic has been changed to disk_half_light_radius, since it does not really correspond to the realized half-light radius of the inclined profile (unless the inclination angle is 0 degrees). (#809f)
- Removed galsim_yaml and galsim_json scripts, which were essentially just aliases for galsim -f yaml and galsim -f json respectively. (#809f)
- Removed lsst module, which depended on the LSST stack and had gotten quite out of sync and broken. (#964)
- Changed how gsparams work for objects that wrap other objects (e.g. Sum, Convolution, etc.). Now if you specify a gsparams at that level, it is propagated to all of the component objects. (This behavior can be turned off with `propagate_gsparams=False`.) If you do not specify one, then the most restrictive combination of parameters from the components are applied to all of them. This is how gsparams should have worked originally, but it was not really possible in 1.x. (#968)
Deprecated Features:
- Removed all features deprecated in 1.x versions.
New Features:
- Added a new class hierarchy for exceptions raised by GalSim with the base class `GalSimError`, a subclass of `RuntimeError`. For complete details about the various sub-classes within this hierarchy, see the file errors.py. In most cases, if you were catching a specific exception such as ValueError or RuntimeError, the new error will still be caught properly. However, some cases have changed to an incompatible error type, so users who have written `except` statements with specific error types should be careful to make sure that the errors you wanted to catch are still being caught. (#755)
- Changed the type of warnings raised by GalSim to GalSimWarning, which is a subclass of UserWarning. (#755)
- Added the withGSParams() method for all GSObjects. (#968)