Command-line interface

Every analysis and transformation is available without the browser GUI. The examples below use conda run, so they work unchanged in PowerShell, Git Bash, and Linux without activating the environment. When the environment is already active, omit conda run --name metaprivbids.

Run metaprivBIDS --help to list commands or metaprivBIDS COMMAND --help for the complete options of one command.

Inspect data and measure privacy

conda run --name metaprivbids metaprivBIDS inspect Use_Case_Data/adult_mini.csv
conda run --name metaprivbids metaprivBIDS inspect Use_Case_Data/adult_mini.csv --continuous-threshold 45 --output column_profile.csv
conda run --name metaprivbids metaprivBIDS privacy Use_Case_Data/adult_mini.csv --columns age,education,marital-status,occupation,relationship,sex --sensitive salary-class
conda run --name metaprivbids metaprivBIDS k-global Use_Case_Data/adult_mini.csv --columns age,education,marital-status,occupation --output k_global.csv
conda run --name metaprivbids metaprivBIDS k-combined Use_Case_Data/adult_mini.csv --columns age,education,marital-status,occupation --min-size 2 --max-size 4 --output k_combined.csv

inspect profiles storage and inferred analysis types. privacy reports sample uniqueness, k-anonymity, and optional l-diversity. k-global evaluates variables individually; k-combined evaluates combinations.

Transform values

conda run --name metaprivbids metaprivBIDS round input.csv --column age --exponent 1 --mode nearest --output rounded.csv
conda run --name metaprivbids metaprivBIDS bin input.csv --column age --bins 5 --output binned_by_count.csv
conda run --name metaprivbids metaprivBIDS bin input.csv --column age --width 10 --output binned_by_width.csv
conda run --name metaprivbids metaprivBIDS remove-decimals input.csv --column age --output whole_numbers.csv
conda run --name metaprivbids metaprivBIDS noise input.csv --column age --distribution laplacian --scale 2 --seed 42 --output laplacian_noise.csv
conda run --name metaprivbids metaprivBIDS noise input.csv --column age --distribution gaussian --scale 2 --seed 42 --output gaussian_noise.csv
conda run --name metaprivbids metaprivBIDS combine input.csv --column occupation --values Sales,Service --replacement Customer-facing --output generalized.csv

Rounding modes are nearest, up, and down. The non-negative exponent selects the power of ten: 0 means units, 1 tens, and 2 hundreds. Binning uses equal-width intervals; provide exactly one of --bins or --width. Noise distributions are laplacian and gaussian. An optional seed makes the noise reproducible.

Replace direct identifiers

conda run --name metaprivbids metaprivBIDS pseudonymize input.csv --id-column ID --output released.csv --key-output identifier_key.csv

This command replaces every complete, unique identifier with a unique alphanumeric value of the same displayed length and randomly reorders the released rows. The separate old-to-new key can reverse the operation. Store it as sensitive data and never distribute it with the released dataset.

Compute CIG, RIG, and PIF

conda run --name metaprivbids metaprivBIDS cig input.csv --columns age,education,occupation --percentile 95 --output cig_values.csv --summary-output cig_summary.csv --outliers-output rig_outliers.csv --outlier-threshold 2.2414

The main output contains row- and cell-level CIG/RIG values. The optional summary and robust MAD outlier tables are separate exports. Use --mask-value nan or another value when it should be masked during the calculation.

Compute SUDA2

conda run --name metaprivbids metaprivBIDS suda input.csv --columns age,education,occupation --sample-fraction 0.2 --output suda_scores.csv --contribution-percent-output suda_contribution_percent.csv --attribute-contributions-output suda_attribute_contributions.csv --attribute-level-output suda_attribute_levels.csv

SUDA2 runs through R and sdcMicro. The main output contains record scores; the optional exports contain cell percentages, variable contributions, and attribute-level contributions. Use --missing-value NUMBER for an explicit missing-value code and --legacy-scores only when legacy scaling is needed.

Inspect JSON metadata

conda run --name metaprivbids metaprivBIDS metadata metadata.json
conda run --name metaprivbids metaprivBIDS metadata metadata.json --column age

Without --column, the complete JSON file is printed. With it, only the entry associated with that column is printed.