Skip to content

Releases: jobovy/galpy

Version 1.11.2

27 Feb 17:52

Choose a tag to compare

Revolutionized by the rise of agentic AI, this release contains many new additions, including a major change, and otherwise many bug fixes and dependency/project maintenance.

Major change

  • Implement CompositePotential, planarCompositePotential, and linearCompositePotential classes for unified potential combination interface by @Copilot in #794:

    Previously, potentials and forces could be added by creating a list of them and passing it to all functions and methods taking Potential/Force input. In the current release, this list-based combination has been replaced by classes representing combined potentials in 3D, 2D, and 1D. Lists of potentials/forces are currently still allowed in the code, but they are being deprecated and are scheduled for removal in version 1.13.0. But because combined potentials should have been created using addition with + already, unless you were explicitly creating lists, current code should still work (because + now creates instances of the new combined-potential classes). This means that now there is no functional difference between single and combined potentials/forces and combined potentials can be called with methods just like single potentials, e.g., MWPotential2014.vcirc(8*u.kpc) works.

New Features

  • Add functionality to continue orbit integrations in forward and backward time by @Copilot in #781
  • Upload dev wheels to a simple pypi index by @jobovy in #782
  • Inject git hash into development wheel versions by @Copilot in #783
  • Add C implementation for TwoPowerSphericalPotential with bundled xsf library by @Copilot in #785
  • Add C implementation for TwoPowerTriaxialPotential by @Copilot in #788
  • Add C implementation of EllipsoidalPotential planar second derivatives with caching by @Copilot in #790
  • Add enhanced __repr__ methods to Force, planarForce, linearPotential, conversion classes, and WrapperPotentials by @Copilot in #804
  • Add wrapper to turn any axisymmetric potential into a potential that separates in R and z by @jobovy in #818
  • Add frequencies and angles for actionAngleAdiabatic in Python by @jobovy in #819
  • Add automatic time determination for orbit integration by @jobovy in #823

Bug fixes and minor tweaks

  • Rename _dens to _dens_host in ChandrasekharDynamicalFrictionForce by @Copilot in #779
  • Increase tolerance for flaky test_python_vs_c_arbitraryaxisrotation_funcomega by @Copilot in #792
  • Lower the tolerance for the test_python_vs_c_arbitraryaxisrotation_funcomega a bit more to avoid flaky tests by @jobovy in #793
  • Fix some non-existent reference in the docs by @jobovy in #795
  • Re-arrange some functions within Force, DissipativeForce, and Potential by @jobovy in #796
  • Add sdist build verification job to wheels.yml by @Copilot in #797
  • Re-arrange some functions within planarForce, planarDissipativeForce, and planarPotential by @jobovy in #798
  • Consolidate plotRotcurve and plotEscapecurve into Potential.py by @Copilot in #803
  • Correctly deal with Simbad distances in units that are not kpc; fixes #807 by @jobovy in #813
  • Add missing boundary term in Eddington calculation by @jobovy in #817
  • fix/divergent potential sampling by @caverac in #812
  • Add iteration support to single Potentials, planarForces, and linearPotentials by @Copilot in #824
  • Move vcirc, omegac, and epifreq to planarPotential for composite potential support by @Copilot in #825
  • Simplify SCFPotential for spherical harmonics abstraction by @jobovy in #826
  • Simplify SCFPotential.c for spherical harmonics abstraction by @jobovy in #828
  • Correctly record SCF potential type for handling its data in C by @jobovy in #830
  • Auto-detect GSL paths in setup.py to fix compilation failures when CFLAGS/LDFLAGS are unset by @Copilot in #831

Dependencies / maintenance

  • Bump to next development version v1.11.2 by @jobovy in #776
  • Speed up pyodide wheel build by @jobovy in #777
  • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #778
  • Add .github/copilot-instructions.md for agent onboarding by @Copilot in #780
  • Add copilot-setup-steps.yml workflow to properly onboard copilot by @jobovy in #784
  • Remove caching and global env in copilot setup by @jobovy in #786
  • Bump pypa/cibuildwheel from 3.2 to 3.3 in the actions group by @dependabot[bot] in #787
  • Remove obsolete commented code from EllipsoidalPotential.c by @Copilot in #789
  • Bump actions/checkout from 5 to 6 in the actions group by @dependabot[bot] in #791
  • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #801
  • Add Python 3.14 support by @jobovy in #750
  • Remove support for Python 3.9 by @jobovy in #809
  • Fix macosx segmentation fault on GitHub Action Runners by @jobovy in #810
  • Bump the actions group with 3 updates by @dependabot[bot] in #806
  • Add macosx arm64 build/test to GH Actions workflow by @jobovy in #811
  • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #814
  • Drop Python 3.11 pyodide wheels as auditwheel-emscripten doesn't support Python 3.11 anymore by @jobovy in #821
  • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #820
  • Replace global variables with pytest fixtures in test_sphericaldf.py by @Copilot in #822
  • Release 1.11.2 by @jobovy in #832

