Skip to main content

Python wrapper for the Kalign multiple sequence alignment engine

Project description

Kalign Python Package

Python bindings for Kalign, a fast multiple sequence alignment program for biological sequences (DNA, RNA, protein).

Installation

pip install kalign-python

Optional dependencies for ecosystem integration:

pip install kalign-python[biopython]    # Biopython integration (fmt="biopython", I/O helpers)
pip install kalign-python[skbio]        # scikit-bio integration (fmt="skbio")
pip install kalign-python[io]           # I/O helpers (requires Biopython)
pip install kalign-python[analysis]     # pandas + matplotlib for downstream analysis
pip install kalign-python[all]          # all of the above

Quick Start

import kalign

sequences = [
    "ATCGATCGATCG",
    "ATCGTCGATCG",
    "ATCGATCATCG"
]

# Default mode — single run with consistency anchors (best general-purpose)
aligned = kalign.align(sequences)

# Fast mode — single run, fastest
aligned = kalign.align(sequences, mode="fast")

# Accurate mode — ensemble, highest precision
aligned = kalign.align(sequences, mode="accurate")

Modes

Kalign v3.5 provides four named modes, exposed identically through the Python API and the kalign command-line tool. Presets were derived from NSGA-III multi-objective optimization on BAliBASE v4 (protein) and BRAliBASE (RNA).

Mode Python CLI Description
fast mode="fast" kalign --mode fast Single run, fastest.
default mode="default" or omit kalign (or --mode default) Single run with consistency anchors. Best general-purpose.
recall mode="recall" kalign --mode recall Ensemble, optimized for recall.
accurate mode="accurate" kalign --mode accurate Ensemble, highest precision.

Explicit parameters always override mode defaults:

# Fast base + 5 ensemble runs
aligned = kalign.align(sequences, mode="fast", ensemble=5)

# Accurate base + custom gap penalty
aligned = kalign.align(sequences, mode="accurate", gap_open=8.0)

Mode constants are also available: kalign.MODE_FAST, kalign.MODE_DEFAULT, kalign.MODE_RECALL, kalign.MODE_ACCURATE.

Core API

kalign.align()

aligned = kalign.align(
    sequences,              # list of str
    mode=None,              # "fast", "default", "recall", "accurate", or None (= default)
    seq_type="auto",        # "auto", "dna", "rna", "protein", "divergent", "internal"
    gap_open=None,          # positive float, or None for defaults
    gap_extend=None,        # positive float, or None for defaults
    terminal_gap_extend=None,
    n_threads=None,         # int, or None for global default
    refine="none",          # refinement mode: "none", "all", "confident", "inline"
    ensemble=0,             # number of ensemble runs (0 = off, try 3-5)
    min_support=0,          # explicit consensus threshold (0 = auto)
    fmt="plain",            # "plain", "biopython", "skbio"
    ids=None,               # list of str (for biopython/skbio output)
)

Returns a list of aligned strings (default), a Bio.Align.MultipleSeqAlignment (fmt="biopython"), or a skbio.TabularMSA (fmt="skbio").

When ensemble > 0 and fmt="biopython", per-residue confidence is attached as HMMER-style PP letter_annotations["posterior_probability"].

kalign.align_from_file()

Align sequences directly from a FASTA, MSF, or Clustal file:

result = kalign.align_from_file("sequences.fasta", seq_type="protein")
for name, seq in zip(result.names, result.sequences):
    print(f"{name}: {seq}")

Returns an AlignedSequences object with .names, .sequences, and optional confidence fields (see below).

Additional parameters for advanced use:

result = kalign.align_from_file(
    "input.fasta",
    mode="accurate",             # or "fast", "default", "recall"
    ensemble=5,                  # override: 5 runs instead of mode default
    min_support=0,               # consensus threshold (0 = auto)
    save_poar="consensus.poar",  # save POAR table for re-thresholding
    # load_poar="consensus.poar",  # OR load pre-computed POAR
    refine="none",               # refinement mode
)

kalign.compare()

Score a test alignment against a reference using the Sum-of-Pairs (SP) score:

score = kalign.compare("reference.msf", "test.fasta")
print(f"SP score: {score:.1f}")  # 0 (no match) to 100 (identical)

kalign.compare_detailed()

