コード例 #1
0
        protected void RegisterAccept(object sender, EventArgs e)
        {
            int i = combobox_hyperscanning.Active;

            demo[i].set("SubjID", comboboxentry_subjID.ActiveText);
            demo[i].set("Investigator", combobox_investigators.ActiveText);
            demo[i].set("Study", combobox_studies.ActiveText);
            demo[i].set("Gender", demo_gender.ActiveText);
            demo[i].set("Group", demo_group.Text);
            demo[i].set("Age", demo_age.Text);
            demo[i].set("Instrument", MainClass.win.settings.SYSTEM);
            demo[i].set("head_circumference", demo_headsize.Text);
            demo[i].set("Technician", demo_tecnician.Text);
            demo[i].set("comments", demo_comments.Buffer.Text);

            // Add channels for Optical Density, HbO2, and HbR

            int cnt = probe.ChannelMap.Length;

            nirs.ChannelMap[] ChannelMap = new nirs.ChannelMap[cnt * 2 + 2 * cnt / probe.numWavelengths];
            for (int ii = 0; ii < cnt; ii++)
            {
                ChannelMap[ii] = probe.ChannelMap[ii];
            }
            for (int ii = 0; ii < cnt; ii++)
            {
                ChannelMap[ii + cnt]             = probe.ChannelMap[ii];
                ChannelMap[ii + cnt].datasubtype = String.Format("ΔOD {0}nm", ChannelMap[ii].wavelength);
            }
            for (int ii = 0; ii < cnt / probe.numWavelengths; ii++)
            {
                ChannelMap[ii + 2 * cnt]             = probe.ChannelMap[ii];
                ChannelMap[ii + 2 * cnt].datasubtype = "HbO2";
            }
            for (int ii = cnt / probe.numWavelengths; ii < cnt; ii++)
            {
                ChannelMap[ii + 2 * cnt]             = probe.ChannelMap[ii];
                ChannelMap[ii + 2 * cnt].datasubtype = "Hb";
            }
            probe.ChannelMap = ChannelMap;


            for (int dId = 0; dId < MainClass.devices.Length; dId++)
            {
                nirs.core.Data data = new nirs.core.Data();
                data.demographics = demo[dId];
                data.demographics.set("Investigator", combobox_investigators.ActiveText);
                data.demographics.set("Study", combobox_studies.ActiveText);
                data.demographics.set("Instrument", MainClass.win.settings.SYSTEM);
                DateTime now = DateTime.Now;
                data.demographics.set("scan_date", now.ToString("F"));
                data.probe = probe.Clone();

                data.probe.measlistAct = new bool[data.probe.ChannelMap.Length];
                for (int ii = 0; ii < data.probe.ChannelMap.Length; ii++)
                {
                    data.probe.measlistAct[ii] = true;
                }

                Gdk.Color[] cmap = new Gdk.Color[data.probe.ChannelMap.Length];
                for (int ii = 0; ii < data.probe.numChannels; ii++)
                {
                    cmap[ii] = data.probe.colormap[ii];
                    cmap[data.probe.numChannels + ii]     = data.probe.colormap[ii];
                    cmap[data.probe.numChannels * 2 + ii] = data.probe.colormap[ii];
                }
                data.probe.colormap = cmap;

                Gtk.ListStore ClearList = new Gtk.ListStore(typeof(string));
                MainClass.win._handles.whichdata.Model = ClearList;

                List <string> datatypes = new List <string>();
                for (int ii = 0; ii < data.probe.ChannelMap.Length; ii++)
                {
                    datatypes.Add(data.probe.ChannelMap[ii].datasubtype);
                }
                datatypes = datatypes.Distinct().ToList();

                foreach (string s in datatypes)
                {
                    MainClass.win._handles.whichdata.AppendText(s);
                }

                MainClass.win._handles.whichdata.Active = 0;

                MainClass.win.nirsdata.Add(data);
            }
            // Save the tmp file for quick reload
            string path = System.IO.Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);

            path = System.IO.Path.Combine(path, "LastSettings.xml");

            XmlWriterSettings settings = new XmlWriterSettings();

            settings.Indent             = true;
            settings.IndentChars        = ("    ");
            settings.CloseOutput        = true;
            settings.OmitXmlDeclaration = true;
            using (XmlWriter writer = XmlWriter.Create(path, settings))
            {
                writer.WriteStartElement("settings");
                writer.WriteElementString("probefile", probefilename);
                writer.WriteElementString("Investigator", (string)demo[i].get("Investigator"));
                writer.WriteElementString("Study", (string)demo[i].get("Study"));
                writer.WriteEndElement();
                writer.Flush();
            }


            MainClass.win.dataLSL = new LSL.liblsl.StreamOutlet[MainClass.devices.Length];
            for (int ii = 0; ii < MainClass.devices.Length; ii++)
            {
                int    fs   = MainClass.devices[ii].GetSampleRate();
                string name = string.Format("NIRSRecordIRData_{0}", ii + 1);
                LSL.liblsl.StreamInfo info = new LSL.liblsl.StreamInfo(name, "NIRS", MainClass.win.nirsdata[ii].probe.numChannels,
                                                                       (double)fs, LSL.liblsl.channel_format_t.cf_int32);
                MainClass.win.dataLSL[ii] = new LSL.liblsl.StreamOutlet(info);
            }



            MainClass.win.EnableControls(true);
            MainClass.win.ShowAll();
            MainClass.win._handles.SDGplot.QueueDraw();
            Destroy();
        }
