Coverage for bbconf/models/base_models.py: 100%
116 statements
« prev ^ index » next coverage.py v7.16.2, created at 2026-10-16 22:05 +0000
« prev ^ index » next coverage.py v7.16.2, created at 2026-10-16 22:05 +0000
1import datetime
3from pydantic import BaseModel, ConfigDict, Field
5from .drs_models import AccessMethod
8class FileModel(BaseModel):
9 name: str
10 title: str | None = None
11 path: str
12 file_digest: str | None = None
13 path_thumbnail: str | None = Field(None, alias="thumbnail_path")
14 description: str | None = None
15 size: int | None = None
16 object_id: str | None = None
17 access_methods: list[AccessMethod] | None = None
19 model_config = ConfigDict(populate_by_name=True, extra="ignore")
22class StatsReturn(BaseModel):
23 bedfiles_number: int = 0
24 bedsets_number: int = 0
25 genomes_number: int = 0
28class UsageStats(BaseModel):
29 # file_downloads: Dict[str, int] # Placeholder for tracking file download statistics in the future.
30 bed_metadata: dict[str, int]
31 bedset_metadata: dict[str, int]
32 bed_search_terms: dict[str, int]
33 bedset_search_terms: dict[str, int]
34 bed_downloads: dict[str, int]
37class UsageModel(BaseModel):
38 """
39 Usage model. Used to track usage of the bedbase.
40 """
42 bed_meta: dict[str, int] | None = None
43 bedset_meta: dict[str, int] | None = None
45 bed_search: dict[str, int] | None = None
46 bedset_search: dict[str, int] | None = None
47 files: dict[str, int] | None = None
49 date_from: datetime.datetime
50 date_to: datetime.datetime | None = None
53class UsageItem(BaseModel):
54 """
55 A single per-key usage count.
56 """
58 key: str
59 count: int
62class UsageResponse(BaseModel):
63 """
64 Per-key usage counts for a single event type, optionally restricted to a
65 date range. Returned by BedBaseAgent.get_usage.
66 """
68 event_type: str
69 date_from: datetime.datetime | None = None
70 date_to: datetime.datetime | None = None
71 limit: int | None = None
72 offset: int = 0
73 count: int
74 results: list[UsageItem]
77class FileInfo(BaseModel):
78 """
79 Main information about a file used for BEDbase verse statistics.
80 """
82 id: str
83 bed_compliance: str
84 data_format: str
85 mean_region_width: float
86 file_size: int
87 number_of_regions: int
90class AllFilesInfo(BaseModel):
91 """
92 Information about all files. e.g. file sizes, mean region width, etc.
94 """
96 total: int
97 files: list[FileInfo]
100class BinValues(BaseModel):
101 bins: list[int | float | str]
102 counts: list[int]
103 mean: float
104 median: float
107class GEOStatistics(BaseModel):
108 """
109 GEO statistics for files.
110 """
112 number_of_files: dict[str, int]
113 cumulative_number_of_files: dict[str, int]
114 file_sizes: BinValues
117class FileStats(BaseModel):
118 bed_compliance: dict[str, int]
119 data_format: dict[str, int]
120 file_genome: dict[str, int]
121 file_organism: dict[str, int]
122 file_assay: dict[str, int]
123 cell_line: dict[str, int]
124 geo_status: dict[str, int]
125 bed_comments: dict[str, int]
126 mean_region_width: BinValues
127 file_size: BinValues
128 number_of_regions: BinValues
129 geo: GEOStatistics
132class BedSnapshotArtifact(BaseModel):
133 """A built snapshot file to publish (upload to S3 + record in the database)."""
135 path: str # local file path to upload
136 file_type: str
137 record_count: int | None = None
138 file_size: int | None = None
139 checksum: str | None = None
140 schema_version: int | None = None
143class BedSnapshotResult(BaseModel):
144 """One published bulk-export artifact."""
146 file_path: str
147 file_type: str
148 creation_date: datetime.datetime
149 record_count: int | None = None
150 file_size: int | None = None
151 checksum: str | None = None
152 schema_version: int | None = None
155class BedSnapshotListResult(BaseModel):
156 count: int
157 results: list[BedSnapshotResult]
160class AnalysisFileArtifact(BaseModel):
161 """A standalone analysis file to publish (upload to S3 + record in the database)."""
163 path: str # local file path to upload
164 name: str
165 file_type: str | None = None
166 genome: str | None = None
167 description: str | None = None
168 tags: list[str] | None = None
169 file_size: int | None = None
170 checksum: str | None = None
173class AnalysisFileResult(BaseModel):
174 """One registered standalone analysis file."""
176 id: int | None = None
177 name: str
178 file_path: str
179 file_type: str | None = None
180 genome: str | None = None
181 description: str | None = None
182 tags: list[str] | None = None
183 file_size: int | None = None
184 checksum: str | None = None
185 creation_date: datetime.datetime
188class AnalysisFileListResult(BaseModel):
189 count: int
190 results: list[AnalysisFileResult]