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.
Metadata
Release files for llama-index-readers-uniprot 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| llama_index_readers_uniprot-0.4.0.tar.gz | 6.3 kB | Without provenance | Details for llama_index_readers_uniprot-0.4.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| llama_index_readers_uniprot-0.4.0-py3-none-any.whl | Python 3 | none | any | Details for llama_index_readers_uniprot-0.4.0-py3-none-any.whl |
Total release size: 13.1 kB
Release files / llama_index_readers_uniprot-0.4.0.tar.gz
| Download URL | llama_index_readers_uniprot-0.4.0.tar.gz |
|---|---|
| Size | 6.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
82da01baafb065b8d87d041cbd88e1d6daf2f055d1642e3d8b4c04919e65d3b2
|
|
BLAKE2b-256 checksum How to use checksums |
b6e98b5fb2b8429a176f5fd98f9148f4155a91a4bd9b5d2f73319fdfd25619af
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / llama_index_readers_uniprot-0.4.0-py3-none-any.whl
| Download URL | llama_index_readers_uniprot-0.4.0-py3-none-any.whl |
|---|---|
| Size | 6.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
68f3d694a08e104f4da1f2e272be5b61b8cf997fbedd16746a0a2e6dcfe10305
|
|
BLAKE2b-256 checksum How to use checksums |
43c525fa125618e3a5eb399a83c8c592f91f1d7313869da89393175d23a545e3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for llama-index-readers-uniprot 0.4.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.