Coverage for bbconf/models/bed_models.py: 100%
116 statements
« prev ^ index » next coverage.py v7.6.0, created at 2024-07-17 04:01 +0000
« prev ^ index » next coverage.py v7.6.0, created at 2024-07-17 04:01 +0000
1import datetime
2from typing import List, Optional, Union
4from pydantic import BaseModel, ConfigDict, Field
6from .base_models import FileModel
7from bbconf.const import DEFAULT_LICENSE
10class BedPlots(BaseModel):
11 chrombins: FileModel = None
12 gccontent: FileModel = None
13 partitions: FileModel = None
14 expected_partitions: FileModel = None
15 cumulative_partitions: FileModel = None
16 widths_histogram: FileModel = None
17 neighbor_distances: FileModel = None
18 open_chromatin: FileModel = None
20 model_config = ConfigDict(extra="ignore")
23class BedFiles(BaseModel):
24 bed_file: Union[FileModel, None] = None
25 bigbed_file: Union[FileModel, None] = None
27 model_config = ConfigDict(
28 populate_by_name=True,
29 extra="ignore",
30 )
33class BedClassification(BaseModel):
34 name: Optional[str] = None
35 genome_alias: str = None
36 genome_digest: Union[str, None] = None
37 bed_type: str = Field(
38 default="bed3", pattern="^bed(?:[3-9]|1[0-5])(?:\+|$)[0-9]?+$"
39 )
40 bed_format: str = None
42 model_config = ConfigDict(extra="ignore")
45class BedStatsModel(BaseModel):
46 number_of_regions: Optional[float] = Field(None, alias="regions_no")
47 gc_content: Optional[float] = None
48 median_tss_dist: Optional[float] = None
49 mean_region_width: Optional[float] = None
51 exon_frequency: Optional[float] = None
52 exon_percentage: Optional[float] = None
54 intron_frequency: Optional[float] = None
55 intron_percentage: Optional[float] = None
57 intergenic_percentage: Optional[float] = None
58 intergenic_frequency: Optional[float] = None
60 promotercore_frequency: Optional[float] = None
61 promotercore_percentage: Optional[float] = None
63 fiveutr_frequency: Optional[float] = None
64 fiveutr_percentage: Optional[float] = None
66 threeutr_frequency: Optional[float] = None
67 threeutr_percentage: Optional[float] = None
69 promoterprox_frequency: Optional[float] = None
70 promoterprox_percentage: Optional[float] = None
72 model_config = ConfigDict(extra="ignore", populate_by_name=True)
75class BedPEPHub(BaseModel):
76 sample_name: str
77 genome: str = ""
78 organism: str = ""
79 species_id: str = ""
80 cell_type: str = ""
81 cell_line: str = ""
82 exp_protocol: str = Field("", description="Experimental protocol (e.g. ChIP-seq)")
83 library_source: str = Field(
84 "", description="Library source (e.g. genomic, transcriptomic)"
85 )
86 genotype: str = Field("", description="Genotype of the sample")
87 target: str = Field("", description="Target of the assay (e.g. H3K4me3)")
88 antibody: str = Field("", description="Antibody used in the assay")
89 treatment: str = Field(
90 "", description="Treatment of the sample (e.g. drug treatment)"
91 )
92 tissue: str = Field("", description="Tissue type")
93 global_sample_id: str = Field("", description="Global sample identifier")
94 global_experiment_id: str = Field("", description="Global experiment identifier")
95 description: str = Field("", description="Description of the sample")
97 model_config = ConfigDict(extra="allow", populate_by_name=True)
100class BedPEPHubRestrict(BedPEPHub):
102 model_config = ConfigDict(extra="ignore")
105class BedMetadataBasic(BedClassification):
106 id: str
107 name: Optional[Union[str, None]] = ""
108 description: Optional[str] = None
109 submission_date: datetime.datetime = None
110 last_update_date: Optional[datetime.datetime] = None
111 is_universe: Optional[bool] = False
112 license_id: Optional[str] = DEFAULT_LICENSE
115class UniverseMetadata(BaseModel):
116 construct_method: Union[str, None] = None
117 bedset_id: Union[str, None] = None
120class BedSetMinimal(BaseModel):
121 id: str
122 name: Union[str, None] = None
123 description: Union[str, None] = None
126class BedMetadata(BedMetadataBasic):
127 stats: Union[BedStatsModel, None] = None
128 plots: Union[BedPlots, None] = None
129 files: Union[BedFiles, None] = None
130 universe_metadata: Union[UniverseMetadata, None] = None
131 raw_metadata: Union[BedPEPHub, BedPEPHubRestrict, None] = None
132 bedsets: Union[List[BedSetMinimal], None] = None
135class BedListResult(BaseModel):
136 count: int
137 limit: int
138 offset: int
139 results: List[BedMetadataBasic]
142class QdrantSearchResult(BaseModel):
143 id: str
144 payload: dict
145 score: float
146 metadata: Union[BedMetadataBasic, None] = None
149class BedListSearchResult(BaseModel):
150 count: int
151 limit: int
152 offset: int
153 results: List[QdrantSearchResult] = None
156class TokenizedBedResponse(BaseModel):
157 universe_id: str
158 bed_id: str
159 tokenized_bed: List[int]
162class BedEmbeddingResult(BaseModel):
163 identifier: str
164 payload: dict
165 embedding: List[float]
168class TokenizedPathResponse(BaseModel):
169 bed_id: str
170 universe_id: str
171 file_path: str
172 endpoint_url: str