RDSS/test_encode.py

48 lines
1.5 KiB
Python
Raw Permalink Normal View History

2026-03-13 14:16:00 +08:00
import sys
sys.path.insert(0, '.')
from core.simulator import TimeSeriesGenerator, SampleSpaceGenerator
from core.distributions import UniformDistribution
# 创建样本空间生成器
sample_gen = SampleSpaceGenerator()
# 创建能量分布
det1_dist = UniformDistribution(100, 2000)
det2_dist = UniformDistribution(100, 2000)
det3_dist = UniformDistribution(100, 2000)
# 生成样本空间
sample_gen.generate_samples('detector1', det1_dist, 100000)
sample_gen.generate_samples('detector2', det2_dist, 100000)
sample_gen.generate_samples('detector3', det3_dist, 100000)
# 创建时间序列生成器
sync_pulses = [
{'count': 475, 'period': 16000},
{'count': 20, 'period': 100000},
{'count': 1, 'period': 400000},
{'count': 0, 'period': 0}
]
ts_gen = TimeSeriesGenerator('CO', sync_pulses, sample_gen.sample_spaces, sample_gen.samplers, energy_K=2.0, energy_B=0.0)
time_series = ts_gen.generate_time_series()
print(f'各探测器信号数: det1={len(time_series["detector1"])}, det2={len(time_series["detector2"])}, det3={len(time_series["detector3"])}')
# 编码时间序列
encoded_signals = ts_gen.encode_time_series(time_series)
print(f'编码后信号数: {len(encoded_signals)}')
print(f'同步脉冲总数: {sum(p["count"] for p in sync_pulses)}')
# 检查有多少个事件结束标志
from core.encoder import BitFieldEncoder
encoder = BitFieldEncoder()
event_end_count = 0
for sig in encoded_signals:
decoded = encoder.decode(sig)
if decoded['event_end']:
event_end_count += 1
print(f'事件结束标志数量: {event_end_count}')