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.8.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.8-py3-none-any.whl (19.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pyqdpx-0.1.8.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.8.tar.gz
Algorithm Hash digest
SHA256 deece03761039e7567835e4728eaec40cf468bca1ff57f074808ad2bf34e08e3
MD5 fa8be6d0532fc8c3e2802256c7ed0a9d
BLAKE2b-256 5dd6e49815556088cd6e24412002543f731cfcb5f854bfb946ca44193f3b4862

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyqdpx-0.1.8-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.8-py3-none-any.whl
Algorithm Hash digest
SHA256 b5401f163355a09744cc3ab2bceab7b728386d02d3024e8ec90c3e790315d3e0
MD5 050608c9198e685c427784c7a87b715e
BLAKE2b-256 5765483ffff59aa3cda02fdf47959598ba314053c0002751ebb6420d40e917cd

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