Library / SDK
GT4SD/gt4sd-core avatar
GT4SD/gt4sd-core

GT4SD: a registry and CLI layer over pretrained generative models for molecular and protein design

GT4SD, an open-source library to accelerate hypothesis generation in the scientific discovery process.

378 stars80 forksJupyter NotebookMIT

At a glance

What is it?
GT4SD wraps conditional generation, controlled sampling and prediction algorithms behind a single Python registry and a gt4sd-inference CLI. The value is in the uniform interface, not in the models themselves, and the installation path is the part that will decide whether you get it running.
Who is it for?
Adopt GT4SD if you need several generative discovery algorithms behind one call signature and you are willing to run the documented conda environment plus pip install -r vcs_requirements.txt with Git LFS present. Do not adopt it if you only need one model, or if you cannot pin python<=3.10 and pip==24.0, because the dependency chain is the part most likely to break.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 5 days ago.
What is it written in?
Mainly Jupyter Notebook, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The problem GT4SD addresses is interface fragmentation, not model availability

Generative models for molecules, proteins and materials are published constantly, and each one arrives with its own loading code, its own checkpoint layout and its own way of accepting a conditioning input. GT4SD's stated aim is to accelerate hypothesis generation in the scientific discovery process by making state-of-the-art generative AI models easier to use. Read that as an integration claim rather than a modelling claim: the repository is not presenting a new architecture, it is presenting a common calling convention over existing ones. The audience follows from that. It is for computational chemists, protein engineers and ML engineers who want to sample from a named algorithm in a script or a shell command without first reading the source of the underlying model. The README example is a protein-conditioned molecule generator: you pass a target sequence and ask for samples. If your work looks like that, the abstraction is aimed at you. If your work is training a model from scratch, GT4SD is largely beside the point.

How the ApplicationsRegistry turns four string identifiers into a runnable algorithm

The mechanism visible in the README is a lookup table. Algorithms are addressed by a tuple of strings: algorithm_type, domain, algorithm_name and algorithm_application. The documented values for algorithm_type are conditional_generation, controlled_sampling, generation and prediction; the documented values for domain are materials and nlp. You call ApplicationsRegistry.get_application_instance with those identifiers plus any configuration parameters as keyword arguments, and you get back an object with a sample method. The direct route skips the registry entirely: import the concrete class, build a configuration object, pass the target, and iterate over algorithm.sample(10). Both paths end at the same interface, which is the actual design decision here. Configuration parameters such as generated_length are passed as **kwargs through the registry, and the CLI exposes the same fields as flags. That three-way correspondence (class, registry, CLI) is what makes the library usable from a notebook, a pipeline script and a shell in the same project. What the README does not show is how the registry resolves conflicts or what happens when an identifier is misspelled; the --help text notes that algorithm_version is optional, so the resolution rules for unversioned lookups are not documented in the material available.

Installation is the real gate: python<=3.10, pip==24.0, VCS dependencies and Git LFS

The README is unusually explicit about constraints, and they are narrow. gt4sd currently relies on python>=3.7,<=3.10 and pip==24.0. The recommended path is a dedicated conda environment, not a bare pip install into whatever interpreter is already active. For CPU on macOS the command is conda env create -f conda_cpu_mac.yml, with conda_cpu_linux.yml for Linux; conda activate gt4sd; pip install gt4sd. For GPU, conda env create -f conda_gpu.yml replaces the CPU file. The README also states that gt4sd installs with CPU requirements by default, so a GPU run requires the GPU environment file rather than a flag at runtime. There is a second path for reusing an existing compatible environment: plain pip works, but the README warns that some dependencies require installation from GitHub, and directs you to pip install -r vcs_requirements.txt. A few of those VCS dependencies require Git LFS, which must be present on the system. That is the constraint most likely to bite in a locked-down CI image. Contributors are pointed at pip install --no-deps -e . for editable installs. The pin on pip itself is the detail worth noticing: it is a version of the installer, not of a library, which suggests the dependency resolution depends on resolver behaviour that changed across pip releases.

Running inference from the shell with gt4sd-inference

