Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Speed up estimators reading and plotting #119

Merged
merged 153 commits into from
Nov 14, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
153 commits
Select commit Hold shift + click to select a range
91fb18c
Update inputmodel_misc.py
lukeshingles Nov 8, 2023
cdfc4ad
Update modelfromhydro.py
lukeshingles Nov 8, 2023
48d6262
Update estimators.py
lukeshingles Nov 8, 2023
1a88598
Update estimators.py
lukeshingles Nov 8, 2023
b757d3d
Update estimators.py
lukeshingles Nov 8, 2023
0920c4d
Flatten estimator dictionary (not nested dicts)
lukeshingles Nov 8, 2023
0de4d2c
Refactor estimator reading func params
lukeshingles Nov 8, 2023
0a9ebbc
Fix estimator key errors
lukeshingles Nov 8, 2023
ac83ee0
Update estimators.py
lukeshingles Nov 8, 2023
0b66719
Remove get_heatingcooling option to parse_estimfile() and calling fun…
lukeshingles Nov 8, 2023
7d316fc
Update radfield.py
lukeshingles Nov 8, 2023
8d4f715
Update estimators.py
lukeshingles Nov 8, 2023
c8aca8a
Update plotestimators.py
lukeshingles Nov 8, 2023
0ccdb31
Update estimators.py
lukeshingles Nov 8, 2023
7fce659
Update estimators.py
lukeshingles Nov 8, 2023
d40372e
Update updatepackages.yml
lukeshingles Nov 9, 2023
ab49ea3
Update updatepackages.yml
lukeshingles Nov 9, 2023
40fa39e
Remove astropy from spectra.py
lukeshingles Nov 9, 2023
1aff644
Update plotnonthermal.py
lukeshingles Nov 9, 2023
c85588c
Replace estimator keys prefix populations_ with nnion_, nniso_, nnele…
lukeshingles Nov 9, 2023
e3edc4b
Update .pre-commit-config.yaml
lukeshingles Nov 9, 2023
59d3057
Update requirements.txt
lukeshingles Nov 9, 2023
2a5a4e0
Update plotestimators.py
lukeshingles Nov 9, 2023
29fb649
Remove lz4 support
lukeshingles Nov 9, 2023
e47f0ba
Store estimators in parquet files
lukeshingles Nov 9, 2023
f301db3
Restructure estimator file reading to lower mem usage
lukeshingles Nov 9, 2023
10dd7e0
Update estimators.py
lukeshingles Nov 9, 2023
c2e6c8f
Update test_artistools.py
lukeshingles Nov 9, 2023
688db76
Update estimators.py
lukeshingles Nov 9, 2023
77b0ebe
Update plotestimators.py
lukeshingles Nov 9, 2023
1b49ede
Use estimator batches
lukeshingles Nov 9, 2023
03a0add
Update estimators.py
lukeshingles Nov 9, 2023
df5ad2d
Add --markersonly
lukeshingles Nov 9, 2023
9e429f9
Update estimators.py
lukeshingles Nov 9, 2023
7306a07
Update plotestimators.py
lukeshingles Nov 9, 2023
bf57ba0
Fix duplicate keys in polars estimators
lukeshingles Nov 9, 2023
a037c04
Remove get_temperatures()
lukeshingles Nov 9, 2023
b85893b
Update plotestimators.py
lukeshingles Nov 9, 2023
ef8d90f
Use polars in plotestimators
lukeshingles Nov 9, 2023
a2369ef
Speed up estimator plotting
lukeshingles Nov 9, 2023
c83330e
Update plotestimators.py
lukeshingles Nov 9, 2023
f09ea68
Update estimators.py
lukeshingles Nov 9, 2023
26d9bc8
Update estimators.py
lukeshingles Nov 9, 2023
662ac2d
Update estimators.py
lukeshingles Nov 9, 2023
ee69972
Update estimators.py
lukeshingles Nov 9, 2023
43ff17c
Update estimators.py
lukeshingles Nov 9, 2023
40e213b
Update estimators.py
lukeshingles Nov 9, 2023
eb00202
Update inputmodel_misc.py
lukeshingles Nov 9, 2023
563cfa7
Update estimators.py
lukeshingles Nov 9, 2023
dbf935a
Fix plot presentation and units
lukeshingles Nov 9, 2023
1f8bf2a
Update plotestimators.py
lukeshingles Nov 9, 2023
587cc76
Update commands.py
lukeshingles Nov 9, 2023
1907aff
Update radfield.py
lukeshingles Nov 9, 2023
4e41ae2
Update plotestimators.py
lukeshingles Nov 10, 2023
2f0ed3e
Merge branch 'main' into speedupestimators
lukeshingles Nov 10, 2023
32dcf12
Remove trailing commas
lukeshingles Nov 10, 2023
6ea1418
Update commands.py
lukeshingles Nov 10, 2023
cb189d7
Move plotinitialcomposition to inputmodel submodule
lukeshingles Nov 10, 2023
c21821c
Fixup
lukeshingles Nov 10, 2023
ca80a1e
Remove unused avgadjcells parameter
lukeshingles Nov 10, 2023
8cf387b
Add more type hints
lukeshingles Nov 10, 2023
880ad77
Add more type hints
lukeshingles Nov 10, 2023
9dc061a
Update plotestimators.py
lukeshingles Nov 10, 2023
dbe88a3
Update plotestimators.py
lukeshingles Nov 10, 2023
0a6a58d
Use more polars
lukeshingles Nov 10, 2023
99497cc
Update maptogrid.py
lukeshingles Nov 10, 2023
341e4fa
Update solvespencerfanocmd.py
lukeshingles Nov 10, 2023
43ed7eb
Update mypy to 1.7.0
lukeshingles Nov 10, 2023
646feea
Update maptogrid.py
lukeshingles Nov 10, 2023
bdc6a4c
Update estimators.py
lukeshingles Nov 10, 2023
1d19211
Update estimators.py
lukeshingles Nov 10, 2023
0133bb0
Update estimators.py
lukeshingles Nov 10, 2023
2f2b0af
Update estimators.py
lukeshingles Nov 10, 2023
b2294b3
Update estimators.py
lukeshingles Nov 10, 2023
f4a79bd
Update estimators.py
lukeshingles Nov 10, 2023
aaecc31
Update polars to 0.19.13 and pass filename to read_csv
lukeshingles Nov 10, 2023
2e882c6
Revert "Update polars to 0.19.13 and pass filename to read_csv"
lukeshingles Nov 10, 2023
c6635bd
Keep zopen for .xz files
lukeshingles Nov 10, 2023
0192227
Fix pylint error
lukeshingles Nov 10, 2023
e9a6be1
add test_estimator_averaging
lukeshingles Nov 10, 2023
9b68513
Update plotestimators.py
lukeshingles Nov 10, 2023
599edb6
Update plotestimators.py
lukeshingles Nov 10, 2023
0fc853c
Update plotestimators.py
lukeshingles Nov 10, 2023
b60178e
Speed up plotting with polars
lukeshingles Nov 10, 2023
27d2306
Update plotestimators.py
lukeshingles Nov 10, 2023
ce5b11e
Merge branch 'main' into speedupestimators
lukeshingles Nov 10, 2023
3ad315d
Fix averageexcitation for averaged estimator
lukeshingles Nov 10, 2023
e4ef131
Update plotestimators.py
lukeshingles Nov 10, 2023
dc730ab
Update plotestimators.py
lukeshingles Nov 11, 2023
57d1e1e
Improve warnings
lukeshingles Nov 11, 2023
2308521
Improve ionisation calculation with polars expressions
lukeshingles Nov 11, 2023
d35bae9
Remove get_averageionisation()
lukeshingles Nov 11, 2023
b7c00cf
Speed up average ionisation plot with polars
lukeshingles Nov 11, 2023
f22a79b
Update plotestimators.py
lukeshingles Nov 11, 2023
bdcac76
Update plotestimators.py
lukeshingles Nov 11, 2023
b6fa5e8
Update plotestimators.py
lukeshingles Nov 11, 2023
a301f12
Update plotestimators.py
lukeshingles Nov 11, 2023
5e41889
Update plotestimators.py
lukeshingles Nov 11, 2023
9465d4f
Update plotestimators.py
lukeshingles Nov 11, 2023
49af470
Update plotestimators.py
lukeshingles Nov 11, 2023
d68fba9
Speed up averageionisation series
lukeshingles Nov 11, 2023
6185dc3
Update plotestimators.py
lukeshingles Nov 11, 2023
d458bb8
Update plotestimators.py
lukeshingles Nov 11, 2023
d3ae157
Update plotestimators.py
lukeshingles Nov 11, 2023
2a9eb64
Update plotestimators.py
lukeshingles Nov 11, 2023
d15127a
Update plotestimators.py
lukeshingles Nov 11, 2023
a3fc75a
Merge model data with estimators
lukeshingles Nov 11, 2023
8b6b41f
Update plotestimators.py
lukeshingles Nov 11, 2023
1fbc1a3
Update plotestimators.py
lukeshingles Nov 11, 2023
459f809
Update estimators.py
lukeshingles Nov 11, 2023
a4b9fc0
Update plotestimators.py
lukeshingles Nov 11, 2023
4041320
Update plotestimators.py
lukeshingles Nov 11, 2023
ceaa0a1
Update plotestimators.py
lukeshingles Nov 11, 2023
35b532d
Add type hints to plot_average_ionisation_excitation
lukeshingles Nov 11, 2023
b8e5d78
Update estimators.py
lukeshingles Nov 12, 2023
abffbf2
Update plotestimators.py
lukeshingles Nov 12, 2023
e9b1e5e
Update plotestimators.py
lukeshingles Nov 12, 2023
a025ab2
Rename read_estimators_polars to scan_estimators
lukeshingles Nov 12, 2023
7d460da
Print parquet file size to stdout
lukeshingles Nov 12, 2023
2b6ba8c
Simplify get_runfolder_timesteps
lukeshingles Nov 12, 2023
027a2b8
Remove emptycell and lognne variables from estimators (all nonempty a…
lukeshingles Nov 12, 2023
2c2f6d2
Update estimators.py
lukeshingles Nov 12, 2023
386ad17
Revert "Update estimators.py"
lukeshingles Nov 12, 2023
99e9c75
Fix multiplot
lukeshingles Nov 12, 2023
e59a4f4
Refactor join_pdf_files
lukeshingles Nov 12, 2023
c259239
Update plotestimators.py
lukeshingles Nov 12, 2023
6e39a7b
Update plotestimators.py
lukeshingles Nov 12, 2023
f1da2ac
Update inputmodel_misc.py
lukeshingles Nov 12, 2023
b1bcf2b
Add formatted names for cell velocities
lukeshingles Nov 12, 2023
4987df1
Update plotestimators.py
lukeshingles Nov 12, 2023
501b611
Add --makegif option to plotestimators
lukeshingles Nov 12, 2023
36b9870
Add png multiplot
lukeshingles Nov 12, 2023
7a9c2bb
Update plotestimators.py
lukeshingles Nov 12, 2023
97e1a36
Fix estimator output file names
lukeshingles Nov 12, 2023
159eab0
Update plotestimators.py
lukeshingles Nov 12, 2023
c74b6f9
Update plotestimators.py
lukeshingles Nov 12, 2023
b875aaa
Update
lukeshingles Nov 13, 2023
027b464
Update requirements.txt
lukeshingles Nov 13, 2023
0ddd273
Update plotspherical.py
lukeshingles Nov 13, 2023
fbcd24c
Update plotspherical.py
lukeshingles Nov 13, 2023
d43c090
Update plotspherical.py
lukeshingles Nov 13, 2023
483bb04
Update plotspherical.py
lukeshingles Nov 13, 2023
0bf7975
Update plotinitialcomposition.py
lukeshingles Nov 13, 2023
087515f
Update plotestimators.py
lukeshingles Nov 13, 2023
53ff452
Update plotestimators.py
lukeshingles Nov 13, 2023
91766f2
Update plotestimators.py
lukeshingles Nov 13, 2023
2d5e6dd
Fix test failure
lukeshingles Nov 13, 2023
3f5e0b6
Update estimators.py
lukeshingles Nov 13, 2023
dd8ab91
Update extensions.json
lukeshingles Nov 13, 2023
ce0cd4e
Update plotinitialcomposition.py
lukeshingles Nov 14, 2023
2730eeb
Update plotestimators.py
lukeshingles Nov 14, 2023
96d5566
Merge branch 'main' into speedupestimators
lukeshingles Nov 14, 2023
79b638b
Update test_spectra.py
lukeshingles Nov 14, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,13 @@ repos:
# - id: yamlfmt

- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.1.4
rev: v0.1.5
hooks:
- id: ruff
args: [--fix, --exit-non-zero-on-fix]

- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.1.4
rev: v0.1.5
hooks:
- id: ruff-format

Expand Down
3 changes: 2 additions & 1 deletion .vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"recommendations": [
"ms-python.mypy-type-checker",
"charliermarsh.ruff"
"charliermarsh.ruff",
"sourcery.sourcery"
]
}
6 changes: 4 additions & 2 deletions artistools/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
from artistools import commands
from artistools import deposition
from artistools import estimators
from artistools import initial_composition
from artistools import inputmodel
from artistools import lightcurve
from artistools import macroatom
Expand All @@ -27,6 +26,7 @@
from artistools.__main__ import main
from artistools.configuration import get_config
from artistools.configuration import set_config
from artistools.estimators import read_estimators
from artistools.inputmodel import add_derived_cols_to_modeldata
from artistools.inputmodel import get_cell_angle
from artistools.inputmodel import get_dfmodel_dimensions
Expand Down Expand Up @@ -60,6 +60,7 @@
from artistools.misc import get_filterfunc
from artistools.misc import get_grid_mapping
from artistools.misc import get_inputparams
from artistools.misc import get_ion_tuple
from artistools.misc import get_ionstring
from artistools.misc import get_linelist_dataframe
from artistools.misc import get_linelist_dict
Expand All @@ -84,10 +85,10 @@
from artistools.misc import get_wid_init_at_tmin
from artistools.misc import get_wid_init_at_tmodel
from artistools.misc import get_z_a_nucname
from artistools.misc import join_pdf_files
from artistools.misc import linetuple
from artistools.misc import makelist
from artistools.misc import match_closest_time
from artistools.misc import merge_pdf_files
from artistools.misc import namedtuple
from artistools.misc import parse_range
from artistools.misc import parse_range_list
Expand All @@ -100,6 +101,7 @@
from artistools.misc import trim_or_pad
from artistools.misc import vec_len
from artistools.misc import zopen
from artistools.misc import zopenpl
from artistools.plottools import set_mpl_style


