yotarazona / scikit-eo

A Python package for Remote Sensing Data Analysis
https://yotarazona.github.io/scikit-eo/
Other
107 stars 16 forks source link

Please provide some instructions for installation of all dependencies, and running in virtual environment #5

Closed dbuscombe-usgs closed 3 months ago

dbuscombe-usgs commented 4 months ago

Hi, nice work here. I'm reviewing for JOSS https://github.com/openjournals/joss-reviews/issues/6692

I'm a regular python user and I use a lot of different packages with various dependencies that aren't always compatible. I believe I may be your 'typical' end-user, in that regard. I think, therefore, that providing some instruction for isolating/containerizing scikit-eo for use would be beneficial. For example, conda provides an easy solution

conda create -n scikiteo python=3.10

then

conda activate scikiteo

then finally

pip install scikeo

I also noticed that the pip command did not install all required dependencies, which I had to install manually

Is there a reason why the pip package doesn't install these dependencies? This would be a major problem for a novice python user. At a minimum, all dependencies should be listed here. Ideally, you package them up for the user. I installed all dependency packages using conda, except earthpy

dbuscombe-usgs commented 4 months ago

I am now running the provided test script, which errors because of new dependencies not installed by pip install scikeo. Namely

dbuscombe-usgs commented 4 months ago

This is related to https://github.com/yotarazona/scikit-eo/issues/6

dbuscombe-usgs commented 4 months ago

It would appear jupyter is also missing as a dependency in the pip package, which is required to run all of the notebooks in the example folder. And google is required to access example datasets

dbuscombe-usgs commented 4 months ago

I have been trying to troubleshoot the issues I am having with tensorflow (see also https://github.com/yotarazona/scikit-eo/issues/10) and, more specifically, from scikeo.deeplearning import DL, which returns the following error

ModuleNotFoundError: No module named 'tensorflow.keras'

This is despite being able to import tensorflow. Very bizarre. I realize this may be a tensorflow issue, not a scikit-eo issue, but I'm still confused as to why you haven't listed tensorflow as a dependency in https://github.com/yotarazona/scikit-eo/blob/main/requirements.txt or anywhere else. Have you at least tested what versions are known to be stable? Any other guidance you could provide? Thanks

dbuscombe-usgs commented 4 months ago

I managed to fix this by modifying deeplearning.py, in which I replaced

from tensorflow.keras import models
from tensorflow.keras import layers
from tensorflow.keras.utils import to_categorical

with

from tensorflow import keras

then made the necessary edits to calls to layers and models. Then reinstalled locally using pip install -e .

Now I can from scikeo.deeplearning import DL without error

yotarazona commented 4 months ago

Thank you so much @dbuscombe-usgs !. All required dependencies was add: https://github.com/yotarazona/scikit-eo/blob/main/requirements.txt. By installing scikit-eo all these dependencies will be installed as well in this new version. This dependencies used by scikit-eo was explained in the README.md (https://github.com/yotarazona/scikit-eo). Additionally, isolating/containerizing scikit-eo was also added in the README.md as an option. This will clarify all required dependencies. Many novice python users don't know about creating environments, so I left containerization as an additional option.

Regarding the class deeplearning.py, it was fix.

from tensorflow import keras
from keras import models
from keras import layers
from keras.utils import to_categorical