示例#1
0
        private void DrawAllSignal()
        {
            // Получим панель для рисования
            GraphPane pane = AllSignalZedGraph.GraphPane;

            pane.IsFontsScaled         = false;
            pane.Title.IsVisible       = false;
            pane.XAxis.Title.IsVisible = false;
            pane.YAxis.Title.IsVisible = false;
            pane.XAxis.Title.Text      = "Время (кадр)";
            pane.YAxis.Title.Text      = "Номер нейрона";
            // Очистим список кривых на тот случай, если до этого сигналы уже были нарисованы
            pane.CurveList.Clear();

            // Создадим список точек
            PointPairList list = new PointPairList();

            pane.XAxis.Scale.Min = 0;
            pane.XAxis.Scale.Max = NeuronDataManager.Neurons[0].IntensityCleanData.Count + 10;



            // Опорные точки выделяться не будут (SymbolType.None)
            for (int i = 0; i < NeuronDataManager.Neurons.Count; i++)
            {
                double[] raw = NeuronDataManager.Neurons[i].IntensityCleanData.ToArray();
                double[] x   = new double[raw.Length];
                //заполним x от 0 до N
                for (int j = 0; j < x.Length; j++)
                {
                    x[j] = j;
                }

                double color_length = 380.0 + i * (780.0 - 380.0) / NeuronDataManager.Neurons.Count;

                LineItem myCurve = pane.AddCurve("", x, raw, Colors.waveToColor(color_length), SymbolType.None);
                myCurve.Line.IsSmooth      = true;
                myCurve.Line.SmoothTension = 1;
                if (NeuronDataManager.Neurons[i].ID == SelectedID)
                {
                    myCurve.Line.Width = 4;
                    myCurve.Line.Color = Color.Black;
                }
            }

            // Вызываем метод AxisChange (), чтобы обновить данные об осях.
            // В противном случае на рисунке будет показана только часть графика,
            // которая умещается в интервалы по осям, установленные по умолчанию
            AllSignalZedGraph.AxisChange();

            // Обновляем график
            AllSignalZedGraph.Invalidate();
        }
示例#2
0
        private void SmoothSparkles()
        {
            double[] IntensityData        = NeuronDataManager.Neurons[0].IntensityCleanData.ToArray();
            int      L                    = NeuronDataManager.Neurons[0].IntensityCleanData.Count;
            int      N                    = NeuronDataManager.Neurons.Count;
            List <List <double> > AllData = GetNormalisedData();

            GraphPane pane = ZDC_ColorMap.GraphPane;

            pane.CurveList.Clear();
            pane.XAxis.Scale.Max = L + 50;
            PointPairList list;
            LineItem      myCurve = new LineItem("");

            myCurve.Line.Width = 1.0F;
            double        lambda;
            List <double> tmpY;
            List <double> tmpX;

            for (int i = 0; i < NeuronDataManager.Neurons.Count; i++)
            {
                lambda = i * (740 - 380) / N + 380;
                for (int j = 0; j < NeuronDataManager.Neurons[i].Sparkles.Count; j++)
                {
                    tmpY = new List <double>();
                    tmpX = new List <double>();
                    for (int k = 0; k < NeuronDataManager.Neurons[i].Sparkles[j].Count; k++)
                    {
                        tmpY.Add(NeuronDataManager.Neurons[i].Sparkles[j][k].Y);
                        tmpX.Add(NeuronDataManager.Neurons[i].Sparkles[j][k].X);
                    }

                    myCurve = pane.AddCurve("", tmpX.ToArray(), tmpY.ToArray(), Color.Gray, SymbolType.None);
                    tmpY    = CurveProcessingTools.WindowAVGC(tmpY, 5);
                    myCurve = pane.AddCurve("", tmpX.ToArray(), tmpY.ToArray(), Colors.waveToColor(lambda), SymbolType.None);
                }
            }
        }
示例#3
0
        private void DrawGray()
        {
            double[] IntensityData        = NeuronDataManager.Neurons[0].IntensityCleanData.ToArray();
            int      L                    = NeuronDataManager.Neurons[0].IntensityCleanData.Count;
            int      N                    = NeuronDataManager.Neurons.Count;
            List <List <double> > AllData = GetNormalisedData();
            //List<List<List<PointD>>> TMP = GetNormalisedSparkles();


            GraphPane pane = ZDC_ColorMap.GraphPane;

            pane.CurveList.Clear();
            pane.XAxis.Scale.Max = L + 50;
            PointPairList list;
            LineItem      myCurve = new LineItem("");

            myCurve.Line.Width = 1.0F;
            double lambda;

            //Grays
            double [] indexes;
            int       Left  = 0;
            int       Right = 1;

            for (int i = 0; i < N; i++)
            {
                // точки до первой вспышки
                list = new PointPairList();
                myCurve.Line.Width = 2.0F;
                IntensityData      = AllData[i].ToArray();
                for (int k = 0; k <= NeuronDataManager.Neurons[i].SparkleIndexes[0][0]; k++)
                {
                    list.Add(k, IntensityData[k]);
                }
                list.Add(PointPairBase.Missing, PointPairBase.Missing);
                myCurve = pane.AddCurve("", list, Color.Gray, SymbolType.None);

                //

                lambda = i * (740 - 380) / N + 380;
                for (int j = 1; j < NeuronDataManager.Neurons[i].SparkleIndexes.Count; j++)
                {
                    myCurve.Line.Width = 1.0F;
                    list    = new PointPairList();
                    indexes = NeuronDataManager.Neurons[i].SparkleIndexes[j - 1];
                    Left    = (int)indexes[0];
                    Right   = (int)indexes[1];
                    for (int k = Left; k <= Right && (k < L); k++)
                    {
                        list.Add(k, IntensityData[k]);
                    }
                    list.Add(PointPairBase.Missing, PointPairBase.Missing);
                    myCurve = pane.AddCurve("", list, Colors.waveToColor(lambda), SymbolType.None);

                    myCurve.Line.Width = 2.0F;
                    list    = new PointPairList();
                    indexes = NeuronDataManager.Neurons[i].SparkleIndexes[j];
                    Left    = (int)indexes[0];
                    //Right = (int)indexes[0];
                    for (int k = Right + 1; k < Left && (k < L); k++)
                    {
                        list.Add(k, IntensityData[k]);
                    }
                    list.Add(PointPairBase.Missing, PointPairBase.Missing);
                    myCurve = pane.AddCurve("", list, Color.Gray, SymbolType.None);
                }
            }
            ZDC_ColorMap.AxisChange();
            ZDC_ColorMap.Invalidate();
        }