A lab provides assay data for your research study. But the incoming data only shows specimen ids. No participant id or visit id information is included. How do you map the assay data to the participant ids in your study?
Using the built-in
specimen repository makes this process very easy by recognizing the specimen ids in the incoming data and automatically mapping them to the associated participant ids and visit ids.
However, the specimen repository is not ideal for all use cases. Some key issues are:
- The specimen repository has a large set of required fields, which may not match your particular way of modeling specimens.
- The specimen repository does not have a full concept of "parentage" or "lineage" between samples, providing only a single level of "grouped" vials.
On the other hand,
Samples and Sample Types provide a flexible parentage model, and you have complete control over the fields. For this reason, you might want to use them as an alternative to the specimen repository.
This topic explains how to use
Sample Types (and a mapping list) as an alternative to a specimen repository. We will use a Sample Type to hold the specimen information and a Mapping List to associate each specimen id with a participantId / visitId pair. In the instructions below, we assume that you already have a pre-existing study that is visit-based. (This same method will also work with a date-based study.)
Note this technique will not work for all assay types. For example, Expression Matrix assays are not supported.
Create a Sample Type
Sample Types have very few requirements regarding table structure. Basically, the only requirement is that there is a field with unique values that can serve as the key/name field. In most cases, you can import your specimen information to a Sample Type with no changes. To begin setting up,
create a Sample Type and import your specimens as described in the topic
Import Samples.
Use the following
Sample Type to build a working example. When you import the sample Type, specify:
SpecimenId | SpecimenType | Volume |
---|
vial1 | Plasma | 10mL |
vial2 | Plasma | 10mL |
vial3 | Plasma | 10mL |
Create a List for Participant/Visit Resolution
To tell the server where each specimen came from and when, you provide a list mapping each specimen to a particular participant and draw date. The list must contain the following four fields. The four fields, field names, and data types are required, even if some of the fields do not have any data.
Field Name | Data Type |
---|
SpecimenId | Must match the data type of your Sample Type key/name field. |
ParticipantId | Text(String) |
VisitId | Integer |
Date | DateTime |
Use the following
List to build a working example:
SpecimenId | ParticipantId | VisitId | Date |
---|
vial1 | P-100 | 1 | 2010-10-10 |
vial2 | P-200 | 1 | 2010-10-10 |
vial3 | P-300 | 1 | 2010-10-10 |
Modify Assay Designs
Now create, or modify, your assay designs to utilize these new resources.
First create a link between your assay designs and the Sample Type. Do this by modifying the SpecimenId field in your assay to become a
lookup field to your Sample Type. For details see
Link Assay Data to Samples.
Second, tell your assay designs to use the mapping list. Do this by adding a Participant/Visit Resolver field to your assay design at the batch level. When importing data, point this resolver field at your List as described in the topic
Participant/Visit Resolver Field. You may also want to set this List as a
default value.
You assay design should have the following fields:
Field Name | Data Type |
---|
SpecimenId | Must match the data type of your Sample Type key/name field. |
ParticipantId | Text(String). |
VisitId or Date | Integer or DateTime. |
Import Data Behavior
When you import data to the assay design, you only need to provide data in the SpecimenId field. The server will consult the mapping List and fill in the ParticipantId and Visit/Date fields automatically.
For example, when you import the following
assay data sheet with blank ParticipantId and VisitId fields...
SpecimenId | ParticipantId | VisitId | Measurement1 | Measurement2 | Measurement3 |
---|
vial1 | | | .12 | .23 | .34 |
vial1 | | | .44 | .02 | .19 |
vial1 | | | .55 | .06 | .91 |
vial1 | | | .73 | .22 | .93 |
...the server will fill in the missing values...
SpecimenId | ParticipantId | VisitId | Measurement1 | Measurement2 | Measurement3 |
---|
vial1 | P-100 | 1 | .12 | .23 | .34 |
vial1 | P-200 | 1 | .44 | .02 | .19 |
vial1 | P-300 | 1 | .55 | .06 | .91 |
vial1 | P-100 | 2 | .73 | .22 | .93 |
Related Topics