New Contributors

Full Changelog: v1.11.1...v1.11.2

Version 1.11.1

03 Nov 04:23

Choose a tag to compare

This release contains a few new addition and otherwise many bug fixes and dependency/project maintenance.

New features

  • Add Fuzzy Dark Matter (FDM) dynamical friction by @Adrian998obs in #731
  • Add wrapper to turn any potential into an oblate Staeckel potential by @jobovy in #765
  • Build pyodide wheels for different python versions by @jobovy in #770
  • Add Einasto potential by @johnwez1 in #760
  • Add Python 3.14 wheels by @jobovy in #751

Bug fixes and minor tweaks

  • Fix use of relative tolerance parameter in some of the C integrators by @jobovy in #753
  • Mention that tests assume the default configuration in the dev docs by @jobovy in #754
  • include rtol and atol in integration of orbits by @jennywagner in #752
  • Change rounding of number of papers using galpy by @jobovy in #757
  • Change numexpr unparseable error test now that logical operations are supported in numexpr by @jobovy in #761
  • Simplify potential amplitude unit parsing by @jobovy in #766
  • Upgrade pyodide version by @jobovy in #767
  • Keep both full galpy version and latest version wheels by @jobovy in #769
  • Fix pyodide wheels upload path by @jobovy in #771
  • Flatten the directory structure of Pyodide wheels before uploading by @jobovy in #772
  • Fix pyodide upload again (make sure wheelhouse directory exists before uploading) by @jobovy in #773
  • Update info on latest wheels available on AWS and on pyodide wheels by @jobovy in #774

Dependencies / maintenance

New Contributors

Full Changelog: v1.11.0...v1.11.1

Version 1.11.0

02 Jul 02:40

Choose a tag to compare

This version contains an efficiency improvement in the calculation of PowerSphericalPotentialwCutoff forces, bug fixes, and dependency/project maintenance updates.

Bug fixes and minor tweaks

  • Implement caching of the mass for the PowerSphericalPotentialwCutoff potential by @jamesgrimmett in #720
  • Turn physical units on when surface density input to AnyAxisymmetriRazorThinDiskPotential has units by @jobovy in #738
  • Remove support for Python 3.8 by @jobovy in #730
  • Allow TwoPowerSphericalPotental to be evaluated at r=0 by @jobovy in #729
  • Switch to controlling compilation options through environment variables by @jobovy in #725

Dependencies / maintenance

Full Changelog: v1.10.2...v1.11.0

Version 1.10.2

03 Mar 16:08

Choose a tag to compare

This release contains one significant new addition and otherwise many bug fixes and dependency/project maintenance.

New features

Bug fixes and minor tweaks

  • Improve Python leapfrog integration performance by @jamesgrimmett in #690
  • Support new astroquery Simbad API in Orbit.from_name by @jobovy in #697
  • Fix scipy 1.15 deprecations: removal of vectorize1 and lpmn --> assoc_legendre_p_all by @jobovy in #703
  • Swap gsl_gamma_inc with gsl_gamma_inc_P for mass calculation by @jamesgrimmett in #706
  • Clarify use of non-equispaced time arrays in orbit integration by @jobovy in #711
  • Fix handling of unbound orbits in the action-angle orbit interface. by @jobovy in #712
  • Print warning when initializing an Orbit with a SkyCoord that does not have the Sun's positional and velocity parameters set by @jobovy in #715
  • Update potential.rst for changes in pynbody docs/data by @apontzen in #698
  • Switch to using check_integrator in Orbit.integrate_dxdv by @jobovy in #707
  • Upgrade stream simulation movies to mp4 so they play in the browser again by @jobovy in #696
  • Remove mentions of odeint integrator in docs by @jobovy in #695

Dependencies / maintenance

New Contributors

Full Changelog: v1.10.1...v1.10.2

Version 1.10.1

01 Nov 16:34
5509e26

Choose a tag to compare

This release contains one significant new addition and otherwise many bug fixes and dependency/project maintenance

New features

  • Implement the new particle spray model by Chen+24 by @ybillchen in #670

Bug fixes and minor tweaks

  • Propagate plotting keywords in Potential.plot/plotPotentials by @jobovy in #663
  • Don't check OpenMP issue for emscripten Python by @jobovy in #665
  • Properly set CPPFLAGS for OpenMP by @jobovy in #669
  • Fix vlos of Vega in from_name test by @jobovy in #671
  • Account for Pynbody 2.0 API change for how to use the direct gravity calculation by @jobovy in #675
  • Allow plotting of potentials on physical axes by @jobovy in #679
  • Correct behaviour of the potential in KingPotential by @jobovy in #681
  • Fix use of jeans.sigmalos for potentials with physical units on by @jobovy in #683
  • Fix units of the phase-space density for spherical DFs by @jobovy in #684
  • Fix small bug in the C implementation of DehnenBarPotential by @jobovy in #685

Dependency / maintenance

