# {py:mod}`haniwers.daq`

```{py:module} haniwers.daq
```

```{autodoc2-docstring} haniwers.daq
:allowtitles:
```

## Module Contents

### Classes

````{list-table}
:class: autosummary longtable
:align: left

* - {py:obj}`RealEvent <haniwers.daq.RealEvent>`
  - ```{autodoc2-docstring} haniwers.daq.RealEvent
    :summary:
    ```
````

### Functions

````{list-table}
:class: autosummary longtable
:align: left

* - {py:obj}`init_saved <haniwers.daq.init_saved>`
  - ```{autodoc2-docstring} haniwers.daq.init_saved
    :summary:
    ```
* - {py:obj}`mkdir_saved <haniwers.daq.mkdir_saved>`
  - ```{autodoc2-docstring} haniwers.daq.mkdir_saved
    :summary:
    ```
* - {py:obj}`get_savef <haniwers.daq.get_savef>`
  - ```{autodoc2-docstring} haniwers.daq.get_savef
    :summary:
    ```
* - {py:obj}`get_savef_with_timestamp <haniwers.daq.get_savef_with_timestamp>`
  - ```{autodoc2-docstring} haniwers.daq.get_savef_with_timestamp
    :summary:
    ```
* - {py:obj}`open_serial_connection <haniwers.daq.open_serial_connection>`
  - ```{autodoc2-docstring} haniwers.daq.open_serial_connection
    :summary:
    ```
* - {py:obj}`write_vth <haniwers.daq.write_vth>`
  - ```{autodoc2-docstring} haniwers.daq.write_vth
    :summary:
    ```
* - {py:obj}`set_vth <haniwers.daq.set_vth>`
  - ```{autodoc2-docstring} haniwers.daq.set_vth
    :summary:
    ```
* - {py:obj}`set_vth_retry <haniwers.daq.set_vth_retry>`
  - ```{autodoc2-docstring} haniwers.daq.set_vth_retry
    :summary:
    ```
* - {py:obj}`_read_event <haniwers.daq._read_event>`
  - ```{autodoc2-docstring} haniwers.daq._read_event
    :summary:
    ```
* - {py:obj}`_loop_events_for_rows <haniwers.daq._loop_events_for_rows>`
  - ```{autodoc2-docstring} haniwers.daq._loop_events_for_rows
    :summary:
    ```
* - {py:obj}`_loop_events_for_duration <haniwers.daq._loop_events_for_duration>`
  - ```{autodoc2-docstring} haniwers.daq._loop_events_for_duration
    :summary:
    ```
* - {py:obj}`loop_and_save <haniwers.daq.loop_and_save>`
  - ```{autodoc2-docstring} haniwers.daq.loop_and_save
    :summary:
    ```
* - {py:obj}`events_to_dataframe <haniwers.daq.events_to_dataframe>`
  - ```{autodoc2-docstring} haniwers.daq.events_to_dataframe
    :summary:
    ```
* - {py:obj}`run_daq <haniwers.daq.run_daq>`
  - ```{autodoc2-docstring} haniwers.daq.run_daq
    :summary:
    ```
* - {py:obj}`scan_daq <haniwers.daq.scan_daq>`
  - ```{autodoc2-docstring} haniwers.daq.scan_daq
    :summary:
    ```
* - {py:obj}`run <haniwers.daq.run>`
  - ```{autodoc2-docstring} haniwers.daq.run
    :summary:
    ```
* - {py:obj}`time_daq <haniwers.daq.time_daq>`
  - ```{autodoc2-docstring} haniwers.daq.time_daq
    :summary:
    ```
* - {py:obj}`scan_ch_vth <haniwers.daq.scan_ch_vth>`
  - ```{autodoc2-docstring} haniwers.daq.scan_ch_vth
    :summary:
    ```
* - {py:obj}`scan_ch_thresholds <haniwers.daq.scan_ch_thresholds>`
  - ```{autodoc2-docstring} haniwers.daq.scan_ch_thresholds
    :summary:
    ```
* - {py:obj}`_read_serial_data_as_list <haniwers.daq._read_serial_data_as_list>`
  - ```{autodoc2-docstring} haniwers.daq._read_serial_data_as_list
    :summary:
    ```
* - {py:obj}`read_serial_data <haniwers.daq.read_serial_data>`
  - ```{autodoc2-docstring} haniwers.daq.read_serial_data
    :summary:
    ```
* - {py:obj}`_loop_and_save_events <haniwers.daq._loop_and_save_events>`
  - ```{autodoc2-docstring} haniwers.daq._loop_and_save_events
    :summary:
    ```