コード例 #2
0
            public nirs.core.Data GetNewData(nirs.core.Data data, double dt = 0)
            {
                int    nsamples = 0;
                double fs;

                switch (devicetype)
                {
                case 0:
                    nsamples = ((NIRSDAQ.Instrument.Devices.Simulator)device).SamplesAvaliable();
                    fs       = ((NIRSDAQ.Instrument.Devices.Simulator)device).getsamplerate();

                    for (int i = 0; i < nsamples; i++)
                    {
                        double[] d = ((NIRSDAQ.Instrument.Devices.Simulator)device).Getdata();
                        for (int j = 0; j < d.Length; j++)
                        {
                            data.data[j].Add(d[j]);
                        }


                        double time = data.time.Count / fs + dt;
                        if (_info.numAux > 0)
                        {
                            double[] aux = ((NIRSDAQ.Instrument.Devices.Simulator)device).GetdataAux();
                            for (int j = 0; j < aux.Length; j++)
                            {
                                data.auxillaries[j].data.Add(aux[j]);
                                data.auxillaries[j].time.Add(time);
                            }
                        }
                        data.time.Add(time);
                        data.numsamples = data.time.Count;
                    }

                    break;

                case 1:
                    nsamples = ((NIRSDAQ.Instrument.Devices.TechEn.BTnirs)device).SamplesAvaliable();
                    fs       = ((NIRSDAQ.Instrument.Devices.TechEn.BTnirs)device).getsamplerate();

                    for (int i = 0; i < nsamples; i++)
                    {
                        if (((NIRSDAQ.Instrument.Devices.TechEn.BTnirs)device).canmeasure())
                        {
                            double[] d = ((NIRSDAQ.Instrument.Devices.TechEn.BTnirs)device).Getdata();
                            for (int j = 0; j < d.Length; j++)
                            {
                                data.data[j].Add(d[j]);
                            }

                            double time = data.time.Count / fs + dt;

                            if (_info.numAux > 0)
                            {
                                if (((NIRSDAQ.Instrument.Devices.TechEn.BTnirs)device).canmeasureaux())
                                {
                                    double[] aux = ((NIRSDAQ.Instrument.Devices.TechEn.BTnirs)device).GetdataAux();
                                    for (int j = 0; j < aux.Length; j++)
                                    {
                                        data.auxillaries[j].data.Add(aux[j]);
                                        data.auxillaries[j].time.Add(time);
                                    }
                                }
                            }
                            data.time.Add(time);
                            data.numsamples = data.time.Count;
                        }
                    }


                    break;
                }


                return(data);
            }