claudemol 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.
@@ -0,0 +1,125 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+ .Python
7
+ build/
8
+ develop-eggs/
9
+ dist/
10
+ downloads/
11
+ eggs/
12
+ .eggs/
13
+ lib/
14
+ lib64/
15
+ parts/
16
+ sdist/
17
+ var/
18
+ wheels/
19
+ share/python-wheels/
20
+ *.egg-info/
21
+ .installed.cfg
22
+ *.egg
23
+ MANIFEST
24
+
25
+ # Virtual Environments
26
+ venv/
27
+ .venv/
28
+ env/
29
+ ENV/
30
+ env.bak/
31
+ venv.bak/
32
+
33
+ # PyCharm
34
+ .idea/
35
+
36
+ # VS Code
37
+ .vscode/
38
+ *.code-workspace
39
+
40
+ # Jupyter Notebook
41
+ .ipynb_checkpoints
42
+
43
+ # pyenv
44
+ .python-version
45
+
46
+ # Environment variables
47
+ .env
48
+ .env.local
49
+ .env.*.local
50
+
51
+ # macOS
52
+ .DS_Store
53
+ .AppleDouble
54
+ .LSOverride
55
+ Icon
56
+ ._*
57
+ .DocumentRevisions-V100
58
+ .fseventsd
59
+ .Spotlight-V100
60
+ .TemporaryItems
61
+ .Trashes
62
+ .VolumeIcon.icns
63
+ .com.apple.timemachine.donotpresent
64
+
65
+ # Windows
66
+ Thumbs.db
67
+ Thumbs.db:encryptable
68
+ ehthumbs.db
69
+ ehthumbs_vista.db
70
+ *.stackdump
71
+ [Dd]esktop.ini
72
+ $RECYCLE.BIN/
73
+ *.cab
74
+ *.msi
75
+ *.msix
76
+ *.msm
77
+ *.msp
78
+ *.lnk
79
+
80
+ # Linux
81
+ *~
82
+ .fuse_hidden*
83
+ .directory
84
+ .Trash-*
85
+ .nfs*
86
+
87
+ # Project-specific
88
+ images/
89
+
90
+ # Testing
91
+ .pytest_cache/
92
+ .coverage
93
+ htmlcov/
94
+ .tox/
95
+ .hypothesis/
96
+ *.cover
97
+ *.log
98
+
99
+ # Type checking
100
+ .mypy_cache/
101
+ .dmypy.json
102
+ dmypy.json
103
+ .pyre/
104
+ .pytype/
105
+
106
+ # Ruff
107
+ .ruff_cache/
108
+
109
+ # uv
110
+ .uv/
111
+ settings.json
112
+ .mcp.json
113
+
114
+ # Structure files (downloaded during sessions)
115
+ *.cif
116
+ *.pdb
117
+ *.pdb1
118
+ *.ccp4
119
+ *.mtz
120
+
121
+ # Scratch directory for temporary images
122
+ scratch/
123
+
124
+ # Ralph loop local state
125
+ .claude/ralph-loop.local.md
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Vishnu Rajan Tejus
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,158 @@
1
+ Metadata-Version: 2.4
2
+ Name: claudemol
3
+ Version: 0.1.0
4
+ Summary: PyMOL integration for Claude Code - control molecular visualization via natural language
5
+ Project-URL: Homepage, https://github.com/ANaka/ai-mol
6
+ Project-URL: Repository, https://github.com/ANaka/ai-mol
7
+ Author: Alex Naka
8
+ License: MIT
9
+ License-File: LICENSE
10
+ Keywords: ai,claude,molecular-visualization,pymol,structural-biology
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Intended Audience :: Science/Research
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
19
+ Classifier: Topic :: Scientific/Engineering :: Visualization
20
+ Requires-Python: >=3.10
21
+ Description-Content-Type: text/markdown
22
+
23
+ # ai-mol: Control PyMOL with Claude Code
24
+
25
+ Control PyMOL through natural language using Claude Code. This integration enables conversational structural biology, molecular visualization, and analysis.
26
+
27
+ https://github.com/user-attachments/assets/687f43dc-d45e-477e-ac2b-7438e175cb36
28
+
29
+ ## Features
30
+
31
+ - **Natural language control**: Tell Claude what you want to visualize and it executes PyMOL commands
32
+ - **Direct socket communication**: Claude Code talks directly to PyMOL (no intermediary server)
33
+ - **Full PyMOL access**: Manipulate representations, colors, views, perform measurements, alignments, and more
34
+ - **Skill-based workflows**: Built-in skills for common tasks like binding site visualization and publication figures
35
+
36
+ ## Architecture
37
+
38
+ ```
39
+ Claude Code → TCP Socket (port 9880) → PyMOL Plugin → cmd.* execution
40
+ ```
41
+
42
+ ## Quick Start
43
+
44
+ ### Prerequisites
45
+
46
+ - PyMOL installed on your system
47
+ - [Claude Code](https://docs.anthropic.com/en/docs/claude-code) CLI installed
48
+ - Python 3.10+
49
+
50
+ ### Installation
51
+
52
+ 1. **Clone the repository:**
53
+
54
+ ```bash
55
+ git clone https://github.com/ANaka/ai-mol
56
+ cd ai-mol
57
+ ```
58
+
59
+ 2. **Set up the PyMOL plugin:**
60
+
61
+ Add this line to your `~/.pymolrc` (create it if it doesn't exist):
62
+
63
+ ```python
64
+ run /path/to/ai-mol/claude_socket_plugin.py
65
+ ```
66
+
67
+ Replace `/path/to/ai-mol` with the actual path where you cloned the repository.
68
+
69
+ 3. **Start using it:**
70
+
71
+ Open Claude Code in the `ai-mol` directory and say:
72
+
73
+ > "Open PyMOL and load structure 1UBQ"
74
+
75
+ Claude will launch PyMOL (with the socket listener active) and load the structure.
76
+
77
+ ## Usage
78
+
79
+ ### Starting a Session
80
+
81
+ Simply ask Claude to open PyMOL or load a structure:
82
+
83
+ - "Open PyMOL"
84
+ - "Load PDB 4HHB and show as cartoon"
85
+ - "Fetch 1UBQ from the PDB"
86
+
87
+ Claude will launch PyMOL if it's not already running.
88
+
89
+ ### Example Commands
90
+
91
+ - "Color the protein by secondary structure"
92
+ - "Show the binding site residues within 5Å of the ligand as sticks"
93
+ - "Align these two structures and calculate RMSD"
94
+ - "Create a publication-quality figure with ray tracing"
95
+ - "Make a 360° rotation movie"
96
+
97
+ ### PyMOL Console Commands
98
+
99
+ Check or control the socket listener from PyMOL's command line:
100
+
101
+ ```
102
+ claude_status # Check if listener is running
103
+ claude_stop # Stop the listener
104
+ claude_start # Start the listener
105
+ ```
106
+
107
+ ### Available Skills
108
+
109
+ Claude Code has built-in skills for common workflows:
110
+
111
+ - **pymol-fundamentals** - Basic visualization, selections, coloring
112
+ - **protein-structure-basics** - Secondary structure, B-factor, representations
113
+ - **binding-site-visualization** - Protein-ligand interactions
114
+ - **structure-alignment-analysis** - Comparing and aligning structures
115
+ - **antibody-visualization** - CDR loops, epitopes, Fab structures
116
+ - **publication-figures** - High-quality figure export
117
+ - **movie-creation** - Animations and rotations
118
+
119
+ ## Troubleshooting
120
+
121
+ ### Connection Issues
122
+
123
+ - **"Could not connect to PyMOL"**: Make sure PyMOL is running and the plugin is loaded
124
+ - **Check listener status**: Run `claude_status` in PyMOL's command line
125
+ - **Restart listener**: Run `claude_stop` then `claude_start` in PyMOL
126
+
127
+ ### Plugin Not Loading
128
+
129
+ - Verify the path in your `~/.pymolrc` is correct
130
+ - Check PyMOL's output for any error messages on startup
131
+ - Try running `run /path/to/claude_socket_plugin.py` manually in PyMOL
132
+
133
+ ### First-Time Setup Help
134
+
135
+ Run the `/pymol-setup` skill in Claude Code for guided setup assistance.
136
+
137
+ ## Configuration
138
+
139
+ The default socket port is **9880**. Both the plugin and Claude Code connection module use this port.
140
+
141
+ Key files:
142
+ - `claude_socket_plugin.py` - PyMOL plugin (headless, auto-loads via pymolrc)
143
+ - `pymol_connection.py` - Python module for socket communication
144
+ - `.claude/skills/` - Claude Code skills for PyMOL workflows
145
+
146
+ ## Limitations
147
+
148
+ - PyMOL and Claude Code must run on the same machine (localhost connection)
149
+ - One active connection at a time
150
+ - Some complex multi-step operations may need guidance
151
+
152
+ ## Contributing
153
+
154
+ Contributions welcome! This project aims to build comprehensive skills for Claude-PyMOL interaction. If you discover useful patterns or workflows, consider adding them as skills.
155
+
156
+ ## License
157
+
158
+ MIT License - see LICENSE file for details.
@@ -0,0 +1,136 @@
1
+ # ai-mol: Control PyMOL with Claude Code
2
+
3
+ Control PyMOL through natural language using Claude Code. This integration enables conversational structural biology, molecular visualization, and analysis.
4
+
5
+ https://github.com/user-attachments/assets/687f43dc-d45e-477e-ac2b-7438e175cb36
6
+
7
+ ## Features
8
+
9
+ - **Natural language control**: Tell Claude what you want to visualize and it executes PyMOL commands
10
+ - **Direct socket communication**: Claude Code talks directly to PyMOL (no intermediary server)
11
+ - **Full PyMOL access**: Manipulate representations, colors, views, perform measurements, alignments, and more
12
+ - **Skill-based workflows**: Built-in skills for common tasks like binding site visualization and publication figures
13
+
14
+ ## Architecture
15
+
16
+ ```
17
+ Claude Code → TCP Socket (port 9880) → PyMOL Plugin → cmd.* execution
18
+ ```
19
+
20
+ ## Quick Start
21
+
22
+ ### Prerequisites
23
+
24
+ - PyMOL installed on your system
25
+ - [Claude Code](https://docs.anthropic.com/en/docs/claude-code) CLI installed
26
+ - Python 3.10+
27
+
28
+ ### Installation
29
+
30
+ 1. **Clone the repository:**
31
+
32
+ ```bash
33
+ git clone https://github.com/ANaka/ai-mol
34
+ cd ai-mol
35
+ ```
36
+
37
+ 2. **Set up the PyMOL plugin:**
38
+
39
+ Add this line to your `~/.pymolrc` (create it if it doesn't exist):
40
+
41
+ ```python
42
+ run /path/to/ai-mol/claude_socket_plugin.py
43
+ ```
44
+
45
+ Replace `/path/to/ai-mol` with the actual path where you cloned the repository.
46
+
47
+ 3. **Start using it:**
48
+
49
+ Open Claude Code in the `ai-mol` directory and say:
50
+
51
+ > "Open PyMOL and load structure 1UBQ"
52
+
53
+ Claude will launch PyMOL (with the socket listener active) and load the structure.
54
+
55
+ ## Usage
56
+
57
+ ### Starting a Session
58
+
59
+ Simply ask Claude to open PyMOL or load a structure:
60
+
61
+ - "Open PyMOL"
62
+ - "Load PDB 4HHB and show as cartoon"
63
+ - "Fetch 1UBQ from the PDB"
64
+
65
+ Claude will launch PyMOL if it's not already running.
66
+
67
+ ### Example Commands
68
+
69
+ - "Color the protein by secondary structure"
70
+ - "Show the binding site residues within 5Å of the ligand as sticks"
71
+ - "Align these two structures and calculate RMSD"
72
+ - "Create a publication-quality figure with ray tracing"
73
+ - "Make a 360° rotation movie"
74
+
75
+ ### PyMOL Console Commands
76
+
77
+ Check or control the socket listener from PyMOL's command line:
78
+
79
+ ```
80
+ claude_status # Check if listener is running
81
+ claude_stop # Stop the listener
82
+ claude_start # Start the listener
83
+ ```
84
+
85
+ ### Available Skills
86
+
87
+ Claude Code has built-in skills for common workflows:
88
+
89
+ - **pymol-fundamentals** - Basic visualization, selections, coloring
90
+ - **protein-structure-basics** - Secondary structure, B-factor, representations
91
+ - **binding-site-visualization** - Protein-ligand interactions
92
+ - **structure-alignment-analysis** - Comparing and aligning structures
93
+ - **antibody-visualization** - CDR loops, epitopes, Fab structures
94
+ - **publication-figures** - High-quality figure export
95
+ - **movie-creation** - Animations and rotations
96
+
97
+ ## Troubleshooting
98
+
99
+ ### Connection Issues
100
+
101
+ - **"Could not connect to PyMOL"**: Make sure PyMOL is running and the plugin is loaded
102
+ - **Check listener status**: Run `claude_status` in PyMOL's command line
103
+ - **Restart listener**: Run `claude_stop` then `claude_start` in PyMOL
104
+
105
+ ### Plugin Not Loading
106
+
107
+ - Verify the path in your `~/.pymolrc` is correct
108
+ - Check PyMOL's output for any error messages on startup
109
+ - Try running `run /path/to/claude_socket_plugin.py` manually in PyMOL
110
+
111
+ ### First-Time Setup Help
112
+
113
+ Run the `/pymol-setup` skill in Claude Code for guided setup assistance.
114
+
115
+ ## Configuration
116
+
117
+ The default socket port is **9880**. Both the plugin and Claude Code connection module use this port.
118
+
119
+ Key files:
120
+ - `claude_socket_plugin.py` - PyMOL plugin (headless, auto-loads via pymolrc)
121
+ - `pymol_connection.py` - Python module for socket communication
122
+ - `.claude/skills/` - Claude Code skills for PyMOL workflows
123
+
124
+ ## Limitations
125
+
126
+ - PyMOL and Claude Code must run on the same machine (localhost connection)
127
+ - One active connection at a time
128
+ - Some complex multi-step operations may need guidance
129
+
130
+ ## Contributing
131
+
132
+ Contributions welcome! This project aims to build comprehensive skills for Claude-PyMOL interaction. If you discover useful patterns or workflows, consider adding them as skills.
133
+
134
+ ## License
135
+
136
+ MIT License - see LICENSE file for details.
@@ -0,0 +1,44 @@
1
+ # ai-mol Skills for Claude Code
2
+
3
+ PyMOL visualization skills for Claude Code.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ /plugin marketplace add ANaka/ai-mol?path=claude-plugin
9
+ /plugin install ai-mol-skills
10
+ ```
11
+
12
+ Then restart Claude Code.
13
+
14
+ ## Prerequisites
15
+
16
+ You need the `ai-mol` pip package installed:
17
+
18
+ ```bash
19
+ pip install ai-mol
20
+ ai-mol setup
21
+ ```
22
+
23
+ ## Available Skills
24
+
25
+ - **pymol-fundamentals** - Basic PyMOL operations: loading structures, selections, representations
26
+ - **protein-structure-basics** - Visualizing protein secondary structure, B-factors, surfaces
27
+ - **binding-site-visualization** - Protein-ligand binding pockets and active sites
28
+ - **antibody-visualization** - Antibody structures, CDR loops, epitopes
29
+ - **structure-alignment-analysis** - Comparing and aligning protein structures
30
+ - **publication-figures** - Creating publication-quality molecular figures
31
+ - **movie-creation** - Animations, rotations, and morphing sequences
32
+ - **pymol-setup** - First-time PyMOL configuration
33
+ - **pymol-connect** - Connecting to PyMOL sessions
34
+
35
+ ## Usage
36
+
37
+ Once installed, just describe what you want to visualize:
38
+
39
+ - "Load 1ubq and show it as a cartoon"
40
+ - "Visualize the binding site of 1hsg"
41
+ - "Create a publication figure of this protein"
42
+ - "Align these two structures and show the differences"
43
+
44
+ Claude will use the appropriate skill automatically.
@@ -0,0 +1,58 @@
1
+ [project]
2
+ name = "claudemol"
3
+ version = "0.1.0"
4
+ description = "PyMOL integration for Claude Code - control molecular visualization via natural language"
5
+ readme = "README.md"
6
+ requires-python = ">=3.10"
7
+ authors = [{ name = "Alex Naka" }]
8
+ keywords = ["pymol", "molecular-visualization", "claude", "ai", "structural-biology"]
9
+ license = { text = "MIT" }
10
+ classifiers = [
11
+ "Development Status :: 4 - Beta",
12
+ "Intended Audience :: Science/Research",
13
+ "License :: OSI Approved :: MIT License",
14
+ "Programming Language :: Python :: 3",
15
+ "Programming Language :: Python :: 3.10",
16
+ "Programming Language :: Python :: 3.11",
17
+ "Programming Language :: Python :: 3.12",
18
+ "Topic :: Scientific/Engineering :: Bio-Informatics",
19
+ "Topic :: Scientific/Engineering :: Visualization",
20
+ ]
21
+ dependencies = []
22
+
23
+ [project.scripts]
24
+ claudemol = "claudemol.cli:main"
25
+
26
+ [project.urls]
27
+ Homepage = "https://github.com/ANaka/ai-mol"
28
+ Repository = "https://github.com/ANaka/ai-mol"
29
+
30
+ [build-system]
31
+ requires = ["hatchling"]
32
+ build-backend = "hatchling.build"
33
+
34
+ [tool.hatch.build.targets.wheel]
35
+ packages = ["src/claudemol"]
36
+
37
+ [tool.hatch.build.targets.sdist]
38
+ include = [
39
+ "src/claudemol/**/*.py",
40
+ "README.md",
41
+ "LICENSE",
42
+ ]
43
+
44
+ [tool.pyright]
45
+ include = ["src/claudemol"]
46
+ venvPath = "."
47
+ venv = ".venv"
48
+
49
+ [tool.ruff.lint]
50
+ select = ["E", "F", "I"]
51
+ ignore = []
52
+
53
+ [tool.ruff]
54
+ line-length = 88
55
+ target-version = "py310"
56
+
57
+ [tool.uv]
58
+ dev-dependencies = ["pyright>=1.1.379", "pytest>=8.3.3", "ruff>=0.6.9"]
@@ -0,0 +1,32 @@
1
+ """
2
+ claudemol: PyMOL integration for Claude Code
3
+
4
+ Connect to PyMOL via socket for AI-assisted molecular visualization.
5
+ """
6
+
7
+ from claudemol.connection import (
8
+ PyMOLConnection,
9
+ connect_or_launch,
10
+ launch_pymol,
11
+ find_pymol_command,
12
+ check_pymol_installed,
13
+ )
14
+ from claudemol.session import (
15
+ PyMOLSession,
16
+ get_session,
17
+ ensure_running,
18
+ stop_pymol,
19
+ )
20
+
21
+ __version__ = "0.1.0"
22
+ __all__ = [
23
+ "PyMOLConnection",
24
+ "PyMOLSession",
25
+ "connect_or_launch",
26
+ "launch_pymol",
27
+ "find_pymol_command",
28
+ "check_pymol_installed",
29
+ "get_session",
30
+ "ensure_running",
31
+ "stop_pymol",
32
+ ]