Skip to main content

Sample Python Project for creating a new Python Module

Project description

Skullduggery

skullduggery artwork

Skullduggery is a BIDS app for automated defacing of anatomical MRI images. It removes identifiable facial features from anatomical neuroimaging data while preserving brain tissue, protecting participant privacy in neuroimaging studies.

Features

  • Automated defacing - Uses template-based registration and hard-coded anatomical markers
  • Age-specific templates - Supports pediatric cohorts with age-based template selection from TemplateFlow
  • BIDS-compatible - Full integration with BIDS datasets and metadata
  • Multi-series support - Process multiple anatomical series in a single run
  • Quality assurance - Generates HTML reports with mosaic visualizations
  • DataLad integration - Optional support for git-annex metadata tracking
  • Flexible filtering - Select specific participants/sessions with BIDS filters

Installation

Basic Installation

pip install skullduggery

With DataLad Support

For optional git-annex metadata tracking:

pip install skullduggery[datalad]

Development Installation

pip install -e ".[test]"

Quick Start

Deface Your First Dataset

skullduggery /path/to/bids/dataset --participant-label 01 --report-dir ./reports

Process Multiple Participants

skullduggery /path/to/bids/dataset \
  --participant-label 01 02 03 \
  --save-all-masks \
  --report-dir ./defacing_reports

For Pediatric Data

skullduggery /path/to/bids/dataset \
  --template MNIInfant:cohort-06m09m \
  --report-dir ./pediatric_reports

Documentation

Complete command-line documentation is available in the Usage Guide and Examples.

  • Getting Started - Quick overview and your first command
  • Usage Guide - All command-line options explained
  • Command Reference - Quick lookup for flags and arguments
  • Examples - 12 real-world scenarios with complete commands

View the full documentation at: docs/ or online

Command-Line Options

Required Arguments

  • BIDS_PATH: Path to the BIDS dataset directory

Optional Arguments

  • --participant-label - Process specific participants (space-separated IDs, prefix 'sub-' optional)
  • --session-label - Process specific sessions (space-separated IDs, prefix 'ses-' optional)
  • --template - TemplateFlow template name (default: MNI152NLin6Asym)
  • --default-age VALUE:UNIT - Fallback age for participants missing age data (e.g., 5:years)
  • --save-all-masks - Save defacing masks for all series (default: only reference series)
  • --report-dir DIR - Directory for HTML reports and visualizations
  • --ref-bids-filters JSON - BIDS filters for selecting reference image (default: {"suffix": "T1w", "datatype": "anat"})
  • --other-bids-filters JSON - BIDS filters for images to deface (default: [{"datatype": "anat"}])
  • --datalad - Enable DataLad integration for metadata tracking
  • --deface-sensitive - Only deface images marked with distribution-restrictions metadata
  • --force-reindex - Force pyBIDS database reindexing
  • --debug LEVEL - Set logging level (default: info)

How It Works

The defacing pipeline follows these steps:

  1. Template Selection - Loads appropriate template from TemplateFlow (age-specific if available)
  2. Reference Registration - Registers participant's reference image to template space
  3. Mask Warping - Warps template-space defacing mask to participant's native space
  4. Series Defacing - Applies mask to all anatomical series for the participant
  5. Report Generation - Creates HTML reports with QA visualizations
  6. Optional Commit - Saves changes to DataLad repository if enabled

Preprocessing Requirements

Before running skullduggery, ensure your dataset:

  • Follows the BIDS standard
  • Contains valid participants.tsv (with optional age column for pediatric templates)
  • Has anatomical images in proper BIDS format

Output Files

Skullduggery creates:

  • Defaced images - In-place modification of anatomical NIfTI files
  • Defacing masks - *desc-deface_mask.nii.gz files (if requested)
  • Transformation matrices - *_from-T1w_to-<template>_xfm.mat files
  • HTML reports - With registration and defacing visualizations
  • Metadata - DataLad metadata updates (if enabled)

Examples

Process All Participants

skullduggery /data/mybids

Process Specific Pediatric Cohort

skullduggery /data/mybids \
  --participant-label 001 002 003 \
  --template MNIInfant \
  --default-age 6:months

Generate Detailed Reports

skullduggery /data/mybids \
  --save-all-masks \
  --report-dir ./qa_reports \
  --debug debug

With Distribution Restrictions Filtering

skullduggery /data/mybids \
  --deface-sensitive \
  --datalad

Documentation

Contributing

See CONTRIBUTING.md for guidelines on reporting issues and contributing code.

License

This project is licensed under the MIT License. See LICENSE for details.

Citation

If you use Skullduggery in your research, please cite:

@software{skullduggery,
  title={Skullduggery: Automated Defacing of Neuroimaging Data},
  author={Pinsard, Basile},
  url={https://github.com/UNFmontreal/skullduggery},
  year={2024}
}

Support

For issues, questions, or suggestions, please open an issue on GitHub.

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

skullduggery-0.0.2rc150.post1.tar.gz (977.3 kB view details)

Uploaded Source

Built Distribution

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

skullduggery-0.0.2rc150.post1-py3-none-any.whl (189.8 kB view details)

Uploaded Python 3

File details

Details for the file skullduggery-0.0.2rc150.post1.tar.gz.

File metadata

  • Download URL: skullduggery-0.0.2rc150.post1.tar.gz
  • Upload date:
  • Size: 977.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.34.2

File hashes

Hashes for skullduggery-0.0.2rc150.post1.tar.gz
Algorithm Hash digest
SHA256 2f43db4f17e675e6ee6b11d69f41bad459f020d8e889ca8e9b4c9be48cc40e4d
MD5 c15c5b021db1b97441896854e7542382
BLAKE2b-256 5f77cff36b24c44f46cae6c244c86ae23992eeaff5c6db633171f9d5544f104e

See more details on using hashes here.

File details

Details for the file skullduggery-0.0.2rc150.post1-py3-none-any.whl.

File metadata

File hashes

Hashes for skullduggery-0.0.2rc150.post1-py3-none-any.whl
Algorithm Hash digest
SHA256 34ec5090c1d05fe19db3c0e76d867162975bdc44a1b0e90202a3ca5dcdfeed01
MD5 e98ec0098cde447d699ca05e13c27065
BLAKE2b-256 f161872de017312c9453d24a3d33a3ab9c59e5db9eadee5695c9ea49a74864cb

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