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.5.tar.gz (23.0 kB 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.5-py3-none-any.whl (15.4 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for pyqdpx-0.1.5.tar.gz
Algorithm Hash digest
SHA256 704a571a95603bed5a6ee2c0ab3731ced9891287b7e50d3e67878797b2df0f96
MD5 6644e699c3a3e47e2631bbc8b8eb83f0
BLAKE2b-256 7e347db6c7a259691481bb026ddac7667cc3258d61ecb70c686abd97ccec78d7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyqdpx-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 15.4 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.5-py3-none-any.whl
Algorithm Hash digest
SHA256 1f82ed81689043259388b344b295f9991bf477da16701bcb92636aa4c1eb81f3
MD5 763ca9e7a8f8c80cc1963c184cf36722
BLAKE2b-256 41f5bc6983996af122aeec084c48637eac083967130e2d139a19ff8b8fee2c11

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