Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
oxli is a Rust library + Python interface for counting k-mers in genomic sequencing data.
oxli is a powerful Rust library with a simple Python interface for counting k-mers in genomic sequencing data.
Use oxli to bring fast kmer counting and comparison operations to your Python projects.
This library is written on top of the sourmash rust library, and the underlying code for dealing with sequence data is well tested.
oxli is available on conda-forge for Linux, Mac OS X, and Windows for Python versions 3.10, 3.11, and 3.12:
conda install oxli
This will install the oxli library for Python.
You can also try building oxli yourself and using it in development mode:
# Setup conda development env
mamba env create -f environment.yml -n oxli
# Install oxli in dev mode
pip install -e '.[test]'
See the the oxli Wiki for documentation on the Python API.
Initialise a new KmerCountTable
# Import oxli
from oxli import KmerCountTable
# Create new count table
kct = KmerCountTable(ksize=4) # Count 4-mers
Adding k-mer counts.
# Add single k-mer with count()
kct.count("AAAA")
>>> 1
# Increment count
kct.count("AAAA")
>>> 2
# Forward and Reverse complement counted together
kct.count("TTTT")
>>> 3
# Add many k-mers from a longer sequence with consume
kct.consume("GGGGGGGGGG") # 7 x 4-mers of 'GGGG'
Lookup counts by k-mer.
# Retrieve kmer counts
kct.get('GGGG') # Count for GGGG/CCCC
>>> 7
kct.get('AAAA') #Count for AAAA/TTTT
>>> 3
Extracting k-mers from files.
# Screed for FASTA/FASTQ parsing
import screed
# Create new table
counts = KmerCountTable(ksize=21)
# Read fasta records and extract k-mers
for record in screed.open('doc/example.fa'):
counts.consume(record.sequence)
>>> 349910
First, oxli is channeling khmer, a package written by @ctb and many others. You shouldn't be too surprised to see useful functionality from khmer making an appearance in oxli.
The khmer package was useful for inspecting large collections of k-mers, but was hard to maintain and evolve.
In ~2016 @ctb's lab more or less switched over to developing sourmash, which was initially built on a similar tech stack to khmer (Python & C++).
At some point, @luizirber rewrote the sourmash C++ code into Rust.
This forced @ctb to learn Rust to maintain sourmash.
@ctb then decided he liked Rust an awful lot, and missed some of the khmer functionality.
And, voila! oxli was born.
Author: C. Titus Brown (@ctb), ctbrown@ucdavis.edu
with with miscellaneous features by @Adamtaranto
FAQs
oxli is a Rust library + Python interface for counting k-mers in genomic sequencing data.
We found that oxli demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.