File size: 1,513 Bytes
9ae68e3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
type QuantityKind =
  | "observed" | "inferred" | "derived" | "predicted"
  | "constrained" | "encoded" | "executed";

type Datum<T> =
  | { status: "present"; value: T }
  | {
      status: "missing";
      reason: "not_measured" | "not_reported" | "failed_qc" | "unknown";
      detail?: string;
    };

type ArtifactRef =
  | { status: "available"; artifactId: string; sha256: string }
  | { status: "unavailable"; reason: string };

interface SourceLocator {
  artifact: ArtifactRef;
  recordLocator: string;
}

interface ExpressionObservation {
  schemaVersion: "bio-semantics/1.0.0";
  observationId: string;
  datasetId: string;
  sampleId: string;
  geneId: string;
  condition: Datum<string>;
  timepoint: Datum<{ value: string; unit: string }>;
  replicate: Datum<string>;
  batch: Datum<string>;
  cellType: Datum<string>;
  measurement:
    | {
        kind: "raw_read_count";
        quantityKind: "observed";
        unit: "reads";
        value: Datum<string>;
      }
    | {
        kind: "normalized_expression";
        quantityKind: "derived";
        unit: string;
        value: Datum<string>;
        transformation: ArtifactRef;
      };
  quality: Array<{
    name: string;
    unit: string;
    value: Datum<string>;
    quantityKind: "observed" | "derived";
    source: SourceLocator;
  }>;
  source: SourceLocator;
  origin:
    | { kind: "measurement" }
    | {
        kind: "synthetic_fixture";
        fixtureId: string;
        excludedFromScientificConclusions: true;
      };
}