Expand Down
2 changes: 1 addition & 1 deletion artistools/atomic/_atomic_core.py
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ def get_levels(modelpath, ionlist=None, get_transitions=False, get_photoionisati
phixsdict[(Z, lowerionstage, lowerionlevel)] = (phixstargetlist, phixstable)

level_lists = []
iontuple = namedtuple("ion", "Z ion_stage level_count ion_pot levels transitions")
iontuple = namedtuple("ion", "Z ionstage level_count ion_pot levels transitions")

with at.zopen(adatafilename) as fadata:
if not quiet:
Expand Down
21 changes: 9 additions & 12 deletions artistools/codecomparison.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,9 +86,6 @@ def read_reference_estimators(

key = (cur_timestep, cur_modelgridindex)

if key not in estimators:
estimators[key] = {"emptycell": False}

estimators[key]["vel_mid"] = float(row[0])
estimators[key]["Te"] = float(row[1])
estimators[key]["rho"] = float(row[2])
Expand Down Expand Up @@ -140,30 +137,30 @@ def read_reference_estimators(
if ion_startnumber is None:
ion_startnumber = ion_number

ion_stage = ion_number + 1 if ion_startnumber == 0 else ion_number
ionstage = ion_number + 1 if ion_startnumber == 0 else ion_number

iontuples.append((atomic_number, ion_stage))
iontuples.append((atomic_number, ionstage))

elif not line.lstrip().startswith("#"):
cur_modelgridindex += 1

tsmgi = (cur_timestep, cur_modelgridindex)
if "populations" not in estimators[tsmgi]:
estimators[tsmgi]["populations"] = {}

assert len(row) == nstages + 1
assert len(iontuples) == nstages
for (atomic_number, ion_stage), strionfrac in zip(iontuples, row[1:]):
for (atomic_number, ionstage), strionfrac in zip(iontuples, row[1:]):
elsym = at.get_elsymbol(atomic_number)
ionstr = at.get_ionstring(atomic_number, ionstage, sep="_", style="spectral")
try:
ionfrac = float(strionfrac)
ionpop = ionfrac * estimators[tsmgi]["nntot"]
if ionpop > 1e-80:
estimators[tsmgi]["populations"][(atomic_number, ion_stage)] = ionpop
estimators[tsmgi]["populations"].setdefault(atomic_number, 0.0)
estimators[tsmgi]["populations"][atomic_number] += ionpop
estimators[tsmgi][f"nnion_{ionstr}"] = ionpop
estimators[tsmgi].setdefault(f"nnelement_{elsym}", 0.0)
estimators[tsmgi][f"nnelement_{elsym}"] += ionpop

except ValueError:
estimators[tsmgi]["populations"][(atomic_number, ion_stage)] = float("NaN")
estimators[tsmgi][f"nnion_{ionstr}"] = float("NaN")

assert np.isclose(float(row[0]), estimators[tsmgi]["vel_mid"], rtol=0.01)
assert estimators[key]["vel_mid"]
Expand Down
35 changes: 10 additions & 25 deletions artistools/commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@
"makeartismodelfromparticlegridmap": ("inputmodel.modelfromhydro", "main"),
"maptogrid": ("inputmodel.maptogrid", "main"),
"plotestimators": ("estimators.plotestimators", "main"),
"plotinitialcomposition": ("initial_composition", "main"),
"plotinitialcomposition": ("inputmodel.plotinitialcomposition", "main"),
"plotlightcurves": ("lightcurve.plotlightcurve", "main"),
"plotlinefluxes": ("linefluxes", "main"),
"plotmodeldensity": ("inputmodel.plotdensity", "main"),
"plotmodeldeposition": ("deposition", "main"),
"plotdensity": ("inputmodel.plotdensity", "main"),
"plotdeposition": ("deposition", "main"),
"plotmacroatom": ("macroatom", "main"),
"plotnltepops": ("nltepops.plotnltepops", "main"),
"plotnonthermal": ("nonthermal.plotnonthermal", "main"),
Expand Down Expand Up @@ -58,36 +58,21 @@ def get_commandlist() -> dict[str, tuple[str, str]]:
return {
"at": ("artistools", "main"),
"artistools": ("artistools", "main"),
"makeartismodel1dslicefromcone": (
"artistools.inputmodel.slice1dfromconein3dmodel",
"main",
),
"makeartismodel1dslicefromcone": ("artistools.inputmodel.slice1dfromconein3dmodel", "main"),
"makeartismodel": ("artistools.inputmodel.makeartismodel", "main"),
"plotartismodeldensity": ("artistools.inputmodel.plotdensity", "main"),
"plotartismodeldeposition": ("artistools.deposition", "main"),
"plotartisestimators": (
"artistools.estimators.plotestimators",
"main",
),
"plotartislightcurve": (
"artistools.lightcurve.plotlightcurve",
"main",
),
"plotartisdensity": ("artistools.inputmodel.plotdensity", "main"),
"plotartisdeposition": ("artistools.deposition", "main"),
"plotartisestimators": ("artistools.estimators.plotestimators", "main"),
"plotartislightcurve": ("artistools.lightcurve.plotlightcurve", "main"),
"plotartislinefluxes": ("artistools.linefluxes", "main"),
"plotartismacroatom": ("artistools.macroatom", "main"),
"plotartisnltepops": ("artistools.nltepops.plotnltepops", "main"),
"plotartisnonthermal": ("artistools.nonthermal", "main"),
"plotartisradfield": ("artistools.radfield", "main"),
"plotartisspectrum": ("artistools.spectra.plotspectra", "main"),
"plotartistransitions": ("artistools.transitions", "main"),
"plotartisinitialcomposition": (
"artistools.initial_composition",
"main",
),
"plotartisviewingangles": (
"artistools.viewing_angles_visualization",
"main",
),
"plotartisinitialcomposition": ("artistools.inputmodel.plotinitialcomposition", "main"),
"plotartisviewingangles": ("artistools.viewing_angles_visualization", "main"),
}


Expand Down
2 changes: 1 addition & 1 deletion artistools/deposition.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ def main_analytical(args: argparse.Namespace | None = None, argsraw: list[str] |
# dfnltepops = at.nltepops.read_files(
# args.modelpath, timestep=timestep).query('Z == 26')

# phixs = adata.query('Z==26 & ion_stage==1', inplace=False).iloc[0].levels.iloc[0].phixstable[0][1] * 1e-18
# phixs = adata.query('Z==26 & ionstage==1', inplace=False).iloc[0].levels.iloc[0].phixstable[0][1] * 1e-18

global_posdep = 0.0 * u.erg / u.s
for i, row in dfmodel.iterrows():
Expand Down
6 changes: 2 additions & 4 deletions artistools/estimators/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,14 @@
from artistools.estimators.estimators import apply_filters
from artistools.estimators.estimators import get_averaged_estimators
from artistools.estimators.estimators import get_averageexcitation
from artistools.estimators.estimators import get_averageionisation
from artistools.estimators.estimators import get_dictlabelreplacements
from artistools.estimators.estimators import get_ionrecombrates_fromfile
from artistools.estimators.estimators import get_partiallycompletetimesteps
from artistools.estimators.estimators import get_temperatures
from artistools.estimators.estimators import get_units_string
from artistools.estimators.estimators import get_variablelongunits
from artistools.estimators.estimators import get_variableunits
from artistools.estimators.estimators import parse_estimfile
from artistools.estimators.estimators import get_varname_formatted
from artistools.estimators.estimators import read_estimators
from artistools.estimators.estimators import read_estimators_from_file
from artistools.estimators.estimators import scan_estimators
from artistools.estimators.plotestimators import addargs
from artistools.estimators.plotestimators import main as plot
Loading