* - {py:obj}`loop_and_save_events <haniwers.daq.loop_and_save_events>`
  - ```{autodoc2-docstring} haniwers.daq.loop_and_save_events
    :summary:
    ```
* - {py:obj}`save_serial_data <haniwers.daq.save_serial_data>`
  - ```{autodoc2-docstring} haniwers.daq.save_serial_data
    :summary:
    ```
````

### API

`````{py:class} RealEvent(/, **data: typing.Any)
:canonical: haniwers.daq.RealEvent

Bases: {py:obj}`pydantic.BaseModel`

```{autodoc2-docstring} haniwers.daq.RealEvent
```

```{rubric} Initialization
```

```{autodoc2-docstring} haniwers.daq.RealEvent.__init__
```

````{py:attribute} timestamp
:canonical: haniwers.daq.RealEvent.timestamp
:type: datetime.datetime
:value: >
   'now(...)'

```{autodoc2-docstring} haniwers.daq.RealEvent.timestamp
```

````

````{py:attribute} top
:canonical: haniwers.daq.RealEvent.top
:type: int
:value: >
   0

```{autodoc2-docstring} haniwers.daq.RealEvent.top
```

````

````{py:attribute} mid
:canonical: haniwers.daq.RealEvent.mid
:type: int
:value: >
   0

```{autodoc2-docstring} haniwers.daq.RealEvent.mid
```

````

````{py:attribute} btm
:canonical: haniwers.daq.RealEvent.btm
:type: int
:value: >
   0

```{autodoc2-docstring} haniwers.daq.RealEvent.btm
```

````

````{py:attribute} adc
:canonical: haniwers.daq.RealEvent.adc
:type: int
:value: >
   0

```{autodoc2-docstring} haniwers.daq.RealEvent.adc
```

````

````{py:attribute} tmp
:canonical: haniwers.daq.RealEvent.tmp
:type: float
:value: >
   0.0

```{autodoc2-docstring} haniwers.daq.RealEvent.tmp
```

````

````{py:attribute} atm
:canonical: haniwers.daq.RealEvent.atm
:type: float
:value: >
   0.0

```{autodoc2-docstring} haniwers.daq.RealEvent.atm
```

````

````{py:attribute} hmd
:canonical: haniwers.daq.RealEvent.hmd
:type: float
:value: >
   0.0

```{autodoc2-docstring} haniwers.daq.RealEvent.hmd
```

````

````{py:method} to_list_string() -> list[str]
:canonical: haniwers.daq.RealEvent.to_list_string

```{autodoc2-docstring} haniwers.daq.RealEvent.to_list_string
```

````

````{py:method} to_csv_string() -> str
:canonical: haniwers.daq.RealEvent.to_csv_string

```{autodoc2-docstring} haniwers.daq.RealEvent.to_csv_string
```

````

````{py:method} to_tsv_string() -> str
:canonical: haniwers.daq.RealEvent.to_tsv_string

```{autodoc2-docstring} haniwers.daq.RealEvent.to_tsv_string
```

````

````{py:method} to_ltsv_string() -> str
:canonical: haniwers.daq.RealEvent.to_ltsv_string

```{autodoc2-docstring} haniwers.daq.RealEvent.to_ltsv_string
```

````

`````

````{py:function} init_saved(daq: haniwers.config.Daq) -> None
:canonical: haniwers.daq.init_saved

```{autodoc2-docstring} haniwers.daq.init_saved
```
````

````{py:function} mkdir_saved(daq: haniwers.config.Daq) -> None
:canonical: haniwers.daq.mkdir_saved

```{autodoc2-docstring} haniwers.daq.mkdir_saved
```
````

````{py:function} get_savef(args: haniwers.config.Daq, fid: int | str) -> pathlib.Path
:canonical: haniwers.daq.get_savef

```{autodoc2-docstring} haniwers.daq.get_savef
```
````

````{py:function} get_savef_with_timestamp(args: haniwers.config.Daq, fid: int | str) -> pathlib.Path
:canonical: haniwers.daq.get_savef_with_timestamp

```{autodoc2-docstring} haniwers.daq.get_savef_with_timestamp
```
````

````{py:function} open_serial_connection(daq: haniwers.config.Daq) -> serial.Serial
:canonical: haniwers.daq.open_serial_connection

```{autodoc2-docstring} haniwers.daq.open_serial_connection
```
````

````{py:function} write_vth(port: serial.Serial, ch: int, vth: int) -> bool
:canonical: haniwers.daq.write_vth

