Skip to content

Environment reproduction issues and dependency incompatibilities #8

@MnZnYang

Description

@MnZnYang

Hi, thank you for open-sourcing ProStab.

I encountered several environment reproduction issues when trying to install the dependencies from environment.yml. After investigating the dependency graph and comparing it with the currently available packages, I found a few problems that may prevent users from reproducing the environment successfully.

1. PyTorch / PyTorch Lightning version incompatibility

The environment specifies:

torch==1.13.1
pytorch-lightning==1.7.3

However, according to the PyTorch Lightning compatibility matrix and multiple community reports, Lightning 1.7.x was primarily developed and tested with older PyTorch releases (around the PyTorch 1.9–1.12 generation). Using Lightning 1.7.3 together with Torch 1.13.1 can introduce dependency conflicts and runtime incompatibilities.

In our reproduction attempts, dependency resolution frequently failed around the Torch ecosystem.

It would be helpful to either:

  • provide a verified compatibility matrix,
  • pin a fully tested combination of Torch and Lightning versions,
  • or update the environment file to use a mutually compatible stack.

2. fair-esm==2.0.1 does not exist on PyPI

The environment file contains:

fair-esm==2.0.1

However, the latest official release currently available on PyPI is:

fair-esm==2.0.0

and version 2.0.1 cannot be installed directly from PyPI. The dependency specification should probably be updated to:

fair-esm==2.0.0

or installation instructions should clarify the source of version 2.0.1 if it was obtained elsewhere.

3. Hard-coded environment prefix

The environment file contains:

prefix: /home/xy_th/miniconda3/envs/surface

This path is machine-specific and causes issues during environment creation on other systems.

It would be better to:

  • remove the prefix field entirely, or
  • replace it with a placeholder path.

4. Absolute paths in the repository

During code inspection, we noticed that some scripts appear to rely on absolute paths rather than repository-relative paths.

This may cause failures when users run the project in different directory structures.

Using:

Path(__file__).resolve()

or repository-relative paths would improve portability and reproducibility.

5. Protobuf dependency conflict in environment solving

When creating the environment, Conda reported dependency conflicts involving:

libprotobuf=3.16.0
torchvision=0.14.1
torch=1.13.1

Specifically, PyTorch 1.13.1 requires a newer protobuf version than the one pinned in the environment file, causing the solver to fail.

Removing the explicit protobuf pin or updating it to a compatible version may resolve this issue.

6. Reproducibility concerns caused by strict low-level package pinning

The environment file pins many low-level system libraries, for example:

libgcc
libstdcxx
libgfortran
boost
boost-cpp

These versions appear to originate from the author's local environment export rather than project-level requirements.

Such strict pinning significantly increases the likelihood of Conda solver failures across platforms and distributions.

It may be preferable to keep only project-critical dependencies and allow Conda to resolve low-level system libraries automatically.

7. Potential issues with PyG ecosystem packages

The environment includes packages such as:

pytorch-scatter
pytorch-cluster

These packages are highly sensitive to the exact PyTorch/CUDA combination and are a common source of installation failures.

Providing installation instructions based on the official PyG wheel index (instead of strict Conda pinning) may improve reproducibility.

Summary

The main blockers we encountered were:

  1. Torch / Lightning version mismatch.
  2. Non-existent fair-esm==2.0.1.
  3. Hard-coded environment prefix.
  4. Absolute paths in some scripts.
  5. Protobuf conflicts preventing Conda solving.
  6. Excessive low-level dependency pinning.
  7. PyG package installation fragility.

Thank you again for sharing this project. We hope these observations help improve the reproducibility of ProStab for future users.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions