Total Complexity | 1 |
Total Lines | 51 |
Duplicated Lines | 0 % |
Changes | 0 |
1 | import enum |
||
|
|||
2 | from dataclasses import dataclass |
||
3 | from typing import List, Optional |
||
4 | |||
5 | |||
6 | class TrueFalseUnknown(enum.Enum): |
||
7 | true = enum.auto() |
||
8 | false = enum.auto() |
||
9 | unknown = enum.auto() |
||
10 | |||
11 | @classmethod |
||
12 | def parse(cls, s: str): |
||
13 | tf_map = { |
||
14 | "t": TrueFalseUnknown.true, |
||
15 | "f": TrueFalseUnknown.false, |
||
16 | "true": TrueFalseUnknown.true, |
||
17 | "false": TrueFalseUnknown.false, |
||
18 | } |
||
19 | return tf_map.get(s.lower().strip(), TrueFalseUnknown.unknown) |
||
20 | |||
21 | |||
22 | @dataclass |
||
23 | class G2pInteraction: |
||
24 | target: str |
||
25 | target_id: str |
||
26 | target_gene_symbol: str |
||
27 | target_uniprot: str |
||
28 | target_species: str |
||
29 | ligand_id: int |
||
30 | type: str |
||
31 | action: str |
||
32 | selectivity: TrueFalseUnknown |
||
33 | endogenous: TrueFalseUnknown |
||
34 | primary_target: TrueFalseUnknown |
||
35 | affinity_units: str |
||
36 | affinity_median: float |
||
37 | |||
38 | |||
39 | @dataclass |
||
40 | class G2pData: |
||
41 | inchikey: str |
||
42 | g2pid: int |
||
43 | name: str |
||
44 | type: str |
||
45 | approved: bool |
||
46 | pubchem_id: Optional[int] |
||
47 | interactions: List[G2pInteraction] |
||
48 | |||
49 | |||
50 | __all__ = ["G2pInteraction", "G2pData", "TrueFalseUnknown"] |
||
51 |