Skip to main content

PyCap: Python interface to REDCap

Project description

This project is community maintained. Please continue to submit bugs and feature requests, though it’s the community’s responsibility to address them.

https://github.com/redcap-tools/PyCap/actions/workflows/ci.yml/badge.svg https://codecov.io/gh/redcap-tools/PyCap/branch/master/graph/badge.svg?token=IRgcPzANxU https://badge.fury.io/py/PyCap.svg https://img.shields.io/badge/code%20style-black-black https://mperlet.github.io/pybadge/badges/10.svg

Intro

PyCap is a python module exposing the REDCap API through some helpful abstractions. Information about the REDCap project can be found at http://project-redcap.org/.

Available under the MIT license.

Documentation

Canonical documentation can be found on ReadTheDocs.

Features

Currently, these API calls are available:

  • Export Records

  • Export Metadata

  • Import Metadata

  • Delete Records

  • Import Records

  • Export File

  • Import File

  • Delete File

  • Export Users

  • Export Form Event Mappings

  • Export Reports

Events and Arms are automatically exported for longitudinal projects (see below).

Requirements

  • requests (>= 1.0.0)

    $ pip install requests

Usage

>>> import redcap
# Init the project with the api url and your specific api key
>>> project = redcap.Project(api_url, api_key)

# Export all data
>>> all_data = project.export_records()

# import data
>>> data = [{'subjid': i, 'age':a} for i, a in zip(range(1,6), range(7, 13))]
>>> num_processed = project.import_records(data)

# For longitudinal projects, project already contains events, arm numbers
# and arm names
>>> print project.events
...
>>> print project.arm_nums
...
>>> print project.arm_names
...

# Import files
>>> fname = 'your_file_to_upload.txt'
>>> with open(fname, 'r') as fobj:
...     project.import_file('1', 'file_field', fname, fobj)

# Export files
>>> file_contents, headers = project.export_file('1', 'file_field')
>>> with open('other_file.txt', 'w') as f:
...     f.write(file_contents)

# Delete files
>>> try:
...     project.delete_file('1', 'file_field')
... except redcap.RedcapError:
...     # This throws if an error occured on the server
... except ValueError:
...     # This throws if you made a bad request, e.g. tried to delete a field
...     # that isn't a file

# Delete record
>>> response = project.delete_records(['1'])

# Export form event mappings
>>> fem = project.export_instrument_event_mappings()
...

# Export Reports
>>> reports = project.export_report('1')

Installation

Install with pip

$ pip install PyCap

Install extra requirements, which allows returning project data as a pandas.DataFrame

$ pip install PyCap[pandas]

Install from GitHub

$ pip install https://github.com/redcap-tools/PyCap/archive/master.zip

Contributing

  1. Install poetry

$ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/install-poetry.py | python -
  1. Install all project dependencies (including development/optional dependencies).

$ poetry install -E data_science
  1. Add your changes and make sure your changes pass all tests.

$ poetry run pytest

If you make changes to the dependencies you’ll need to handle them with poetry add/remove and update the requirements.txt with poetry export for the CI to run (until I figure out the best way to actually run poetry in CI)

$ poetry export -f requirements.txt --output requirements.txt --dev -E data_science

Finally, start a pull request!

Citing

If you use PyCap in your research, please consider citing the software:

Burns, S. S., Browne, A., Davis, G. N., Rimrodt, S. L., & Cutting, L. E. PyCap (Version 1.0) [Computer Software]. Nashville, TN: Vanderbilt University and Philadelphia, PA: Childrens Hospital of Philadelphia. Available from https://github.com/redcap-tools/PyCap. doi:10.5281/zenodo.9917

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

PyCap-2.0.0a0.tar.gz (21.5 kB view details)

Uploaded Source

Built Distribution

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

PyCap-2.0.0a0-py3-none-any.whl (27.5 kB view details)

Uploaded Python 3

File details

Details for the file PyCap-2.0.0a0.tar.gz.

File metadata

  • Download URL: PyCap-2.0.0a0.tar.gz
  • Upload date:
  • Size: 21.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.11 CPython/3.9.6 Darwin/20.6.0

File hashes

Hashes for PyCap-2.0.0a0.tar.gz
Algorithm Hash digest
SHA256 5e6f6a7b1c593002ec84f366869881d2d7dacc774f004687a27b85e7153df626
MD5 282b40a7c62ac833b66b0893d0cfda4a
BLAKE2b-256 2933aa4d45bd6a1c0232c44974411d7f6b85432181519082d0156bf78777e38c

See more details on using hashes here.

File details

Details for the file PyCap-2.0.0a0-py3-none-any.whl.

File metadata

  • Download URL: PyCap-2.0.0a0-py3-none-any.whl
  • Upload date:
  • Size: 27.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.11 CPython/3.9.6 Darwin/20.6.0

File hashes

Hashes for PyCap-2.0.0a0-py3-none-any.whl
Algorithm Hash digest
SHA256 7372e47cb15615ebc15af0bcb8f86a927a9cbb6f54f32a24b90359194502bc96
MD5 9a0eed5f91833dba385ab5e409457718
BLAKE2b-256 6b6ea0262a81bd583e693dd690bf24d69c2e35470bd8d22781c385db4427b39c

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