atomworks-studio 0.0.1__py3-none-any.whl

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.
Files changed (152) hide show
  1. annotation_studio/__init__.py +30 -0
  2. annotation_studio/cli.py +31 -0
  3. annotation_studio/contracts.py +48 -0
  4. annotation_studio/core.py +10 -0
  5. annotation_studio/examples/README.md +21 -0
  6. annotation_studio/examples/antibody_design.cif +9646 -0
  7. annotation_studio/examples/enzyme_design.cif +207 -0
  8. annotation_studio/examples/examples.json +56 -0
  9. annotation_studio/examples/inverse_folding.cif +726 -0
  10. annotation_studio/examples/motif_scaffolding.cif +270 -0
  11. annotation_studio/examples/nanobody.cif +5777 -0
  12. annotation_studio/examples/protein_binder.cif +2858 -0
  13. annotation_studio/examples/small_molecule_binder.cif +251 -0
  14. annotation_studio/examples/unconditional.cif +78 -0
  15. annotation_studio/gradio.py +259 -0
  16. annotation_studio/guide/ACCEPTANCE.html +181 -0
  17. annotation_studio/guide/ARCHITECTURE.html +158 -0
  18. annotation_studio/guide/DEVELOPMENT.html +238 -0
  19. annotation_studio/guide/INPUTS.html +117 -0
  20. annotation_studio/guide/INSTALLATION.html +223 -0
  21. annotation_studio/guide/INTEGRATIONS.html +292 -0
  22. annotation_studio/guide/PROVENANCE.html +205 -0
  23. annotation_studio/guide/PYMOL.html +240 -0
  24. annotation_studio/guide/RELEASE.html +190 -0
  25. annotation_studio/guide/SELECTIONS.html +270 -0
  26. annotation_studio/guide/TUTORIAL.html +187 -0
  27. annotation_studio/guide/VSCODE.html +166 -0
  28. annotation_studio/guide/WEB.html +332 -0
  29. annotation_studio/guide/_images/web-annotations.png +0 -0
  30. annotation_studio/guide/_images/web-embedded.png +0 -0
  31. annotation_studio/guide/_images/web-molstar-editor.png +0 -0
  32. annotation_studio/guide/_sources/ACCEPTANCE.md.txt +91 -0
  33. annotation_studio/guide/_sources/ARCHITECTURE.md.txt +43 -0
  34. annotation_studio/guide/_sources/DEVELOPMENT.md.txt +158 -0
  35. annotation_studio/guide/_sources/INPUTS.md.txt +16 -0
  36. annotation_studio/guide/_sources/INSTALLATION.md.txt +121 -0
  37. annotation_studio/guide/_sources/INTEGRATIONS.md.txt +191 -0
  38. annotation_studio/guide/_sources/PROVENANCE.md.txt +110 -0
  39. annotation_studio/guide/_sources/PYMOL.md.txt +130 -0
  40. annotation_studio/guide/_sources/RELEASE.md.txt +94 -0
  41. annotation_studio/guide/_sources/SELECTIONS.md.txt +144 -0
  42. annotation_studio/guide/_sources/TUTORIAL.md.txt +88 -0
  43. annotation_studio/guide/_sources/VSCODE.md.txt +65 -0
  44. annotation_studio/guide/_sources/WEB.md.txt +249 -0
  45. annotation_studio/guide/_sources/index.md.txt +48 -0
  46. annotation_studio/guide/_static/alabaster.css +663 -0
  47. annotation_studio/guide/_static/base-stemmer.js +476 -0
  48. annotation_studio/guide/_static/basic.css +906 -0
  49. annotation_studio/guide/_static/custom.css +1 -0
  50. annotation_studio/guide/_static/doctools.js +150 -0
  51. annotation_studio/guide/_static/documentation_options.js +13 -0
  52. annotation_studio/guide/_static/english-stemmer.js +1066 -0
  53. annotation_studio/guide/_static/file.png +0 -0
  54. annotation_studio/guide/_static/github-banner.svg +5 -0
  55. annotation_studio/guide/_static/language_data.js +13 -0
  56. annotation_studio/guide/_static/minus.png +0 -0
  57. annotation_studio/guide/_static/plus.png +0 -0
  58. annotation_studio/guide/_static/pygments.css +84 -0
  59. annotation_studio/guide/_static/searchtools.js +693 -0
  60. annotation_studio/guide/_static/sphinx_highlight.js +159 -0
  61. annotation_studio/guide/_static/studio.css +50 -0
  62. annotation_studio/guide/_static/studio.js +41 -0
  63. annotation_studio/guide/genindex.html +105 -0
  64. annotation_studio/guide/index.html +158 -0
  65. annotation_studio/guide/objects.inv +0 -0
  66. annotation_studio/guide/search.html +122 -0
  67. annotation_studio/guide/searchindex.js +1 -0
  68. annotation_studio/identity.py +19 -0
  69. annotation_studio/main.py +1032 -0
  70. annotation_studio/version.py +12 -0
  71. annotation_studio/web/annotation-studio.svg +17 -0
  72. annotation_studio/web/assets/annotation_studio_core_bg-0zBgLIOf.wasm +0 -0
  73. annotation_studio/web/assets/cells-D9Q81GMa.jpg +0 -0
  74. annotation_studio/web/assets/index-ChG0NGAU.js +21 -0
  75. annotation_studio/web/assets/index-DCmII2EW.css +1 -0
  76. annotation_studio/web/assets/molstar-BK3R50bs.css +2 -0
  77. annotation_studio/web/assets/molstar-DEH5SZOb.js +8279 -0
  78. annotation_studio/web/assets/nebula_back6-DGSZ_tzT.jpg +0 -0
  79. annotation_studio/web/assets/nebula_bottom4-DgUpJxjp.jpg +0 -0
  80. annotation_studio/web/assets/nebula_front5-CWqbzonZ.jpg +0 -0
  81. annotation_studio/web/assets/nebula_left2-Da3VdN9a.jpg +0 -0
  82. annotation_studio/web/assets/nebula_right1-BWVtsnot.jpg +0 -0
  83. annotation_studio/web/assets/nebula_top3-CfldhfdM.jpg +0 -0
  84. annotation_studio/web/assets/patinae-B89qSVJA.js +97 -0
  85. annotation_studio/web/assets/patinae_web-BJnzZAZI-BErUWgRs.js +2 -0
  86. annotation_studio/web/assets/patinae_web_bg.wasm +0 -0
  87. annotation_studio/web/atomworks_logo_dark.svg +1 -0
  88. annotation_studio/web/index.html +385 -0
  89. annotation_studio/web/manifest.webmanifest +18 -0
  90. annotation_studio/web/sw.js +32 -0
  91. atomworks_studio/__init__.py +1 -0
  92. atomworks_studio/__main__.py +6 -0
  93. atomworks_studio-0.0.1.dist-info/METADATA +117 -0
  94. atomworks_studio-0.0.1.dist-info/RECORD +152 -0
  95. atomworks_studio-0.0.1.dist-info/WHEEL +4 -0
  96. atomworks_studio-0.0.1.dist-info/entry_points.txt +9 -0
  97. atomworks_studio-0.0.1.dist-info/licenses/LICENSE.md +31 -0
  98. atomworks_studio_editing/__init__.py +1 -0
  99. atomworks_studio_editing/annotation_palette.json +30 -0
  100. atomworks_studio_editing/annotations.py +68 -0
  101. atomworks_studio_editing/conditions.py +47 -0
  102. atomworks_studio_editing/contracts.py +127 -0
  103. atomworks_studio_editing/document.py +1511 -0
  104. atomworks_studio_editing/layout.py +7 -0
  105. atomworks_studio_editing/loading.py +200 -0
  106. atomworks_studio_editing/mutations.py +111 -0
  107. atomworks_studio_editing/providers.py +37 -0
  108. atomworks_studio_editing/query.py +45 -0
  109. atomworks_studio_editing/structure_mutations.py +144 -0
  110. atomworks_studio_editing/validation.py +70 -0
  111. atomworks_studio_pymol/__init__.py +127 -0
  112. atomworks_studio_pymol/__main__.py +6 -0
  113. atomworks_studio_pymol/bond_wizard.py +427 -0
  114. atomworks_studio_pymol/bridge.py +426 -0
  115. atomworks_studio_pymol/chain_wizard.py +179 -0
  116. atomworks_studio_pymol/charge_wizard.py +216 -0
  117. atomworks_studio_pymol/commands.py +148 -0
  118. atomworks_studio_pymol/display.py +336 -0
  119. atomworks_studio_pymol/editors/__init__.py +105 -0
  120. atomworks_studio_pymol/editors/custom.py +36 -0
  121. atomworks_studio_pymol/editors/widgets.py +707 -0
  122. atomworks_studio_pymol/extensions.py +121 -0
  123. atomworks_studio_pymol/installation.py +76 -0
  124. atomworks_studio_pymol/panel.py +1349 -0
  125. atomworks_studio_pymol/pymol_env.yaml +12 -0
  126. atomworks_studio_pymol/state.py +220 -0
  127. atomworks_studio_pymol/views.py +196 -0
  128. atomworks_studio_rfd4/__init__.py +95 -0
  129. atomworks_studio_rfd4/_upstream/LICENSE +28 -0
  130. atomworks_studio_rfd4/_upstream/UPSTREAM.toml +10 -0
  131. atomworks_studio_rfd4/_upstream/data/cath_label_mapping.pkl +0 -0
  132. atomworks_studio_rfd4/_upstream/src/rfproteina/conditions.py +521 -0
  133. atomworks_studio_rfd4/_upstream/src/rfproteina/utils/parse_presets.py +90 -0
  134. atomworks_studio_rfd4/_upstream/src/rfproteina/utils/standard_annotations.py +142 -0
  135. atomworks_studio_rfd4/condition_contract.py +241 -0
  136. atomworks_studio_rfd4/generation.py +76 -0
  137. atomworks_studio_rfd4/interactive_validation.py +22 -0
  138. atomworks_studio_rfd4/internal_coordinate.py +113 -0
  139. atomworks_studio_rfd4/model.py +58 -0
  140. atomworks_studio_rfd4/pymol/__init__.py +1 -0
  141. atomworks_studio_rfd4/pymol/cath_editor.py +50 -0
  142. atomworks_studio_rfd4/pymol/chain_centroid_editor.py +257 -0
  143. atomworks_studio_rfd4/pymol/condition_registry.py +132 -0
  144. atomworks_studio_rfd4/pymol/coordinate_edit.py +25 -0
  145. atomworks_studio_rfd4/pymol/document_editors.py +96 -0
  146. atomworks_studio_rfd4/pymol/editors.py +45 -0
  147. atomworks_studio_rfd4/pymol/group_editor.py +213 -0
  148. atomworks_studio_rfd4/pymol/internal_coord_editor.py +95 -0
  149. atomworks_studio_rfd4/pymol/visualize.py +123 -0
  150. atomworks_studio_rfd4/pymol/widgets.py +106 -0
  151. atomworks_studio_rfd4/reporting.py +200 -0
  152. atomworks_studio_rfd4/sequence_probability.py +235 -0
