molgenis
8.7
8.7
  • Introduction
  • What is MOLGENIS
  • Try out MOLGENIS
  • Quick start (docker)
  • Find, view, query
    • Using the navigator
    • Using the search-all
    • Using the dataexplorer
    • Setup authentication
  • Data management
    • EMX format
    • Quickly import data
    • Advanced data import
    • Modify metadata
    • Questionnaires
    • Downloading data
    • Using expressions
  • Access control
    • Users
    • Groups and roles
    • Finegrained permissions
  • Data processing
    • Scripts
    • R
    • Python
    • Schedule jobs
  • Configuration
    • Settings
    • Customize MOLGENIS
    • Localization
    • Apps in MOLGENIS
    • Creating themes
    • Migration
    • Auditing
  • Interoperability
    • Swagger specification
    • Data API
    • Metadata API
    • REST api v1
    • REST api v2
    • Files api
    • Import api
    • Permission api
    • Python-api client
    • R-api client
    • Beacon api
    • FAIR api
    • RSQL operators
  • For developers
    • Developing MOLGENIS
    • Developing frontend in MOLGENIS
    • Developing Apps in MOLGENIS
    • Using an IDE (Intellij)
    • Technologies
    • Dynamic decorators
    • Running the integration tests
    • Jobs
    • Security
  • Deploy MOLGENIS
    • Using RPM
    • Technical Migration
Powered by GitBook
On this page
  • Using expressions
  • Introduction
  • Chaining operations
  • Terminal operations
  • Special case: reference types
  1. Data management

Using expressions

PreviousDownloading dataNextAccess control

Last updated 4 years ago

Using expressions

Introduction

For some entity type attributes an expression can be set that determines whether or not a condition is true based on the attribute values e.g. to determine whether values are valid. The expression format is based on the .

Examples

The following expression returns true when the value of attribute 'myAttributeName' of an entity only contains alphanumberic characters:

$('myStringAttributeName').matches(/^[a-z0-9]+$/i).value()

In this example:

  • '$(...)' is the selector

  • 'myStringAttributeName' is an attribute name

  • 'matches' is a chaining operation

  • 'value' is a terminal operation

Chaining operations allows you to express complex expressions:

$('myIntAttributeName').gt(3).and($('myIntAttributeName').lt(6)).value()

Chaining operations

Numerical operations

Operator

Parameters

Example

Description

plus

Number

$('height').plus(100).value()

height + 100

pow

Number

$('height').pow(100).value()

height ^ 100

times

Number

$('height').times(100).value()

height * 100

div

Number

$('height').div(100).value()

height / 100

gt

Number

$('height').gt(100).value()

height > 100

lt

Number

$('height').lt(100).value()

height < 100

ge

Number

$('height').ge(100).value()

height >= 100

le

Number

$('height').le(100).value()

height <= 100

Binary operations

Operator

Parameters

Example

Description

eq

Number

$('height').eq(100).value()

height === 100

matches

Regex

$('name').matches(/^[a-z0-9]+$/i).value()

name is alphanumerical

isNull

-

$('height').isNull().value()

height === null

not

-

$('hasEars').not().value()

!hasEars

or

Expression

$('male').or($('female')).value()

male

female

and

Expression

$('female').and($('pregnant')).value()

female && pregnant

Unit operations

Operator

Parameters

Example

Description

unit

Unit

$('height').unit('cm')

Sets the current value unit to cm

toUnit

Unit

$('height').unit('m').toUnit('cm').value()

Converts the current value based on the change in units

Other

Operator

Parameters

Example

Description

age

-

$('dateOfBirth').age().value()

Returns the age based on the date of birth and the current year

map

Object

$('data').map({0:1, 1:2}).value()

Maps categories to each other

group

Array

$('age').group([18, 35, 50, 75]).value()

Produces left-inclusive ranges with the given boundaries, i.e. (-∞, 18), [18, 35), [35, 50), [50, 75), [75, +∞) and then returns the interval that the attribute value is in, i.el '18-35'

attr

String

$('person').attr('name').value()

Returns the value of an attribute of a reference

Terminal operations

Operator

Parameters

Example

Description

value

-

$('height').value()

JavaScript value

Special case: reference types

If an attribute is a reference type (MREF, XREF, CATEGORICAL, CATEGORICAL_MREF) you can use the 'attr' operation, to access the values of different columns in the row being referenced. E.g. $('cookie').attr('name').value() gives you the value of the name column inside the table being referenced by the cookie column. See below for a more detailed example.

Imagine table A referencing table B.

Table A has 2 columns: id, cookie. Table B has 3 columns: id, name, tastiness.

The cookie column in table A references table B.

Table A

id

cookie

A

1

Table B

id

name

tastiness

1

Chocolate chip

9/10

Expressions allow you to do the following

// Expressions are based on table A

$('cookie').value() // results in '1'
$('cookie').attr('id').value() // results in '1'
$('cookie').attr('name').value() // results in 'Chocolate chip'
$('cookie').attr('tastiness').value() // results in '9/10'

In the following case, we have Table A which has multiple references to Table B e.g. an MREF

Table A

id

cookie

A

1,2,3

Table B

id

name

tastiness

1

Chocolate chip

9/10

2

Strawberry cookie

10/10

3

Banana cookie

7/10

// Expressions are based on table A

$('cookies').map(function (cookie) {
    // Pick one of the following
    return cookie.value()                   // results in ['1', '2', '3']
    return cookie.attr('id').value()        // results in ['1', '2', '3']
    return cookie.attr('name').value()      // results in ['Chocolate chip', 'Strawberry cookie', 'Banana cookie']
    return cookie.attr('tastiness').value() // results in ['9/10', '10/10', '7/10']
}).value()
Magma JavaScript API