Data analysis, tabulation, plotting, and summarization are problematic when the data contain concentrations that fall below the lower limit of quantification (LLOQ) of the assay. The LLOQ is the concentration whose lower bound (of variability in the assay) includes zero. An analyte may be detectable below this concentration even though it is not quantifiable.The BQL object allows users to define rule sets to filter out unusable data in a dataset using a BQL (Below Quantifiable Limit) rule set.
Standard laboratory procedures can require that such data be reported as a character string rather than a numerical value. Representing such a concentration as zero is not always appropriate, as doing so can introduce a statistical bias or misrepresentation in some analyses. Different substitution rules are required depending on the intended use of the data, and substitution rules vary between companies and departments. As a result, it may be necessary to perform a custom transformation of the BQL column in your dataset. Refer to the “Data Wizard” section, specifically the “Example custom functions” has several example functions used for BQL columns.
The BQL object is used to create useful datasets by substituting different non-numerical codes for concentration levels too low to be used in an analysis.
Use one of the following to add the object to a Workflow:
Right-click menu for a Workflow object: New > Data Management > BQL.
Or Main menu: Insert > Data Management > BQL.
Or right-click menu for a worksheet: Send To > Data Management > BQL.
Note:To view the object in its own window, select it in the Object Browser and double-click it or press ENTER. All instructions for setting up and execution are the same whether the object is viewed in its own window or in Phoenix view.
This section contains information about the following:
User interface description
General BQL rules
BQL output
Main Mappings panel
Rule Set panel
Use the Main Mappings panel to identify how input variables are used in a BQL object. Required input is highlighted orange in the interface.
None: Data types mapped to this context are not included in any analysis or output.
Sort: Categorical variable(s) identifying individual data profiles, such as subject ID and treatment in a crossover study. A separate computation is done for each unique combination of sort variable values.
Time: Nominal time or actual time (time that a study dose or observation actually happened) collection points in a study.
Concentration: Drug concentration values in the blood.
Status Code: (Optional) Column containing the non-numeric status codes associated with each datum in the Concentration column; determines transformation of the concentration values.
LLOQ: (Optional) Column containing the lower limit of quantification (LLOQ) associated with each measurement in the concentration variable.
Carry Along: Variables that are not required for the current analysis, but are copied and included in the output dataset.
The Rule Set panel allows users to map a BQL rule set to the BQL object, or define their own BQL rules using the internal BQL Rule Set worksheet. See “General BQL rules” for more information on BQL rules.
There are two ways to create a BQL rule set: create a rule set in Rule Set panel in the BQL object or in the BQL Rules folder.
Select the Rule Set panel in the Setup tab.
Check the Use internal BQL Rule Set box.
Users can now define their own rule set as an internal worksheet in the Rule Set panel.
Select the BQL Rules folder in the Object Browser.
Right-click BQL Rules and select New > Rule Set. (Adds a new rule set to the BQL Rules folder.)
Rename the rule set or leave the default name.
Note:The steps and interface used to define a BQL rule set are the same whether the BQL Rules folder or the Rule Set panel is used.
Enter the following information to define the rules:
Nonnumeric Code: Status code to be transformed.
Unconditional Substitution: If the transformation is the same regardless of whether the status code occurs before or after Tmax, or is repeated, this is the value to which the status code is transformed. An unconditional substitution is the same as a REPLACE ALL function within the column mapped to Concentration.
For conditional substitutions, where the transformation depends on the status code’s position relative to Tmax and whether or not the code is repeated in consecutive observations, then leave the cell in the Unconditional Substitution column blank and enter values in the subsequent four columns.
Conditional substitutions are based on being able to identify a Tmax (time when the maximum concentration is observed within a profile) and its corresponding concentration (Cmax). The first four parts of a conditional substitution need to be defined, but the fifth substitution is optional and not applied if left empty. The tool always sorts by the variable mapped to Time before applying the rule to the column mapped to Concentration:
Before Tmax: Value for any status code that occurs before Tmax.
After Tmax: Value to use for any status code that occurs after Tmax and is not followed, nor preceded, by the same status code (i.e., the value is isolated).
First of consecutive after Tmax: Value for any status code that occurs after Tmax and is followed, but not preceded, by the same status code (i.e., this value is assigned to the first of those contiguous observations).
After First of Consecutive after Tmax: Value for any status code that occurs after Tmax and is preceded by the same status code (i.e., this value is assigned to all status codes except the first of those contiguous observations).
All Entries After 2 Consecutive after Tmax [Optional]: Value for any status code that occurs after Tmax and is preceded by two identical observations (i.e., the value assigned to all trailing observations (status codes or values) except the first and second of those contiguous observations). This substitution is optional and should be left blank if one does not wish to apply it.
Any entry that is not equal to the non-numeric code breaks the consecutive assessment including blank and missing values. These should be removed prior to applying conditional substitutions if the consecutive rule should ignore them.
Tmax is considered the maximum value in the column concentration within unique combinations of sort variables (typically subject). If there is more than one Tmax within a profile, the first Tmax is used for the conditional substitution. Note that the tool automatically sorts by the sort variables and then by the column mapped to TIME.
Conditional substitution rules are only applied if there is at least one numerical value in the column mapped to concentration. For example, if all the values within a profile are equal the non-numeric code (e.g. BQL) then the resulting column will present blank data for the profile. However, if there is an unconditional substitution beforehand then the results will present the original values in the column mapped to concentration (e.g., BQL).
Use When < LLOQ: Check to indicate that, when numeric values less than the LLOQ are encountered, those values are transformed as though they contained the status code.
This checkbox can be used with conditional and unconditional substitutions, but an LLOQ needs to be defined either by entering a static value in the rule or by mapping a column with these values to the LLOQ column.
Only one non-numeric code can be assigned to Use When < LLOQ. When selected, the tool will compare concentrations values to the LLOQ for each row, and if the value is less than the LLOQ then it treats it as if it has been recorded as the non-numeric code and thus, the same rules as the non-numeric code will be applied to that number. For example, if the unconditional substitution is that BQL non-numeric code should be set to zero, the LLOQ is static to 0.5 and the Use When < LLOQ is checked, any concentration equal to BQL and any concentration less than 0.5 will be set to zero.
If a profile has concentration values but all of those are < LLOQ a conditional substitution will consider the first value in the concentration column to be tmax and the substitution will take place based on this assessment. In other words, the first concentration will be set to substitution for first consecutive and the following concentrations will be set to the value for the after first consecutive.
Set to LLOQ and censor: Check to set the resulting concentration cell to the LLOQ value (the static value or the value from the LLOQ mapped column). A column named CObsBQL is created in the output.
This substitution is mutually exclusive from the other existing substitutions (conditional and unconditional) therefore only one type of substitution can be used for each rule. If the option to Set to LLOQ and censor is selected for a nonnumeric code it sets that resulting concentration cell to the LLOQ value (the static value or the value from the LLOQ mapped column) and creates an additional column: CObsBQL.
The cell that is modified by the censoring substitution (i.e. set to LLOQ value) gets a corresponding value of one for CObsBQL, if no substitution took place then a value of zero is assigned to CObsBQL. The values assigned to the censored column CObsBQL are either zero or one. If the option of Use When < LLOQ is checked in conjunction with the censoring substitution then any numeric value less than LLOQ is set to the LLOQ value and the censoring flag is set to one.
This option is designed to integrate with Maximum Likelihood models. A resulting worksheet of a BQL object with a censored column CObsBQL can be used as the input for a Maximum Likelihood model with the option BQL?. If BQL? is selected, a column can be mapped to the CObsBQL context in the Main Mappings panel. This column can contain two categories of values: non-zero (censored) or zero (non-censored). If a concentration value is marked as censored (CObsBQL<>0), it means that the true value of the observation is unknown but it is not greater than the observed value (e.g., LLOQ) and then the cumulative distribution function for the normally distributed error is used to calculate the likelihood. If a concentration value is flagged as non-censored, then the probability density function is used to calculate the likelihood.
Note:Maximum Likelihood models with censored data (BQL? option) use the log of the probabilities between 0 and the censored number in the log likelihoods. If the censoring numbers are very small, the loglikelihood might overflow, resulting in a Fortran error. This seems to be more often the case when using multiplicative error models. If the error occurs, try increasing the BQL value if possible or change error types.
Check the Use Static LLOQ Value box to set a fixed LLOQ value.
In the LLOQ Value field, type the LLOQ value.
Note:When a static LLOQ value is specified the static value is always used, even if a dataset column is mapped to the LLOQ context in the BQL object.
Additional status codes can be entered under Non-numeric Code. Each new status code that is entered creates a new row in the rule set. To remove a row, left-click the row number to select the entire row and press the Delete key.
Syntax for the rules: The status rules are not case-sensitive. The values entered can include numbers, operators, and the variable LLOQ, if an LLOQ value or data column is assigned.
Last modified date:7/9/20
Legal Notice | Contact Certara
© 2020 Certara USA, Inc. All rights reserved.