Skip to content

Commit 8ea1910

Browse files
committed
update
1 parent 0012553 commit 8ea1910

6 files changed

Lines changed: 421 additions & 53 deletions

File tree

README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,7 @@ uv run python -c "from sensor_sim.generator import GeneratorConfig, generate_bat
140140
uv run python -c "from sensor_sim.generator import GeneratorConfig, generate_batch; r=generate_batch('multi_sensor_divergence', GeneratorConfig(batch_size=800, num_sensors=3, seed=1)); print(r[-20:])"
141141

142142
# run pytest
143-
uv run pytest
144-
143+
uv run pytest --cov=sensor_sim --cov-report=term-missing --cov-report=xml
145144

146145
uv run ruff format .
147146
uv run ruff check . --fix

coverage.xml

Lines changed: 293 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,293 @@
1+
<?xml version="1.0" ?>
2+
<coverage version="7.13.5" timestamp="1775412590198" lines-valid="254" lines-covered="170" line-rate="0.6693" branches-covered="0" branches-valid="0" branch-rate="0" complexity="0">
3+
<!-- Generated by coverage.py: https://coverage.readthedocs.io/en/7.13.5 -->
4+
<!-- Based on https://raw.githubusercontent.com/cobertura/web/master/htdocs/xml/coverage-04.dtd -->
5+
<sources>
6+
<source>C:\Repos\adaptive-interfaces\adaptive-sensor-testing</source>
7+
</sources>
8+
<packages>
9+
<package name="src.sensor_sim" line-rate="0.6693" branch-rate="0" complexity="0">
10+
<classes>
11+
<class name="__init__.py" filename="src/sensor_sim/__init__.py" complexity="0" line-rate="1" branch-rate="0">
12+
<methods/>
13+
<lines>
14+
<line number="5" hits="1"/>
15+
<line number="6" hits="1"/>
16+
<line number="13" hits="1"/>
17+
<line number="15" hits="1"/>
18+
</lines>
19+
</class>
20+
<class name="data_maker.py" filename="src/sensor_sim/data_maker.py" complexity="0" line-rate="0" branch-rate="0">
21+
<methods/>
22+
<lines>
23+
<line number="41" hits="0"/>
24+
<line number="42" hits="0"/>
25+
<line number="43" hits="0"/>
26+
<line number="44" hits="0"/>
27+
<line number="45" hits="0"/>
28+
<line number="46" hits="0"/>
29+
<line number="48" hits="0"/>
30+
<line number="49" hits="0"/>
31+
<line number="51" hits="0"/>
32+
<line number="52" hits="0"/>
33+
<line number="55" hits="0"/>
34+
<line number="57" hits="0"/>
35+
<line number="60" hits="0"/>
36+
<line number="66" hits="0"/>
37+
<line number="72" hits="0"/>
38+
<line number="75" hits="0"/>
39+
<line number="77" hits="0"/>
40+
<line number="78" hits="0"/>
41+
<line number="80" hits="0"/>
42+
<line number="81" hits="0"/>
43+
<line number="84" hits="0"/>
44+
<line number="89" hits="0"/>
45+
<line number="90" hits="0"/>
46+
<line number="92" hits="0"/>
47+
<line number="93" hits="0"/>
48+
<line number="94" hits="0"/>
49+
<line number="96" hits="0"/>
50+
<line number="97" hits="0"/>
51+
<line number="99" hits="0"/>
52+
<line number="102" hits="0"/>
53+
<line number="104" hits="0"/>
54+
<line number="105" hits="0"/>
55+
<line number="107" hits="0"/>
56+
<line number="108" hits="0"/>
57+
<line number="113" hits="0"/>
58+
<line number="115" hits="0"/>
59+
<line number="116" hits="0"/>
60+
<line number="117" hits="0"/>
61+
<line number="118" hits="0"/>
62+
<line number="119" hits="0"/>
63+
<line number="121" hits="0"/>
64+
<line number="124" hits="0"/>
65+
<line number="126" hits="0"/>
66+
<line number="128" hits="0"/>
67+
<line number="135" hits="0"/>
68+
<line number="136" hits="0"/>
69+
<line number="137" hits="0"/>
70+
<line number="139" hits="0"/>
71+
<line number="140" hits="0"/>
72+
<line number="143" hits="0"/>
73+
<line number="152" hits="0"/>
74+
<line number="153" hits="0"/>
75+
<line number="154" hits="0"/>
76+
<line number="156" hits="0"/>
77+
<line number="157" hits="0"/>
78+
<line number="159" hits="0"/>
79+
<line number="161" hits="0"/>
80+
<line number="162" hits="0"/>
81+
<line number="163" hits="0"/>
82+
<line number="165" hits="0"/>
83+
<line number="167" hits="0"/>
84+
<line number="168" hits="0"/>
85+
<line number="170" hits="0"/>
86+
<line number="171" hits="0"/>
87+
<line number="176" hits="0"/>
88+
<line number="177" hits="0"/>
89+
<line number="178" hits="0"/>
90+
<line number="180" hits="0"/>
91+
<line number="185" hits="0"/>
92+
<line number="188" hits="0"/>
93+
<line number="190" hits="0"/>
94+
<line number="191" hits="0"/>
95+
<line number="194" hits="0"/>
96+
<line number="195" hits="0"/>
97+
</lines>
98+
</class>
99+
<class name="generator.py" filename="src/sensor_sim/generator.py" complexity="0" line-rate="0.975" branch-rate="0">
100+
<methods/>
101+
<lines>
102+
<line number="9" hits="1"/>
103+
<line number="11" hits="1"/>
104+
<line number="13" hits="1"/>
105+
<line number="16" hits="1"/>
106+
<line number="22" hits="1"/>
107+
<line number="27" hits="1"/>
108+
<line number="29" hits="1"/>
109+
<line number="32" hits="1"/>
110+
<line number="51" hits="1"/>
111+
<line number="52" hits="1"/>
112+
<line number="54" hits="1"/>
113+
<line number="56" hits="1"/>
114+
<line number="57" hits="1"/>
115+
<line number="58" hits="1"/>
116+
<line number="60" hits="1"/>
117+
<line number="61" hits="1"/>
118+
<line number="66" hits="1"/>
119+
<line number="72" hits="1"/>
120+
<line number="78" hits="1"/>
121+
<line number="80" hits="1"/>
122+
<line number="81" hits="1"/>
123+
<line number="82" hits="1"/>
124+
<line number="83" hits="1"/>
125+
<line number="85" hits="1"/>
126+
<line number="86" hits="1"/>
127+
<line number="87" hits="1"/>
128+
<line number="89" hits="1"/>
129+
<line number="90" hits="1"/>
130+
<line number="91" hits="1"/>
131+
<line number="93" hits="1"/>
132+
<line number="94" hits="1"/>
133+
<line number="95" hits="1"/>
134+
<line number="98" hits="1"/>
135+
<line number="99" hits="1"/>
136+
<line number="100" hits="1"/>
137+
<line number="102" hits="1"/>
138+
<line number="103" hits="1"/>
139+
<line number="106" hits="0"/>
140+
<line number="108" hits="1"/>
141+
<line number="117" hits="1"/>
142+
</lines>
143+
</class>
144+
<class name="models.py" filename="src/sensor_sim/models.py" complexity="0" line-rate="0.9688" branch-rate="0">
145+
<methods/>
146+
<lines>
147+
<line number="5" hits="1"/>
148+
<line number="6" hits="1"/>
149+
<line number="8" hits="1"/>
150+
<line number="17" hits="1"/>
151+
<line number="18" hits="1"/>
152+
<line number="27" hits="1"/>
153+
<line number="28" hits="1"/>
154+
<line number="31" hits="1"/>
155+
<line number="32" hits="1"/>
156+
<line number="33" hits="1"/>
157+
<line number="34" hits="1"/>
158+
<line number="35" hits="1"/>
159+
<line number="36" hits="1"/>
160+
<line number="37" hits="1"/>
161+
<line number="38" hits="1"/>
162+
<line number="39" hits="1"/>
163+
<line number="42" hits="1"/>
164+
<line number="43" hits="1"/>
165+
<line number="46" hits="1"/>
166+
<line number="47" hits="1"/>
167+
<line number="48" hits="1"/>
168+
<line number="49" hits="1"/>
169+
<line number="50" hits="1"/>
170+
<line number="51" hits="1"/>
171+
<line number="52" hits="1"/>
172+
<line number="55" hits="1"/>
173+
<line number="56" hits="1"/>
174+
<line number="67" hits="1"/>
175+
<line number="68" hits="1"/>
176+
<line number="75" hits="1"/>
177+
<line number="76" hits="1"/>
178+
<line number="78" hits="0"/>
179+
</lines>
180+
</class>
181+
<class name="processor.py" filename="src/sensor_sim/processor.py" complexity="0" line-rate="0.9231" branch-rate="0">
182+
<methods/>
183+
<lines>
184+
<line number="9" hits="1"/>
185+
<line number="11" hits="1"/>
186+
<line number="13" hits="1"/>
187+
<line number="21" hits="1"/>
188+
<line number="25" hits="1"/>
189+
<line number="26" hits="1"/>
190+
<line number="27" hits="1"/>
191+
<line number="28" hits="1"/>
192+
<line number="29" hits="1"/>
193+
<line number="30" hits="1"/>
194+
<line number="33" hits="1"/>
195+
<line number="35" hits="1"/>
196+
<line number="40" hits="1"/>
197+
<line number="42" hits="1"/>
198+
<line number="44" hits="1"/>
199+
<line number="45" hits="1"/>
200+
<line number="46" hits="1"/>
201+
<line number="57" hits="1"/>
202+
<line number="60" hits="1"/>
203+
<line number="65" hits="1"/>
204+
<line number="67" hits="1"/>
205+
<line number="68" hits="0"/>
206+
<line number="70" hits="1"/>
207+
<line number="71" hits="1"/>
208+
<line number="72" hits="1"/>
209+
<line number="73" hits="1"/>
210+
<line number="75" hits="1"/>
211+
<line number="76" hits="1"/>
212+
<line number="78" hits="1"/>
213+
<line number="79" hits="1"/>
214+
<line number="80" hits="0"/>
215+
<line number="82" hits="1"/>
216+
<line number="83" hits="1"/>
217+
<line number="85" hits="1"/>
218+
<line number="86" hits="1"/>
219+
<line number="100" hits="1"/>
220+
<line number="103" hits="1"/>
221+
<line number="108" hits="1"/>
222+
<line number="109" hits="1"/>
223+
<line number="110" hits="1"/>
224+
<line number="112" hits="1"/>
225+
<line number="113" hits="1"/>
226+
<line number="115" hits="1"/>
227+
<line number="117" hits="1"/>
228+
<line number="121" hits="1"/>
229+
<line number="122" hits="1"/>
230+
<line number="124" hits="1"/>
231+
<line number="125" hits="1"/>
232+
<line number="127" hits="1"/>
233+
<line number="128" hits="1"/>
234+
<line number="142" hits="1"/>
235+
<line number="144" hits="1"/>
236+
<line number="146" hits="1"/>
237+
<line number="151" hits="1"/>
238+
<line number="153" hits="1"/>
239+
<line number="154" hits="0"/>
240+
<line number="156" hits="1"/>
241+
<line number="158" hits="1"/>
242+
<line number="159" hits="1"/>
243+
<line number="160" hits="1"/>
244+
<line number="162" hits="1"/>
245+
<line number="163" hits="1"/>
246+
<line number="164" hits="1"/>
247+
<line number="165" hits="1"/>
248+
<line number="166" hits="1"/>
249+
<line number="168" hits="1"/>
250+
<line number="169" hits="1"/>
251+
<line number="171" hits="1"/>
252+
<line number="172" hits="1"/>
253+
<line number="173" hits="0"/>
254+
<line number="176" hits="1"/>
255+
<line number="179" hits="1"/>
256+
<line number="180" hits="1"/>
257+
<line number="181" hits="1"/>
258+
<line number="182" hits="1"/>
259+
<line number="193" hits="1"/>
260+
<line number="196" hits="1"/>
261+
<line number="201" hits="1"/>
262+
<line number="202" hits="1"/>
263+
<line number="203" hits="1"/>
264+
<line number="205" hits="1"/>
265+
<line number="206" hits="1"/>
266+
<line number="208" hits="1"/>
267+
<line number="209" hits="0"/>
268+
<line number="211" hits="1"/>
269+
<line number="212" hits="1"/>
270+
<line number="214" hits="1"/>
271+
<line number="215" hits="0"/>
272+
<line number="218" hits="1"/>
273+
<line number="220" hits="1"/>
274+
<line number="221" hits="1"/>
275+
<line number="223" hits="0"/>
276+
<line number="237" hits="1"/>
277+
<line number="242" hits="1"/>
278+
<line number="243" hits="0"/>
279+
<line number="245" hits="1"/>
280+
<line number="246" hits="1"/>
281+
<line number="248" hits="1"/>
282+
<line number="250" hits="1"/>
283+
<line number="251" hits="1"/>
284+
<line number="252" hits="1"/>
285+
<line number="253" hits="1"/>
286+
<line number="254" hits="1"/>
287+
<line number="256" hits="1"/>
288+
</lines>
289+
</class>
290+
</classes>
291+
</package>
292+
</packages>
293+
</coverage>

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ dev = [
2424
"pre-commit",
2525
"pyright",
2626
"pytest",
27+
"pytest-cov",
2728
"ruff",
2829
"validate-pyproject",
2930
]

src/sensor_sim/models.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ class GeneratorConfig:
4343
class ProcessorConfig:
4444
"""Configuration for anomaly detection processing."""
4545

46-
spike_relative_threshold: float = 0.0
47-
divergence_relative_threshold: float = 0.0
46+
spike_relative_threshold: float = 0.0000002
47+
divergence_relative_threshold: float = 0.00000002
4848
drift_offset_percent: float = 2.0
4949
baseline_window: int = 100
5050
comparison_window: int = 100

0 commit comments

Comments
 (0)