Coverage for bbconf/models/bedset_models.py: 98%
58 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
2from typing import Optional
4from pydantic import BaseModel, ConfigDict, model_validator
6from .base_models import FileModel
7from .bed_models import BedMetadataBasic, BedStatsModel
10class BedSetStats(BaseModel):
11 """Bedset statistics: mean/sd of scalar columns.
13 Populated from bedset_means and bedset_standard_deviation database columns.
14 """
16 mean: BedStatsModel = None
17 sd: BedStatsModel = None
20class BedSetDistributions(BaseModel):
21 """Collection-level aggregated distribution statistics for a bedset.
23 Stored in the bedset_stats JSONB database column. Populated when
24 member bed files have been processed with the gtars analysis backend.
25 """
27 n_files: int = 0
28 composition: Optional[dict] = None
29 scalar_summaries: Optional[dict] = None
30 tss_histogram: Optional[dict] = None
31 widths_histogram: Optional[dict] = None
32 neighbor_distances: Optional[dict] = None
33 gc_content: Optional[dict] = None
34 region_distribution: Optional[dict] = None
35 partitions: Optional[dict] = None
36 chromosome_summaries: Optional[dict] = None
39class BedSetPlots(BaseModel):
40 region_commonality: FileModel = None
42 model_config = ConfigDict(extra="ignore")
45class BedSetMetadata(BaseModel):
46 id: str
47 name: str
48 md5sum: str
49 submission_date: datetime.datetime = None
50 last_update_date: datetime.datetime = None
51 statistics: BedSetStats | None = None
52 distributions: BedSetDistributions | None = None
53 plots: BedSetPlots | None = None
54 description: str = None
55 summary: str = None
56 bed_ids: list[str] = None
57 bedfile_count: int = 0
58 author: str | None = None
59 source: str | None = None
62class BedSetListResult(BaseModel):
63 count: int
64 limit: int
65 offset: int
66 results: list[BedSetMetadata]
69class BedSetBedFiles(BaseModel):
70 count: int
71 results: list[BedMetadataBasic]
74class BedSetPEP(BaseModel):
75 sample_name: str
76 original_name: str
77 genome_alias: str | None = ""
78 genome_digest: str | None = ""
79 bed_compliance: str | None = ""
80 data_format: str | None = ""
81 description: str | None = ""
82 url: str | None = ""
84 @model_validator(mode="before")
85 def remove_underscore_keys(cls, values):
86 """
87 Remove keys that start with an underscore, as these values are not sorted by sqlalchemy
88 """
89 return {k: v for k, v in values.items() if not k.startswith("_")}
91 model_config = ConfigDict(extra="allow")