/// <summary> /// 呼吸状態3のラベルを取得する /// </summary> /// <param name="data"></param> /// <returns>ラベル</returns> LabelData.Label MatchLabelBreathState3(BreathGraph.Data data) { foreach (BreathState breathLabel in breathLabelList) { if (breathLabel.GetBreathState().Equals(data.GetBreathState3())) { return(breathLabel.GetLabel()); } } return(null); }
bool IsEndMukokyuu(BreathGraph.Data data, int j) { if (j == 0 && data.GetBreathState1() != SleepData.BreathState.Apnea) { return(true); } else if (j == 1 && data.GetBreathState2() != SleepData.BreathState.Apnea) { return(true); } else if (j == 2 && data.GetBreathState3() != SleepData.BreathState.Apnea) { return(true); } return(false); }
//取得した酸素量のデータをグラフに表示しやすいようにラベルデータへ変換する List <LabelData> TransSensingDataToLabelData(List <BreathGraph.Data> dataList) { List <LabelData> labelDataList = new List <LabelData>(); int mukokyuuStartRow = 0; int mukokyuuStartRow2 = 0; long mukokyuStartTime = 0; long mukokyuContinuousTime = 0; for (int i = 0; i < dataList.Count; i++) { BreathGraph.Data item = dataList[i]; // statesはitemの0秒後、10秒後、20秒後の状態 SleepData.BreathState[] states = { item.GetBreathState1(), item.GetBreathState2(), item.GetBreathState3() }; for (int j = 0; j < states.Length; j++) { var state = states[j]; if (state == SleepData.BreathState.Apnea) { long tmpTime = ((System.DateTimeOffset)item.GetTimeValue(j)).ToUnixTimeSeconds(); if (mukokyuStartTime == 0) { mukokyuStartTime = tmpTime - 10; mukokyuuStartRow = i; mukokyuuStartRow2 = j; } else { mukokyuContinuousTime = tmpTime - mukokyuStartTime; } } else { if (mukokyuContinuousTime > CSVManager.MAX_MUKOKYU_CONTINUOUS_TIME) //無呼吸状態が3分(180s)以上続いている場合 { // 無呼吸開始から終了までの無呼吸状態を「無呼吸」から「不明」に変更 BreathStateApneaToEmpty(mukokyuuStartRow, mukokyuuStartRow2, i, j); } //Reset mukokyuContinuousTime = 0; mukokyuStartTime = 0; } } } //Check when end of file if (mukokyuContinuousTime > CSVManager.MAX_MUKOKYU_CONTINUOUS_TIME) //無呼吸状態が3分(180s)以上続いている場合 { // 無呼吸開始から終了までの無呼吸状態を「無呼吸」から「不明」に変更 BreathStateApneaToEmpty(mukokyuuStartRow, mukokyuuStartRow2, dataList.Count, 0); } foreach (BreathGraph.Data data in dataList) { labelDataList.Add(new LabelData(1f, MatchLabelBreathState1(data))); labelDataList.Add(new LabelData(1f, MatchLabelBreathState2(data))); labelDataList.Add(new LabelData(1f, MatchLabelBreathState3(data))); } labelDataList.RemoveAll( s => s == null ); return(labelDataList); }