RosettaFinder
A Python utility for finding Rosetta binaries based on a specific naming convention.
CI Status
Release
Python version supported
Overview
RosettaFinder is a Python module designed to locate Rosetta biomolecular modeling suite binaries that follow a specific naming pattern. It searches predefined directories and can handle custom search paths. The module includes:
- An object-oriented
RosettaFinderclass to search for binaries. - A
RosettaBinarydataclass to represent the binary and its attributes. - A command-line shortcut for quick access to Rosetta binaries.
- Unit tests to ensure reliability and correctness.
Features
- Flexible Binary Search: Finds Rosetta binaries based on their naming convention.
- Platform Support: Supports Linux and macOS operating systems.
- Customizable Search Paths: Allows specification of custom directories to search.
- Structured Binary Representation: Uses a dataclass to encapsulate binary attributes.
- Command-Line Shortcut: Provides a quick way to find binaries via the command line.
- Available on PyPI: Installable via
pipwithout the need to clone the repository. - Unit Tested: Includes tests for both classes to ensure functionality.
Naming Convention
The binaries are expected to follow this naming pattern:
rosetta_scripts[.mode].oscompilerrelease
- Binary Name:
rosetta_scripts(default) or specified. - Mode (optional):
default,mpi, orstatic. - OS:
linuxormacos. - Compiler:
gccorclang. - Release:
releaseordebug.
Examples of valid binary filenames:
rosetta_scripts.linuxgccreleaserosetta_scripts.mpi.macosclangdebugrosetta_scripts.static.linuxgccrelease
Installation
Ensure you have Python 3.6 or higher installed.
Install via PyPI
You can install rosetta_finder directly from PyPI:
pip install rosetta_finder -U
This allows you to use rosetta_finder without cloning the repository.
Usage
Command-Line Shortcut
rosetta_finder provides a command-line shortcut to quickly locate Rosetta binaries.
Using the whichrosetta Command
After installing rosetta_finder, you can use the whichrosetta command in your terminal.
whichrosetta <binary_name>
Example:
To find the relax binary:
relax_bin=$(whichrosetta relax)
echo $relax_bin
This command assigns the full path of the relax binary to the relax_bin variable and prints it.
Importing the Module
You can also use rosetta_finder in your Python scripts.
from rosetta_finder import RosettaFinder, RosettaBinary
Finding a Rosetta Binary in Python
# Initialize the finder (optional custom search path)
finder = RosettaFinder(search_path='/custom/path/to/rosetta/bin')
# Find the binary (default is 'rosetta_scripts')
rosetta_binary = finder.find_binary('rosetta_scripts')
# Access binary attributes
print(f"Binary Name: {rosetta_binary.binary_name}")
print(f"Mode: {rosetta_binary.mode}")
print(f"OS: {rosetta_binary.os}")
print(f"Compiler: {rosetta_binary.compiler}")
print(f"Release: {rosetta_binary.release}")
print(f"Full Path: {rosetta_binary.full_path}")
Example Output
Binary Name: rosetta_scripts
Mode: mpi
OS: linux
Compiler: gcc
Release: release
Full Path: /custom/path/to/rosetta/bin/rosetta_scripts.mpi.linuxgccrelease
Environment Variables
The RosettaFinder searches the following directories by default:
- The path specified in the
ROSETTA_BINenvironment variable. ROSETTA3/binROSETTA/main/source/bin/- A custom search path provided during initialization.
Set the ROSETTA_BIN environment variable to include your custom binary directory:
export ROSETTA_BIN=/path/to/your/rosetta/bin
API Reference
whichrosetta Command
The whichrosetta command is installed as part of the rosetta_finder package and allows you to find the path to a Rosetta binary from the command line.
Usage:
whichrosetta <binary_name>
binary_name: The name of the Rosetta binary you want to locate (e.g.,relax,rosetta_scripts).
Example:
relax_bin=$(whichrosetta relax)
echo $relax_bin
This command finds the relax binary and prints its full path.
RosettaFinder Class
-
Initialization
RosettaFinder(search_path=None)
search_path(optional): A custom directory to include in the search paths.
-
Methods
-
find_binary(binary_name='rosetta_scripts')Searches for the specified binary and returns a
RosettaBinaryinstance.-
binary_name(optional): Name of the binary to search for. -
Raises:
FileNotFoundError: If the binary is not found.EnvironmentError: If the OS is not Linux or macOS.
-
-
RosettaBinary Dataclass
-
Attributes
dirname: Directory where the binary is located.binary_name: Base name of the binary.mode: Build mode (static,mpi,default, orNone).os: Operating system (linuxormacos).compiler: Compiler used (gccorclang).release: Build type (releaseordebug).
-
Properties
filename: Reconstructed filename based on the attributes.full_path: Full path to the binary executable.
-
Class Methods
-
from_filename(dirname: str, filename: str)Creates an instance by parsing the filename.
- Raises:
ValueError: If the filename does not match the expected pattern.
- Raises:
-
Running Tests
The project includes unit tests using Python's unittest framework.
Running Tests
-
Clone the repository (if not already done):
git clone https://github.com/yourusername/rosetta_finder.git cd rosetta_finder
-
Navigate to the project directory:
cd rosetta_finder
-
Run the tests:
python -m unittest discover tests
Test Coverage
The tests cover:
- Parsing valid and invalid filenames with
RosettaBinary. - Finding binaries with
RosettaFinder, including scenarios where binaries are found or not found. - OS compatibility checks.
Contributing
Contributions are welcome! Please submit a pull request or open an issue for bug reports and feature requests.
License
This project is licensed under the MIT License.
Acknowledgements
- Rosetta Commons: The Rosetta software suite for the computational modeling and analysis of protein structures.
Contact
For questions or support, please contact:
- Name: Yinying Yao
- Email:yaoyy.hi(a)gmail.com
Metadata
Release files for rosetta_finder 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| rosetta_finder-0.1.0.tar.gz | 314.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| rosetta_finder-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 356.0 kB
Release files / rosetta_finder-0.1.0.tar.gz
| Download URL | rosetta_finder-0.1.0.tar.gz |
|---|---|
| Size | 314.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e48c7c05ccf3c0b2019180463e7c7b1c20723f66f876a27e18b26e5c9a628a19
|
|
BLAKE2b-256 checksum How to use checksums |
9ca15ad74a503779c3e77dee20a76f0fdb48751e157d4f1f93d42368ee6ec039
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
python-requests/2.32.3
|
Release files / rosetta_finder-0.1.0-py3-none-any.whl
| Download URL | rosetta_finder-0.1.0-py3-none-any.whl |
|---|---|
| Size | 41.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
21385fb222e9c3f6c01a2035a68438d7bdfd2147ce7918e85e5bf7ad34168a62
|
|
BLAKE2b-256 checksum How to use checksums |
8e885d4fc768e308953bed52da16d792755e37d34de2b257463d80f00aab7c55
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
python-requests/2.32.3
|