Flask CLI

Flask CLI documentation.

Setup

Data import

At launch time, the app performs an INSERT... ON DUPLICATE KEY UPDATE using a list of files defined in SetupService:

FILE_NAME_TO_DB_TABLE_MAP = {
    "rna_type.csv": RNAType,
    "modomics.csv": Modomics,
    "taxonomy.csv": Taxonomy,
    "ncbi_taxa.csv": Taxa,
    "assembly.csv": Assembly,
    "assembly_version.csv": AssemblyVersion,
    "annotation.csv": Annotation,
    "annotation_version.csv": AnnotationVersion,
    "method.csv": DetectionMethod,
}

These files (rna_type.csv, modomics.csv, taxonomy.csv, ncbi_taxa.csv, assembly.csv, assembly_version.csv, annotation.csv, annotation_version.csv, and method.csv) allow to define base options for project creation, and establish a standard terminology for the application. They must exist and be located under IMPORT_PATH (development) or HOST_IMPORT_DIR (production). By default, this path is located under server/import, and can be specified in the environment file. The import format is CSV, and the header must match the column names (including id) from the corresponding database table.

For example:

  • ncbi_taxa.csv with column names taken from the corresponding declarative model Taxa

id,name,short_name,taxonomy_id
9606,Homo sapiens,H. sapiens,8128e900
10090,Mus musculus,M. musculus,8128e900
  • assembly.csv with column names taken from the corresponding declarative model Assembly

id,name,alt_name,taxa_id,version
1,GRCh38,hg38,9606,K9FeTPiZ4abQ
2,GRCm39,mm39,10090,K9FeTPiZ4abQ
  • annotation.csv with column names taken from the corresponding declarative model Annotation

id,release,taxa_id,source,version
1,110,9606,ensembl,cp6qKL4t4Wws
2,110,10090,ensembl,cp6qKL4t4Wws

where version for assembly and annotation must match the current version specified in assembly_version.csv and annotation_version.csv, respectively.

The models are defined in scimodom.database.models.

The upsert can be done for one model/table at a time, or forced with

flask setup [OPTIONS]

For OPTIONS, use the --help flag, e.g. flask setup --help.

Assembly and annotation

The steps above only allow to define assemblies and annotations in the database, but do not create the required data files. To create assembly and annotation files, use

flask assembly [OPTIONS]
flask annotation [OPTIONS] --source [ensembl|gtrnadb] TAXID

For example, to create the human assembly and annotation data files

flask assembly --id 1
flask annotation --source ensembl 9606

where --id 1 matches the assembly ID from Assembly corresponding to the current human assembly version, as initially specified in assembly.csv, and where Taxa ID 9606 matches the value from Taxa, as initially specified in ncbi_taxa.csv.

Data is written to DATA_PATH (development) or HOST_DATA_DIR (production).

Project and data management

Projects are added with

flask project [OPTIONS] REQUEST_UUID

A user is automatically associated with a project upon creation using the email address given in the template associated with the REQUEST_UUID. After project creation, dataset can be added with

flask dataset [OPTIONS] --assembly INTEGER --annotation [ensembl|gtrnadb] --modification INTEGER --organism INTEGER --technology INTEGER FILENAME SMID TITLE

Dataset upload is normally done via POST request upon login to the running application, accessible through User menu > Data > Dataset upload. These steps, except user-project association, can be done all at once with

flask batch [OPTIONS] --annotation [ensembl|gtrnadb] INPUT_DIRECTORY [REQUEST_UUIDS]...

The note from the standard project metadata template must contain the dataset file name and title as follows: file=filename.bedrmod, title=title. All bedRMod files must be under INPUT_DIRECTORY.

To facilitate batch upload, project templates can be created from a tabulated list of datasets with

flask metadata [OPTIONS] --title TEXT --summary TEXT --surname TEXT --forename TEXT --institution TEXT --email TEXT DATASET_CSV

For a detailed description of DATASET_CSV format, use the --help flag, e.g. flask metadata --help.

A new selection can be added with

flask selection [OPTIONS] --rna TEXT --modification TEXT --taxid INTEGER --cto TEXT --method-id TEXT --technology TEXT

Permissions can be updated with

flask permission [OPTIONS] USERNAME SMID

If required, a project and all associated data can be removed with

flask delete [OPTIONS] SMID

To force update the charts, run

flask sunburst-update [OPTIONS]