Skip to main content

A Python module to process Qualitative Data Exchange (QDPX) XML files.

Project description

pyqdpx

A Python module to process Qualitative Data Exchange (QDPX) XML files, which are zip-compressed archives containing a project.qde XML file and a Sources directory.

Features

  • List source files within a .qdpx archive.
  • Retrieve content of individual source files.
  • Load and manipulate project.qde XML data.
  • Manage users (add, list) within the project.
  • Manage qualitative codes (add, modify, delete, navigate hierarchy).
  • Save modifications back to the .qdpx archive, ensuring data integrity.

Installation

You can install pyqdpx using pip:

pip install pyqdpx

If you want to install from source for development:

git clone https://github.com/DEPT-metagenom/pyqdpx.git
cd pyqdpx
pip install .

Usage

Here's a quick example of how to use pyqdpx:

from pyqdpx import QDPX, User, Code
import os

# Assume 'my_project.qdpx' exists and is a valid QDPX file
# For demonstration, you might create a dummy file first as in your tests.

# Initialize the QDPX object
qdpx_file = QDPX("my_project.qdpx")

# Get the QDE project
project = qdpx_file.get_project()

if project:
    print("Project Title:", project._bs4_obj.find('Title').string)

    # List users
    print("\nUsers:")
    for user_guid, user_obj in project.users.items():
        print(f"- {user_obj.name} (ID: {user_obj.id})")

    # Add a new user
    new_user = User(id="AL", name="Ada Lovelace")
    project.add_user(new_user)
    print(f"\nAdded new user: {new_user.name}")

    # Print code tree
    print("\nCode Tree:")
    project.print_code_tree()

    # Find and modify a code
    susceptibility_code = project.find_code("1. Perceived Susceptibility")
    if susceptibility_code:
        print(f"\nOriginal Susceptibility Description: {susceptibility_code.description}")
        susceptibility_code.description = "Updated description for perceived susceptibility."
        print(f"New Susceptibility Description: {susceptibility_code.description}")

    # Save changes (this will update the project.qde inside the zip)
    project.save()
    print("\nProject saved successfully!")
else:
    print("Could not load project.")

# Clean up (if you created a dummy file for testing)
# os.remove("my_project.qdpx")

Running Tests

To run the unit tests, navigate to the root directory of the package (pyqdpx_package/) and use pytest:

pip install pytest
pytest

Contributing

Contributions are welcome! Please feel free to open issues or submit pull requests.LicenseThis 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

pyqdpx-0.1.7.tar.gz (2.9 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyqdpx-0.1.7-py3-none-any.whl (19.9 kB view details)

Uploaded Python 3

File details

Details for the file pyqdpx-0.1.7.tar.gz.

File metadata

  • Download URL: pyqdpx-0.1.7.tar.gz
  • Upload date:
  • Size: 2.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pyqdpx-0.1.7.tar.gz
Algorithm Hash digest
SHA256 347413fc19e0df0d500c1147aa4f39ce2ac8f5f4c384f20c220bc43601aceea7
MD5 ceb83d57f5b01237780a074474640216
BLAKE2b-256 4d128c08dbcf72f00579aca9fb099d1c3f2831627645c746b7f965cd42598eba

See more details on using hashes here.

File details

Details for the file pyqdpx-0.1.7-py3-none-any.whl.

File metadata

  • Download URL: pyqdpx-0.1.7-py3-none-any.whl
  • Upload date:
  • Size: 19.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pyqdpx-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 366fd97164775aa67aac7f1508f8dd3a7e7840812bafdc95745dd4fd9bbe388c
MD5 6fb6d215b52617363c42ffac4f9956c3
BLAKE2b-256 be5ad6e922879496a46db4bbdf13a34170e84566a61c4bf24f7a1371161b8a54

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page