hitranonline / hapi

HITRAN Application Programming Interface (HAPI)
Other
81 stars 35 forks source link

Package/module structure, code style, performance - maybe go for version 2 #46

Open MothNik opened 9 months ago

MothNik commented 9 months ago

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

Besides, the code contains some parts that could be improved

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.

Thanks for your time.

jmmelko commented 7 months ago

Personally I totally agree with you (I was chocked, almost choked, by the non-Pythonic nature of hapi.py the first time I saw it) except that:

erwanp commented 7 months ago

By the way, waiting for HAPI2; we have an object-oriented, automatically-tested, HITRAN/ExoMol LBL code at https://github.com/radis/radis from which some structuration-ideas could be taken for HAPI2 (that's the point of open source)

MothNik commented 7 months ago

@jmmelko I think the overhead from calling a module becomes negligible given that line-by-line computations of the spectra can take some time, but that's more of a detail I would say. You probably refer to hapi2 where it is stated that the line profile computations are more efficient due to just-in-time-compilation. Now, I'm quite confused 😵 because Hitran Online points to to hapi and not hapi2.

@erwanp Thanks! I will have a definitely have a look into it! Especially the GPU acceleration looks nice 😸

MothNik commented 7 months ago

If hapi is still an interface to use for many users, maybe a "facelift" would still be nice? Because for hapi2, the last commit was mid of 2023 as well.

jmmelko commented 7 months ago

@MothNik yes, the fact that Hitran Online still uses HAPI is very disturbing. @erwanp radis looks cool, I will definitely try it when I have some time.