声卡伽马能谱工具包
GammaLab的Python项目详细描述
用于声卡伽玛能谱的python工具包。
简介
这个包是一个python包,用于获取和分析 声卡数据,特别是使用 声卡作为他们的ADC接口。它由独立的建筑物组成 可以连接和重新配置以形成 不同的分析管道。示例包括在 存储库位于examples目录中。
先决条件
您至少需要:
- python 2.7或3.6或更高版本,
- 努比
- pyaudio
建议是:
- matplotlib
安装
最简单的方法是使用pip:
pip install GammaLab
用法
获取数据并绘制伽马能谱的示例应用程序是 包括,您可以获得帮助:
./gammalab-histogram.py --help
这只提供了gamma 实验室提供。您可以编写自己的应用程序,示例如下 examples目录。
更多详细信息
应用程序由与 “电线”。要包含一个组件,它需要导入 实例化,例如,您几乎总是需要:
from gammalab.acquisition import Soundcard soundcard=Soundcard()
在实例化其他组件之后,说:
from gammalab.backend import SaveRaw save=SaveRaw()
它们需要“有线”:
soundcard.plugs_into(save)
目前,组件可以有一个输入和一个输出,但是有一个输出 可以连接到多个组件。当所有组件都连接好后, 启动管道:
main(timout=100)
超时是可选的。应用程序将一直运行,直到按下<;enter>;。 或者直到超时为止。
提供以下服务:
from gammalab.acquisition import SoundCard from gammalab.acquisition import Noise from gammalab.transform import Raw2Float from gammalab.transform import DownSampleMaxed from gammalab.transform import Identity from gammalab.analysis import PulseDetection from gammalab.analysis import Histogram from gammalab.analysis import Count from gammalab.backend import Playback from gammalab.backend import Monitor from gammalab.backend import SaveRaw
注意,其中大多数都提供了基本的实现,并且对 改进。
开发
对附加服务进行编程并不困难。
服务是至少具有以下方法的类:`start`stop`和 `close`。接受输入的服务应该实例化“wire” 类定义其输入,并具有connect-input和receive-input方法 (通常通过从ReceivingService类派生来处理)。如果它 生成输出,服务应该有一个output_protocol方法,该方法 检查输入导线格式并将任何附加信息传播到 电线。它还需要一些通常由 从sourceservice类(特别是^{tt4})派生$ 方法)。
服务启动一个单独的线程来进行计算。这可能 也可以使用其他包的线程(例如,用于声卡采集 使用pyaudio的回调线程)。
具有输入和输出的服务的最简单示例如下:
class Identity(ThreadService, SourceService, ReceivingService): def __init__(self): SourceService.__init__(self) ReceivingService.__init__(self) ThreadService.__init__(self) self.input_wire=RawWire() def output_protocol(self, wire): assert isinstance(wire, RawWire) wire.CHANNELS=self.input_wire.CHANNELS wire.RATE=self.input_wire.RATE wire.FORMAT=self.input_wire.FORMAT def process(self, data): return data
此服务只将输入数据(原始字节流)转发到其输出。