diff --git a/Domain/Data.cs b/Domain/Data.cs index 65ccbcc..4cc1dde 100644 --- a/Domain/Data.cs +++ b/Domain/Data.cs @@ -10,8 +10,9 @@ public record class Data( double? Theta, double? Smr, double? MuWave, + string OverlayPoint, bool? Artifact, double? SignalQuality, - long PackageIndex, + long FrameIndex, DateTime? TimeOfDataGenerate ); \ No newline at end of file diff --git a/Domain/Dto/JsonData.cs b/Domain/Dto/JsonData.cs index 4e2a30a..b73304d 100644 --- a/Domain/Dto/JsonData.cs +++ b/Domain/Dto/JsonData.cs @@ -22,16 +22,21 @@ public class JsonData public double? Smr { get; set; } [JsonPropertyName("muWave")] public double? MuWave { get; set; } + [JsonPropertyName("overlayPoint")] + public string overlayPoint { get; set; } [JsonPropertyName("artifact")] public bool? Artifact { get; set; } [JsonPropertyName("signalQuality")] public double? SignalQuality { get; set; } - [JsonPropertyName("packageIndex")] - public long PackageIndex { get; set; } + [JsonPropertyName("frameIndex")] + public long FrameIndex { get; set; } [JsonPropertyName("timeOfDataGenerate")] public DateTime? TimeOfDataGenerate { get; set; } - public JsonData() { } + public JsonData() + { + overlayPoint = ""; + } public JsonData(Data data) { @@ -44,9 +49,10 @@ public class JsonData Theta = data.Theta; Smr = data.Smr; MuWave = data.MuWave; + overlayPoint = data.OverlayPoint; Artifact = data.Artifact; SignalQuality = data.SignalQuality; - PackageIndex = data.PackageIndex; + FrameIndex = data.FrameIndex; TimeOfDataGenerate = data.TimeOfDataGenerate; } @@ -62,9 +68,10 @@ public class JsonData Theta, Smr, MuWave, + overlayPoint, Artifact, SignalQuality, - PackageIndex, + FrameIndex, TimeOfDataGenerate ); } diff --git a/Domain/Dto/MessagePackData.cs b/Domain/Dto/MessagePackData.cs index 55e4aab..d3b0545 100644 --- a/Domain/Dto/MessagePackData.cs +++ b/Domain/Dto/MessagePackData.cs @@ -23,16 +23,21 @@ public class MessagePackData public double? Smr { get; set; } [Key("muWave")] public double? MuWave { get; set; } + [Key("overlayPoint")] + public string overlayPoint { get; set; } [Key("artifact")] public bool? Artifact { get; set; } [Key("signalQuality")] public double? SignalQuality { get; set; } - [Key("packageIndex")] - public long PackageIndex { get; set; } + [Key("frameIndex")] + public long FrameIndex { get; set; } [Key("timeOfDataGenerate")] public DateTime? TimeOfDataGenerate { get; set; } - public MessagePackData() { } + public MessagePackData() + { + overlayPoint = ""; + } public MessagePackData(Data data) { @@ -45,9 +50,10 @@ public class MessagePackData Theta = data.Theta; Smr = data.Smr; MuWave = data.MuWave; + overlayPoint = data.OverlayPoint; Artifact = data.Artifact; SignalQuality = data.SignalQuality; - PackageIndex = data.PackageIndex; + FrameIndex = data.FrameIndex; TimeOfDataGenerate = data.TimeOfDataGenerate; } @@ -63,9 +69,10 @@ public class MessagePackData Theta, Smr, MuWave, + overlayPoint, Artifact, SignalQuality, - PackageIndex, + FrameIndex, TimeOfDataGenerate ); } diff --git a/Domain/OverlayPoints.cs b/Domain/OverlayPoints.cs new file mode 100644 index 0000000..96a0c65 --- /dev/null +++ b/Domain/OverlayPoints.cs @@ -0,0 +1,40 @@ +namespace Domain; + +public static class OverlayPoints +{ + public static readonly string All = "ALL"; + /// + /// Список всех точек наложения по схеме 10-20 + /// + public static readonly string[] Points = { + "Fp1", "Fp2", "F3", "F4", "Fz", "C3", "C4", "Cz", + "P3", "P4", "Pz", "F7", "F8", "T3", "T4", "T5", "T6", "O1", "O2" + }; + + /// + /// Описания точек наложения + /// + public static readonly Dictionary 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)"} + }; +} + diff --git a/Server/DataGenerator.cs b/Server/DataGenerator.cs index 3258c4e..4669d28 100644 --- a/Server/DataGenerator.cs +++ b/Server/DataGenerator.cs @@ -31,25 +31,25 @@ public class DataGenerator private void GenerateInBackground(CancellationToken token) { - var firstData = GenerateRandomData(0); + var firstData = GenerateRandomData(0, "ALL"); _cache.AddLast(firstData); - _dict[firstData.PackageIndex] = firstData; + _dict[firstData.FrameIndex] = firstData; while (!token.IsCancellationRequested) { //await Task.Delay(_generationInterval, token); var first = _cache.First!.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); - _dict[data.PackageIndex] = data; + _dict[data.FrameIndex] = data; } - if (_maxRequestedIndex - first.PackageIndex > _maxPreviousPackages) + if (_maxRequestedIndex - first.FrameIndex > _maxPreviousPackages) { _cache.RemoveFirst(); - _dict.TryRemove(first.PackageIndex, out _); + _dict.TryRemove(first.FrameIndex, out _); } //System.Console.WriteLine($"[{first.PackageIndex}; {last.PackageIndex}]"); } @@ -62,7 +62,7 @@ public class DataGenerator return res ? value : null; } - private Data GenerateRandomData(long packageNumber) + private Data GenerateRandomData(long frameIndex, string overlayPoint) { var alpha = _random.NextDouble(); var beta = _random.NextDouble() * (1 - alpha); @@ -79,9 +79,10 @@ public class DataGenerator Theta: _random.NextDouble() < 0.1 ? null : theta, Smr: _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, SignalQuality: _random.NextDouble() < 0.1 ? null : signalQuality, - PackageIndex: packageNumber, + FrameIndex: frameIndex, TimeOfDataGenerate: _random.NextDouble() < 0.1 ? null : DateTime.Now ); }