Skip to main content

RosettaFinder

A Python utility for finding Rosetta binaries based on a specific naming convention.

GitHub License

CI Status

Python CI Dependabot Updates codecov

Release

GitHub Release GitHub Release Date

PyPI - Format PyPI - Version PyPI - Status PyPI - Wheel

Python version supported

PyPI - Python Version PyPI - Implementation

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 RosettaFinder class to search for binaries.
  • A RosettaBinary dataclass 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 pip without 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, or static.
  • OS: linux or macos.
  • Compiler: gcc or clang.
  • Release: release or debug.

Examples of valid binary filenames:

  • rosetta_scripts.linuxgccrelease
  • rosetta_scripts.mpi.macosclangdebug
  • rosetta_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:

  1. The path specified in the ROSETTA_BIN environment variable.
  2. ROSETTA3/bin
  3. ROSETTA/main/source/bin/
  4. 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 RosettaBinary instance.

      • 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, or None).
    • os: Operating system (linux or macos).
    • compiler: Compiler used (gcc or clang).
    • release: Build type (release or debug).
  • 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.

Running Tests

The project includes unit tests using Python's unittest framework.

Running Tests

  1. Clone the repository (if not already done):

    git clone https://github.com/yourusername/rosetta_finder.git
    cd rosetta_finder
    
  2. Navigate to the project directory:

    cd rosetta_finder
    
  3. 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)

Source distribution for rosetta_finder 0.1.0
File Size Uploaded
rosetta_finder-0.1.0.tar.gz 314.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for rosetta_finder 0.1.0
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

0.0.9

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page