Files
2026-04-17 14:55:32 -04:00

63 lines
3.5 KiB
Markdown

---
source_files:
- Common/DTS.Common.Serialization/SoMat/SoMat.File.cs
- Common/DTS.Common.Serialization/SoMat/SoMatTestHeader.cs
- Common/DTS.Common.Serialization/SoMat/SoMatChannel.cs
- Common/DTS.Common.Serialization/SoMat/SoMat.File.Writer.cs
generated_at: "2026-04-17T15:38:19.942361+00:00"
model: "zai-org/GLM-5-FP8"
schema_version: 1
sha256: "950813b64d2e6206"
---
# SoMat Serialization Module Documentation
## 1. Purpose
This module provides serialization support for exporting `DTS.Serialization.Test` objects to the SoMat file format (a text-based format compatible with DIAdem). It implements the `IWritable<Test>` interface to write test data, channel metadata, and filtered data samples to `.txt` files with a specific key-value structure. The module transforms internal test/channel structures into the SoMat schema, including header information, channel definitions, and tab-separated data columns.
---
## 2. Public Interface
### `DTS.Serialization.SoMat.File`
A partial class representing the SoMat file format handler.
| Member | Signature | Description |
|--------|-----------|-------------|
| Constructor | `File()` | Initializes a new instance, passing `"SoMat"` to the base `Serialization.File` constructor. |
| `Extension` | `static string Extension => ".txt"` | Static property returning the file extension for this format. |
| `Exporter` | `IWriter<Test> Exporter { get; }` | Lazily initializes and returns a `Writer` instance using `DefaultEncoding`. Wraps exceptions in a custom `Exception` with message "encountered problem getting exporter". |
---
### `DTS.Serialization.SoMat.SoMatTestHeader`
Represents the header section of a SoMat file.
| Member | Signature | Description |
|--------|-----------|-------------|
| `TestTitle` | `string TestTitle { get; set; }` | Defaults to empty string. |
| `Operator` | `string Operator { get; set; }` | Defaults to empty string. |
| `RunDateTime` | `string RunDateTime { get; set; }` | Defaults to empty string. |
| `NumLogChannels` | `int NumLogChannels => _channels.Count` | Read-only count of channels. |
| `Channels` | `SoMatChannel[] Channels => _channels.ToArray()` | Returns a copy of the internal channel list as an array. |
| `NumDataModes` | `int NumDataModes { get; set; }` | Defaults to `1`. |
| `Serialize` | `void Serialize(System.IO.StreamWriter sw)` | Writes header key-value pairs to the stream (DM_TestTitle, DM_Operator, RUNDATETIME, DM_NumLogChans, DM_NumDataModes). |
| Constructor | `SoMatTestHeader(Test test, FilteredData[] filteredData)` | Populates header from test data; attempts to set Operator from `WindowsIdentity.GetCurrent().Name` (silently catches exceptions). Creates `SoMatChannel` instances for each channel up to `filteredData.Length`. |
---
### `DTS.Serialization.SoMat.SoMatChannel`
Represents a single channel's metadata in the SoMat format.
| Member | Signature | Description |
|--------|-----------|-------------|
| `LogicalChannel` | `int LogicalChannel { get; set; }` | Logical channel number. |
| `ChanType` | `string ChanType { get; set; }` | Defaults to `"SEQUENTIAL"`. |
| `ChanName` | `string ChanName { get; set; }` | Defaults to empty string. |
| `NumDataPoints` | `ulong NumDataPoints { get; set; }` | Defaults to `0`. |
| `NumDims` | `int NumDims { get; set; }` | Defaults to `2`. |
| `DataMode` | `int DataMode { get; set; }` | Defaults to `1`. |
| `DataModeType` | `string DataModeType { get; set; }` | Defaults to `"TIMHIS"`. |
| `AxisLabelDim1` | `string AxisLabelDim1 { get; set; }` | Defaults to `"Time"`. |
| `AxisUnitsDim1