Detailed alignment comparison returning POAR recall/precision/F1/TC:

scores = kalign.compare_detailed("reference.msf", "test.fasta")
print(f"F1: {scores['f1']:.3f}, TC: {scores['tc']:.3f}")

kalign.write_alignment()

Write aligned sequences to a file:

kalign.write_alignment(aligned, "output.fasta", format="fasta", ids=ids)

Supported formats: fasta, clustal, stockholm, phylip (non-FASTA formats require Biopython).

Ensemble Alignment & Confidence Scores

Ensemble mode runs multiple alignments with varied parameters and combines results via POAR (Pairs of Aligned Residues) consensus. The simplest way to use it is mode="accurate" (5-run ensemble) or mode="recall" (recall-tuned ensemble). For more control, set ensemble directly.

import kalign

# Accurate mode: 5-run ensemble — highest precision
result = kalign.align_from_file("proteins.fasta", mode="accurate")

# Or: explicit 5 ensemble runs
result = kalign.align_from_file("proteins.fasta", ensemble=5)

# Per-column confidence: average agreement across ensemble runs [0..1]
print(result.column_confidence[:10])   # e.g. [0.93, 0.87, 1.0, ...]

# Per-residue confidence: per-sequence, per-position agreement [0..1]
print(result.residue_confidence[0][:10])  # e.g. [0.95, 0.90, 1.0, ...]

POAR Save/Load

Save the POAR consensus table to avoid re-running the ensemble when experimenting with thresholds:

# First run: compute ensemble and save POAR
kalign.align_file_to_file("input.fa", "output.fa", ensemble=5,
                          save_poar="consensus.poar")

# Later: instant re-threshold from saved POAR (no re-alignment)
kalign.align_file_to_file("input.fa", "output2.fa",
                          load_poar="consensus.poar", min_support=3)

Stockholm Output with Confidence