New Contributors

Full Changelog: v1.10.0...v1.10.1

Version 1.10.0

07 Jul 20:42

Choose a tag to compare

This release mainly fixes a few bugs and performs a lot of dependency and project maintenance.

New features

  • Add OpenMP support to Mac builds and wheels by @jobovy in #660

Bug fixes

  • update docs in triaxialNFW by @nstarman in #641
  • Clarify documentation of RotateAndTiltWrapper's use of galaxy/sky PA and inclination by @jobovy in #645
  • Fix output shape for Orbit.theta by @jobovy in #646

Dependency / maintenance

Full Changelog: v1.9.2...v1.10.0

Version 1.9.2

05 Mar 03:00

Choose a tag to compare

This release adds a new wrapper potential, fixes a few bugs, and performs a lot of dependency and project maintenance.

New features

Bug fixes

  • Fix a bug in streamspraydf to remove the streaks. by @jl3937 in #629
  • Raise RuntimeError when trying to apply a Wrapper to a non-Potential Force by @jobovy in #633

Dependency maintenance

  • Vendor old scipy quadrature routine and use that where integrate.quadrature was used before by @jobovy in #620
  • Vendor scipy.integrate.romberg due to impending deprecation within scipy by @jobovy in #621
  • Fix one more instance of using deprecated scipy romberg by @jobovy in #622

Project maintenance

New Contributors

Full Changelog: v1.9.1...v1.9.2

Version 1.9.1

06 Nov 20:52

Choose a tag to compare

This release has some minor additions to the code, improves the documentation, and adds Python 3.12 wheels to the release.

New features

  • Allow vector inputs of solar parameters to Orbit initialization: ro, zo, vo, and solarmotion by @jobovy in #595
  • Add Python 3.12 wheels by @jobovy in #601
  • Convert all docstrings to numpy-style format by @jobovy in #608

Maintenance

Full Changelog: v1.9.0...v1.9.1

Version 1.9.0

03 Jul 03:46

Choose a tag to compare

This is version v1.9.0, which contains the following major improvements:

  • Added a method to Orbit instances to compute and plot surfaces of section: Orbit.SOS and Orbit.plotSOS. This method uses a custom integration routine that exactly resolves surface crossings and applies to most force fields.
  • Also added a brute-force method to compute and plot surfaces of section for use with force fields for which the above method does not work (e.g., in rotating frames)
  • Added a method, dMdE, to calculate the differential energy distribution of spherical distribution functions
  • Added general support for DissipativeForce instances in 2D and implemented NonInertialFrameForce in 2D

as well as minor bug fixes and minor improvements to the code and to galpy's development workflow.

For a full list of changes since v1.8.2, see HISTORY.txt.

Full list of Pull Requests

  • Use tabs for different OSs in installation page by @jobovy in #556
  • Bump pypa/cibuildwheel from 2.12.0 to 2.12.1 by @dependabot in #558
  • Bump actions/stale from 7 to 8 by @dependabot in #559
  • Add surface-of-section methods by @jobovy in #560
  • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #562
  • Remove externally-hosted diskdf corrections from the tests and docs by @jobovy in #564
  • Apply black formatting by @jobovy in #563
  • Bump pypa/cibuildwheel from 2.12.1 to 2.12.3 by @dependabot in #566
  • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #567
  • Add Python 3.11 support by @jobovy in #503
  • fix keyword para issue in galpy.orbit.Orbits.Orbit._call_internal by @azz147 in #569
  • Add differential energy distribution for spherical DFs by @jobovy in #573
  • Bump pypa/cibuildwheel from 2.12.3 to 2.13.0 by @dependabot in #574
  • Switch to using setup-micromamba by @jobovy in #576
  • Implement dissipative forces in 2D and use it to implement NonInertialFrameForce in 2D by @jobovy in #578
  • Add a brute-force SOS method and plotting function by @jobovy in #580
  • minor astropy units + mass calc fixes by @jamesmlane in #577
  • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #581
  • Bump pypa/cibuildwheel from 2.13.0 to 2.13.1 by @dependabot in #582
  • Allow SoftenedNeedleBarPotential to be evaluated properly along the major axis by @jobovy in #583
  • Allow DehnenBarPotential to work with zero pattern speed by @jobovy in #584
  • Remove deprecated features in v1.9 by @jobovy in #585
  • Changes to deal with numpy 1.25 deprecation of treating 1 element arrays as scalars by @jobovy in #586
  • Raise error when plotting a potential with both xy=True and effective=True by @jobovy in #587
  • Allow SteadyLogSpiralPotential to work with zero pattern speed by @jobovy in #588
  • Prepare 1.9.0 release by @jobovy in #591

Full Changelog: v1.8.2...v1.9.0

Version 1.8.3

27 Mar 16:14

Choose a tag to compare

Patch release to fix an issue with the Linux wheels (which didn't link to the OpenMP library properly) and the underlying setup.py issue. No new functionality was added.