Skip to content

Commit

Permalink
Begin PHOENIX converter
Browse files Browse the repository at this point in the history
  • Loading branch information
Sujay-Shankar committed Apr 25, 2024
1 parent 649b115 commit 6e464dc
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 10 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,7 @@ notebooks/

# ignore data files
data/
*.parquet.gz

# ignore vscode settings
.vscode/settings.json
32 changes: 32 additions & 0 deletions src/gollum/V2/conversion/phoenix_conversion.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
from astropy.io import fits
from numpy import float64
from pandas import DataFrame
from pathlib import Path
from re import search
from tqdm import tqdm

def main():
fluff = 'PHOENIX-ACES-AGSS-COND-2011'
p = Path('~/data/PHOENIX').expanduser()
wavelength = fits.open(p / f'WAVE_{fluff}.fits')[0].data.astype(float64)
p /= fluff
fluxes = dict()
for f in tqdm(map(lambda x: x.name[:-39], sorted(p.glob('*/*')))):
T = int(search(r'\d{5}', f)[0])
GZ = search(r'(\d\.\d{2})([+-]\d\.\d)', f)
G = float(GZ[1])
Z = float(GZ[2])
A = float(x[1]) if (x := search(r'Alpha=([+-]\d\.\d{2})', f)) else 0.0
z_str = f'Z{Z:+.1f}' if Z else 'Z-0.0'
a_str = f'.Alpha={A:+.2f}' if A else ''
flux = fits.open(p / f'{z_str}{a_str}/{f}.{fluff}-HiRes.fits')[0].data.astype(float64)
fluxes[str((T, G, Z, A))] = flux
DataFrame(index=wavelength, data=fluxes, dtype='float64[pyarrow]').rename_axis('wavelength').to_parquet('PHOENIX.parquet.br', compression='brotli')

#flux = fits.open(p / f'Z-0.0/lte02300+0.50-0.0.{fluff}-HiRes.fits')[0].data.astype(np.float64)
#df = pd.DataFrame(index=wavelength, data={'(2300, 0.5, 0.0, 0.0)': flux}).rename_axis('wavelength')
#df.to_parquet('test.parquet.gz', compression='gzip')

if __name__ == "__main__":
main()

11 changes: 1 addition & 10 deletions src/gollum/V2/phoenix.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,4 @@ def __init__(self, teff: int = None, logg: float = None, Z: float = None, alpha:

path = get_key(self._env(), 'PHOENIX_PATH') or 'zenodo link'
df = read_parquet(path, 'pyarrow', [str(point)], filters=[('wavelength', '>=', extent[0]), ('wavelength', '<=', extent[1])] if extent else None)
super(PHOENIXSpectrum, self).__init__(df.index, df[str(point)])


import pandas as pd
#df = pd.DataFrame(index=[1, 2, 3], data={'(6000, 4.5, 0.0, 0.0)': [4, 5, 6]}).rename_axis('wavelength')
#df.to_parquet('test.parquet.gz', compression='gzip')

x = PHOENIXSpectrum(6000, 4.5, 0, 0)
print(x)

super(PHOENIXSpectrum, self).__init__(df.index, df[str(point)])
Binary file modified test.parquet.gz
Binary file not shown.

0 comments on commit 6e464dc

Please sign in to comment.