Write confidence annotations in Stockholm format (#=GR PP per-residue, #=GC PP_cons per-column):

result = kalign.align_from_file("input.fasta", ensemble=5)
kalign.write_alignment(
    result.sequences, "output.sto", format="stockholm",
    ids=result.names,
    column_confidence=result.column_confidence,
    residue_confidence=result.residue_confidence,
)

Confidence uses HMMER-style PP encoding: *=95%+, 9=85-95%, ..., 0=0-5%, .=gap.

Biopython Per-Residue PP

When using fmt="biopython" with ensemble, per-residue confidence is attached as letter_annotations["posterior_probability"]:

aln = kalign.align(seqs, ensemble=3, fmt="biopython", ids=ids)
print(aln[0].letter_annotations["posterior_probability"])  # e.g. "998.76*9..."

Threading

import kalign

kalign.set_num_threads(4)        # set global default
n = kalign.get_num_threads()     # query current default

# or override per call
aligned = kalign.align(sequences, n_threads=8)

Thread settings are thread-local, so different threads can use different defaults.

Utilities (kalign.utils)

Requires only NumPy (installed automatically):

import kalign

aligned = kalign.align(sequences)

arr = kalign.utils.to_array(aligned)                          # numpy array
stats = kalign.utils.alignment_stats(aligned)                 # dict with gap_fraction, conservation, identity
consensus = kalign.utils.consensus_sequence(aligned, threshold=0.7)
matrix = kalign.utils.pairwise_identity_matrix(aligned)       # numpy array
trimmed = kalign.utils.remove_gap_columns(aligned)
region = kalign.utils.trim_alignment(aligned, start=2, end=10)

Biopython Integration

Requires pip install kalign-python[biopython].

import kalign

# Return a Biopython MultipleSeqAlignment
aln = kalign.align(sequences, fmt="biopython", ids=["s1", "s2", "s3"])
print(aln.get_alignment_length())

# Write in various formats via Biopython
from Bio import AlignIO
AlignIO.write(aln, "output.clustal", "clustal")

I/O helpers (kalign.io)

sequences = kalign.io.read_fasta("input.fasta")
sequences, ids = kalign.io.read_sequences("input.fasta")

aligned = kalign.align(sequences)
kalign.io.write_fasta(aligned, "output.fasta", ids=ids)
kalign.io.write_clustal(aligned, "output.aln", ids=ids)
kalign.io.write_stockholm(aligned, "output.sto", ids=ids)
kalign.io.write_phylip(aligned, "output.phy", ids=ids)

scikit-bio Integration

Requires pip install kalign-python[skbio].

import kalign

# Returns a TabularMSA of DNA, RNA, or Protein depending on seq_type
aln = kalign.align(sequences, seq_type="dna", fmt="skbio")
print(type(aln))  # <class 'skbio.alignment._tabular_msa.TabularMSA'>

Constants

Sequence Types

String Constant Description
"auto" kalign.AUTO Auto-detect (default)
"dna" kalign.DNA DNA sequences
"rna" kalign.RNA RNA sequences
"protein" kalign.PROTEIN Protein sequences
"divergent" kalign.PROTEIN_DIVERGENT Divergent protein sequences
"internal" kalign.DNA_INTERNAL DNA with internal gap preference

Refinement Modes

String Constant Description
"none" kalign.REFINE_NONE No refinement (default)
"all" kalign.REFINE_ALL Refine all columns
"confident" kalign.REFINE_CONFIDENT Refine only confident columns
"inline" kalign.REFINE_INLINE Inline refinement (disables parallelism)

Command-line Interface

# Modes
kalign-py -i sequences.fasta -o aligned.fasta                    # default mode
kalign-py --mode fast -i sequences.fasta -o aligned.fasta        # fast mode
kalign-py --mode recall -i sequences.fasta -o aligned.fasta      # recall mode
kalign-py --mode accurate -i sequences.fasta -o aligned.fasta    # accurate mode

# I/O options
kalign-py -i sequences.fasta -o - --format clustal               # stdout
cat input.fa | kalign-py -i - -o aligned.fasta                   # stdin
kalign-py -i sequences.fasta -o aligned.fasta --type protein     # explicit type

# Ensemble with POAR save/load
kalign-py -i input.fa -o output.fa --ensemble 5 --save-poar consensus.poar
kalign-py -i input.fa -o output.fa --load-poar consensus.poar --min-support 3

kalign-py --version

Development

git clone https://github.com/TimoLassmann/kalign.git
cd kalign
uv pip install -e .
uv run pytest tests/python/ -v

Requirements: Python 3.9+, CMake 3.18+, C++11 compiler, NumPy.

Citation

If you use Kalign in your research, please cite:

Lassmann, T. (2020). Kalign 3: multiple sequence alignment of large data sets. Bioinformatics, 36(6), 1928-1929. doi:10.1093/bioinformatics/btz795

License

Apache License, Version 2.0. See COPYING.

Project details


Download files

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

Source Distribution

kalign_python-3.6.0.tar.gz (1.3 MB view details)

Uploaded Source

Built Distributions

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

kalign_python-3.6.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (273.7 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

kalign_python-3.6.0-cp314-cp314-macosx_14_0_x86_64.whl (248.8 kB view details)

Uploaded CPython 3.14macOS 14.0+ x86-64

kalign_python-3.6.0-cp314-cp314-macosx_14_0_arm64.whl (223.2 kB view details)

Uploaded CPython 3.14macOS 14.0+ ARM64

kalign_python-3.6.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (273.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

kalign_python-3.6.0-cp313-cp313-macosx_14_0_x86_64.whl (248.8 kB view details)

Uploaded CPython 3.13macOS 14.0+ x86-64

kalign_python-3.6.0-cp313-cp313-macosx_14_0_arm64.whl (223.0 kB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

kalign_python-3.6.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (273.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

kalign_python-3.6.0-cp312-cp312-macosx_14_0_x86_64.whl (248.7 kB view details)

Uploaded CPython 3.12macOS 14.0+ x86-64

kalign_python-3.6.0-cp312-cp312-macosx_14_0_arm64.whl (222.9 kB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

kalign_python-3.6.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (272.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

kalign_python-3.6.0-cp311-cp311-macosx_14_0_x86_64.whl (247.0 kB view details)

Uploaded CPython 3.11macOS 14.0+ x86-64

kalign_python-3.6.0-cp311-cp311-macosx_14_0_arm64.whl (221.6 kB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

File details

Details for the file kalign_python-3.6.0.tar.gz.

File metadata

  • Download URL: kalign_python-3.6.0.tar.gz
  • Upload date:
  • Size: 1.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for kalign_python-3.6.0.tar.gz
Algorithm Hash digest
SHA256 9fd4b07525ca40988ec66936aedcad799f9d89ae234fded18d2dd00cc68e9669
MD5 6bfaad78ac0f4dd84f113d03d7ec6c61
BLAKE2b-256 a2dea61438488cb03b79673259070e22cfafbd94edc55c9b815e93718b5adc00

See more details on using hashes here.

Provenance

The following attestation bundles were made for kalign_python-3.6.0.tar.gz:

Publisher: wheels.yml on TimoLassmann/kalign

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

File details

Details for the file kalign_python-3.6.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for kalign_python-3.6.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7b1d452852d11c71a3406c53ffefbaf8e9b9f8dd0660a1094aa25000ea24ab23
MD5 e700df5889e34dbbee584843dd3d3ad3
BLAKE2b-256 9132ebcb8e175f97f6d80bfed984d4823f5028d6282417320c78c7a64908c588

See more details on using hashes here.

Provenance

The following attestation bundles were made for kalign_python-3.6.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on TimoLassmann/kalign

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

File details

Details for the file kalign_python-3.6.0-cp314-cp314-macosx_14_0_x86_64.whl.

File metadata

File hashes

Hashes for kalign_python-3.6.0-cp314-cp314-macosx_14_0_x86_64.whl
Algorithm Hash digest
SHA256 c028d19d90cffb9837e228639025f43ef9991892718dff8d1f9d1581c50ba4db
MD5 86ef6e9a61088a5e0af70093eebaf4a3
BLAKE2b-256 6cb0fdf68020a6993dd9a60c49c2ac6f6c647d0e4b8dcbfa8368352fb5b891e5

See more details on using hashes here.

Provenance

The following attestation bundles were made for kalign_python-3.6.0-cp314-cp314-macosx_14_0_x86_64.whl:

Publisher: wheels.yml on TimoLassmann/kalign

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

File details

Details for the file kalign_python-3.6.0-cp314-cp314-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for kalign_python-3.6.0-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 34ddbc23ce0891b2815273a961e2fb461ab63ab954910d7e5359d055aa6e3fda
MD5 d2c4a0019fa470c4837e083fa55aae08
BLAKE2b-256 5a882dfe2676f6c5946213d08925a861e4e6ec00ca12075fb58255d8ec7cda77

See more details on using hashes here.

Provenance

The following attestation bundles were made for kalign_python-3.6.0-cp314-cp314-macosx_14_0_arm64.whl:

Publisher: wheels.yml on TimoLassmann/kalign

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

File details

Details for the file kalign_python-3.6.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for kalign_python-3.6.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 79f843e54f6eded6cddad27dc0f70c41d625154dff666f16c2df269f3cfa1bbd
MD5 f530e4d21de5966cdaaf52d73174d78c
BLAKE2b-256 9796ffb4abc3d74aa7fd3e60c6490095784c11598a35af88bdd8cd135af129ab

See more details on using hashes here.

Provenance

The following attestation bundles were made for kalign_python-3.6.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on TimoLassmann/kalign

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

File details

Details for the file kalign_python-3.6.0-cp313-cp313-macosx_14_0_x86_64.whl.

File metadata

File hashes

Hashes for kalign_python-3.6.0-cp313-cp313-macosx_14_0_x86_64.whl
Algorithm Hash digest
SHA256 617af8dabbfc8e3e07aa7461f50185f26c7f002a26c04667f5a9e5c8222fb2de
MD5 e2f91cb37bb805f37f815eb06417a287
BLAKE2b-256 1dcbf61e6062a801bfa7706fbf0f52df434277b77a5fe1abb7e19c5683bd43fa

See more details on using hashes here.

Provenance

The following attestation bundles were made for kalign_python-3.6.0-cp313-cp313-macosx_14_0_x86_64.whl:

Publisher: wheels.yml on TimoLassmann/kalign

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

File details

Details for the file kalign_python-3.6.0-cp313-cp313-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for kalign_python-3.6.0-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 59aeb06e7eaf67cef3679733677f0462cbb8f4e49e4d4a79c07a69ea78e41429
MD5 77a94a5cf767de846eb08391318f150c
BLAKE2b-256 43dd0cbbbe039b78631b5c0d7bf6227319d66e131d6b2d665e3f42f5041aa123

See more details on using hashes here.

Provenance

The following attestation bundles were made for kalign_python-3.6.0-cp313-cp313-macosx_14_0_arm64.whl:

Publisher: wheels.yml on TimoLassmann/kalign

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

File details

Details for the file kalign_python-3.6.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for kalign_python-3.6.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1a020f59a7fd99c9cbba4eb38a3dbd067b0081ed928e82d865d5a67115be5250
MD5 676cb9afab718a31d394bf5034fb9f00
BLAKE2b-256 9dcaa6303412ab412c396a74104f5b2c7391e37b056cd4677364379f6f7a6d03

See more details on using hashes here.

Provenance

The following attestation bundles were made for kalign_python-3.6.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on TimoLassmann/kalign

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

File details

Details for the file kalign_python-3.6.0-cp312-cp312-macosx_14_0_x86_64.whl.

File metadata

File hashes

Hashes for kalign_python-3.6.0-cp312-cp312-macosx_14_0_x86_64.whl
Algorithm Hash digest
SHA256 1d2c1cca9080b6d2ce6d2c779df1bc52fc0a4b7d3c6461c5ed13de4264c23517
MD5 4b52cc46be4863efb7742293368480ba
BLAKE2b-256 4c7219ba270d5faaa35118aaeb964b775389929b7c9848c0070d6ea51230c74b

See more details on using hashes here.

Provenance

The following attestation bundles were made for kalign_python-3.6.0-cp312-cp312-macosx_14_0_x86_64.whl:

Publisher: wheels.yml on TimoLassmann/kalign

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

File details

Details for the file kalign_python-3.6.0-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for kalign_python-3.6.0-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 bc18e3794129f6899d1129a7753e4e5b5f669b0ad5af7bd955949750f1466eb8
MD5 964b9c2745bf630988bd32071407c94b
BLAKE2b-256 d403ec578df5a6fbb24e2c58d773dac3f52b9e346d46c31187724d96acf71753

See more details on using hashes here.

Provenance

The following attestation bundles were made for kalign_python-3.6.0-cp312-cp312-macosx_14_0_arm64.whl:

Publisher: wheels.yml on TimoLassmann/kalign

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

File details

Details for the file kalign_python-3.6.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for kalign_python-3.6.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5eeee2a5ddead4abe8f2581921e0fc8d78ea27193510b9c0c4426739cf834760
MD5 30146818efcd33e417b2ffc584da6f4e
BLAKE2b-256 b47a2a0cf0885d1d597a769a7ea464c7f4b843cf968b48e253e2300229deed92

See more details on using hashes here.

Provenance

The following attestation bundles were made for kalign_python-3.6.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on TimoLassmann/kalign

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

File details

Details for the file kalign_python-3.6.0-cp311-cp311-macosx_14_0_x86_64.whl.

File metadata

File hashes

Hashes for kalign_python-3.6.0-cp311-cp311-macosx_14_0_x86_64.whl
Algorithm Hash digest
SHA256 b74daa7753faaceb6fac3a0722d0d9b57ecdb2dd92c1e81eabd55027106447a7
MD5 44392471370c33b90a72ef98e27f48a8
BLAKE2b-256 2c38139c3ecd1ff4154a89ee1a2e09bfa44f6a73884893c99a6433a5a34beb1e

See more details on using hashes here.

Provenance

The following attestation bundles were made for kalign_python-3.6.0-cp311-cp311-macosx_14_0_x86_64.whl:

Publisher: wheels.yml on TimoLassmann/kalign

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

File details

Details for the file kalign_python-3.6.0-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for kalign_python-3.6.0-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 a409b9ee7235e3c8623674050dc68e90a2ca2144a5f0976655f08b348b0c49ae
MD5 8e90005e639cdb90129c7cfcc78b2ed7
BLAKE2b-256 7572955b6fcb50fec7c937b40783081df0e1d825362ff80a7ceef29cf63a0be2

See more details on using hashes here.

Provenance

The following attestation bundles were made for kalign_python-3.6.0-cp311-cp311-macosx_14_0_arm64.whl:

Publisher: wheels.yml on TimoLassmann/kalign

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