Skip to main content

Drop-in replacement for fisher-py without dotnet required

Project description

native-fisher-py

PyPI version Tests Documentation Status

Why native-fisher-py?

native-fisher-py is a self-contained alternative to the fisher-py reader. While fisher-py requires a local .NET runtime and pythonnet, this package bundles the necessary components using .NET NativeAOT and Rust to provide a consistent binary bridge.

Features

  • Drop-in Compatible: Designed to match the fisher_py.RawFile API for simplified migration.
  • Bundled .NET Components: No separate .NET runtime installation is required on the host system.
  • Cross-Platform: Pre-built binaries for macOS (ARM64/x64), Linux (x64), and Windows (x64).
  • Reliable Deployment: Easier integration into CI/CD pipelines and specialized Linux environments.

How it works

This project provides a native bridge to the official Thermo Fisher libraries using a three-layer approach:

  1. Official DLLs: Uses the original .dll assemblies provided by Thermo Fisher Scientific.
  2. C# NativeAOT Wrapper: A compiled transition layer (ThermoNativeReader) that interfaces with those DLLs.
  3. Rust PyO3 Layer: A Rust bridge (native-fisher-py) that provides the final Python bindings.

This approach ensures stability and parity with the official reader while providing a dependency-free experience for Python users.

Quick Start

# Just change the import, the rest of your code stays the same!
from native_fisher_py import RawFile

with RawFile("data.raw") as raw:
    print(f"Number of scans: {raw.number_of_scans}")
    
    # Get spectral data as high-speed NumPy arrays
    m, i, c, meta = raw.get_scan_from_scan_number(1)
    print(f"First peak at {m[0]} m/z with intensity {i[0]}")

Migrating from fisher-py

If you are currently using fisher-py, migration is as simple as:

  1. pip install native-fisher-py
  2. Update your imports:
- from fisher_py import RawFile
+ from native_fisher_py import RawFile
  1. (Optional) Uninstall fisher-py: pip uninstall fisher-py

All core methods (get_scan_from_scan_number, get_spectrum, get_chromatogram, get_ms2_scan_number_from_retention_time, etc.) are implemented with identical signatures and return types.

Quick Local Build

For convenience, you can run the included build.sh script to build both parts of the project:

./build.sh

Step-by-Step Manual Build

To build the project from source, you need .NET 8 SDK, Rust (cargo/maturin), and clang.

1. Build the C# NativeAOT Core

Navigate to the C# project and publish the NativeAOT shared library for your platform:

cd native/ThermoNativeReader

# Example for Apple Silicon (macOS arm64)
dotnet publish -r osx-arm64 -c Release -p:PublishAot=true

# Example for Linux (x64)
# dotnet publish -r linux-x64 -c Release -p:PublishAot=true

The output will be in publish/ThermoNativeReader.dylib (or .so / .dll).

2. Build the Rust Bridge

Navigate to the native_fisher_py folder and use maturin to build and install the Python package. You must point to the location of the C# library.

cd native_fisher_py

# Point to your build from Step 1
export THERMO_NATIVE_LIB=$(pwd)/../native/ThermoNativeReader/bin/Release/net8.0/osx-arm64/publish/ThermoNativeReader.dylib

maturin develop

Credits & Legal Notice

This project is powered by the Thermo Fisher Scientific RawFileReader (copyright © 2016-2026 Thermo Fisher Scientific, Inc.). All rights reserved.

The native-fisher-py package includes the official RawFileReader libraries, which remain the property of Thermo Fisher Scientific. By using this software, you agree to the terms specified in their license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

native_fisher_py-0.2.6-cp39-abi3-win_amd64.whl (4.9 MB view details)

Uploaded CPython 3.9+Windows x86-64

native_fisher_py-0.2.6-cp39-abi3-manylinux_2_34_x86_64.whl (5.4 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.34+ x86-64

native_fisher_py-0.2.6-cp39-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (10.9 MB view details)

Uploaded CPython 3.9+macOS 10.12+ universal2 (ARM64, x86-64)macOS 10.12+ x86-64macOS 11.0+ ARM64

File details

Details for the file native_fisher_py-0.2.6-cp39-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for native_fisher_py-0.2.6-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 99c1fb8a23f281f2e67fa934c94de5cd5d04871a9bff98e25dde27c045c01679
MD5 e4ce5636436cd3e77d80e654c86220e2
BLAKE2b-256 6a402b7ae47ba3d73e54d802c70e972276d60a22bb84510d0a3accb78ffc156c

See more details on using hashes here.

Provenance

The following attestation bundles were made for native_fisher_py-0.2.6-cp39-abi3-win_amd64.whl:

Publisher: release.yml on z3rone-org/native-fisher-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file native_fisher_py-0.2.6-cp39-abi3-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for native_fisher_py-0.2.6-cp39-abi3-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 8bf3d980b2e97581d5fcc578f3ca6085ace8c05274681cdf28c9b5ff3682a5fb
MD5 7dc09037bedc94bf18100ccae8584ffa
BLAKE2b-256 a9d31ec824832ebfdeb6bb69587b2626b82ab649c67b965a5e8c6bd510b639c8

See more details on using hashes here.

Provenance

The following attestation bundles were made for native_fisher_py-0.2.6-cp39-abi3-manylinux_2_34_x86_64.whl:

Publisher: release.yml on z3rone-org/native-fisher-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file native_fisher_py-0.2.6-cp39-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for native_fisher_py-0.2.6-cp39-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 89bd97bf2fd5cadd0e215f5ef9c4ad3050245804c719ef8fbd9b86755ea82109
MD5 7fc465ead0e1cf7b36a03fc2d3b61357
BLAKE2b-256 22767eef20b05d80dd0c7101d44cdaf6dd9b91c5e519355491aeb42265996483

See more details on using hashes here.

Provenance

The following attestation bundles were made for native_fisher_py-0.2.6-cp39-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl:

Publisher: release.yml on z3rone-org/native-fisher-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page