godamartonaron / GODA_pyPPG

pyPPG v01
HomePage
Other
23 stars 8 forks source link

Package dependencies make it difficult to use this library #21

Open haunma opened 1 week ago

haunma commented 1 week ago

I appreciate the spirit in which this has been written and given away to the community; however, requiring a whole slew of packages at specific [old] versions (numpy must be 1.23.2, matplotlib must be 3.6.1, and so on) makes this software almost impossible to use outside of a container, and therefore unsuitable for building into anyone else's work.

I was able to get the parts I wanted to test (the fiducial point algorithms) working by completely ignoring the dependencies and then resolving them one by one based on the errors generated. This is of course imperfect, e.g. modern versions of pandas are throwing a lot of dire warnings...

The effort required to fix this would be substantially reduced if the number of dependencies could be trimmed, perhaps through a partitioning of the "meat" and "visualization" parts of the library. Do you really need soundfile, scikit-learn, websockets, ...? Even pandas is a debatable requirement.

godamartonaron commented 1 week ago

Thank you for your thoughtful feedback.

We understand the challenge of managing numerous package dependencies, especially specific versions. To address this, we recommend using virtual environments, which can help avoid dependencies and ensure compatibility. https://pyppg.readthedocs.io/en/latest/tutorials/pyPPG_example.html

We're continuously working to improve usability, and your insights are crucial to that process.

Thank you again for your support and for sharing your experience.

haunma commented 1 week ago

Thanks for your reply. I also use python virtual environments for separate projects, but I create them with the --system-site-packages option so that common dependencies like numpy, scipy, and matplotlib need not be reinstalled a dozen times on my system. IMO this is best practice, but I concede that with virtually unlimited disk space we are heading toward a "containers for everything" model (witness the popularity of appimage and flatpack). Unfortunately, again IMO.

I guess it depends if your goal is merely to provide a demonstration of methods from your paper, or if you would like to promote these algorithms to more widespread use.