```{autodoc2-docstring} haniwers.daq.write_vth
```
````

````{py:function} set_vth(daq: haniwers.config.Daq, ch: int, vth: int) -> bool
:canonical: haniwers.daq.set_vth

```{autodoc2-docstring} haniwers.daq.set_vth
```
````

````{py:function} set_vth_retry(daq: haniwers.config.Daq, ch: int, vth: int, max_retry: int) -> bool
:canonical: haniwers.daq.set_vth_retry

```{autodoc2-docstring} haniwers.daq.set_vth_retry
```
````

````{py:function} _read_event(port: serial.Serial) -> haniwers.daq.RealEvent
:canonical: haniwers.daq._read_event

```{autodoc2-docstring} haniwers.daq._read_event
```
````

````{py:function} _loop_events_for_rows(port: serial.Serial, max_rows: int) -> typing.Generator[haniwers.daq.RealEvent, None, None]
:canonical: haniwers.daq._loop_events_for_rows

```{autodoc2-docstring} haniwers.daq._loop_events_for_rows
```
````

````{py:function} _loop_events_for_duration(port: serial.Serial, max_duration: int) -> typing.Generator[haniwers.daq.RealEvent, None, None]
:canonical: haniwers.daq._loop_events_for_duration

```{autodoc2-docstring} haniwers.daq._loop_events_for_duration
```
````

````{py:function} loop_and_save(fname: pathlib.Path, generator: typing.Generator) -> list[haniwers.daq.RealEvent]
:canonical: haniwers.daq.loop_and_save

```{autodoc2-docstring} haniwers.daq.loop_and_save
```
````

````{py:function} events_to_dataframe(events: list[haniwers.daq.RealEvent]) -> pandas.DataFrame
:canonical: haniwers.daq.events_to_dataframe

```{autodoc2-docstring} haniwers.daq.events_to_dataframe
```
````

````{py:function} run_daq(port: serial.Serial, daq: haniwers.config.Daq) -> None
:canonical: haniwers.daq.run_daq

```{autodoc2-docstring} haniwers.daq.run_daq
```
````

````{py:function} scan_daq(args: haniwers.config.Daq, fname: str, duration: int) -> pandas.DataFrame
:canonical: haniwers.daq.scan_daq

```{autodoc2-docstring} haniwers.daq.scan_daq
```
````

````{py:function} run(port: serial.Serial, args: haniwers.config.Daq)
:canonical: haniwers.daq.run

```{autodoc2-docstring} haniwers.daq.run
```
````

````{py:function} time_daq(args: haniwers.config.Daq, duration: int) -> pandas.DataFrame
:canonical: haniwers.daq.time_daq

```{autodoc2-docstring} haniwers.daq.time_daq
```
````

````{py:function} scan_ch_vth(daq: haniwers.config.Daq, duration: int, ch: int, vth: int) -> list
:canonical: haniwers.daq.scan_ch_vth

```{autodoc2-docstring} haniwers.daq.scan_ch_vth
```
````

````{py:function} scan_ch_thresholds(daq: haniwers.config.Daq, duration: int, ch: int, thresholds: list[int]) -> list[list]
:canonical: haniwers.daq.scan_ch_thresholds

```{autodoc2-docstring} haniwers.daq.scan_ch_thresholds
```
````

````{py:function} _read_serial_data_as_list(port: serial.Serial) -> list
:canonical: haniwers.daq._read_serial_data_as_list

```{autodoc2-docstring} haniwers.daq._read_serial_data_as_list
```
````

````{py:function} read_serial_data(port: serial.Serial) -> list
:canonical: haniwers.daq.read_serial_data

```{autodoc2-docstring} haniwers.daq.read_serial_data
```
````

````{py:function} _loop_and_save_events(fname: pathlib.Path, port: serial.Serial, max_rows: int, suffix: str = '.csv') -> list
:canonical: haniwers.daq._loop_and_save_events

```{autodoc2-docstring} haniwers.daq._loop_and_save_events
```
````

````{py:function} loop_and_save_events(f: typing.TextIO, daq: haniwers.config.Daq, port: serial.Serial) -> list[str]
:canonical: haniwers.daq.loop_and_save_events

```{autodoc2-docstring} haniwers.daq.loop_and_save_events
```
````

````{py:function} save_serial_data(f, daq: haniwers.config.Daq, port: serial.Serial) -> list
:canonical: haniwers.daq.save_serial_data

```{autodoc2-docstring} haniwers.daq.save_serial_data
```
````
