Open janisshin opened 2 months ago
Hey @janisshin which branch did you build emll
from? @augeorge is still working on this feature, I believe. So maybe he can give you better information on where to find that functionality.
Not sure if this is related to your problem, but it might be a start!
I used the main branch; would you advise that I use a different one? So if the functionality has not been implemented in the main branch which suggests that these accounting problems are from a different source then, I suppose.
hi @janisshin @mcnaughtonadm that feature hasn't been fully tested and added yet! I've had to work on something else recently but hope to get it finished soon.
are you able to run https://github.com/pnnl-predictive-phenomics/emll/blob/master/notebooks/run_hackett_inference.py
? I had a dimension mismatch error caused by using the wrong version of pytensor, so maybe that is also happening to you?
issue https://github.com/pnnl-predictive-phenomics/emll/issues/13
Oh yea, it could definitely be the same problem. @janisshin you may need to rebuild part of your environment to re-install the correct pymc
package. I'd recommend uninstalling pymc
and pytensor
before installing emll
from source so that it will use the pinned pymc==5.9.2
version. This will automatically install a compatible pytensor
version, which should hopefully fix some of these errors.
It could be that you have a conda
installed pymc
/ pytensor
where the version isn't being recognized when building the repo using pip
. This could result in incompatible pymc
and pytensor
versions. I'd follow the discussion over on issue #13 and the corresponding merged PR #14
okay, so I tried running hackett.ipynb
after reinstalling the correct versions of python, pytensor, and pymc. Unfortunately, I ran into an error on the second cell (the part where I am running run_hackett_inference.py
)
---------------------------------------------------------------------------
NoSectionError Traceback (most recent call last)
File c:\Users\user\miniconda3\envs\idp_new\Lib\site-packages\pytensor\configparser.py:202, in PyTensorConfigParser.fetch_val_for_key(self, key, delete_key)
[201](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/configparser.py:201) try:
--> [202](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/configparser.py:202) return self._pytensor_cfg.get(section, option)
[203](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/configparser.py:203) except InterpolationError:
File c:\Users\user\miniconda3\envs\idp_new\Lib\configparser.py:797, in RawConfigParser.get(self, section, option, raw, vars, fallback)
[796](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/configparser.py:796) try:
--> [797](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/configparser.py:797) d = self._unify_values(section, vars)
[798](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/configparser.py:798) except NoSectionError:
File c:\Users\user\miniconda3\envs\idp_new\Lib\configparser.py:1168, in RawConfigParser._unify_values(self, section, vars)
[1167](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/configparser.py:1167) if section != self.default_section:
-> [1168](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/configparser.py:1168) raise NoSectionError(section) from None
[1169](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/configparser.py:1169) # Update with the entry specific variables
NoSectionError: No section: 'blas'
During handling of the above exception, another exception occurred:
KeyError Traceback (most recent call last)
File c:\Users\user\miniconda3\envs\idp_new\Lib\site-packages\pytensor\configparser.py:318, in ConfigParam.__get__(self, cls, type_, delete_key)
[317](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/configparser.py:317) try:
--> [318](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/configparser.py:318) val_str = cls.fetch_val_for_key(self.name, delete_key=delete_key)
[319](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/configparser.py:319) self.is_default = False
File c:\Users\user\miniconda3\envs\idp_new\Lib\site-packages\pytensor\configparser.py:206, in PyTensorConfigParser.fetch_val_for_key(self, key, delete_key)
[205](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/configparser.py:205) except (NoOptionError, NoSectionError):
--> [206](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/configparser.py:206) raise KeyError(key)
KeyError: 'blas__ldflags'
During handling of the above exception, another exception occurred:
IndexError Traceback (most recent call last)
Cell In[2], [line 1](vscode-notebook-cell:?execution_count=2&line=1)
----> [1](vscode-notebook-cell:?execution_count=2&line=1) from run_hackett_inference import *
File c:\Users\user\Documents\research\emll\notebooks\run_hackett_inference.py:13
[11](file:///C:/Users/user/Documents/research/emll/notebooks/run_hackett_inference.py:11) import pandas as pd
[12](file:///C:/Users/user/Documents/research/emll/notebooks/run_hackett_inference.py:12) import numpy as np
---> [13](file:///C:/Users/user/Documents/research/emll/notebooks/run_hackett_inference.py:13) import pymc as pm
[14](file:///C:/Users/user/Documents/research/emll/notebooks/run_hackett_inference.py:14) import pytensor.tensor as T
[15](file:///C:/Users/user/Documents/research/emll/notebooks/run_hackett_inference.py:15) import cobra
File c:\Users\user\miniconda3\envs\idp_new\Lib\site-packages\pymc\__init__.py:47
[42](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pymc/__init__.py:42) augmented = f"{augmented} -fno-unwind-tables -fno-asynchronous-unwind-tables"
[44](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pymc/__init__.py:44) pytensor.config.gcc__cxxflags = augmented
---> [47](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pymc/__init__.py:47) __set_compiler_flags()
[49](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pymc/__init__.py:49) from pymc import _version, gp, ode, sampling
[50](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pymc/__init__.py:50) from pymc.backends import *
File c:\Users\user\miniconda3\envs\idp_new\Lib\site-packages\pymc\__init__.py:30, in __set_compiler_flags()
[28](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pymc/__init__.py:28) def __set_compiler_flags():
[29](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pymc/__init__.py:29) # Workarounds for PyTensor compiler problems on various platforms
---> [30](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pymc/__init__.py:30) import pytensor
[32](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pymc/__init__.py:32) current = pytensor.config.gcc__cxxflags
[33](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pymc/__init__.py:33) augmented = f"{current} -Wno-c++11-narrowing"
File c:\Users\user\miniconda3\envs\idp_new\Lib\site-packages\pytensor\__init__.py:119
[115](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/__init__.py:115) return as_tensor_variable(x, **kwargs)
[118](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/__init__.py:118) # isort: off
--> [119](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/__init__.py:119) from pytensor import scalar, tensor
[120](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/__init__.py:120) from pytensor.compile import (
[121](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/__init__.py:121) In,
[122](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/__init__.py:122) Mode,
(...)
[128](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/__init__.py:128) shared,
[129](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/__init__.py:129) )
[130](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/__init__.py:130) from pytensor.compile.function import function, function_dump
File c:\Users\user\miniconda3\envs\idp_new\Lib\site-packages\pytensor\tensor\__init__.py:107
[105](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/tensor/__init__.py:105) # adds shared-variable constructors
[106](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/tensor/__init__.py:106) from pytensor.tensor import sharedvar # noqa
--> [107](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/tensor/__init__.py:107) from pytensor.tensor import ( # noqa
[108](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/tensor/__init__.py:108) blas,
[109](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/tensor/__init__.py:109) blas_c,
[110](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/tensor/__init__.py:110) blas_scipy,
[111](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/tensor/__init__.py:111) xlogx,
[112](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/tensor/__init__.py:112) )
[113](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/tensor/__init__.py:113) import pytensor.tensor.rewriting
[116](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/tensor/__init__.py:116) # isort: off
File c:\Users\user\miniconda3\envs\idp_new\Lib\site-packages\pytensor\tensor\blas.py:101
[99](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/tensor/blas.py:99) from pytensor.scalar import bool as bool_t
[100](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/tensor/blas.py:100) from pytensor.tensor import basic as at
--> [101](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/tensor/blas.py:101) from pytensor.tensor.blas_headers import blas_header_text, blas_header_version
[102](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/tensor/blas.py:102) from pytensor.tensor.elemwise import DimShuffle
[103](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/tensor/blas.py:103) from pytensor.tensor.math import add, mul, neg, sub
File c:\Users\user\miniconda3\envs\idp_new\Lib\site-packages\pytensor\tensor\blas_headers.py:1015
[997](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/tensor/blas_headers.py:997) header += textwrap.dedent(
[998](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/tensor/blas_headers.py:998) """\
[999](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/tensor/blas_headers.py:999) static float sdot_(int* Nx, float* x, int* Sx, float* y, int* Sy)
(...)
[1009](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/tensor/blas_headers.py:1009) """
[1010](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/tensor/blas_headers.py:1010) )
[1012](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/tensor/blas_headers.py:1012) return header + blas_code
-> [1015](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/tensor/blas_headers.py:1015) if not config.blas__ldflags:
[1016](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/tensor/blas_headers.py:1016) _logger.warning("Using NumPy C-API based implementation for BLAS functions.")
[1019](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/tensor/blas_headers.py:1019) def mkl_threads_text():
File c:\Users\user\miniconda3\envs\idp_new\Lib\site-packages\pytensor\configparser.py:322, in ConfigParam.__get__(self, cls, type_, delete_key)
[320](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/configparser.py:320) except KeyError:
[321](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/configparser.py:321) if callable(self.default):
--> [322](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/configparser.py:322) val_str = self.default()
[323](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/configparser.py:323) else:
[324](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/configparser.py:324) val_str = self.default
File c:\Users\user\miniconda3\envs\idp_new\Lib\site-packages\pytensor\link\c\cmodule.py:2782, in default_blas_ldflags()
[2779](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/link/c/cmodule.py:2779) else:
[2780](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/link/c/cmodule.py:2780) rpath = None
-> [2782](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/link/c/cmodule.py:2782) cxx_library_dirs = get_cxx_library_dirs()
[2783](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/link/c/cmodule.py:2783) searched_library_dirs = cxx_library_dirs + _std_lib_dirs
[2784](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/link/c/cmodule.py:2784) all_libs = [
[2785](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/link/c/cmodule.py:2785) l
[2786](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/link/c/cmodule.py:2786) for path in [
(...)
[2792](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/link/c/cmodule.py:2792) if l.suffix in {".so", ".dll", ".dylib"}
[2793](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/link/c/cmodule.py:2793) ]
File c:\Users\user\miniconda3\envs\idp_new\Lib\site-packages\pytensor\link\c\cmodule.py:2734, in default_blas_ldflags.<locals>.get_cxx_library_dirs()
[2726](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/link/c/cmodule.py:2726) p = subprocess_Popen(
[2727](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/link/c/cmodule.py:2727) cmd,
[2728](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/link/c/cmodule.py:2728) stdout=subprocess.PIPE,
(...)
[2731](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/link/c/cmodule.py:2731) shell=True,
[2732](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/link/c/cmodule.py:2732) )
[2733](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/link/c/cmodule.py:2733) (stdout, stderr) = p.communicate(input=b"")
-> [2734](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/link/c/cmodule.py:2734) maybe_lib_dirs = [
[2735](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/link/c/cmodule.py:2735) [pathlib.Path(p).resolve() for p in line[len("libraries: =") :].split(":")]
[2736](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/link/c/cmodule.py:2736) for line in stdout.decode(sys.stdout.encoding).splitlines()
[2737](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/link/c/cmodule.py:2737) if line.startswith("libraries: =")
[2738](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/link/c/cmodule.py:2738) ][0]
[2739](file:///C:/Users/user/miniconda3/envs/idp_new/Lib/site-packages/pytensor/link/c/cmodule.py:2739) return [str(d) for d in maybe_lib_dirs if d.exists() and d.is_dir()]
IndexError: list index out of range
So I guess this one is a Blas error which could be caused by your numpy
install. I'd maybe uninstall and reinstall numpy
to make sure it's compiled for a compatible version with pytensor
but this is just a hunch.
If you run just import pytensor
in a python shell, do you see a WARNING (pytensor.tensor.blas): Using NumPy C-API based implementation for BLAS functions.
?
As a side note, I will probably be doing a project management refactoring of the code to use .lock
files so we can guarantee the correct compatible versions of things are being installed, but for now maybe just try reinstalling numpy
(and if that doesn't immediately work, maybe try a reinstall of pytensor
with your new numpy
install).
In our previous meeting, Jeremy mentioned that emll now automatically handles missing data. I'm using emll right now, and it's complaining about array shape mismatches, but I have no idea where these numbers (specifically 555) are coming from.
For reference, in my model
Error message: