type Analysis { max_strand_length: int datum_count: int min_occurances: int min_probability: float analysis_duration_ms: int threads: int pattern: [Pattern] strand: [Strand] } type Pattern { id: int trait: [Trait] } type Trait { name: string } # match is an edge to all matches in strand # next_match is edge to first match of strand type Strand { match: [Match] next_match: [Match] length: int occurances: int end_probability: float } type Match { pattern: [Pattern] depth: int count: int match_probability : float next_match: [Match] } # Analysis max_strand_length: int . datum_count: int . min_occurances: int . min_probability: float . datum_start_time: dateTime @index(day) . datum_end_time: dateTime @index(day) . ran_on: dateTime . analysis_duration_ms: int . threads: int . pattern: [uid] . symbol: string @index(hash) . strand: [uid] @reverse . # Pattern id: int . trait: [uid] @reverse . # Trait name: string @index(hash) @upsert . min_depth: int . max_depth: int . # Strand match: [uid] @reverse . occurances: int @index(int) . length: int @index(int) . end_probability: float @index(float) . analysis: uid . # Match pattern: [uid] . depth: int . count: int . match_probability: float . next_match: [uid] @reverse .