Searching for Rosetta Binaries.
Project description
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rosetta_finder-0.1.0.tar.gz.
File metadata
- Download URL: rosetta_finder-0.1.0.tar.gz
- Upload date:
- Size: 314.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.32.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e48c7c05ccf3c0b2019180463e7c7b1c20723f66f876a27e18b26e5c9a628a19
|
|
| MD5 |
808b2d2d5ad4fbb35ca391f2cd478ab4
|
|
| BLAKE2b-256 |
9ca15ad74a503779c3e77dee20a76f0fdb48751e157d4f1f93d42368ee6ec039
|
File details
Details for the file rosetta_finder-0.1.0-py3-none-any.whl.
File metadata
- Download URL: rosetta_finder-0.1.0-py3-none-any.whl
- Upload date:
- Size: 41.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.32.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
21385fb222e9c3f6c01a2035a68438d7bdfd2147ce7918e85e5bf7ad34168a62
|
|
| MD5 |
ce31ee2990d4b664c44d198ae66244ee
|
|
| BLAKE2b-256 |
8e885d4fc768e308953bed52da16d792755e37d34de2b257463d80f00aab7c55
|