Skip to main content

Quiver

This repository introduces and defines a specialized file format known as a Quiver file. A Quiver file acts as a container that consolidates the contents of many individual files into a single, structured file. Each piece of data within a Quiver file is referred to as an entry, and every entry is uniquely identified by a name. Along with the actual file contents, each entry can also include metadata, such as file size, timestamps, tags, or other descriptive information relevant to the entry. This format enables efficient storage, organization, and retrieval of a large number of related files within a single archive-like structure.

In addition to the file format itself, this repository provides a suite of command-line tools designed to interact with and manipulate Quiver files. These tools are built with a composable design philosophy in mind, meaning they are intended to be pipe-able and easily combined in Unix-style workflows. This allows users to construct complex data manipulation pipelines by chaining together simple commands, making the tools flexible and script-friendly.

The concept and implementation of Quiver files and their associated tools are heavily inspired by Brian Coventry’s silent_tools project, which serves a similar purpose for working with data within the Rosetta molecular modeling suite. However, a key distinction is that Quiver files are intentionally designed to be platform-agnostic and can be used in environments outside of Rosetta. This makes them especially valuable for more general-purpose data handling, sharing, and processing workflows across a broader range of scientific and software contexts.

How to install

uv pip install quiver-pdb

How to use

# make a quiver file
qvfrompdbs *.pdb > my.qv

# ask what's in a quiver file
qvls my.qv

# ask how many things are in a quiver file
qvls my.qv | wc -l

# extract all pdbs from a quiver file
qvextract my.qv

# extract the first 10 pdbs from a quiver file
qvls my.qv | head -n 10 | qvextractspecific my.qv

# extract a random 10 pdbs from a quiver file
qvls my.qv | shuf | head -n 10 | qvextractspecific my.qv

# extract a specific pdb from a quiver file
qvextractspecific my.qv name_of_pdb_0001

# produce a scorefile from a quiver file
qvscorefile my.qv

# combine qv files
cat 1.qv 2.qv 3.qv > my.qv

# ensure all pdbs in quiver file have unique names
qvls my.qv | qvrename my.qv > uniq.qv

# split a quiver file into groups of 100
qvsplit my.qv 100

# slice a quiver file
qvslice big.qv <tag1> <tag2> ... <tagN> > smaller.qv

Test

터미널에서 이 파일이 있는 디렉토리 또는 상위 프로젝트 루트에서 다음 명령어를 실행하세요:

uv run pytest

Benchmark

pure python

uv run python test/benchmark.py
Time to create Quiver file: 0.2492 seconds
Time to list tags: 0.0591 seconds
Time to slice Quiver file (5 tags): 0.0610 seconds
Time to extract from sliced Quiver file (5 files): 0.0267 seconds
Time to extract all files (101 files): 0.9863 seconds

rusting version

uv run python test/benchmark.py
Time to create Quiver file: 0.0468 seconds
Time to list tags: 0.0603 seconds
Time to slice Quiver file (5 tags): 0.0962 seconds
Time to extract from sliced Quiver file (5 files): 0.0281 seconds
Time to extract all files (101 files): 0.4660 seconds

References

Thank you to Nathaniel Bennett for creating this original code(https://github.com/nrbennet/quiver).

Metadata

Release files for quiver-pdb 0.7.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 quiver-pdb 0.7.0
File Size Uploaded Provenance Actions
quiver_pdb-0.7.0.tar.gz 5.2 MB Without provenance Details for quiver_pdb-0.7.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for quiver-pdb 0.7.0
File Interpreter ABI Platform Actions
quiver_pdb-0.7.0-cp311-cp311-manylinux_2_34_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.34+ x86-64 Details for quiver_pdb-0.7.0-cp311-cp311-manylinux_2_34_x86_64.whl

Total release size: 5.5 MB

Release files / quiver_pdb-0.7.0.tar.gz

Download URL quiver_pdb-0.7.0.tar.gz
Size 5.2 MB
Tags Source
SHA-256 checksum
How to use checksums
b726099e00cd8b29ef16e39229fcab038b1a842850370bd8c13cdcba251888eb
BLAKE2b-256 checksum
How to use checksums
25d24891cae6fe5ffce27e7fde89a82f960e385ed0c865794580846091fe8d97
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

Release files / quiver_pdb-0.7.0-cp311-cp311-manylinux_2_34_x86_64.whl

Download URL quiver_pdb-0.7.0-cp311-cp311-manylinux_2_34_x86_64.whl
Size 331.1 kB
Tags CPython 3.11 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
8839cbf3cb65d1a76523ad620fe2f548e44d972a8721a6363e793427281d5332
BLAKE2b-256 checksum
How to use checksums
3ab1cc2bbdd90d7351a693e53831badced78e16d51f795581422ea8ddcd459e1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

Security for quiver-pdb 0.7.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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