Skip to main content

CLI

bff-tools {validate,vcf,tsv,demo,doctor,install-resources,test,compare} [options]

Run bff-tools <command> --help for the installed version. Conversion creates a new project directory and never overwrites an existing one.

validate

With XLSX input, this command converts each populated worksheet into a BFF JSON collection, validates its records, and writes valid collections to the output directory. With JSON input, it validates the existing collections without rewriting them.

Export the packaged template:

bff-tools validate --template-out metadata.xlsx

Build and validate BFF JSON from a workbook:

bff-tools validate -i metadata.xlsx -o bff

Validate one or more collection files:

bff-tools validate -i individuals.json biosamples.json
OptionMeaning
-i, --input FILE ...One XLSX workbook or one or more named JSON collections
--template-out PATHExport a fresh metadata workbook instead of validating
-o, --out-dir DIRXLSX serialization destination; created when absent
-s, --schema-dir DIROverride the packaged dereferenced schemas
--gvInclude the workbook genomicVariations sheet or JSON collection
--gv-vcfStream generated genomicVariationsVcf.json[.gz] or .jsonl[.gz] records
--check-schemaSelf-validate all schemas when used alone, or each input-selected schema before checking data
--ignore-validationWrite workbook output despite validation issues
--verbosePrint progress for large inputs

Validation exits nonzero when schema issues are found, unless they are explicitly ignored. bff-tools validate --check-schema checks the complete schema registry without requiring input data. Combined with --input, it checks only the selected schemas before ordinary record validation.

demo

Exercise the installed converter, schema validator, and standalone browser using a packaged, fully annotated fixture:

bff-tools demo

The default destination is a new bff-tools-demo/ directory. Use --output-dir DIR to select another path or --no-browser to generate only BFF. The command requires no external annotation resources because it does not rerun annotation; it is an onboarding example, not a raw-VCF integration test.

doctor

Check packaged assets and the annotation profile selected for the current environment without executing a pipeline:

bff-tools doctor --genome hg38

The default profile is hg19; b37 is accepted as an alias for hs37. Use -c FILE or --config FILE to inspect a custom layout and --no-color for plain output. Configuration and data-root precedence match conversion commands.

An installation without external resources exits successfully as CORE READY (annotation not configured). Missing or invalid paths selected explicitly through BFF_TOOLS_DATA, BFF_TOOLS_CONFIG, or --config exit nonzero. READY means the selected raw-annotation profile also passed.

install-resources

Install the maintained external annotation bundle into the directory selected by BFF_TOOLS_DATA:

export BFF_TOOLS_DATA=/absolute/path/to/beacon2-cbi-tools-data
bff-tools install-resources

Pass --data-dir DIR instead of exporting the environment variable, or use --print-links to list the public Google Drive files for manual download. The command reuses existing files, verifies every archive part, assembles and extracts the bundle, and creates its writable tmp/ directory.

test (development)

Developers and bundle maintainers can run the packaged compact annotation integration test against the selected external bundle:

export BFF_TOOLS_DATA=/absolute/path/to/beacon2-cbi-tools-data
bff-tools test

The command annotates the packaged chromosome 1 1000 Genomes fixture, validates the resulting BFF, and compares all records semantically with the versioned reference output. It does not run the external CINECA chromosome 22 fixture. It is a development and bundle check, not a required user workflow. Use --data-dir DIR instead of the environment variable, --threads N for annotation, or --output-dir DIR to retain the generated project. Add --verbose for detailed pipeline output or --no-color for plain stage labels.

The release-scale chromosome 22 procedure uses the regular bff-tools vcf and bff-tools validate commands plus the installed bff-tools compare command. Do not use plain diff or compare compressed-file checksums for this parity gate. See Full CINECA Release Fixture.

compare

Compare two BFF genomic-variation files semantically. The command streams compressed or uncompressed JSON, ignores run-specific provenance and known order-only differences, and exits nonzero with the first differing record and JSON path:

bff-tools compare \
--expected reference/genomicVariationsVcf.json.gz \
--actual run/vcf/genomicVariationsVcf.json.gz

vcf

Annotate and convert raw VCF input:

export BFF_TOOLS_DATA=/absolute/path/to/beacon2-cbi-tools-data
bff-tools vcf -i cohort.vcf.gz --genome hg38 --dataset-id cohort-1

Annotation is enabled by default because the converter requires a compatible SnpEff ANN header. Pass --no-annotate only when the input VCF is already annotated. Raw input requires the external annotation bundle selected through BFF_TOOLS_DATA.

bff-tools vcf -i cohort.annotated.vcf.gz \
--genome hg38 --dataset-id cohort-1 --no-annotate

The input may be plain .vcf or gzip/BGZF-compressed .vcf.gz. Single-sample and multi-sample VCFs are supported. gVCFs must first be genotyped or converted to a standard variant VCF.

tsv

bff-tools tsv -i genotypes.txt.gz --sample-id sample-1 --genome hg19

TSV conversion creates a VCF intermediate, annotates it, and then uses the same VCF-to-BFF converter. Annotation cannot be disabled for TSV input.

Conversion Options

OptionMeaning
-i, --input FILEInput VCF, TSV, or supported compressed equivalent
-p, --param FILEOptional YAML parameters
-c, --config FILEOverride the packaged external-tool and annotation-resource layout
-o, --project-dir DIRExplicit new run directory
-t, --threads NPositive thread count passed to external stages and compression
--genome NAMEhg19, hg38, hs37, or b37
--dataset-id IDDataset identifier embedded in BFF records
--sample-id IDSample identifier used by TSV conversion
--annotate, --no-annotateAnnotation is enabled by default; disable only for a compatibly annotated VCF
--browser, --no-browserEnable or disable standalone HTML generation
--jsonl, --no-jsonlWrite JSON Lines (.jsonl.gz) instead of the default JSON array
--verboseStream stage output rather than showing the interactive spinner
--progress-every NWith --verbose, report VCF progress every N records (default: 10,000)

Values supplied directly on the command line override parameter YAML values. YAML values override built-in defaults.

BFF_TOOLS_DATA overrides the {base} root in the selected resource layout. Layout selection is explicit --config, then BFF_TOOLS_CONFIG, then the repository or packaged default. Absolute paths in a custom layout remain unchanged.

The Python VCF-to-BFF conversion itself is single-process and streaming. Increasing -t helps only stages that support threads; it does not partition records across Python workers.

Standard BFF JSON arrays remain the default for compatibility. Use --jsonl when a downstream tool such as mongoimport benefits from one complete JSON document per line. Browser generation and validate --gv-vcf accept either generated format.

For finer-grained diagnostics on a short file, combine --verbose with a smaller interval, for example --progress-every 100. The same option is available when running src/bff_tools/vcf2bff.py directly. Progress is also retained in <project>/vcf/run_vcf2bff.log.

Common Options

OptionMeaning
--verbosePrint stage output and converter progress instead of the interactive spinner
--debug NPreserve detailed execution output for diagnosis
-nc, --no-colorDisable ANSI colors
-ne, --no-emojiDisable emoji output
-V, --versionPrint the application version

Exit Behavior

  • argument, configuration, preflight, and pipeline failures exit nonzero;
  • validation issues exit nonzero unless --ignore-validation was explicitly supplied;
  • a VCF without a usable SnpEff ANN header exits nonzero with instructions to annotate it;
  • stage failures name the generated log file to inspect.

Removed Commands

The former load and full commands were retired in 2.0.13. Data preparation remains in bff-tools; database deployment remains independent. See MongoDB Import for the preserved indexing and loading procedure.