A Python tool for processing paired FASTQ files to efficiently count oligo codons.
Project description
OligoSeeker
</code></pre>
<pre><code>The autoreload extension is already loaded. To reload it, use:
%reload_ext autoreload
Installation
You can install the package via pip:
pip install OligoSeeker
Or directly from the repository:
pip install git+https://github.com/username/OligoSeeker.git
Overview
OligoSeeker is a Python library designed to process paired FASTQ files and count occurrences of specific oligo codons. It provides a simple yet powerful interface for bioinformatics researchers working with oligonucleotide analysis.
Features
- Process paired FASTQ files (gzipped or uncompressed)
- Search for custom oligo sequences with codon sites (NNN)
- Support for both forward and reverse complement matching
- Comprehensive results in CSV and Excel formats
- Progress reporting for long-running operations
- User-friendly command-line interface
- Modular design for integration with other tools
How It Works
OligoSeeker searches for specific oligonucleotide patterns in paired FASTQ reads. When it finds a match, it extracts the codon sequence (represented by NNN in the oligo pattern) and tallies its occurrence. The library handles both forward and reverse complement matching, ensuring comprehensive detection.
The basic workflow is: 1. Load and validate oligo sequences 2. Process paired FASTQ files 3. Count codon occurrences for each oligo 4. Output results in csv format
Quick Start
Command-Line Usage
# Basic usage with oligos file
oligoseeker --f1 test_files/test_1.fq.gz --f2 test_files/test_2.fq.gz \
--oligos "GCGGATTACATTNNNAAATAACATCGT,TGTGGTAAGCGGNNNGAAAGCATTTGT" --output test_outs --prefix test_cm2
Python API Usage
Here’s a simple example of using the Python API:
from OligoSeeker.pipeline import PipelineConfig, OligoCodonPipeline
from typing import Dict, List, Tuple, Set
# Create a configuration
config = PipelineConfig(
fastq_1="../test_files/test_1.fq.gz",
fastq_2="../test_files/test_1.fq.gz",
oligos_list=["GCGGATTACATTNNNAAATAACATCGT", "TGTGGTAAGCGGNNNGAAAGCATTTGT", "GTCGTAGAAAATNNNTGGGTGATGAGC"],
output_path="../test_files/test_outs",
output_prefix='test1'
)
# Create and run the pipeline
pipeline = OligoCodonPipeline(config)
results = pipeline.run()
# Print the locations of output files
print(f"Results saved to: {results['csv_path']}")
2025-03-11 17:03:59,076 - INFO - Starting OligoCodonPipeline
2025-03-11 17:03:59,077 - INFO - Loading oligo sequences...
2025-03-11 17:03:59,078 - INFO - Using provided oligo list
2025-03-11 17:03:59,078 - INFO - Loaded 3 oligo sequences
2025-03-11 17:03:59,079 - INFO - Processing FASTQ files...
0it [00:00, ?it/s]
2025-03-11 17:03:59,132 - INFO - Formatting results...
2025-03-11 17:03:59,134 - INFO - Saving results to: ../test_files/test_outs/test_counts.csv
2025-03-11 17:03:59,139 - INFO - Pipeline completed in 0.06 seconds
Results saved to: ../test_files/test_outs/test_counts.csv
# this should show 20, 40 and 60 matches
import pandas as pd
out = pd.read_csv(results['csv_path'],index_col=[0])
out.head()
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
| 1_GCGGATTACATTNNNAAATAACATCGT | 2_TGTGGTAAGCGGNNNGAAAGCATTTGT | 3_GTCGTAGAAAATNNNTGGGTGATGAGC | |
|---|---|---|---|
| none | 1980.0 | 1960.0 | 1940.0 |
| ACT | 20.0 | 0.0 | 0.0 |
| GGC | 0.0 | 40.0 | 0.0 |
| AAA | 0.0 | 0.0 | 60.0 |
Here’s a simple example of using the Python API with oligo listed in a file:
from OligoSeeker.pipeline import PipelineConfig, OligoCodonPipeline
from typing import Dict, List, Tuple, Set
# Create a configuration
config = PipelineConfig(
fastq_1="../test_files/test_1.fq.gz",
fastq_2="../test_files/test_1.fq.gz",
oligos_file="../test_files/oligos.txt",
output_path="../test_files/test_outs",
output_prefix='test2'
)
# Create and run the pipeline
pipeline = OligoCodonPipeline(config)
results = pipeline.run()
# Print the locations of output files
print(f"Results saved to: {results['csv_path']}")
2025-03-11 17:16:28,838 - INFO - Starting OligoCodonPipeline
2025-03-11 17:16:28,839 - INFO - Loading oligo sequences...
2025-03-11 17:16:28,840 - INFO - Loading oligos from file: ../test_files/oligos.txt
2025-03-11 17:16:28,841 - INFO - Loaded 3 oligo sequences
2025-03-11 17:16:28,842 - INFO - Processing FASTQ files...
0it [00:00, ?it/s]
2025-03-11 17:16:28,899 - INFO - Formatting results...
2025-03-11 17:16:28,900 - INFO - Saving results to: ../test_files/test_outs/test2_counts.csv
2025-03-11 17:16:28,905 - INFO - Pipeline completed in 0.07 seconds
Results saved to: ../test_files/test_outs/test2_counts.csv
Modules
OligoSeeker is organized into several modules:
Core
The core module contains fundamental utilities and classes: - DNA sequence operations (reverse complement, etc.) - OligoRegex for pattern matching - OligoLoader for loading and validating oligo sequences
FASTQ Processing
The FASTQ module handles reading and processing FASTQ files: - FastqHandler for file operations - OligoCodonProcessor for counting codons in FASTQ files
Output
The output module manages results formatting and saving: - ResultsFormatter for converting results to DataFrames - ResultsSaver for saving to various file formats
Pipeline
The pipeline module provides the complete processing pipeline: - PipelineConfig for configuration settings - ProgressReporter for progress tracking - OligoCodonPipeline for end-to-end processing
CLI
The CLI module implements the command-line interface: - Argument parsing - Configuration validation - Pipeline execution
CLI Reference
usage: oligoseeker [-h] --f1 FASTQ_PATH_1 --f2 FASTQ_PATH_2
[--oligos-file OLIGOS_FILE] [--oligos OLIGOS_STRING]
[-o OUTPUT_PATH] [--prefix OUTPUT_PREFIX] [--offset OFFSET_OLIGO]
[--log-file LOG_FILE]
[--log-level {DEBUG,INFO,WARNING,ERROR,CRITICAL}]
OligoSeeker: Process FASTQ files to count oligo codons
options:
-h, --help show this help message and exit
--f1 FASTQ_PATH_1, --fastq_1 FASTQ_PATH_1
Path to FASTQ 1 file (default: ../test_fastq_files/test_1.fq.gz)
--f2 FASTQ_PATH_2, --fastq_2 FASTQ_PATH_2
Path to FASTQ 2 file (default: ../test_fastq_files/test_2.fq.gz)
-o OUTPUT_PATH, --output OUTPUT_PATH
Output directory for results (default: ./results)
--prefix OUTPUT_PREFIX
Prefix for output files (default: )
--offset OFFSET_OLIGO
Value to add to oligo index in output (default: 1)
--log-file LOG_FILE Path to log file (if not specified, logs to console only)
--log-level {DEBUG,INFO,WARNING,ERROR,CRITICAL}
Logging level (default: INFO)
Oligo Source Options (one required):
--oligos-file OLIGOS_FILE
File containing oligo sequences (one per line)
--oligos OLIGOS_STRING
Comma-separated list of oligo sequences
(default: GCGGATTACATTNNNAAATAACATCGT,TGTGGTAAGCGGNNNGAAAGCATTTGT,GTCGTAGAAAATNNNTGGGTGATGAGC)
Data Requirements
OligoSeeker works with standard paired FASTQ files, which should be named according to common conventions:
- Read 1:
*_1.fq.gz,*_R1.fastq.gz, or*_R1_001.fastq.gz - Read 2:
*_2.fq.gz,*_R2.fastq.gz, or*_R2_001.fastq.gz
The oligo sequences should include a codon site marked with NNN. For
example:
GAACNNNCAT
TGACNNNTAG
This specifies that the 3 bases following GAAC or TGAC should be
captured as the codon.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Development Setup
-
Clone the repository
-
Install development dependencies:
pip install -e ".[dev]" pip install nbdev
-
Make changes to the notebook files in the
nbsdirectory -
Build the library:
nbdev_build_lib
-
Build the documentation:
nbdev_build_docs
License
This project is licensed under the Apache 2.0 License - see the LICENSE file for details.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file oligoseeker-0.0.2.tar.gz.
File metadata
- Download URL: oligoseeker-0.0.2.tar.gz
- Upload date:
- Size: 20.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
06aa3f036adf8e0d9ca0fbc03649f9dbdf260a37db9a9506d5b717ff3c4165aa
|
|
| MD5 |
84508c9165fa36c6e3b65d0b75551716
|
|
| BLAKE2b-256 |
0190831b62151c7a118a4183aa500abeb93af79e0a70732e54c505e97692c66c
|
File details
Details for the file oligoseeker-0.0.2-py3-none-any.whl.
File metadata
- Download URL: oligoseeker-0.0.2-py3-none-any.whl
- Upload date:
- Size: 22.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b10b7e1ee90e1f5d72ebda7bf9d52218013fa786159ba0ce8f3e0b1ae0eaa543
|
|
| MD5 |
d513924876cfa3b2f46d893f26858c5c
|
|
| BLAKE2b-256 |
92b26f57c3e89d266f6fdaa88a020f032c834fb87d70ffb6ad8223a03dfa8d9b
|