You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
As a developer for infrared spectroscopy software, I really like to work with the functionality that HITRAN offers (Perkin Elmer even built a patent with it for water vapour and CO2-correction of IR-spectra), but from time to time one has to look into the code which tries to summarize everything in a single .py-file (global constants, data-specific definitions, calculation routines, a 10 minutes Python tutorial). This fact makes it hard to understand/maintain and also increases the likelihood of errors a lot (there are still a some Pull requests and issues open regarding thins).
Before tackling the issues, I think a first step could be a version 2.0 that actually makes more use of Python built-in functionalities like
using of Python conventions for global constans (UPPER_CASE_CONSTANT)
making more use of Enums and dataclasses (or even pydantic models) rather than relying on global-constants-dict-combinations which are hard to track back in scope
not checking types with type(var) == some_type but rather with isinstance
splitting the package up into modules like (models for the global constants and data models involved, database_io for reading from the database, data for the hard-coded data in the module, lineshapes for the computation of lineshapes, environment for the environment specification part, misc for something like the tutorial ..., just a first example structure I could think of)
Besides, the code contains some parts that could be improved
adding type hints these 3 steps would not require a lot of effort, but make the code so much more joy to read and maintain
not using Python-loops in heavy-duty numerics, e.g., switching to numba, cython, or even rust with multiprocessing/threading could reduce the computation time quite a bit (this is currently a limiting factor for me)
in some parts scipy could also be beneficial as dependency that most developers in that field have installed anyway
adding automated tests with pytest (how is the module currently tested for correctness?) that could then be run whenever somebody makes a push or pull request
...
Then, it would be way easier to incorporate the changes required to resolve open issues/pull requests in less time.
Please don't see this as criticism, I would like to join as a contributor to this package and help 😄
However, I see a lot of open issues and pull requests and therefore wanted to ask if the project is still active and if there is interest in such big changes.
Hello,
As a developer for infrared spectroscopy software, I really like to work with the functionality that HITRAN offers (Perkin Elmer even built a patent with it for water vapour and CO2-correction of IR-spectra), but from time to time one has to look into the code which tries to summarize everything in a single
.py-file (global constants, data-specific definitions, calculation routines, a 10 minutes Python tutorial). This fact makes it hard to understand/maintain and also increases the likelihood of errors a lot (there are still a some Pull requests and issues open regarding thins).Before tackling the issues, I think a first step could be a version 2.0 that actually makes more use of Python built-in functionalities like
UPPER_CASE_CONSTANT)Enums anddataclasses (or evenpydanticmodels) rather than relying on global-constants-dict-combinations which are hard to track back in scopetype(var) == some_typebut rather withisinstancemodelsfor the global constants and data models involved,database_iofor reading from the database,datafor the hard-coded data in the module,lineshapesfor the computation of lineshapes,environmentfor the environment specification part,miscfor something like the tutorial ..., just a first example structure I could think of)Besides, the code contains some parts that could be improved
these 3 steps would not require a lot of effort, but make the code so much more joy to read and maintain
numba,cython, or evenrustwith multiprocessing/threading could reduce the computation time quite a bit (this is currently a limiting factor for me)scipycould also be beneficial as dependency that most developers in that field have installed anywaypytest(how is the module currently tested for correctness?) that could then be run whenever somebody makes a push or pull requestThen, it would be way easier to incorporate the changes required to resolve open issues/pull requests in less time.
Please don't see this as criticism, I would like to join as a contributor to this package and help 😄
However, I see a lot of open issues and pull requests and therefore wanted to ask if the project is still active and if there is interest in such big changes.
Thanks for your time.