KDSmart facilitates the recording or scoring of Traits for Trials and Nurseries. Traits are usually phenotypic information although this arbitrary.
KDSmart scoring screens are designed to allow quick recording of measurements, usually with a single touch.
Traits can be defined with validation rules to facilitate strict data capture rules to assist preventing recording errors. These rules can also be utilised to also make scoring more efficient by minimising the required keystrokes.
Traits are the quality or characteristic being inspected, measured and recorded for the organism. Within KDSmart Traits have the following characteristics:
- User definable;
- Defined by six different data types;
- New Traits can be created in the field if required;
- Optionally lockable once scored to prevent accidental change;
- Importable from CSV;
- Exportable to CSV;
- Can be grouped into Bundles for easier management.
The following table lists the attributes of a Trait:
|Trait Name||Must be unique and short for display in the Scoring screen where space is limited on smaller devices (i.e. Phones).|
|Alias||An alternative Trait name, useful when the Trait name is too long for the screen.|
|Description||This is an optional longer explanation of the Trait to assist in data entry.|
Constrains permitted values of Traits. Types available are:
For details refer to Trait Data Types
|Unit||An arbitrary term for the unit of the Trait to assist with what value to enter when scoring (e.g. Do I enter the measurement in ‘millimetres’ or ‘centimetres’).|
|Validation Rule||The Validation rule optionally restricts the values being entered. The nature of the rule is dependent upon the selection of Data Type.|
Within the Scoring screen, a long press of any Trait name will:
- Display the Trait details; and
- Allow editing of the Trait value if it is locked.
Traits loaded from CSV all default to the Text data type unless they have previously been loaded or defined. Once loaded you may edit the Trait definition to define its data type etc.
If Locking Scored Traits is activated , KDSmart assists preventing users inadvertently changing already scored values by reminding that the Trait already has a value recorded. The value can still be changed if that is really your intention.
When preparing Traits it is recommended that the use spaces in Trait names is avoided and underscores are used instead. For example instead of ‘Plant Height’ use ‘Plant_Height’.
Should KDXplore software be used after scoring it has the ability to calculate Trait values from other Traits, however is restricted if Trait names contain spaces.
Trait Data Types¶
The following table describes the available data types for Traits:
|Data Type||Description||Data Entry Style||Example Validation Rule|
|TEXT||No constraint on what may be entered.||A text input field with a full keyboard.||No rule required|
|CATEGORICAL||Value is constrained to be one from a list of allowed values.
Translations to other languages are supported.
|A list of the allowed values is presented and the user touches the value desired.||Example:
There must be at least two values provided in the “pipe” (|) separated list.
In a later release the format will support providing a description for each value. This will likely be of the form
To prevent future problems you should not use the colon (:) character in any current value.
|DATE||Value is a date.||A calendar is presented from which to choose a date.||May be left blank or specified as date|
|ELAPSED_DAYS||Value is the number of days since the Trial’s Planting Date.
The range in the calendar is constrained by the start date and an optional upper limit.
KDSmart stores the values as a date but presents the value as a number when required.
|A list of days “around” the current date is presented and the user touches the desired value or chooses “Other” to use a calendar to pick a date outside this range.
The choices in the list (-3d, -2d, -1d, Today, +1d, +2d, +3d) may be presented in different languages depending on locale support.
|May be left blank or specified as
To enforce a maximum value, use:
|INTEGER||Integer numeric values in a range specified.
The range is specified as a lower and upper bound and whether or not the bounds are included in the range.
|If the number of values is “small” then entry is similar to the Categorical data type. Otherwise, a numeric keypad is presented (excluding a decimal point key).
The changeover from Categorical style to numeric keypad may be altered in the Settings screen.
For Example: RERANGE(1..5) presents as a list of choices: 1,2,3,4 but RANGE(1..500) presents a keypad.
|Specify the range of values as:
or use LERANGE, RERANGE, BERANGE to exclude the left, right or both limits respectively.
means the accepted values are
-1, 0, 1, 2, 3, 4
Note: If you use a custom keyboard, this may affect the appearance of the numeric keypad.
|DECIMAL||Specify a lower and upper bound and whether or not the bounds are included in the range and the number of digits of precision that will be recorded.||Entry is done using a numeric keypad that includes the decimal point.
NOTE: If you use a custom keyboard, this may affect the appearance of the numeric keypad.
or use LERANGE, RERANGE, BERANGE
However, min and max must now contain a decimal point and at least one digit following the point.
means accept values for x where 1.00 < x < 2.99
(the greater number of digits after the ”.” for min/max is the “precision” desired)
|CALC||Calculated or Derived Trait.
See Calculated or Derived Traits below for further description.
|Data entry is not permitted for this type.
Traits with this data type CANNOT be scored during Data Collection.
|A simple calculated or derived Trait is:
CALC( max(PH_CM/5,1) )
This calculation references a Trait named PH_CM, dividing the value by 5 and returning the maximum of the division or 1, whichever is the greater. So a value of 17 for PH_CM gives a result of 3.
CALC( max(PH_CM/5,1) , 1 )
will retain the result with one decimal place.
In this case the value of 17 for PH_CM results in 3.4.
Why can’t I import my CALC trait?!
- Ensure validation rules using comma’s (e.g. CALC( max(PH_CM/5,1) , 1 )) are wrapped by double quotes (e.g. “CALC( max(PH_CM/5,1) , 1 )”). Excel handles this automatically.
- Ensure the number of opening and closing brackets match (It’s an easy thing to miss at a glance).
- Trait names that use white spaces in their names cannot be used for derived CALC traits.
Calculated or Derived Traits¶
The validation rule has either one or two components (with a comma separating them if required):
- The first component provides a formula that may reference other Traits (by the Trait Name), using the operators and functions listed below.
- If present, the second component indicates the number of decimal digits to retain in the computed result.
The functions available are in a table below. Arithmetic operators are:
* / % (the last is the modulo operation)
+ - (unary minus is also supported)
^ ** (for exponentiation).
The comparison operators: < <= = != > >= and the logical operators: && || evaluate to either 1 or 0 representing true or false respectively. This is relevant for the if(cond,a,b) function.
Functions Available For CALC Data Type¶
The following table describes the functions available for the CALC data type.
|sin cos tan asin acos atan||Trigonometric functions|
|sinh cosh tanh||Hyperbolic functions|
|abs round floor ceil sqrt exp ln log sign||Unary mathematical functions:
ROUND, FLOOR and CEIL return an integral portion of the input.
LN is the natural logarithm
LOG is the logarithm to base 10
|round(1.5) returns 2.0
round(1.4) returns 1.0
floor(1.5) returns 1.0
ceil(1.5) returns 2.0
|pow min max||Binary mathematical functions||pow(2,3) returns 8.0
pow(3,2) returns 9.0
|rnd deg(radians) rad(degrees)||Other functions:
rnd(a) returns the value of a multiplied by a random number satisfying the constraint RERANGE(0..1.0) i.e. a value x where: 0.0 <= x < 1.0
deg and rad convert between degrees and radians.
|rnd(10) will return a value y satisfying:
0 <= y < 10
|if(expr , a , b)||Conditional expression:
If the value of expr is 1, the result is the expression a otherwise the result is expression b
|if(PH_CM <= 5 , 1 , 2)
evaluates to 1 if the value of the trait PH_CM is 5 or less otherwise to 2
At times during scoring the precision level required can vary. This may be dictated by a number of factors, e.g. sheer volume of specimens, time frame for data collection, reduced/limited people to perform the scoring, etc. In these instances the Categorical Data Type may prove useful.
Typically Categorical is used for constraining the data entered to a predefined list of values, such as the following definitions:
- CHOICE(BLUE | YELLOW | RED); and
- CHOICE(White | Yellow | Purple | Variegated | Brown | Orange yellow | Mottled | White top | Red | Sun red | Blue | Other).
In these examples the pipe character ‘|’ is shown with a space character either side to improve legibility.
Alternative Use of Categorical¶
In some situations using a Categorical data type maybe more beneficial as this facilitates the use of selection ranges instead of data entry.
The following table illustrates the collection of plant height using both methods:
|Trait Defined as Integer||Trait Defined as Categorical|
|Entry Method||Plant Height entered by selecting a value buttons.
||Plant Height entered by selecting a value range from a list.
|Conditions||Trait validation with a minimum of 5 and maximum of 50||Trait validation with six ranges defined (e.g. The unit of measure may be 5 Centimetres).|
|Validation Rule||5 <= x <= 50||CHOICE(5-10 | 10-15 | 15-20 | 20-25 | 25-30 | 30++).|
|Key Presses||Minimum 2 button press per Sub-Plot (single digit) then Accept button.||Minimum 1 button press per Sub-Plot, unless a long condition list requires scrolling.|
For a Categorical Trait the number of choices may be limited to suit the circumstances of the Trial stage.