biocomposer 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- biocomposer-0.1.0/.DS_Store +0 -0
- biocomposer-0.1.0/.env.example +12 -0
- biocomposer-0.1.0/.github/workflows/docs.yml +51 -0
- biocomposer-0.1.0/.github/workflows/publish.yml +92 -0
- biocomposer-0.1.0/.gitignore +34 -0
- biocomposer-0.1.0/.readthedocs.yaml +15 -0
- biocomposer-0.1.0/PKG-INFO +16 -0
- biocomposer-0.1.0/README.md +59 -0
- biocomposer-0.1.0/ViennaRNA/2.7.2.toml +103 -0
- biocomposer-0.1.0/biocomposer/__init__.py +56 -0
- biocomposer-0.1.0/biocomposer/_version.py +24 -0
- biocomposer-0.1.0/biocomposer/cli.py +391 -0
- biocomposer-0.1.0/biocomposer/graph.py +330 -0
- biocomposer-0.1.0/biocomposer/helpers/__init__.py +0 -0
- biocomposer-0.1.0/biocomposer/helpers/bv.py +964 -0
- biocomposer-0.1.0/biocomposer/helpers/condition.py +22 -0
- biocomposer-0.1.0/biocomposer/helpers/connector_helper.py +472 -0
- biocomposer-0.1.0/biocomposer/helpers/file_handler.py +50 -0
- biocomposer-0.1.0/biocomposer/helpers/llm_wrapper.py +71 -0
- biocomposer-0.1.0/biocomposer/helpers/paths.py +30 -0
- biocomposer-0.1.0/biocomposer/helpers/runtime_context.py +51 -0
- biocomposer-0.1.0/biocomposer/node.py +280 -0
- biocomposer-0.1.0/biocomposer.egg-info/PKG-INFO +16 -0
- biocomposer-0.1.0/biocomposer.egg-info/SOURCES.txt +90 -0
- biocomposer-0.1.0/biocomposer.egg-info/dependency_links.txt +1 -0
- biocomposer-0.1.0/biocomposer.egg-info/entry_points.txt +2 -0
- biocomposer-0.1.0/biocomposer.egg-info/requires.txt +14 -0
- biocomposer-0.1.0/biocomposer.egg-info/top_level.txt +1 -0
- biocomposer-0.1.0/docs/Makefile +17 -0
- biocomposer-0.1.0/docs/_static/.nojekyll +0 -0
- biocomposer-0.1.0/docs/_static/architecture.png +0 -0
- biocomposer-0.1.0/docs/_static/architecture2.png +0 -0
- biocomposer-0.1.0/docs/_static/custom.css +87 -0
- biocomposer-0.1.0/docs/api.rst +33 -0
- biocomposer-0.1.0/docs/cli.rst +48 -0
- biocomposer-0.1.0/docs/conf.py +80 -0
- biocomposer-0.1.0/docs/connectors.rst +49 -0
- biocomposer-0.1.0/docs/contributing_tools.rst +92 -0
- biocomposer-0.1.0/docs/examples.rst +308 -0
- biocomposer-0.1.0/docs/execute.rst +63 -0
- biocomposer-0.1.0/docs/graph.rst +60 -0
- biocomposer-0.1.0/docs/how_it_works.rst +193 -0
- biocomposer-0.1.0/docs/index.rst +135 -0
- biocomposer-0.1.0/docs/installation.rst +31 -0
- biocomposer-0.1.0/docs/nodes/decision.rst +155 -0
- biocomposer-0.1.0/docs/nodes/gather.rst +103 -0
- biocomposer-0.1.0/docs/nodes/index.rst +44 -0
- biocomposer-0.1.0/docs/nodes/input.rst +72 -0
- biocomposer-0.1.0/docs/nodes/output.rst +29 -0
- biocomposer-0.1.0/docs/nodes/subgraph.rst +65 -0
- biocomposer-0.1.0/docs/nodes/tool.rst +82 -0
- biocomposer-0.1.0/docs/requirements.txt +4 -0
- biocomposer-0.1.0/docs/running.rst +165 -0
- biocomposer-0.1.0/docs/tools.rst +154 -0
- biocomposer-0.1.0/fpocket/4.2.3.toml +43 -0
- biocomposer-0.1.0/inputs/1l9h.pdb +6812 -0
- biocomposer-0.1.0/inputs/2i35.pdb +3370 -0
- biocomposer-0.1.0/inputs/apap_seq.fasta +0 -0
- biocomposer-0.1.0/inputs/db.fasta +10 -0
- biocomposer-0.1.0/inputs/ligand.pdbqt +7 -0
- biocomposer-0.1.0/inputs/ligand.sdf +11 -0
- biocomposer-0.1.0/inputs/mini_genome.fasta +45 -0
- biocomposer-0.1.0/inputs/minimal.mdp +14 -0
- biocomposer-0.1.0/inputs/papa_seq.fasta +2 -0
- biocomposer-0.1.0/inputs/query.hmm +422 -0
- biocomposer-0.1.0/inputs/rcsb_pdb_1L9H.fasta +2 -0
- biocomposer-0.1.0/inputs/receptor.pdb +6812 -0
- biocomposer-0.1.0/inputs/receptor.pdbqt +11 -0
- biocomposer-0.1.0/inputs/rna_family.fasta +10 -0
- biocomposer-0.1.0/pipeline_agent.py +247 -0
- biocomposer-0.1.0/pyproject.toml +40 -0
- biocomposer-0.1.0/run/diagnose_modal.py +83 -0
- biocomposer-0.1.0/run/run_acpype.py +27 -0
- biocomposer-0.1.0/run/run_babel.py +23 -0
- biocomposer-0.1.0/run/run_complex_md.py +66 -0
- biocomposer-0.1.0/run/run_decision_pipeline.py +35 -0
- biocomposer-0.1.0/run/run_decision_pipeline2.py +87 -0
- biocomposer-0.1.0/run/run_fpocket.py +18 -0
- biocomposer-0.1.0/run/run_gathernode_examples.py +125 -0
- biocomposer-0.1.0/run/run_gathernode_test.py +53 -0
- biocomposer-0.1.0/run/run_pipeline.py +110 -0
- biocomposer-0.1.0/run/run_pocket_dock_md.py +134 -0
- biocomposer-0.1.0/run/run_query.py +72 -0
- biocomposer-0.1.0/run/run_query_jupyter_notebook_pipeline_testing.ipynb +663 -0
- biocomposer-0.1.0/run/run_rf_to_colabfold.py +32 -0
- biocomposer-0.1.0/run/run_rf_to_mpnn.py +24 -0
- biocomposer-0.1.0/run/run_rna_pipeline.py +28 -0
- biocomposer-0.1.0/run/run_scrmsd_pipeline.py +113 -0
- biocomposer-0.1.0/run/run_tests.py +77 -0
- biocomposer-0.1.0/run/run_vina.py +29 -0
- biocomposer-0.1.0/run/testing_if_new_tools_work.py +38 -0
- biocomposer-0.1.0/setup.cfg +4 -0
|
Binary file
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
GEMINI_API_KEY=
|
|
2
|
+
GOOGLE_API_KEY=
|
|
3
|
+
ANTHROPIC_API_KEY=
|
|
4
|
+
OPENAI_API_KEY=
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
PIPELINE_TEMP_DIR=.pipeline_temp # scratch dir: downloads, connectors file
|
|
8
|
+
PIPELINE_STATE_PATH=.pipeline_temp/pipeline_state.json # persisted node I/O state
|
|
9
|
+
PIPELINE_CONNECTORS=.pipeline_temp/connectors.py # auto-generated connector functions
|
|
10
|
+
PIPELINE_RESULTS_BASE=.pipeline_temp # root dir for tool output subdirs
|
|
11
|
+
|
|
12
|
+
BIOCOMPOSER_LOG_LEVEL=DEBUG
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
name: Docs
|
|
2
|
+
|
|
3
|
+
# Build the Sphinx docs and publish them to GitHub Pages.
|
|
4
|
+
on:
|
|
5
|
+
push:
|
|
6
|
+
branches: [main, modal_bv_integration] # build on pushes to these branches
|
|
7
|
+
paths: ["docs/**", "biocomposer/**", ".github/workflows/docs.yml"]
|
|
8
|
+
workflow_dispatch: # allow manual runs from the Actions tab
|
|
9
|
+
|
|
10
|
+
# Permissions the Pages deploy needs.
|
|
11
|
+
permissions:
|
|
12
|
+
contents: read
|
|
13
|
+
pages: write
|
|
14
|
+
id-token: write
|
|
15
|
+
|
|
16
|
+
# Only one Pages deploy at a time.
|
|
17
|
+
concurrency:
|
|
18
|
+
group: pages
|
|
19
|
+
cancel-in-progress: false
|
|
20
|
+
|
|
21
|
+
jobs:
|
|
22
|
+
build:
|
|
23
|
+
runs-on: ubuntu-latest
|
|
24
|
+
steps:
|
|
25
|
+
- uses: actions/checkout@v4
|
|
26
|
+
|
|
27
|
+
- uses: actions/setup-python@v5
|
|
28
|
+
with:
|
|
29
|
+
python-version: "3.11"
|
|
30
|
+
|
|
31
|
+
- name: Install dependencies
|
|
32
|
+
run: |
|
|
33
|
+
pip install -r docs/requirements.txt
|
|
34
|
+
pip install -e . # autodoc imports biocomposer at build time
|
|
35
|
+
|
|
36
|
+
- name: Build HTML
|
|
37
|
+
run: sphinx-build -b html docs docs/_build/html
|
|
38
|
+
|
|
39
|
+
- uses: actions/upload-pages-artifact@v3
|
|
40
|
+
with:
|
|
41
|
+
path: docs/_build/html
|
|
42
|
+
|
|
43
|
+
deploy:
|
|
44
|
+
needs: build
|
|
45
|
+
runs-on: ubuntu-latest
|
|
46
|
+
environment:
|
|
47
|
+
name: github-pages
|
|
48
|
+
url: ${{ steps.deployment.outputs.page_url }}
|
|
49
|
+
steps:
|
|
50
|
+
- id: deployment
|
|
51
|
+
uses: actions/deploy-pages@v4
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
name: Publish to PyPI
|
|
2
|
+
|
|
3
|
+
# Publishes the biocomposer package to PyPI when a GitHub Release is published.
|
|
4
|
+
# Auth uses PyPI Trusted Publishing (OIDC) — no API token stored. You must
|
|
5
|
+
# register this repo as a trusted publisher once at:
|
|
6
|
+
# https://pypi.org/manage/project/biocomposer/settings/publishing/
|
|
7
|
+
# (or the "pending publisher" form if the project doesn't exist on PyPI yet)
|
|
8
|
+
# with workflow filename "publish.yml" and environment "pypi".
|
|
9
|
+
|
|
10
|
+
on:
|
|
11
|
+
release:
|
|
12
|
+
types: [published]
|
|
13
|
+
# Manual dry-run: Actions tab -> "Publish to PyPI" -> Run workflow.
|
|
14
|
+
# This builds and uploads to TestPyPI only (never real PyPI).
|
|
15
|
+
workflow_dispatch:
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
build:
|
|
19
|
+
name: Build distribution
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
steps:
|
|
22
|
+
- uses: actions/checkout@v4
|
|
23
|
+
with:
|
|
24
|
+
fetch-depth: 0 # setuptools-scm needs full history + tags to derive the version
|
|
25
|
+
|
|
26
|
+
- name: Set up Python
|
|
27
|
+
uses: actions/setup-python@v5
|
|
28
|
+
with:
|
|
29
|
+
python-version: "3.11"
|
|
30
|
+
|
|
31
|
+
- name: Build sdist and wheel
|
|
32
|
+
run: |
|
|
33
|
+
python -m pip install --upgrade build
|
|
34
|
+
python -m build
|
|
35
|
+
|
|
36
|
+
- name: Check distribution metadata
|
|
37
|
+
run: |
|
|
38
|
+
python -m pip install --upgrade twine
|
|
39
|
+
python -m twine check dist/*
|
|
40
|
+
|
|
41
|
+
- name: Upload build artifacts
|
|
42
|
+
uses: actions/upload-artifact@v4
|
|
43
|
+
with:
|
|
44
|
+
name: dist
|
|
45
|
+
path: dist/
|
|
46
|
+
|
|
47
|
+
publish:
|
|
48
|
+
name: Publish to PyPI
|
|
49
|
+
needs: build
|
|
50
|
+
runs-on: ubuntu-latest
|
|
51
|
+
# Real PyPI only on a published GitHub Release — never on the manual dry-run.
|
|
52
|
+
if: github.event_name == 'release'
|
|
53
|
+
# The environment name must match the one configured on PyPI's trusted publisher.
|
|
54
|
+
environment:
|
|
55
|
+
name: pypi
|
|
56
|
+
url: https://pypi.org/project/biocomposer/
|
|
57
|
+
permissions:
|
|
58
|
+
id-token: write # required for OIDC trusted publishing
|
|
59
|
+
steps:
|
|
60
|
+
- name: Download build artifacts
|
|
61
|
+
uses: actions/download-artifact@v4
|
|
62
|
+
with:
|
|
63
|
+
name: dist
|
|
64
|
+
path: dist/
|
|
65
|
+
|
|
66
|
+
- name: Publish to PyPI
|
|
67
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
68
|
+
|
|
69
|
+
testpypi:
|
|
70
|
+
name: Publish to TestPyPI (dry-run)
|
|
71
|
+
needs: build
|
|
72
|
+
runs-on: ubuntu-latest
|
|
73
|
+
# Dry-run target — only the manual "Run workflow" dispatch hits TestPyPI.
|
|
74
|
+
if: github.event_name == 'workflow_dispatch'
|
|
75
|
+
# Needs its own trusted-publisher registration on test.pypi.org and a
|
|
76
|
+
# matching "testpypi" GitHub environment.
|
|
77
|
+
environment:
|
|
78
|
+
name: testpypi
|
|
79
|
+
url: https://test.pypi.org/project/biocomposer/
|
|
80
|
+
permissions:
|
|
81
|
+
id-token: write # required for OIDC trusted publishing
|
|
82
|
+
steps:
|
|
83
|
+
- name: Download build artifacts
|
|
84
|
+
uses: actions/download-artifact@v4
|
|
85
|
+
with:
|
|
86
|
+
name: dist
|
|
87
|
+
path: dist/
|
|
88
|
+
|
|
89
|
+
- name: Publish to TestPyPI
|
|
90
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
91
|
+
with:
|
|
92
|
+
repository-url: https://test.pypi.org/legacy/
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
.env
|
|
2
|
+
.env.local
|
|
3
|
+
.pipeline_temp/
|
|
4
|
+
__pycache__/
|
|
5
|
+
*.pyc
|
|
6
|
+
/project-context/
|
|
7
|
+
candidate-model-library/colabfold_out/
|
|
8
|
+
.venv/
|
|
9
|
+
tools/__pycache__/
|
|
10
|
+
.bv/
|
|
11
|
+
.claude/
|
|
12
|
+
bv_test.py
|
|
13
|
+
bv.lock
|
|
14
|
+
bv.toml
|
|
15
|
+
fasttree_stdout.txt
|
|
16
|
+
helpers/__pycache__/
|
|
17
|
+
bvx-proto/bvx/__pycache__
|
|
18
|
+
model_glue.egg-info/
|
|
19
|
+
results/
|
|
20
|
+
proteinmpnn_1.0.1.toml
|
|
21
|
+
rfdiffusion_1.1.0.toml
|
|
22
|
+
run/testing_if_new_tools_work.py
|
|
23
|
+
# Sphinx build output
|
|
24
|
+
docs/_build/
|
|
25
|
+
ViennaRNA/
|
|
26
|
+
fpocket/
|
|
27
|
+
biocomposer.egg-info/
|
|
28
|
+
biocomposer/_version.py
|
|
29
|
+
autodockvina/
|
|
30
|
+
acpype/
|
|
31
|
+
pipeline_agent.py
|
|
32
|
+
openbabel/
|
|
33
|
+
gromacs/
|
|
34
|
+
fpocket/
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: biocomposer
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: LLM-wired bioinformatics pipeline orchestration over containerised tools
|
|
5
|
+
Requires-Python: >=3.10
|
|
6
|
+
Requires-Dist: python-dotenv
|
|
7
|
+
Requires-Dist: google-genai
|
|
8
|
+
Requires-Dist: google-generativeai
|
|
9
|
+
Requires-Dist: anthropic
|
|
10
|
+
Requires-Dist: openai
|
|
11
|
+
Requires-Dist: numpy
|
|
12
|
+
Requires-Dist: pandas
|
|
13
|
+
Requires-Dist: tomli; python_version < "3.11"
|
|
14
|
+
Requires-Dist: modal
|
|
15
|
+
Provides-Extra: dev
|
|
16
|
+
Requires-Dist: pytest; extra == "dev"
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Setup (both local and Modal)
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
pip install -e .
|
|
5
|
+
mkdir inputs # put your FASTA/PDB/etc. files here
|
|
6
|
+
mkdir run # holds your pipeline script
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Create a `.env` file in your working directory with the API key(s) you use
|
|
10
|
+
(`GEMINI_API_KEY`, `GOOGLE_API_KEY`, `ANTHROPIC_API_KEY`, or `OPENAI_API_KEY`).
|
|
11
|
+
|
|
12
|
+
Create `run/run_pipeline.py` to define your pipeline.
|
|
13
|
+
|
|
14
|
+
# Running locally
|
|
15
|
+
|
|
16
|
+
Prerequisites: Docker installed and running, `bv` installed (`cargo install biov`).
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
biocomp run run/run_pipeline.py --env .env
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Outputs go to `./results/`.
|
|
23
|
+
|
|
24
|
+
# Running on Modal
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
pip install modal
|
|
28
|
+
modal setup
|
|
29
|
+
biocomp run --modal run/run_pipeline.py --env .env
|
|
30
|
+
modal volume get biocomp results/fasttree_output_1/stdout/fasttree_stdout.txt ./fasttree_stdout.txt
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
# Flags
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
--env <path> [both] env file with API keys (default .env)
|
|
37
|
+
--clean [both] clear previous outputs first
|
|
38
|
+
--modal [both] run on Modal instead of locally
|
|
39
|
+
--gpu T4 [modal] GPU type (default A10G)
|
|
40
|
+
--memory 32768 [modal] sandbox memory in MB (default 8192)
|
|
41
|
+
--shell [modal] drop into an interactive sandbox shell
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
# Overriding a tool's command
|
|
45
|
+
|
|
46
|
+
By default a node runs the tool's entrypoint binary with its registry args.
|
|
47
|
+
Override either when needed (slots like `{input}`/`{output}` map to the node's I/O):
|
|
48
|
+
|
|
49
|
+
```python
|
|
50
|
+
# run a different exposed binary instead of the entrypoint
|
|
51
|
+
g.add_node("trimal", entrypoint_override="readal")
|
|
52
|
+
|
|
53
|
+
# replace the argument template
|
|
54
|
+
g.add_node("colabfold", args_override="--num-recycle 0 {fasta} {output_dir}")
|
|
55
|
+
|
|
56
|
+
# both together (common for non-entrypoint binaries)
|
|
57
|
+
g.add_node("trimal", entrypoint_override="readal",
|
|
58
|
+
args_override="-in {alignment} -out {trimmed} -fasta")
|
|
59
|
+
```
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
[tool]
|
|
2
|
+
id = "viennarna"
|
|
3
|
+
version = "2.7.2"
|
|
4
|
+
description = "RNA secondary structure prediction and comparison: minimum free energy structures, partition function, base-pair probabilities, centroid/MEA structures, suboptimal and consensus structures (ViennaRNA Package)"
|
|
5
|
+
homepage = "https://www.tbi.univie.ac.at/RNA/"
|
|
6
|
+
# https://github.com/ViennaRNA/ViennaRNA/blob/master/license.txt
|
|
7
|
+
license = "custom"
|
|
8
|
+
tier = "community"
|
|
9
|
+
maintainers = [ "github:ViennaRNA",]
|
|
10
|
+
|
|
11
|
+
[[tool.inputs]]
|
|
12
|
+
name = "sequences"
|
|
13
|
+
type = "fasta"
|
|
14
|
+
cardinality = "one"
|
|
15
|
+
description = "RNA sequence(s) to fold. Plain (one sequence per line) or FASTA; the first word of each FASTA header is used as the output-file prefix. T is auto-converted to U unless --noconv is set. Sequences up to ~32,700 nt are supported."
|
|
16
|
+
|
|
17
|
+
[[tool.inputs]]
|
|
18
|
+
name = "constraints"
|
|
19
|
+
type = "file"
|
|
20
|
+
cardinality = "one"
|
|
21
|
+
description = "Optional — structure-constraint command file (passed via --commands, or a pseudo-dot-bracket constraint string via -C/--constraint). Encodes hard/soft constraints, forced/prohibited pairs, ligand motifs, and unstructured-domain commands."
|
|
22
|
+
|
|
23
|
+
[[tool.inputs]]
|
|
24
|
+
name = "shape_data"
|
|
25
|
+
type = "file"
|
|
26
|
+
cardinality = "one"
|
|
27
|
+
description = "Optional — experimental structure-probing reactivities (SHAPE/DMS), two-column text (1-based position, normalized reactivity). Consumed via --shape or --sp-data and converted to pseudo-energies by the chosen probing strategy."
|
|
28
|
+
|
|
29
|
+
[[tool.inputs]]
|
|
30
|
+
name = "param_file"
|
|
31
|
+
type = "file"
|
|
32
|
+
cardinality = "one"
|
|
33
|
+
description = "Optional — energy-parameter set read via -P/--paramFile (e.g. rna_turner2004.par, rna_turner1999.par, rna_andronescou2007.par, dna_mathews2004.par). The literal placeholder 'DNA' loads built-in DNA parameters."
|
|
34
|
+
|
|
35
|
+
[[tool.inputs]]
|
|
36
|
+
name = "mod_file"
|
|
37
|
+
type = "file"
|
|
38
|
+
cardinality = "one"
|
|
39
|
+
description = "Optional — JSON of modified-base energy corrections read via --mod-file (complements the built-in inosine, pseudouridine, m1Psi, m5C, m6A, 7DA, purine, dihydrouridine parameter sets)."
|
|
40
|
+
|
|
41
|
+
[[tool.outputs]]
|
|
42
|
+
name = "structures"
|
|
43
|
+
type = "file"
|
|
44
|
+
cardinality = "one"
|
|
45
|
+
description = "Per-sequence results (stdout, redirected by the args_template): the MFE structure in dot-bracket notation with free energy, and — when partition-function mode is on — the pair-probability pseudo-bracket line with ensemble free energy, the centroid structure, the MEA structure, MFE frequency, and ensemble diversity."
|
|
46
|
+
|
|
47
|
+
[[tool.outputs]]
|
|
48
|
+
name = "structure_plot"
|
|
49
|
+
type = "file"
|
|
50
|
+
cardinality = "one"
|
|
51
|
+
description = "PostScript drawing of the MFE secondary structure, written to the working directory as <prefix>_ss.ps. Suppress with --noPS."
|
|
52
|
+
|
|
53
|
+
[[tool.outputs]]
|
|
54
|
+
name = "dot_plot"
|
|
55
|
+
type = "file"
|
|
56
|
+
cardinality = "one"
|
|
57
|
+
description = "PostScript base-pair probability 'dot plot' (<prefix>_dp.ps), produced in partition-function mode (-p). Upper-right triangle = pair probabilities, lower-left = MFE pairs. Suppress with --noDP; stack-probability plot (<prefix>_dp2.ps) is added with -p2."
|
|
58
|
+
|
|
59
|
+
[tool.image]
|
|
60
|
+
backend = "docker"
|
|
61
|
+
reference = "quay.io/biocontainers/viennarna:2.7.2--py311pl5321hb7402bf_1"
|
|
62
|
+
|
|
63
|
+
[tool.hardware]
|
|
64
|
+
cpu_cores = 4
|
|
65
|
+
ram_gb = 8.0
|
|
66
|
+
disk_gb = 2.0
|
|
67
|
+
|
|
68
|
+
[tool.entrypoint]
|
|
69
|
+
command = "RNAfold"
|
|
70
|
+
args_template = "--partfunc --MEA --temp=37 --dangles=2 {sequences} > {structures}"
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
[tool.binaries]
|
|
74
|
+
exposed = [
|
|
75
|
+
"RNAfold",
|
|
76
|
+
"RNAcofold",
|
|
77
|
+
"RNAsubopt",
|
|
78
|
+
"RNAalifold",
|
|
79
|
+
|
|
80
|
+
"RNALalifold",
|
|
81
|
+
"RNALfold",
|
|
82
|
+
"RNAplfold",
|
|
83
|
+
"RNAeval",
|
|
84
|
+
"RNAinverse",
|
|
85
|
+
"RNAduplex",
|
|
86
|
+
"RNAaliduplex",
|
|
87
|
+
"RNAplex",
|
|
88
|
+
"RNAsnoop",
|
|
89
|
+
"RNAup",
|
|
90
|
+
"RNAmultifold",
|
|
91
|
+
"RNAheat",
|
|
92
|
+
"RNAdos",
|
|
93
|
+
"RNA2Dfold",
|
|
94
|
+
"RNAdistance",
|
|
95
|
+
"RNApdist",
|
|
96
|
+
"RNApaln",
|
|
97
|
+
"RNAplot",
|
|
98
|
+
"RNApvmin",
|
|
99
|
+
"RNAPKplex",
|
|
100
|
+
"RNAparconv",
|
|
101
|
+
"AnalyseSeqs",
|
|
102
|
+
"AnalyseDists",
|
|
103
|
+
]
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
import logging
|
|
3
|
+
import os
|
|
4
|
+
|
|
5
|
+
# Version is written by setuptools-scm at build time to _version.py (gitignored).
|
|
6
|
+
# In a plain source checkout that file won't exist yet — fall back gracefully.
|
|
7
|
+
try:
|
|
8
|
+
from biocomposer._version import version as __version__
|
|
9
|
+
except ImportError: # pragma: no cover - source checkout without a build
|
|
10
|
+
__version__ = "0.0.0+unknown"
|
|
11
|
+
|
|
12
|
+
# Library-level logger. Attaches a NullHandler by default so logs are silent
|
|
13
|
+
# unless the caller configures logging. Set BIOCOMPOSER_LOG_LEVEL=DEBUG/INFO/WARNING
|
|
14
|
+
# to emit logs to stderr without any extra setup.
|
|
15
|
+
_log = logging.getLogger("biocomposer")
|
|
16
|
+
_log.addHandler(logging.NullHandler())
|
|
17
|
+
|
|
18
|
+
_level_name = os.environ.get("BIOCOMPOSER_LOG_LEVEL", "").upper()
|
|
19
|
+
if _level_name:
|
|
20
|
+
_level = getattr(logging, _level_name, logging.DEBUG)
|
|
21
|
+
_handler = logging.StreamHandler()
|
|
22
|
+
_handler.setLevel(_level)
|
|
23
|
+
_handler.setFormatter(logging.Formatter("%(asctime)s %(levelname)-8s %(name)s %(message)s"))
|
|
24
|
+
_log.addHandler(_handler)
|
|
25
|
+
_log.setLevel(_level)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def __getattr__(name: str):
|
|
29
|
+
if name in ("Graph", "SubGraph"):
|
|
30
|
+
from biocomposer.graph import Graph, SubGraph
|
|
31
|
+
globals()["Graph"] = Graph
|
|
32
|
+
globals()["SubGraph"] = SubGraph
|
|
33
|
+
return globals()[name]
|
|
34
|
+
if name in ("Node", "InputNode", "OutputNode", "DecisionNode", "GatherNode"):
|
|
35
|
+
from biocomposer.node import Node, InputNode, OutputNode, DecisionNode, GatherNode
|
|
36
|
+
globals().update({"Node": Node, "InputNode": InputNode,
|
|
37
|
+
"OutputNode": OutputNode, "DecisionNode": DecisionNode,
|
|
38
|
+
"GatherNode": GatherNode})
|
|
39
|
+
return globals()[name]
|
|
40
|
+
if name == "Condition":
|
|
41
|
+
from biocomposer.helpers.condition import Condition
|
|
42
|
+
globals()["Condition"] = Condition
|
|
43
|
+
return Condition
|
|
44
|
+
raise AttributeError(f"module 'biocomposer' has no attribute {name!r}")
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
__all__ = [
|
|
48
|
+
"Graph",
|
|
49
|
+
"SubGraph",
|
|
50
|
+
"Node",
|
|
51
|
+
"InputNode",
|
|
52
|
+
"OutputNode",
|
|
53
|
+
"DecisionNode",
|
|
54
|
+
"GatherNode",
|
|
55
|
+
"Condition",
|
|
56
|
+
]
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# file generated by vcs-versioning
|
|
2
|
+
# don't change, don't track in version control
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
__all__ = [
|
|
6
|
+
"__version__",
|
|
7
|
+
"__version_tuple__",
|
|
8
|
+
"version",
|
|
9
|
+
"version_tuple",
|
|
10
|
+
"__commit_id__",
|
|
11
|
+
"commit_id",
|
|
12
|
+
]
|
|
13
|
+
|
|
14
|
+
version: str
|
|
15
|
+
__version__: str
|
|
16
|
+
__version_tuple__: tuple[int | str, ...]
|
|
17
|
+
version_tuple: tuple[int | str, ...]
|
|
18
|
+
commit_id: str | None
|
|
19
|
+
__commit_id__: str | None
|
|
20
|
+
|
|
21
|
+
__version__ = version = '0.1.0'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 1, 0)
|
|
23
|
+
|
|
24
|
+
__commit_id__ = commit_id = 'g71d32aaaf'
|