Добавлены точки наложения и индекс кадра вместо индекса пакета
This commit is contained in:
@@ -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
|
||||
);
|
||||
@@ -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
|
||||
);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
);
|
||||
}
|
||||
|
||||
40
Domain/OverlayPoints.cs
Normal file
40
Domain/OverlayPoints.cs
Normal 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)"}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user