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