- Added some of the compliance for Python 3.x. However, some libraries such as scipy.weave are no longer supported under 3.x, which makes things a bit awkward.
- Fixed one further assumption about the was that coschi, the angle between the incident irradiating flux and the normal to the surface, is calculation. The exact calculation is now used. This has an effect especially on shorter orbital period systems in which the companion is large, and the terminator does not lie on the meridian passing through the centre of mass, but towards the nose of the star.
2.3.0 & 2.3.1 (2016-04-15)
- This major release has now changed the directory structure to be in line with the standard Python packaging. It includes a
setup.pyto enable the installation of the package to the standard Python library. There is also a PyPI distribution now. Many thanks to @muddassir235 for the pull request!
- Photometry/Photometry.py/Photometry_temperature: Updated the class so is now compatible with the new version of the Photometry class.
- Atmosphere/Atmo.py/AtmoGridSpec.Get_flux_doppler: There was an issue with the interpolation along the wavelength axis which has now been resolved. It was simply not computed correctly.
- Core/Star_base: Fixed a problem in the Velocity_surface function which calculates the surface velocity.
- Atmosphere/Atmo_spectro_IRTF.py: Fixed the conversion of the fluxes, which must be stored in the grid and log(F_lambda), but the grid fluxes store them at log10(F_lambda).
- Utils/Grid.py: Interp_doppler_savememory and Inter_doppler were both not exponentiating the fluxes before summing them over the surface elements. One needs to bear in mind that the grid values are log(F_lambda).
Atmosphere/Atmo.py/AtmoGridSpec is a new class to handle atmosphere grids in the spectral domain.
Utils/Filter.py/Band_integration is modified in order to handle masking parts of the spectral range. The default method is Simpson's rule, but trapezoid is also implemented and recommended for the masking.
- New Fill_nan function to fill non-existing values.
- New SubGrid function to return a sub-grid of the atmosphere grid.
- New IsFinite function to return a boolean view of existing values
Utils/Binary.py: New function to calculate the approximate Roche lobe radius using the Eggleton formula.
Utils/Filter.py/Load_filter: New option that can also return the min/max bounds of the filter, in addition to the filter interpolator.
- Changed the way that coschi -- angle between the irradiation source and the normal to the surface -- is calculated. It used to be computed using the spherical approximation (i.e that the normal to the surface was roughly the same as the vector direction from the centre of mass of the star to the surface). This worked well for low filling factors, but breaks down at larger filling factor. It is better to use the exact value of the normal to the surface, which is the gradient vector (already calculated to solve the equipotential surface). Because the irradiation source is along the x-direction, coschi simply corresponds to the x-component of the gradient vector. Many thanks to Roger Romani and Nicholas Sanchez at Stanford University for highlighting this issue and providing pieces of codes.
Small bug fix in Photometry/Photometry.py regarding a typo in a variable name for the full_output option in the Plot_model function.
- In the Star_base class, change in the way Flux is calculated in order to add the possibility to account for the projection effect in order to scale the flux to physical values. There wasn't a need for it before as the fluxes were always used in a normalised way (e.g. fitting a non-flux calibrated spectrum), but this would make things fail if one was to fit flux calibrated data. The issue wouldn't arise with magnitudes, which already included the projection.
- Fixed an issue with the conversion of mag to/from flux in the Photometry module. The conversion was expecting to find a flux0 parameter, whereas the zeropoint is now incorporated as zp in the atmosphere files.
- The Utils.import_modules has a set of constants defined under the cts namespace. Converted some lower case constants into upper case.
- Many changes made to the Photometry module in order to handle working in the flux space properly (as opposed to the magnitude space). Now all the plotting can be done in the flux space. Also, everything related to dealing with the band offset has been rebrewed in order to simplify function calls and make everything more intuitive. This includes changes to the optional arguments and their names. Please make sure to look at the docstrings for Calc_chi2, Get_flux, Get_flux_theoretical, Plot.
- New Distance_to_distance_modulus and Distance_modulus_to_distance functions in the Utils.Flux module.
- The Photometry class in the Photometry module has been updated significantly.
- The initialisation does not take porb, x2sini anymore.
- Calling Calc_chi2, Get_flux, etc, uses a new list of parameters, which calls the function Photometry Make_surface directly. The point is to reflect more closely the Star base class and allow for modification of the parameters more easily (e.g. in case the orbital period is a free parameter).
- The DM and AV are passed to the functions as DM and AV optional parameters rather than through the list of parameters.
- IMPORTANT NOTE: In order to make your old scripts still work, change any call from Icarus.Photometry.Photometry to Icarus.Photometry_legacy.Photometry_legacy in order to use the old version.
- Changed the Atmo_IRTF_spectro class name to Atmo_spectro_IRTF to match the module name.
- MAJOR: Changed the nomenclature of extinction to be A_V instead of A_J. V-band extinction is much more common than J-band.
- Created a new input format for the data file. The old 7-column and 8-column formats are still supported. However the new 9-column format includes a keyword that allows to switch the input between magnitude and flux.
- Fixed an issue with class inheritence needing to descend from "object" rather than being blank, in order to use the "super" parent function call.
- Fixed an issue with the sign of the velocity (being negative) returned by Photometry.Get_Keff.
- Modified atmosphere grid classes to a better management system derived from the astropy
TableColumnclass, itself a subclass of ndarray. Should allow for more object-oriented, pythonic approach.
- Introduction of
AtmoGridDoppler. These classes mainly utilise atmosphere grids saved into HDF5 format. They are self-contained with a proper header and all necessary meta data, and hence there is no need to provided a series of parameters when creating an instance.
- Dropped support for pgplot. Now only support Matplotlib.
- I have not tracked them all... but several small tweaks and improvements.
- First release of Icarus with the core functionalities.