firasmidani / amiga

Analysis of Microbial Growth Assays
https://firasmidani.github.io/amiga/
GNU General Public License v3.0
12 stars 3 forks source link

GPy1.9.9 #11

Open carrollphillip opened 2 years ago

carrollphillip commented 2 years ago

I'm in the process of downloading AMiGA and are having trouble downloading the required GPy 1.9.9 package. I was able to download the other required packages by specifying the package name. When I try to download GPy 1.9.9 the Anaconda prompt says that the the available channels do not contain GPy 1.9.9 and the latest version that can be downloaded is 1.8.4. I have also tried to download GPy 1.9.9 using my computer's command prompt and receive an error saying "legacy-install failure". Will AMiGA function with GPy 1.8.4 or does it need 1.9.9? How best would I download the package? I appreciate any help you could provide.

firasmidani commented 2 years ago

I have installed and used a newer version of GPy 1.10 without any problems, so it must be an installation issue. I have not tested an older version of GPy, but let's try the below first.

Did you try to add the conda-forge channel first then trying to install GPy, for example with conda config --add channels conda-forge

Also, have you tried downloading GPy with pip via the command prompt? pip install GPy

carrollphillip commented 2 years ago

Thank you for your response. I have successfully uploaded each required module and have been able to summarize project-specific data. When I perform the fit command I receive a message saying "numpy.linalg.LinAlgError: not positive definite, even with jitter." I would appreciate it if you could give me a recommendation on how I could solve the problem.

firasmidani commented 2 years ago

Please try to add the "--verbose" argument to your command and re-run it? For example, python amiga.py fit -i /home/outbreaks/erandomii/ER1_PM2-1.txt --verbose

Now, by looking at the terminal, you can see which well causes this message. What does this well look like in the figure created by the summarize function? Is there something weird about it?

If you share the data for this particular well or plate, I can also try to reproduce the message which would help in figuring out a solution.

carrollphillip commented 2 years ago

Thank you for your assistance so far. I have been able to get my data summarized and fit. I found that AMiGA was unable to process data sets where wells had no growth. My solution to the problem was to increase all data points by one, eliminating all zeros, and removing wells where no growth occurred. The two steps removed the errors I was experiencing. Is the algorithm that calculates growth and death rates unable to process data with wells of no growth? Is this a known issue and do you have another solution? Overall, AMiGA is a tremendous tool. I appreciate the work you have done, enabling others to get desired biolog results much more efficiently.

firasmidani commented 2 years ago

I have been able to process plates that included wells with no growth. I also just tried the fit function on a well of all zeros and a well normally distributed around zero (so straight line with bit of noise) and those were fine too. AMiGA is able to process them and shows that growth rate is 0 or near zero.

There could be something not obvious about how the data is encoded in your text file. The best way for me to troubleshoot it and replicate it is for me to look at and test the actual file. Is this something that you can share? If so, please share the whole file or at least one well where you have obvious growth and one well does not have any growth and has been causing errors in AMiGA. You can drag and drop it here or email me too.

Once I figure out the problem, I will update AMiGA so that it knows how to handle this issue automatically and you won't have to do any manual editing of your data.

carrollphillip commented 2 years ago

I appreciate you offering to troubleshoot the problem. Let me know if you have any questions. CIN_example.txt

firasmidani commented 2 years ago

I figured out the problem last week and implemented a solution, but I still need to thoroughly test it before I update AMiGA. In the meantime, please go the libs/config.py file and open it a code or text editor. Go to line 32 and change the parameter to LOD So

config['handling_nonpositives'] = 'LOD'

The issue had to due with code that handles negative or zero data. It did not always causes an issue so that is why it only caused a problem for some of your wells. Anyways, here, we are simply selecting the "Limit of Detection" method for handling nonpositive data instead of the "Delta" method, the latter has the minor bug.

You can manually set the limit of detection in the next line. By default, it is 0.010, but you can use what's best for your data.

config['limit of detection'] = 0.010

If you want to learn more about these different options, look for "Handling nonpositive measurements?" in the amiga documentation here.