public void Init(ModuleParams parameters) { Params = parameters as Heart_Class_Params; Aborted = false; if (!Runnable()) _ended = true; else { _ended = false; InputEcGbaselineWorker = new ECG_Baseline_Data_Worker(Params.AnalysisName); InputEcGbaselineWorker.Load(); InputECGbaselineData = InputEcGbaselineWorker.Data; InputRpeaksWorker = new R_Peaks_Data_Worker(Params.AnalysisName); InputRpeaksWorker.Load(); InputRpeaksData = InputRpeaksWorker.Data; InputWavesWorker = new Waves_Data_Worker(Params.AnalysisName); InputWavesWorker.Load(); InputWavesData = InputWavesWorker.Data; OutputWorker = new Heart_Class_Data_Worker(Params.AnalysisName); OutputData = new Heart_Class_Data(); _currentChannelIndex = 0; _samplesProcessed = 0; NumberOfChannels = InputECGbaselineData.SignalsFiltered.Count; _currentChannelLength = InputECGbaselineData.SignalsFiltered[_currentChannelIndex].Item2.Count; _currentVector = Vector<Double>.Build.Dense(_currentChannelLength); qrsEndStep = 10; i = 10; step = InputWavesData.QRSEnds[_currentChannelIndex].Item2[qrsEndStep]; //ilośc próbek, aż do indeksu końca 10 załamka _tempClassResult = new List<Tuple<int, int>>(); } }
public static void Main() { Heart_Class_Params param = new Heart_Class_Params("Analysis6"); // "Analysis6"); Heart_Class testModule = new Heart_Class(); testModule.Init(param); while (true) { Console.WriteLine("Press key to continue."); Console.Read(); if (testModule.Ended()) break; Console.WriteLine(testModule.Progress()); testModule.ProcessData(); } /* Heart_Class HeartClass = new Heart_Class(); TempInput.setInputFilePath(@"C:\Users\Kamillo\Desktop\Kasia\DADM proj\signal.txt"); uint fs = TempInput.getFrequency(); HeartClass.Signal = TempInput.getSignal(); TempInput.setInputFilePath(@"C:\Users\Kamillo\Desktop\Kasia\DADM proj\qrsOnset.txt"); //ponizej chce wczytac jako wektor a to jest juz lista //HeartClass.QrsOnset = TempInput.getSignal(); TempInput.setInputFilePath(@"C:\Users\Kamillo\Desktop\Kasia\DADM proj\qrsEnd.txt"); //HeartClass.QrsEnd = TempInput.getSignal(); // uwaga tu mam pozniej wrzucic plik qrsR.txt !!!! TempInput.setInputFilePath(@"C:\Users\Kamillo\Desktop\Kasia\DADM proj\qrsEnd.txt"); HeartClass.QrsR = TempInput.getSignal(); //WCZYTANIE ZESPOŁÓW QRS NA PODSTAWIE QRSonsets i QRSends HeartClass.SetQrsComplex(); //LICZENIE WSPÓŁCZYNNIKÓW KSZTAŁTU HeartClass.QrsCoefficients = HeartClass.CountCoeff(HeartClass.GetQrsComplex(), fs); TempInput.setOutputFilePath(@"C:\Users\Kamillo\Desktop\Kasia\DADM proj\out_sig.txt"); TempInput.writeFile(fs, HeartClass.Signal); TempInput.setOutputFilePath(@"C:\Users\Kamillo\Desktop\Kasia\DADM proj\out_on.txt"); TempInput.writeFile(fs, HeartClass.QrsOnset); //WCZYTANIE ZBIORU TRENINGOWEGO List<Vector<double>> trainDataList = HeartClass.loadFile(@"C:\Users\Kamillo\Desktop\Kasia\DADM proj\train_d.txt"); //WCZYTANIE ETYKIET ZBIORU TRENINGOWEGO: 0-V, 1-NV List<Vector<double>> trainClassList = HeartClass.loadFile(@"C:\Users\Kamillo\Desktop\Kasia\DADM proj\train_d_label.txt"); // konwersja na listę intów, bo tak napisałam metodę do klasyfikacji: int oneClassElement; List<int> trainClass; trainClass = new List<int>(); foreach (var item in trainClassList) { foreach (var element in item) { oneClassElement = (int)element; trainClass.Add(oneClassElement); } } List<Vector<double>> testDataList = HeartClass.loadFile(@"C:\Users\Kamillo\Desktop\Kasia\DADM proj\test_d.txt"); // Tworzenie listy tupli zbioru testowego - w celach testowych (zbior treningowy i testowy wczytywany jest z pliku). //w ostatecznej wresji testDataList będzie obliczane w programie w formie: List<Tuple<int, Vector<double>>>: List<Tuple<int, Vector<double>>> testSamples; testSamples = new List<Tuple<int, Vector<double>>>(); Tuple<int, Vector<double>> oneElement; int R = 1; foreach (var item in testDataList) { oneElement = new Tuple<int, Vector<double>>(R, item.Clone()); testSamples.Add(oneElement); } //KLASYFIKACJA HeartClass.HeartClassData.ClassificationResult = HeartClass.TestKnnCase(trainDataList, HeartClass.QrsCoefficients, trainClass, 1); // klasyfikacja sygnału testowego signal //HeartClass.classificationResult = HeartClass.TestKnnCase(trainDataList, testSamples, trainClass, 1); // jeśli chcemy prztestować zbiór testowy (z matlaba) */ // nie działa bo onset i end są już List<int> //HeartClass.HeartClassData.ClassificationResult = HeartClass.Classification(HeartClass.Signal, fs, // HeartClass.QrsR, HeartClass.QrsOnset, HeartClass.QrsEnd); }