Добавлены точки наложения и индекс кадра вместо индекса пакета

This commit is contained in:
Пытков Роман
2025-09-19 21:59:58 +03:00
parent c9059f6df3
commit 38f3880be8
5 changed files with 76 additions and 20 deletions

View File

@@ -10,8 +10,9 @@ public record class Data(
double? Theta, double? Theta,
double? Smr, double? Smr,
double? MuWave, double? MuWave,
string OverlayPoint,
bool? Artifact, bool? Artifact,
double? SignalQuality, double? SignalQuality,
long PackageIndex, long FrameIndex,
DateTime? TimeOfDataGenerate DateTime? TimeOfDataGenerate
); );

View File

@@ -22,16 +22,21 @@ public class JsonData
public double? Smr { get; set; } public double? Smr { get; set; }
[JsonPropertyName("muWave")] [JsonPropertyName("muWave")]
public double? MuWave { get; set; } public double? MuWave { get; set; }
[JsonPropertyName("overlayPoint")]
public string overlayPoint { get; set; }
[JsonPropertyName("artifact")] [JsonPropertyName("artifact")]
public bool? Artifact { get; set; } public bool? Artifact { get; set; }
[JsonPropertyName("signalQuality")] [JsonPropertyName("signalQuality")]
public double? SignalQuality { get; set; } public double? SignalQuality { get; set; }
[JsonPropertyName("packageIndex")] [JsonPropertyName("frameIndex")]
public long PackageIndex { get; set; } public long FrameIndex { get; set; }
[JsonPropertyName("timeOfDataGenerate")] [JsonPropertyName("timeOfDataGenerate")]
public DateTime? TimeOfDataGenerate { get; set; } public DateTime? TimeOfDataGenerate { get; set; }
public JsonData() { } public JsonData()
{
overlayPoint = "";
}
public JsonData(Data data) public JsonData(Data data)
{ {
@@ -44,9 +49,10 @@ public class JsonData
Theta = data.Theta; Theta = data.Theta;
Smr = data.Smr; Smr = data.Smr;
MuWave = data.MuWave; MuWave = data.MuWave;
overlayPoint = data.OverlayPoint;
Artifact = data.Artifact; Artifact = data.Artifact;
SignalQuality = data.SignalQuality; SignalQuality = data.SignalQuality;
PackageIndex = data.PackageIndex; FrameIndex = data.FrameIndex;
TimeOfDataGenerate = data.TimeOfDataGenerate; TimeOfDataGenerate = data.TimeOfDataGenerate;
} }
@@ -62,9 +68,10 @@ public class JsonData
Theta, Theta,
Smr, Smr,
MuWave, MuWave,
overlayPoint,
Artifact, Artifact,
SignalQuality, SignalQuality,
PackageIndex, FrameIndex,
TimeOfDataGenerate TimeOfDataGenerate
); );
} }

View File

@@ -23,16 +23,21 @@ public class MessagePackData
public double? Smr { get; set; } public double? Smr { get; set; }
[Key("muWave")] [Key("muWave")]
public double? MuWave { get; set; } public double? MuWave { get; set; }
[Key("overlayPoint")]
public string overlayPoint { get; set; }
[Key("artifact")] [Key("artifact")]
public bool? Artifact { get; set; } public bool? Artifact { get; set; }
[Key("signalQuality")] [Key("signalQuality")]
public double? SignalQuality { get; set; } public double? SignalQuality { get; set; }
[Key("packageIndex")] [Key("frameIndex")]
public long PackageIndex { get; set; } public long FrameIndex { get; set; }
[Key("timeOfDataGenerate")] [Key("timeOfDataGenerate")]
public DateTime? TimeOfDataGenerate { get; set; } public DateTime? TimeOfDataGenerate { get; set; }
public MessagePackData() { } public MessagePackData()
{
overlayPoint = "";
}
public MessagePackData(Data data) public MessagePackData(Data data)
{ {
@@ -45,9 +50,10 @@ public class MessagePackData
Theta = data.Theta; Theta = data.Theta;
Smr = data.Smr; Smr = data.Smr;
MuWave = data.MuWave; MuWave = data.MuWave;
overlayPoint = data.OverlayPoint;
Artifact = data.Artifact; Artifact = data.Artifact;
SignalQuality = data.SignalQuality; SignalQuality = data.SignalQuality;
PackageIndex = data.PackageIndex; FrameIndex = data.FrameIndex;
TimeOfDataGenerate = data.TimeOfDataGenerate; TimeOfDataGenerate = data.TimeOfDataGenerate;
} }
@@ -63,9 +69,10 @@ public class MessagePackData
Theta, Theta,
Smr, Smr,
MuWave, MuWave,
overlayPoint,
Artifact, Artifact,
SignalQuality, SignalQuality,
PackageIndex, FrameIndex,
TimeOfDataGenerate TimeOfDataGenerate
); );
} }

