A modern, Pydantic-based parser for REFI-QDA (.qdpx) qualitative research files.
Project description
pyrefiqda
A modern Python library mapping REFI-QDA qualitative research files (.qdpx, .qdc) to strict Pydantic models for seamless programmatic integration.
Created to bridge the gap between qualitative coding software (NVivo, MAXQDA, ATLAS.ti) and Python workflows.
📖 Read the Full Documentation and API Reference here
Core Features
- 100% Type-Hinted: Built entirely on Pydantic
BaseModelclasses, ensuring perfect IDE autocomplete and seamless integration with frameworks like PydanticAI. - Standard Compliant: Reads and writes
.qdpx(Project) and.qdc(Codebook) formats. - Media Management: Includes helper functions to abstract away REFI-QDA's internal URI structures, making it easy to read transcripts and package media back into archives.
Installation
pip install pyrefiqda
Why this exists
In qualitative studies, researchers use the REFI-QDA standard to exchange data. However, previous Python tools were GUI-heavy or outdated. pyrefiqda uses xsdata to auto-generate pure Pydantic models directly from the official XML schemas. This abstracts away zipped archives and internal URIs, giving you flawless type-hinting and programmatic access to qualitative data.
Showcase
pyrefiqda makes it incredibly easy to programmatically assemble qualitative coding projects from scratch, package media files, and export standard .qdpx files ready for exchange and review.
import uuid
from pyrefiqda.refiproject import RefiProject
from pyrefiqda.models import (
Project, UsersType, UserType, ProjectCodeBookType,
ProjectCodesType, ProjectCodeType, SourcesType,
TextSourceType, PlainTextSelectionType, CodingType, CodeRefType
)
# 1. Import a raw transcript into the REFI-QDA working directory
working_dir = "./temp_project"
internal_uri = RefiProject.import_source_file("raw_data/interview.txt", working_dir)
# 2. Define a Coder and an emergent Code
user = UserType(guid=str(uuid.uuid4()), name="Coder 1")
code = ProjectCodeType(
guid=str(uuid.uuid4()), name="Theme 1", color="#FF0000"
)
# 3. Create a coding selection (e.g., characters 0 through 100)
selection = PlainTextSelectionType(
guid=str(uuid.uuid4()),
name="Identified Segment",
start_position=0,
end_position=100,
creating_user=user.guid,
coding=[CodingType(
guid=str(uuid.uuid4()),
creating_user=user.guid,
code_ref=CodeRefType(target_guid=code.guid)
)]
)
# 4. Assemble the final Pydantic Project
project = Project(
name="GTM Study",
users=UsersType(user=[user]),
code_book=ProjectCodeBookType(codes=ProjectCodesType(code=[code])),
sources=SourcesType(text_source=[
TextSourceType(
guid=str(uuid.uuid4()),
name="Interview 1",
plain_text_path=internal_uri,
plain_text_selection=[selection]
)
])
)
# 5. Export to a standard .qdpx file (zipping the XML and the media files together)
RefiProject.save(project, "study.qdpx", source_media_dir=working_dir + "/sources")
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 pyrefiqda-0.3.0.tar.gz.
File metadata
- Download URL: pyrefiqda-0.3.0.tar.gz
- Upload date:
- Size: 1.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
017a785b26b21de67b2247eb3806e1f9599d6c9a5481f37effeb3a7b7859aa59
|
|
| MD5 |
cbc5fa79e7e53a9f212f7d43154900f8
|
|
| BLAKE2b-256 |
e762c7ac0db10f5e699f78fefe0d5fa009026307d326daf51870557dae6f7fb8
|
File details
Details for the file pyrefiqda-0.3.0-py3-none-any.whl.
File metadata
- Download URL: pyrefiqda-0.3.0-py3-none-any.whl
- Upload date:
- Size: 12.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b4c242648c7ceb5946d15b8b1f0a135b08dac6914b25700f2714f2e215734482
|
|
| MD5 |
13376761ff95c98405344822759ae50c
|
|
| BLAKE2b-256 |
f6c1b9e18ec57393b88a451f21da749fbce21b6686af69f8d063e276ad717337
|