コード例 #1
0
 /// <summary>
 /// 呼吸状態1のラベルを取得する
 /// </summary>
 /// <param name="data"></param>
 /// <returns>ラベル</returns>
 LabelData.Label MatchLabelBreathState1(BreathGraph.Data data)
 {
     foreach (BreathState breathLabel in breathLabelList)
     {
         if (breathLabel.GetBreathState().Equals(data.GetBreathState1()))
         {
             return(breathLabel.GetLabel());
         }
     }
     return(null);
 }
コード例 #2
0
        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);
        }
コード例 #3
0
        //取得した酸素量のデータをグラフに表示しやすいようにラベルデータへ変換する
        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);
        }