예제 #1
0
    // Use this for initialization
    void Start()
    {
        sample = new string[lslChannelCount];

        lslStreamInfo = new LSL.liblsl.StreamInfo(
            lslStreamName,
            lslStreamType,
            lslChannelCount,
            nominalRate,
            lslChannelFormat,
            unique_source_id);

        lslOutlet = new LSL.liblsl.StreamOutlet(lslStreamInfo);
    }
예제 #2
0
    // This restores the last Study/probe used
    public void RegisterQuickStart(object sender, EventArgs e)
    {
        string path = System.IO.Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);

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

        // Read the Config.xml file
        XmlDocument doc = new XmlDocument();

        doc.Load(path);
        XmlNodeList elemList;

        elemList = doc.GetElementsByTagName("Investigator");
        string investigator = elemList[0].InnerXml.Trim();

        elemList = doc.GetElementsByTagName("Study");
        string study = elemList[0].InnerXml.Trim();

        elemList = doc.GetElementsByTagName("probefile");
        string probefile = elemList[0].InnerXml.Trim();


        int[]           lambda = MainClass.win.settings.system_Info.wavelengths;
        nirs.core.Probe probe  = nirs.io.LoadProbe(probefile, lambda);
        // 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;
        probe.measlistAct = new bool[probe.ChannelMap.Length];
        for (int ii = 0; ii < probe.ChannelMap.Length; ii++)
        {
            probe.measlistAct[ii] = true;
        }
        Gdk.Color[] cmap = new Gdk.Color[probe.ChannelMap.Length];
        for (int ii = 0; ii < probe.numChannels; ii++)
        {
            cmap[ii] = probe.colormap[ii];
            cmap[probe.numChannels + ii]     = probe.colormap[ii];
            cmap[probe.numChannels * 2 + ii] = probe.colormap[ii];
        }
        probe.colormap = cmap;

        nirsdata = new List <nirs.core.Data>();

        for (int i = 0; i < MainClass.devices.Length; i++)
        {
            nirs.core.Data data = new nirs.core.Data
            {
                demographics = new nirs.Dictionary()
            };
            data.demographics.set("SubjID", "");
            data.demographics.set("Investigator", investigator);
            data.demographics.set("Study", study);
            data.demographics.set("Gender", "");
            data.demographics.set("Group", "");
            data.demographics.set("Age", "");
            data.demographics.set("Instrument", MainClass.win.settings.SYSTEM);
            data.demographics.set("head_circumference", "");
            data.demographics.set("Technician", "");
            data.demographics.set("comments", "");
            DateTime now = DateTime.Now;
            data.demographics.set("scan_date", now.ToString("F"));
            data.probe = probe.Clone();
            nirsdata.Add(data);
        }



        ListStore ClearList = new ListStore(typeof(string));

        MainClass.win._handles.whichdata.Model = ClearList;

        List <string> datatypes = new List <string>();

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

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


        for (int dI = probe.numDet; dI < MainClass.win._handles.detectors.Count; dI++)
        {
            MainClass.win._handles.detectors[dI].frame.Sensitive  = false;
            MainClass.win._handles.detectors[dI].vScale.Sensitive = false;
            MainClass.win._handles.detectors[dI].vScale.Value     = 0;
            MainClass.win._handles.detectors[dI].led.Color        = new Gdk.Color(93, 93, 93);
        }
        for (int sI = probe.numSrc; sI < MainClass.win._handles.lasers.Count; sI++)
        {
            MainClass.win._handles.lasers[sI].frame.Sensitive = false;
            for (int wI = 0; wI < MainClass.win._handles.lasers[sI].buttons.Length; wI++)
            {
                MainClass.win._handles.lasers[sI].spinButtons[wI].Sensitive = false;
                MainClass.win._handles.lasers[sI].buttons[wI].Sensitive     = false;
            }
        }

#if ADDLSL
        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);
        }
#endif

        comboboxdeviceDemo.Active = 0;

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

        MainClass.win.EnableControls(true);


        MainClass.win._handles.SDGplot.QueueDraw();
    }
예제 #3
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();
        }