Property Status structure

Format

{ dictionary,
"name": property name, string
"kind": property kind, "numeric", "enum" or "func"
"vgroup": group of property, string
"title": optional title, string
"sub-kind": optional sub-kind, string
"render-mode": optional
comma-separated render options, string
"tooltip": optional tooltip, string
"incomplete": optional status is incomplete, true
"detailed": optional transcript data is in counts, true
[ list of integers facet descriptors ]

in case of kind = "numeric"
-----------------------------------
"min": optional minimum value, int or float
"max": optional maximum value, int or float
"counts": optional
[ list
[0]: count of variants (transcipt if detailed, DNA otherwise), int
[1]: optional (if detailed) count of DNA variants, int
[2]: optional (if detailed) count of transcripts, int
]

in case of kind = "enum"
-----------------------------------
"variants": optional [ values status list
[ list
[0]: value, string
[1]: count of variants (transcipt if detailed, DNA otherwise), int
[2]: optional (if detailed) count of DNA variants, int
[3]: optional (if detailed) count of transcripts, int
], ... ]

additional fields for variety property
--------------------------------------
"panel-name": string name of dual panel unit
"panels":
[ list of variants for panel unit ]
"split-info":
[
list of descriptors of blocks of variants, see below
]
"rest-count": optional int, count of rest hidden present property variants

additional fields for variety property
--------------------------------------
"variety-name": string name of dual variety unit
"panel-sol-version": indicator of state for panels

in case of kind = "func"
-----------------------------------
"variants": null``*optional* ``[ values status list
[ list
[0]: value, string
[1]: count of variants (transcipt if detailed, DNA otherwise), int
[2]: optional (if detailed) count of DNA variants, int
[3]: optional (if detailed) count of transcripts, int
], ... ]
"err": optional, error message, string
"rq-id: ID of request series
"no": optional position on tree, int as string
...: function environment
}

Description

The data structure is used in return values of requests ds_stat, dtree_stat, statunits and statfunc. It represents status report for a filtering property applied to selected set of variants. In case of workspace selection also applies to transcript variants.

See discussion in Status report mechanism (with delays) for understanding general principle and details.

See discussion in UX settings of filtration properties for understanding UX settings for filtering properties: title, tooltip, classes, render-mode.

In context of requests ds_stat, dtree_stat status report can be incomplete. In this case the property incomplete is set and details of status (min/max/count for numeric properties and variants for enum ones) do not present in structure.

In complete state details of status are always set. If status reports for filtering properties (of numeric or enum type) is incomplete, use request statunits to get them in complete state.

In detailed case (workspace context) the main items for counting are transcript variants, so count values form triplet of values in list, first one is for transcript variants, second for DNA ones, and last for transcripts. Otherwise only single DNA variant count is provided in lists.

Property sub-kind can have the following values (transcipt-based subkinds are provided only in workspace context):

kind

sub-kind

"numeric"

"int"

"float"

"transcript-int"

"transcript-float"

enum

"status"

"multi"

"transcript-status"

"transcript-multi"

func

type of function

Variants for enumerated properties

Complete status report for enumerated filtering properties contains counters for all value variants registered in dataset. So in generic case report contains multiple entries with zero counts.

On stage of rendering status report it is reasonable to hide entries with zero counts. Really, there is no need for user to see values that do not present in selection. So in "normal" case they are to be hidden.

But: rendering of status report can be done in context of existing condition, and that condition might refer variants with zero count in current selection. In this case zero count variants should be visible and actual of them should be checked.

Moreover: some variants referred in condition might not be registered in this concrete dataset, and the user does not need to care of that fact. So these variants should be added to list of variants on the client side (with zero counts).

And yet one problem: some variant lists have uncontrolled size. For example, it happens with property Symbol in almost any XL-dataset: indeed, tens of thousands known genes can appear in this list! In context of workspace, with no more than 9000 variants, this list is not more than some thousands, it is comparatively good. But even in this case: the user has problems in selection of interested variant in so huge lists.

It is really heavy problem for the current version of the system. In future release there should appear an effective and (probably) complex solution of this problem.

Variety/panel properties

Variety and panel properties are enumerated properties with specific behavior discussed here:

  • variants for panel property status structure is always empty, real content of this list contains in dual variety property status structure in the field panels

  • variants for variety property status structure is joined list of blocks, and split-info list describes these blocks in format [ string block type, int count of variants in block ]. Block is present only if it is not empty, it contains sorted list of symbols, and there can be up to two blocks in any case:

    • block of type "active" represents full statistic for active symbols, it is the first block, if presents

    • block of type "rest" represents statistic for all symbol with non-zero statistic that are not active, only if the length of this block is small enough (300 items tn the current version)

    • block of type "used" represents full statistic for non-active symbol used in applied filter or decision tree, if such symbols exist and if "rest" block is absent (i.e. list of rest is too large)

    • rest-count presents in response only if "rest" block is absent

Functions support

For functions property status structure is formed in two different contexts:

  • requests ds_stat, dtree_stat just declare placeholders of function in functions list, so requests return structure with null as variants and additional properties of function environment

  • request statfunc returns property status with non-optional variants or err in case of error in evaluation;

    the client can send multiple requests of such kind in short period of time, so for purposes of request identification the property status in this case contains also:

    • functional environment: values of all arguments,

    • value rq_id (and no in context of decision tree)

See Filtering functions for details and function reference.

See also

ds_stat

dtree_stat

statunits

statfunc

UX settings of filtration properties

UX settings of filtration properties

Variety and panel filtering complex