15.4. Known Issues

15.4.1. Installation and Uninstallation

  • When you install or uninstall pSeven Core using pip, you might get the following error message:

    ERROR: Cannot uninstall ‘pSevenCore’. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

    This means your existing pSeven Core version is not compatible with pip: it can only handle pSeven Core versions 2024.03 and above. If you upgrade from 2024.02, 6.52 or an earlier version, you will have to manually remove the existing version first.

    • Locate the pSeven Core installation directory. You can use this command: python -c "import da; print('\n'.join(da.__path__))"
    • Go to that directory and up to its parent directory; usually the parent is the Python site-packages directory, but can be other.
    • There, delete the da subdirectory and any files or directories matching pSevenCore-*.egg-info.

    To verify that pSeven Core is uninstalled completely, you can use this command: python -c "import da.p7core; print(da.p7core.__version__)". Check its output:

    • “ImportError: No module named da.p7core” — pSeven Core is not installed.
    • version number — this version is installed. Follow the guidelines above to locate it and remove.

15.4.2. License

  • Frequent license requests can put the FlexNet Publisher license server into a denial of service state where it stops responding, so pSeven Core raises a LicenseError exception because it cannot check out some required license feature. Since license requests are sent when instantiating a class with licensed methods (see License Usage), this issue is rather rare: it can occur when many objects of classes like gtopt.Solver or gtapprox.Builder are created often. For example, example_gtopt_co_parallel.py, which shows collaborative optimization, sometimes stops with this error, because it creates batches of gtopt.Solver objects. In this case, the size of these batches depends on the number of CPU cores, and on multi-core processors it can be high enough to flood the license server with requests.

    The denial of service issue is identified by the FlexNet Publisher error text contained in the exception message, like the following:

    [w] [ OptimizationManager] [ Warn] [7f7194d40740] Interrupted externally: Error in evaluate callback!
    Traceback (most recent call last):
    
    ...
    
    da.p7core.exceptions.UserEvaluateException: LicenseError in black box evaluation:
    License feature DA_MACROS_GTOPT_SO not found: Cannot read data from license server system.
     The license server system appears to be running, but is not
    responding.  If this persists, notify the System Administrator.
    (The license server manager (lmgrd) and vendor daemon processes
    should be terminated and restarted.)
    Feature:       DA_MACROS_GTOPT_SO
    License path:  27000@10.0.0.1:*.lic:
    FlexNet Licensing error:-16,10010
    

    A possible workaround to this error is to reduce frequency of license requests by reducing the number of created objects. For example, if you run into this issue with example_gtopt_co_parallel.py, you can try decreasing the number of CPU cores used by this script. Running the license server on local host or using a node-locked license may also help.

15.4.3. Documentation

  • This manual uses MathJax for math display. It is a JavaScript renderer supported by all major browsers that provides fine zoom, ability to copy and paste formulas, and other features. Naturally, it requires JavaScript enabled in the browser; if it is not, pages display formulas in raw \(\TeX\) syntax. A few known issues are:

    • Incorrect default scaling in some older versions of WebKit-based browsers (math font is too small). This is easily fixed in MathJax settings: right-click any formula and select Math Settings - Scale All Math… from the menu.
    • Some formulas are typeset incorrectly in some versions of Mozilla Firefox (and possibly other browsers). Possible workaround is to switch to another renderer in MathJax settings: right-click a formula and select Math Settings - Math Renderer from the menu. Default renderer is HTML-CSS, other options are MathML and SVG. The latter is recommended for Firefox if you see math typesetting issues.
  • When viewing a local copy of this manual (the one that comes with the pSeven Core package and is opened from disk using the file:// protocol), the search function may not work properly: after clicking the search button only the “Preparing search…” and “Searching…” messages are shown and nothing else happens.

    This is a known issue with some WebKit-based browsers (certain versions of Google Chrome and other Chromium projects). Local search works in Mozilla Firefox and other Gecko-based browsers, and in Internet Explorer. In the online version of the reference the search works normally, if JavaScript is enabled in the browser.

15.4.4. Multi-threading

  • In some older distributions of Linux, calling Generic Tools in a multi-threaded application may cause a deadlock. The error is closely related to the implementation of Thread-local Storage in support libraries and manifests itself when pSeven Core is used in threads that have been created earlier than the thread where pSeven Core was first imported. A newer Linux distribution or preliminary import of pSeven Core seems to be a solution to the problem.

15.4.5. Generic Tool for Data Fusion

  • When internal validation is requested in the blackbox-based mode (that is, build_BB() is used with GTDF/InternalValidation on), it is possible that the internal validation results will contain NaN or Inf values for error estimates. This may happen when some of the points in the high fidelity data sample are outside of the blackbox domain. Since cross-validation subsets are randomly generated from the high fidelity sample, there is a probability that one of them will consist entirely of points which are not valid for the blackbox. Model evaluations in cross-validation always use the blackbox, and in this case it leads to inability to calculate error estimates properly.

    If the blackbox can not be fixed so that all high fidelity sample points are within its domain, there is another workaround based on the random nature of cross-validation subset generation. Changing any of the internal validation options, namely GTDF/IVSeed, GTDF/IVSubsetCount or GTDF/IVTrainingCount, will change the generated cross-validation subsets and may resolve the issue.

15.4.6. Statistical Utilities

  • The method to calculate elementary statistics (calculate_statistics()) can not yet handle constant columns in the input sample. The solution is to manually remove the redundant data from the input sample.