UniProt reader for LlamaIndex
Project description
UniProt Reader for LlamaIndex
This package provides a reader for UniProt Swiss-Prot format files, allowing you to load protein data into LlamaIndex for further processing and analysis.
Features
- Efficient parsing of large UniProt files with optional lazy loading.
- Structured output with both text containing entire UniProt record and metadata containing protein ID.
- Configurable field selection
Installation
pip install llama-index-readers-uniprot
Usage
from llama_index.readers.uniprot import UniProtReader
# Initialize the reader
reader = UniProtReader()
# Load data from a UniProt file
documents = reader.load_data("path/to/uniprot_sprot.dat")
# Access the documents
for doc in documents:
print(f"Protein ID: {doc.metadata['id']}")
Lazy Loading for Large Files
Since UniProt files are large (several GB) it's recommended to use lazy loading to process records one at a time, without loading the entire database into memory:
# Initialize the reader
reader = UniProtReader()
# Load data lazily from a UniProt file
for doc in reader.lazy_load_data("path/to/uniprot_sprot.dat"):
print(f"Protein ID: {doc.metadata['id']}")
print("---")
Example of building an index from a lazy loaded UniProt file
from llama_index.readers.uniprot import UniProtReader
from llama_index.core import VectorStoreIndex
from llama_index.core.node_parser import SentenceSplitter
reader = UniProtReader(max_records=10000)
# Load existing protein IDs from the index
existing_protein_ids = {
node.metadata.get('id')
for node in index.storage_context.docstore.docs.values()
if node.metadata.get('id')
}
text_splitter = SentenceSplitter(chunk_size=2048)
index = VectorStoreIndex([], transformations=[text_splitter], show_progress=True)
documents_gen = reader.lazy_load_data("path/to/uniprot_sprot.dat")
# Process documents in batches
batch_size = 10
current_batch = []
for doc in documents_gen:
protein_id = doc.metadata.get('id')
if protein_id in existing_protein_ids:
print(f"Skipping document {protein_id} - already indexed")
continue
current_batch.append(doc)
if len(current_batch) >= batch_size:
index.refresh_ref_docs(documents=current_batch)
current_batch = []
# Process any remaining documents
if current_batch:
index.refresh_ref_docs(documents=current_batch)
# Define persist directory
persist_dir = "path/to/persist/directory"
index.storage_context.persist(persist_dir=persist_dir)
Customizing Field Selection
You can specify which fields to include in the output:
# Only include specific fields
reader = UniProtReader(include_fields={"id", "description", "sequence"})
documents = reader.load_data("path/to/uniprot_sprot.dat")
Available fields:
id: Protein identifieraccession: Accession numbersdescription: Protein descriptiongene_names: Gene namesorganism: Organism namecomments: Comments and annotationskeywords: Keywordssequence_length: Length of the protein sequencesequence_mw: Molecular weight of the proteintaxonomy: Taxonomic classificationtaxonomy_id: Taxonomic database identifierscitations: Literature citationscross_references: Cross-references to other databasesfeatures: Protein features
By default, all fields are included.
Limiting Number of Records
You can limit the number of records to parse using the max_records parameter:
# Parse only first 1000 records
reader = UniProtReader(max_records=1000)
documents = reader.load_data("path/to/uniprot_sprot.dat")
# Works with lazy loading too
for doc in reader.lazy_load_data(
"path/to/uniprot_sprot.dat", max_records=1000
):
print(f"Protein ID: {doc.metadata['id']}")
Contributing
We welcome contributions! Please see our contributing guidelines for details.
License
This project is licensed under the MIT 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 llama_index_readers_uniprot-0.1.0.tar.gz.
File metadata
- Download URL: llama_index_readers_uniprot-0.1.0.tar.gz
- Upload date:
- Size: 6.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.12.3 Linux/6.8.0-1021-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fdd5eed37471a70b67b10773dd19d9b2e149961802ff73344dd55d81fb73c68f
|
|
| MD5 |
e583c5ed6972c98e8ac6f3283fb95d87
|
|
| BLAKE2b-256 |
629cb03bf33a8cf6186b0ba40a1177c97ae6416af9bc707a6f572d627468448b
|
File details
Details for the file llama_index_readers_uniprot-0.1.0-py3-none-any.whl.
File metadata
- Download URL: llama_index_readers_uniprot-0.1.0-py3-none-any.whl
- Upload date:
- Size: 6.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.12.3 Linux/6.8.0-1021-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4907097df9132d81e850b35a94240a5a9890abcae431e419f41bfd67d3c16de5
|
|
| MD5 |
e1fd17595eb3636d01fc79bf8a87a5b8
|
|
| BLAKE2b-256 |
239ed9f921b09bdcecb67392ee8872689b52603526769aa83d92417e349764fb
|