ersilia-os / ersilia

The Ersilia Model Hub, a repository of AI/ML models for infectious and neglected disease research.
https://ersilia.io
GNU General Public License v3.0
203 stars 131 forks source link

🐛 Bug: Model `eos6m4j`: CLI - `descriptors did not produce an output` #350

Closed Zainab-ik closed 1 year ago

Zainab-ik commented 1 year ago

Describe the bug.

While fetching the model eos6m4j, my system suddenly shut down and the error log is not informative enough. The model eos6m4j repeatedly shut down my system while fetching using the ersilia -v fetch eos6m4j > eos6m4jEE.log 2>&1.

Describe the steps to reproduce the behavior

Expected behavior.

Fetch model succesfully

Screenshots.

eos6m4jE.log Error log file of model eos6m4j

Operating environment

Ubuntu 20.04.1 LTS Windows 11

Additional context

All packages installed Connected to internet

Zainab-ik commented 1 year ago

@GemmaTuron, Kindly go through. Thank you

Yayeks commented 1 year ago

I tried running this in the early hours of the morning when I hadn't been assigned a model. My system went off to while downloading and extracting packages.

GemmaTuron commented 1 year ago

Hi @Zainab-ik I don't know what can be the root of this issue, I have run it on my WSL system and also in my linux machine without trouble both times. Focus on trying to understand the internet issues as we are discussing in #352 and see if we can get over those.

Zainab-ik commented 1 year ago

@GemmaTuron I'd make do with that.

GemmaTuron commented 1 year ago

Hi @Zainab-ik !

I am unable to reproduce this, so I am guessing it might have to do with the internet connection (MolMap is quite a large model) Let's close this issue and mark it in purple in the excel file so that I know this model can be problematic

Zainab-ik commented 1 year ago

Hi @GemmaTuron, can this issue be reopened so I can update with recent error?

Zainab-ik commented 1 year ago

Thanks @GemmaTuron

Zainab-ik commented 1 year ago

The model eos6m4j was rerun after going through the process stated in #372. The molmap model is quite a large one as seen here eos6m4j size 2

After fetching using the ersilia -v fetch eos6m4j, going through the log output on the terminal, The following error was noticed:

  1. Value error and urllib3 exceptions error 1 eos6m4j

  2. Protocol error: urllib3 exceptions error 2 eos6m4j

  3. ChunkedEncodingError; requests exceptions error 3 eos6m4j

  4. Requests dependency warning error 4 eos6m4j

  5. Ersilia exception class: EmptyOutputError final error 2 eos6m4j

The model fetched for 2hrs 10min and along the log output, the API is described to be a descriptor eos6m4j API

Final detailed error: Model API eos6m4j: descriptors did not produce an output

P.S: another process of rerun would be done to get a log output and attach. @GemmaTuron

GemmaTuron commented 1 year ago

Hi @Zainab-ik !

Can you check which urllib version you have on the ersilia conda environment and on the eos6m4j conda environment?

Zainab-ik commented 1 year ago

Alright @GemmaTuron, I'd get back.

Zainab-ik commented 1 year ago

Hi @Zainab-ik !

Can you check which urllib version you have on the ersilia conda environment and on the eos6m4j conda environment?

image @GemmaTuron I have version 1.25.11 on the ersilia conda enviroment.

GemmaTuron commented 1 year ago

and if you activate conda environment eos6m4j (is automatically created when fetching the model)?

Zainab-ik commented 1 year ago

and if you activate conda environment eos6m4j (is automatically created when fetching the model)?

@GemmaTuron I do not understand the question.

Zainab-ik commented 1 year ago

Hi @GemmaTuron, I've been able to fetch the model eos6m4j successfully. Attached is the log output my.log

However, this model has 2 APIs: Descriptors & Fingerprints image

I need to proceed to generate output. However, I'd like to clarify; Are these APIs used the same way we use Predict and Calculate? And can I get an explanation on both APIs? When generating output, do I use both together or separately? Thank you @GemmaTuron

UChisom commented 1 year ago

Hi @Zainab-ik

According to @GemmaTuron explanation a while ago on slack, when you encounter two APIs, you should serve and predict each individually. Then save the output file with the model name and API you used for that instance.

Hope this helps!

UChisom commented 1 year ago

and if you activate conda environment eos6m4j (is automatically created when fetching the model)?

@GemmaTuron I do not understand the question.

When you fetch a model, it creates an environment for itself. Activate that environment and check the version of the package in there.

Zainab-ik commented 1 year ago

and if you activate conda environment eos6m4j (is automatically created when fetching the model)?

@GemmaTuron I do not understand the question.

When you fetch a model, it creates an environment for itself. Activate that environment and check the version of the package in there.

I've done this and I've been able to fetch.

Zainab-ik commented 1 year ago

Hi @Zainab-ik

According to @GemmaTuron explanation a while ago on slack, when you encounter two APIs, you should serve and predict each individually. Then save the output file with the model name and API you used for that instance.

Hope this helps!

Yh @UChisom , it does helps. What I do not understand is in the last code, do I still use predict instead of descriptors and what if both APIs take different kind of input.

UChisom commented 1 year ago

Okay great! @Zainab-ik

You should use descriptors first, then fingerprints next. This should be proper since they are both APIs of the model

Zainab-ik commented 1 year ago

Okay great! @Zainab-ik

You should use descriptors first, then fingerprints next. This should be proper since they are both APIs of the model

Thank you @UChisom

Zainab-ik commented 1 year ago

Hi @GemmaTuron @UChisom, I've been able to generate outputs with both APIs. Thank you.