@@ -0,0 +1,30 @@
1
+ """AtomWorks Studio service and provider contracts.
2
+
3
+ Keep package imports lightweight so the launch command can show help/version
4
+ without initializing AtomWorks, model providers, or a GPU runtime.
5
+ """
6
+
7
+ from importlib import import_module
8
+ from typing import TYPE_CHECKING
9
+
10
+ from .version import __version__
11
+
12
+ if TYPE_CHECKING:
13
+ from .contracts import ConditionProvider, ValidationProvider
14
+ from .core import StudioDocument
15
+
16
+ __all__ = [
17
+ "ConditionProvider",
18
+ "StudioDocument",
19
+ "ValidationProvider",
20
+ "__version__",
21
+ ]
22
+
23
+
24
+ def __getattr__(name: str):
25
+ if name not in __all__:
26
+ raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
27
+ module = ".core" if name == "StudioDocument" else ".contracts"
28
+ value = getattr(import_module(module, __name__), name)
29
+ globals()[name] = value
30
+ return value
@@ -0,0 +1,31 @@
1
+ """Launch the packaged Studio web application."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import argparse
6
+ import os
7
+ from pathlib import Path
8
+
9
+ from annotation_studio.version import __version__
10
+
11
+
12
+ def main(argv: list[str] | None = None) -> None:
13
+ parser = argparse.ArgumentParser(description="Open AtomWorks Studio in a browser.")
14
+ parser.add_argument("--version", action="version", version=f"AtomWorks Studio {__version__}")
15
+ parser.add_argument("--host", default="127.0.0.1", help="Listen address (default: 127.0.0.1)")
16
+ parser.add_argument("--port", type=int, default=8000, help="Listen port (default: 8000)")
17
+ parser.add_argument("--vscode", action="store_true", help="Allow embedding in VS Code and Cursor")
18
+ args = parser.parse_args(argv)
19
+ if not 1 <= args.port <= 65535:
20
+ parser.error("--port must be between 1 and 65535")
21
+ package = Path(__file__).resolve().parent
22
+ if not any((path / "index.html").is_file() for path in (package / "web", package.parents[1] / "web" / "dist")):
23
+ parser.error("Browser assets are missing. Install a built wheel, or run `pnpm --dir packages/web build` first.")
24
+ import uvicorn
25
+
26
+ if args.vscode:
27
+ os.environ["ANNOTATION_STUDIO_FRAME_ANCESTORS"] = (
28
+ "'self' vscode-webview: vscode-file://vscode-app https://*.vscode-cdn.net"
29
+ )
30
+ print(f"AtomWorks Studio: http://{args.host}:{args.port}/", flush=True)
31
+ uvicorn.run("annotation_studio.main:app", host=args.host, port=args.port)
@@ -0,0 +1,48 @@
1
+ """Session errors and shared document contracts."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from atomworks_studio_editing.contracts import (
6
+ NEUTRAL_CONDITION_PROVIDER as NEUTRAL_CONDITION_PROVIDER,
7
+ )
8
+ from atomworks_studio_editing.contracts import (
9
+ NEUTRAL_VALIDATION_PROVIDER as NEUTRAL_VALIDATION_PROVIDER,
10
+ )
11
+ from atomworks_studio_editing.contracts import (
12
+ ConditionDefault as ConditionDefault,
13
+ )
14
+ from atomworks_studio_editing.contracts import (
15
+ ConditionDefinition as ConditionDefinition,
16
+ )
17
+ from atomworks_studio_editing.contracts import (
18
+ ConditionKind as ConditionKind,
19
+ )
20
+ from atomworks_studio_editing.contracts import (
21
+ ConditionOperation as ConditionOperation,
22
+ )
23
+ from atomworks_studio_editing.contracts import (
24
+ ConditionProvider as ConditionProvider,
25
+ )
26
+ from atomworks_studio_editing.contracts import (
27
+ ConditionValue as ConditionValue,
28
+ )
29
+ from atomworks_studio_editing.contracts import (
30
+ CountUnit as CountUnit,
31
+ )
32
+ from atomworks_studio_editing.contracts import (
33
+ NeutralConditionProvider as NeutralConditionProvider,
34
+ )
35
+ from atomworks_studio_editing.contracts import (
36
+ NeutralValidationProvider as NeutralValidationProvider,
37
+ )
38
+ from atomworks_studio_editing.contracts import (
39
+ ValidationProvider as ValidationProvider,
40
+ )
41
+
42
+
43
+ class SessionNotFoundError(KeyError):
44
+ """A session store could not resolve a session for the current owner."""
45
+
46
+
47
+ class CapacityExceededError(RuntimeError):
48
+ """A bounded local or shared resource has reached its configured limit."""
@@ -0,0 +1,10 @@
1
+ """Compatibility exports for the shared Studio editing package."""
2
+
3
+ from atomworks_studio_editing.document import (
4
+ BOND_TYPES,
5
+ INTERACTION_TYPES,
6
+ StudioDocument,
7
+ parse_annotated_cif,
8
+ )
9
+
10
+ __all__ = ["BOND_TYPES", "INTERACTION_TYPES", "StudioDocument", "parse_annotated_cif"]
@@ -0,0 +1,21 @@
1
+ # Design examples
2
+
3
+ Eight inputs from the private RFD4 NIM, revision
4
+ `3a8a1f6f2ed6bab37757d2471b5007971175225d`, under `nim/examples/*/request.json`.
5
+ Motif, partial-diffusion and inverse-folding CIF contents are unchanged.
6
+ Enzyme and VHH inputs include missing heavy atoms with free coordinates.
7
+ Antibody and unconditional condition specs use the standard-annotation serializer;
8
+ the antibody uses separate internal heavy/light framework groups and a fixed target.
9
+ SAM uses the positioned conformer from RFD4’s interaction examples while leaving
10
+ coordinate conditioning off. See `docs/PROVENANCE.md` for sources and preparation.
11
+
12
+ `examples.json` pairs each CIF with its sampling task. Partial diffusion uses
13
+ 40% of the trajectory; inverse folding uses the native inverse-folding sampler.
14
+ The model deployment chooses the native recycling preset and design count.
15
+ Example selection does not enable refolding or establish biological design quality.
16
+
17
+ `protein_binder.cif` comes from RFD4 `all_ppi.yaml:rfd3_pdl1`: a fixed PD-L1
18
+ target, six hotspot atoms on residues 56, 115 and 123, and a separate 50–120
19
+ residue binder segment. It uses the standard protein sampler with these conditions.
20
+
21
+ Keep this directory nonpublic until release review.