40
Domain/OverlayPoints.cs Normal file
View File

@@ -0,0 +1,40 @@
namespace Domain;
public static class OverlayPoints
{
public static readonly string All = "ALL";
/// <summary>
/// Список всех точек наложения по схеме 10-20
/// </summary>
public static readonly string[] Points = {
"Fp1", "Fp2", "F3", "F4", "Fz", "C3", "C4", "Cz",
"P3", "P4", "Pz", "F7", "F8", "T3", "T4", "T5", "T6", "O1", "O2"
};
/// <summary>
/// Описания точек наложения
/// </summary>
public static readonly Dictionary<string, string> Descriptions = new()
{
{"Fp1", "переднелобные (prefrontal)"},
{"Fp2", "переднелобные (prefrontal)"},
{"F3", "лобные (frontal)"},
{"F4", "лобные (frontal)"},
{"Fz", "среднелобный"},
{"C3", "центральные (central)"},
{"C4", "центральные (central)"},
{"Cz", "центральный вертексный"},
{"P3", "теменные (parietal)"},
{"P4", "теменные (parietal)"},
{"Pz", "центральнотеменной"},
{"F7", "передневисочные"},
{"F8", "передневисочные"},
{"T3", "средневисочные (temporal)"},
{"T4", "средневисочные (temporal)"},
{"T5", "задневисочные"},
{"T6", "задневисочные"},
{"O1", "затылочная (occipital)"},
{"O2", "затылочная (occipital)"}
};
}

View File

@@ -31,25 +31,25 @@ public class DataGenerator
private void GenerateInBackground(CancellationToken token) private void GenerateInBackground(CancellationToken token)
{ {
var firstData = GenerateRandomData(0); var firstData = GenerateRandomData(0, "ALL");
_cache.AddLast(firstData); _cache.AddLast(firstData);
_dict[firstData.PackageIndex] = firstData; _dict[firstData.FrameIndex] = firstData;
while (!token.IsCancellationRequested) while (!token.IsCancellationRequested)
{ {
//await Task.Delay(_generationInterval, token); //await Task.Delay(_generationInterval, token);
var first = _cache.First!.Value; var first = _cache.First!.Value;
var last = _cache.Last!.Value; var last = _cache.Last!.Value;
if (last.PackageIndex - _maxRequestedIndex < _minNewPackages) if (last.FrameIndex - _maxRequestedIndex < _minNewPackages)
{ {
var data = GenerateRandomData(last.PackageIndex + 1); var data = GenerateRandomData(last.FrameIndex + 1, "ALL");
_cache.AddLast(data); _cache.AddLast(data);
_dict[data.PackageIndex] = data; _dict[data.FrameIndex] = data;
} }
if (_maxRequestedIndex - first.PackageIndex > _maxPreviousPackages) if (_maxRequestedIndex - first.FrameIndex > _maxPreviousPackages)
{ {
_cache.RemoveFirst(); _cache.RemoveFirst();
_dict.TryRemove(first.PackageIndex, out _); _dict.TryRemove(first.FrameIndex, out _);
} }
//System.Console.WriteLine($"[{first.PackageIndex}; {last.PackageIndex}]"); //System.Console.WriteLine($"[{first.PackageIndex}; {last.PackageIndex}]");
} }
@@ -62,7 +62,7 @@ public class DataGenerator
return res ? value : null; return res ? value : null;
} }
private Data GenerateRandomData(long packageNumber) private Data GenerateRandomData(long frameIndex, string overlayPoint)
{ {
var alpha = _random.NextDouble(); var alpha = _random.NextDouble();
var beta = _random.NextDouble() * (1 - alpha); var beta = _random.NextDouble() * (1 - alpha);
@@ -79,9 +79,10 @@ public class DataGenerator
Theta: _random.NextDouble() < 0.1 ? null : theta, Theta: _random.NextDouble() < 0.1 ? null : theta,
Smr: _random.NextDouble() < 0.1 ? null : _random.NextDouble(), Smr: _random.NextDouble() < 0.1 ? null : _random.NextDouble(),
MuWave: _random.NextDouble() < 0.1 ? null : _random.NextDouble(), MuWave: _random.NextDouble() < 0.1 ? null : _random.NextDouble(),
OverlayPoint: overlayPoint,
Artifact: _random.NextDouble() < 0.1 ? null : signalQuality < 0.5, Artifact: _random.NextDouble() < 0.1 ? null : signalQuality < 0.5,
SignalQuality: _random.NextDouble() < 0.1 ? null : signalQuality, SignalQuality: _random.NextDouble() < 0.1 ? null : signalQuality,
PackageIndex: packageNumber, FrameIndex: frameIndex,
TimeOfDataGenerate: _random.NextDouble() < 0.1 ? null : DateTime.Now TimeOfDataGenerate: _random.NextDouble() < 0.1 ? null : DateTime.Now
); );
} }