The CLI is the part that makes this usable outside a Python session. The README gives a working invocation: gt4sd-inference --algorithm_name PaccMannRL --algorithm_application PaccMannRLProteinBasedGenerator --target MVLSPADKTNVKAAWGKVGAHAGEYGAEALERMFLSFPTT --number_of_samples 10. The full flag set from the --help output covers --algorithm_type, --domain, --algorithm_name, --algorithm_application, --algorithm_version, --target, --number_of_samples, --configuration_file and --print_info. Two details in that help text matter for scripting. First, --target is described as optional, and the help notes it can also be provided in the configuration_file as an object, so long-running or reproducible runs can move their inputs out of the command line. Second, the enumerated values for --algorithm_type and --domain are printed in the help, which means the CLI itself is a discovery surface: you can check supported types without opening the docs. The README points to examples/cli/README.md for the per-model usage, and that file is where the model-specific flags would live. Note that the sample invocation omits --algorithm_type and --domain even though the help lists them; the README does not state whether they are inferred from the algorithm name or simply defaulted.

Where GT4SD is the wrong tool

The narrow Python range is the first honest limitation. python>=3.7,<=3.10 excludes 3.11 and later, so a project already standardised on a newer interpreter has to build a separate environment rather than add a dependency. The pip==24.0 pin compounds this: it constrains the installer inside that environment, which is awkward if your tooling manages pip centrally. The VCS and Git LFS requirements are a second boundary. Dependencies installed from GitHub are not reproducible from a lockfile in the usual sense, and Git LFS must be available on the machine doing the install, which rules out some container build stages and some air-gapped setups. Third, the registry abstraction is a cost as well as a benefit. If you are using exactly one algorithm, the indirection through four string identifiers buys you nothing over importing the class directly, and it adds a failure mode where a typo in algorithm_application produces a lookup error instead of an import error. Finally, the README frames the toolkit around inference. Nothing in the supplied material describes a training loop, a fine-tuning entry point or a data preparation pipeline, so treating GT4SD as a training framework would be a misreading of what is documented.

Compared with pulling a single model repository directly

The realistic alternative is not another toolkit; it is cloning the one model you need and calling it yourself. The difference is in what you maintain. With a single model repository you own the environment for that model, you pin its exact dependencies, and you read its code when something breaks. With GT4SD you own one environment for many algorithms, you get a uniform sample method and a uniform CLI, and you accept a shared dependency set that is the union of every algorithm's requirements. That union is why the constraints are as tight as python<=3.10 and pip==24.0. The trade is legible: fewer environments to build, more constraints per environment. There is a middle position the README itself suggests. Almost all pretrained models are also available via gradio-powered web apps on Hugging Face Spaces, so for exploratory work you can compare outputs in a browser before deciding whether the local install is worth it. The web apps do not give you the Python API, but they do let you judge whether a given algorithm produces anything useful for your target before you spend time on conda.

Maintenance, releases and what the MIT licence does and does not cover

The release cadence visible in the material is uneven. v1.5.1 is dated 2026-07-31, while v1.5.0 and v1.4.3 both carry 2025-07-27 timestamps, and the repository's last push matches the v1.5.1 date. That pattern (a long gap, then a patch, then a minor and a patch on the same day) suggests maintenance happens in bursts rather than continuously, which is worth knowing if you plan to track main. The repository is not archived, and the README links a CONTRIBUTING.md and a code of style badge for black, so contributions are expected to follow a formatter. On licensing: gt4sd-core is MIT, which is permissive and places few obligations on how you redistribute or modify the library code. That does not automatically extend to the pretrained model weights the toolkit loads, and the README does not state the licence of those weights. If you intend to ship something built on a GT4SD algorithm, check the licence of the specific model behind the algorithm_application you are calling, not just the badge on the repository. This is a factual boundary in the documentation, not legal advice. Upgrade cost is dominated by the environment: a new gt4sd release may move the dependency set, and because part of that set comes from GitHub rather than PyPI, reproducing a previous working environment after the fact depends on those repositories still serving the same commits.

Editorial conclusion

Adopt GT4SD if you need several generative discovery algorithms behind one call signature and you are willing to run the documented conda environment plus pip install -r vcs_requirements.txt with Git LFS present. Do not adopt it if you only need one model, or if you cannot pin python<=3.10 and pip==24.0, because the dependency chain is the part most likely to break. Before committing, verify two things on your own machine: that conda_cpu_linux.yml or conda_gpu.yml resolves in your environment, and that ApplicationsRegistry.get_application_instance returns an instance for the exact algorithm_type, domain, algorithm_name and algorithm_application combination you plan to use.

Official sources

  1. GT4SD/gt4sd-core on GitHub
  2. License: MIT
  3. Project website
  4. README
  5. Releases
Community notes

Community notes