# NAME

bff-pxf-simulator: A script that creates a JSON array of simulated BFF/PXF

# SYNOPSIS

bff-pxf-simulator \[-options\]

     Options:
       -f, --format <format>          Format [bff|pxf]
       -n, --number <number>          Set the number of individuals to generate [100]
       -o, --output <file>            Output file [individuals.json]
       --external-ontologies <file>   Path to a YAML file containing ontology terms
       --random-seed <seed>           Initializes pseudorandom number sequences (seed must be an integer)

       --diseases <number>            Set the number of diseases per individual [1]
       --exposures <number>           Set the number of exposures per individual [1]
       --phenotypicFeatures <number>  Set the number of phenotypic features per individual [1]
       --procedures <number>          Set the number of procedures per individual [1]
       --treatments <number>          Set the number of treatments per individual [1]
       --max-[term]-pool <size>       Limit the selection to the first N elements of the term array
       --max-ethnicity-pool <size>    Restrict the ethnicity pool size; each individual will have only one ethnicity

     Generic Options:
       -debug <level>                 Print debugging (from 1 to 5, being 5 max)
       -h, --help                     Brief help message
       -man                           Full documentation
       -v, --verbose                  Verbosity on
       -V, --version                  Print version

# DESCRIPTION

This script generates a JSON array of simulated BFF/PXF data. The files can be created based on pre-loaded ontologies or by utilizing an external YAML file.

# SUMMARY

A script that creates a JSON array of simulated BFF/PXF. 

Implemented array terms:

**BFF:** `diseases, exposures, interventionsOrProcedures, phenotypicFeatures, treatments`. 

procedures = interventionsOrProcedures

**PXF:** `interventionsOrProcedures, medicalActions.procedure, medicalActions.treatment, phenotypicFeatures`.

procedures = medicalActions.procedure

treatments = medicalActions.treatment

# INSTALLATION

(only needed if you did not install `Pheno-Ranker`)

    $ cpanm --sudo --installdeps .

### System requirements

    * Ideally a Debian-based distribution (Ubuntu or Mint), but any other (e.g., CentOs, OpenSuse) should do as well.
    * Perl 5 (>= 5.10 core; installed by default in most Linux distributions). Check the version with "perl -v"
    * 1GB of RAM.
    * 1 core (it only uses one core per job).
    * At least 1GB HDD.

# HOW TO RUN BFF-PXF-SIMULATOR

When run without any arguments, the software will use default settings. To modify any parameters, please refer to the synopsis for guidance.

If you prefer not to include a specific term in the analysis, set its value to zero. For example:

`--treatments 0`

**Examples:**

    $ ./bff-pxf-simulator -f pxf  # BFF with 100 samples

    $ ./bff-pxf-simulator -f pxf -n 1000 -o pxf.json # PXF with 1K samples and saved to pxf.json

    $ ./bff-pxf-simulator -phenotypicFeatures 10 # BFF with 100 samples and 10 pF each

    $ ./bff-pxf-simulator -diseases 0 -exposures 0 -procedures 0 -phenotypicFeatures 0 -treatments 0 # Only sex and ethnicity

## COMMON ERRORS AND SOLUTIONS

    * Error message: Foo
      Solution: Bar

    * Error message: Foo
      Solution: Bar

# AUTHOR 

Written by Manuel Rueda, PhD. Info about CNAG can be found at [https://www.cnag.eu](https://www.cnag.eu).

# COPYRIGHT AND LICENSE

This PERL file is copyrighted. See the LICENSE file included in this distribution.
