Example #1
0
        //scan
        private void btnAdd_Click(object sender, EventArgs e)
        {
            var s = new tbScan();

            setDBValue(s);
            using (CTDBEntities ct = new CTDBEntities())
            {
                ct.tbScan.Add(s);
                ct.SaveChanges();   //将修改保存到数据库中
            }

            //refreshDatagridview(dataGridView1.Rows.Count.ToString());
            int rowid = dataGridView1.Rows.Count;

            refreshdata(null, null);
            dataGridView1.Rows[rowid].Selected = true;
            //return;


            //级联添加一个slice
            using (CTDBEntities ct = new CTDBEntities())
            {
                tbSlice sl = new tbSlice();
                sl.scan_id = int.Parse(cscID.Text);
                sl.slice_para_ReconstructionProgram = "NRecon";
                sl.slice_para_ResultFileType        = "BMP";
                sl.slice_para_SliceNumber           = 0;
                sl.slice_para_PixelSize             = s.scan_para_ImagePixelSize;
                sl.open_status = 30;
                sl.UserId      = Guid.Parse(CTHelper.GetConfig("userid"));
                sl.Abstract    = FormSpecimen.CutString(cscSpecimen.Text, 40) + "-" + FormSpecimen.CutString(cscTagSpecimenParty.Text, 7);
                ct.tbSlice.Add(sl);
                ct.SaveChanges();   //将修改保存到数据库中
            }
        }
Example #2
0
        private void dataGridView1_SelectionChanged(object sender, EventArgs e)
        {
            if (dataGridView1.SelectedRows.Count == 1)
            {
                //int id = (int)dataGridView1.SelectedRows[0].Cells[0].Value;
                //lbNote.Text = id.ToString();
                int rid = dataGridView1.SelectedRows[0].Index;
                int id  = ((dataGridView1.DataSource as ArrayList)[rid] as tbScan).scan_id;

                CTDBEntities ct = new CTDBEntities();
                var          q  = from c in ct.tbScan where c.scan_id == id select c;
                tbScan       s  = q.ToList <tbScan>()[0];
                cscID.Text = s.scan_id.ToString();

                cscOperator.Text = s.scan_operator;
                //cscTimeBegin.Text = s.scan_timebegin.ToShortDateString();
                cscTimeBegin.Text = s.scan_timebegin.ToString();
                cscTimeEnd.Text   = s.scan_timeend.ToString();
                cscScanDate.Text  = s.scan_date;

                CTHelper.setControl(cscSpecimen, s.sp_id);
                CTHelper.setControl(cscTagSpecimenAlive, s.scan_tag_SpecimenAlive);
                cscTagSpecimenParty.Text = s.scan_specimen_Body;
                s.scan_specimen_Body     = cscTagSpecimenParty.Text;

                //cscNumberFile.Text = s.scan_para_FilesNumber.ToString();
                cscFileType.Text = s.scan_para_ImageFomat;
                //cscLensMultiple.Text = s.scan_para_ImagePixelSize.ToString();
                cscLensMultiple.Text  = s.scan_para_LensMultiple.ToString();
                cscCameraBinning.Text = s.scan_para_CameraBinning;

                CTHelper.setControl(cscEquipment, s.e_id);
                cscSourceType.Text    = s.scan_para_SourceType;
                cscCamera.Text        = s.scan_para_Camera;
                cscSourceVoltage.Text = s.scan_para_SourceVoltage.ToString();
                cscSourceCurrent.Text = s.scan_para_SourceCurrent.ToString();
                cscSourcePower.Text   = s.scan_para_SourcePower.ToString();

                cscCamera2Source.Text          = s.scan_para_Camera2Source.ToString();
                cscObejct2Souce.Text           = s.scan_para_Object2Source.ToString();
                cscVerticalObjectPosition.Text = s.scan_para_VerticalObjectPosition.ToString();
                cscPixelSize.Text    = s.scan_para_ImagePixelSize.ToString();
                cscRotationStep.Text = s.scan_para_RotationStep.ToString();
                cscExposure.Text     = s.scan_para_Exposure.ToString();

                //cscScanSourceSavePath.Text = s.scan_source_save_path;
                cscSliceNo.Text = ct.tbSlice.Count <tbSlice>(c => c.scan_id == id).ToString();

                CTHelper.setControl(cscOpenStatus, s.open_status);
                ucFileInfo1.ParaDatasetID = s.scan_id;

                CTHelper.setControl(cscRef, s.ref_id);

                mitDelete.Enabled = dataGridView1.Rows.Count > 0;
            }
        }
Example #3
0
        /// <summary>set values </summary>
        /// <param name="s"></param>
        void setDBValue(tbScan s)
        {
            DateTime dt = DateTime.Now;

            s.scan_operator = cscOperator.Text;

            DateTime.TryParse(cscTimeBegin.Text, out dt);
            s.scan_timebegin = dt;
            DateTime.TryParse(cscTimeEnd.Text, out dt);
            s.scan_timeend = dt;
            s.scan_date    = cscScanDate.Text.Trim();

            s.sp_id = (cscSpecimen.SelectedItem as tbSpecimen).sp_id;

            s.scan_tag_SpecimenAlive = int.Parse(cscTagSpecimenAlive.SelectedValue.ToString());
            s.scan_specimen_Body     = cscTagSpecimenParty.Text;

            s.scan_para_FilesNumber    = ucFileInfo1.ValueFileCount;// int.Parse(cscNumberFile.Text);
            s.scan_para_ImageFomat     = cscFileType.Text;
            s.scan_para_ImagePixelSize = 0.0;

            s.scan_para_LensMultiple = getValueDouble(cscLensMultiple.Text);

            s.scan_para_CameraBinning = cscCameraBinning.Text;

            s.e_id = (cscEquipment.SelectedItem as tbEquipment).e_id;
            s.scan_para_SourceType    = cscSourceType.Text;
            s.scan_para_Camera        = cscCamera.Text;
            s.scan_para_SourceVoltage = getValueDouble(cscSourceVoltage.Text);
            s.scan_para_SourceCurrent = getValueDouble(cscSourceCurrent.Text);
            s.scan_para_SourcePower   = getValueDouble(cscSourcePower.Text);

            s.scan_para_Camera2Source          = getValueDouble(cscCamera2Source.Text);
            s.scan_para_Object2Source          = getValueDouble(cscObejct2Souce.Text);
            s.scan_para_VerticalObjectPosition = getValueDouble(cscVerticalObjectPosition.Text);
            s.scan_para_ImagePixelSize         = getValueDouble(cscPixelSize.Text);
            s.scan_para_RotationStep           = getValueDouble(cscRotationStep.Text);
            s.scan_para_Exposure = getValueDouble(cscExposure.Text);

            s.Abstract = cscSpecimen.Text + "-" + cscTagSpecimenParty.Text;
            s.scan_source_save_path = "-";
            s.open_status           = (cscOpenStatus.SelectedItem as tbTag).tag_id;
            s.date_in = DateTime.Now;
            s.ref_id  = (cscRef.SelectedItem as tbRef).ref_id;

            s.UserId = Guid.Parse(CTHelper.GetConfig("userid"));
        }
Example #4
0
        static public string ExportPIDXML(int id)
        {
            string r = "";

            try
            {
                //https://blog.csdn.net/xjj51296646/article/details/4241548
                XmlDocument xmldoc = new XmlDocument();
                //加入XML的声明段落,<?xml version="1.0" encoding="gb2312"?>
                XmlDeclaration xmldecl = xmldoc.CreateXmlDeclaration("1.0", "UTF-8", null);
                xmldoc.AppendChild(xmldecl);
                //加入一个根元素
                XmlElement xmlroot = xmldoc.CreateElement("", "pid", "");
                xmlroot.SetAttribute("type", "DATASET");
                xmldoc.AppendChild(xmlroot);

                XmlElement xmlroot2 = xmldoc.CreateElement("", "metadatas", "");
                xmlroot.AppendChild(xmlroot2);

                XmlElement xmlmeta = xmldoc.CreateElement("", "metadata", "");
                xmlmeta.SetAttribute("type", "Metadata");
                xmlroot2.AppendChild(xmlmeta);

                List <Tuple <string, string> > ht = new List <Tuple <string, string> >();
                CTDBEntities ct      = new CTDBEntities();
                tbSlice      slice   = ct.tbSlice.FirstOrDefault(s => s.slice_id == id);
                tbScan       scan    = ct.tbScan.FirstOrDefault(s => s.scan_id == slice.scan_id);
                string       part    = scan.scan_specimen_Body;
                tbSpecimen   sp      = ct.tbSpecimen.FirstOrDefault(s => s.sp_id == slice.sp_id);
                tbSpecies    species = ct.tbSpecies.FirstOrDefault(s => s.species_id == sp.species_id);
                string       spname  = species.species_latin;


                string pid = "21.86116.3/CT.slice." + slice.slice_id.ToString();
                xmlmeta.AppendChild(addnode(xmldoc, "pid", pid));
                string url = "http://ct.especies.cn/slice/info/" + slice.slice_id.ToString();
                xmlmeta.AppendChild(addnode(xmldoc, "url", url));

                string funding = "the Strategic Priority Research Program of the Chinese Academy of Sciences(Grant No. XDA19050203)";
                xmlmeta.AppendChild(addnode(xmldoc, "funding", funding));
                xmlmeta.AppendChild(addnode(xmldoc, "copyright", "CC BY 4.0"));

                string title_zh = spname + " " + part + " 显微CT扫描和标注数据";
                xmlmeta.AppendChild(addnode(xmldoc, "title_zh", title_zh));
                string title_en = "Micro-CT Slice and Label Data of " + spname + " " + part;
                xmlmeta.AppendChild(addnode(xmldoc, "title_en", title_en));

                string description_zh = title_zh;
                xmlmeta.AppendChild(addnode(xmldoc, "description_zh", description_zh));
                string description_en = title_en;
                xmlmeta.AppendChild(addnode(xmldoc, "description_en", description_en));

                string keyword_zh = spname + ";显微CT;结构标注";
                xmlmeta.AppendChild(addnode(xmldoc, "keyword_zh", keyword_zh));
                string keyword_en = spname + ";Micro CT;structural label";
                xmlmeta.AppendChild(addnode(xmldoc, "keyword_en", keyword_en));

                xmlmeta.AppendChild(addnode(xmldoc, "resource_type", "采集数据"));
                xmlmeta.AppendChild(addnode(xmldoc, "publisher_zh", "动物科学数据中心"));
                xmlmeta.AppendChild(addnode(xmldoc, "publisher_en", "Scientific Data Center of Zoology"));

                string f = Application.StartupPath + "\\meta.xml";
                if (File.Exists(f))
                {
                    File.Delete(f);
                }
                xmldoc.Save(f);
                System.Diagnostics.Process.Start(f);
            }
            catch (Exception ee)
            {
                MessageBox.Show("记录有问题,导出失败\r\n" + ee.ToString());
            }
            return(r);
        }
Example #5
0
        /// <summary>导出元数据方法</summary>
        /// <param name="id">slice表的 slice_id </param>
        static public void ExportMeta(int id)
        {
            try
            {
                List <Tuple <string, string> > ht = new List <Tuple <string, string> >();
                CTDBEntities ct = new CTDBEntities();

                tbSlice slice = ct.tbSlice.FirstOrDefault(s => s.slice_id == id);
                ht.Add(new Tuple <string, string>("URL", "http://ct.especies.cn/slice/info/" + slice.slice_id.ToString()));
                ht.Add(new Tuple <string, string>("Slice ID", slice.slice_id.ToString()));
                ht.Add(new Tuple <string, string>("Slice Number", slice.slice_para_SliceNumber.ToString()));
                ht.Add(new Tuple <string, string>("Slice File Type", slice.slice_para_ResultFileType.ToString()));
                ht.Add(new Tuple <string, string>("Slice Resolution", slice.slice_para_PixelSize.ToString()));


                tbScan scan = ct.tbScan.FirstOrDefault(s => s.scan_id == slice.scan_id);
                //ht.Add(new Tuple<string, string>("Scan ID", scan.scan_id.ToString()));
                ht.Add(new Tuple <string, string>("Scan Voltage", scan.scan_para_SourceVoltage.ToString()));
                ht.Add(new Tuple <string, string>("Scan Power", scan.scan_para_SourcePower.ToString()));
                ht.Add(new Tuple <string, string>("Scan Binning", scan.scan_para_CameraBinning.ToString()));
                ht.Add(new Tuple <string, string>("Scan Lens", scan.scan_para_LensMultiple.ToString()));
                ht.Add(new Tuple <string, string>("Scan Exposure", scan.scan_para_Exposure.ToString()));
                ht.Add(new Tuple <string, string>("Scan Time", scan.scan_date));
                ht.Add(new Tuple <string, string>("Scan Operator", scan.scan_operator));
                ht.Add(new Tuple <string, string>("Scan Part", scan.scan_specimen_Body));

                //tbTag ttag = ct.tbTag.FirstOrDefault(s => s.tag_id == scan.scan_tag_SpecimenAlive);
                //ht.Add(new Tuple<string, string>("Specimen Status", ttag.tag_tag));
                ht.Add(new Tuple <string, string>("Specimen Status", FormTag.GetTagTag(scan.scan_tag_SpecimenAlive)));

                tbEquipment equip = ct.tbEquipment.FirstOrDefault(s => s.e_id == scan.e_id);
                ht.Add(new Tuple <string, string>("Equipment", equip.e_name));

                tbSpecimen sp = ct.tbSpecimen.FirstOrDefault(s => s.sp_id == slice.sp_id);
                ht.Add(new Tuple <string, string>("Specimen ID", sp.sp_spid));
                ht.Add(new Tuple <string, string>("Specimen Collector", sp.sp_collector));
                ht.Add(new Tuple <string, string>("Specimen Time", sp.sp_collect_time));
                ht.Add(new Tuple <string, string>("Specimen Place", sp.sp_collect_place));
                ht.Add(new Tuple <string, string>("Specimen Identifier", sp.sp_identifier));

                ht.Add(new Tuple <string, string>("Preprocess", sp.sp_dehydrant));


                tbSpecies species = ct.tbSpecies.FirstOrDefault(s => s.species_id == sp.species_id);
                ht.Add(new Tuple <string, string>("Specie Name", species.species_latin));
                ht.Add(new Tuple <string, string>("Specie Genus", species.species_Genus));
                ht.Add(new Tuple <string, string>("Specie Family", species.species_Family));


                string f = Application.StartupPath + "\\meta.txt";
                if (File.Exists(f))
                {
                    File.Delete(f);
                }
                //foreach (System.Collections.DictionaryEntry item in ht)
                foreach (Tuple <string, string> item in ht)
                {
                    string s = item.Item1 + "\t:\t" + item.Item2;
                    CTHelper.AddLog(s, f);
                }

                System.Diagnostics.Process.Start(f);
            }
            catch (Exception ee)
            {
                MessageBox.Show("记录有问题,导出失败\r\n" + ee.ToString());
            }
        }
Example #6
0
        private void FormUpload_Load(object sender, EventArgs e)
        {
            lbDataset.Text = ParaDatasetID.ToString();
            UserID         = CTHelper.GetConfig("userid");

            CTDBEntities ct = new CTDBEntities();

            if (ParaTable == "ctdb-slice")
            {
                this.Text        = "CTDB - Slice File";
                lbTableName.Text = "SliceID";
                tbSlice s = ct.tbSlice.Where(c => c.slice_id == ParaDatasetID).Single();
                lbDSName.Text               = s.Abstract;
                lbSpecimenID.Text           = s.tbScan.tbSpecimen.sp_id.ToString();
                mitCreatedFromSlice.Visible = true;
                cdFileRef.Visible           = false;
            }
            else if (ParaTable == "ctdb-scan")
            {
                this.Text        = "CTDB - Scan Source File";
                lbTableName.Text = "ScanID";
                tbScan s = ct.tbScan.Where(c => c.scan_id == ParaDatasetID).Single();
                lbDSName.Text     = s.Abstract;
                lbSpecimenID.Text = s.tbSpecimen.sp_id.ToString();
                cdFileRef.Visible = false;
            }
            else if (ParaTable == "ctdb-label")
            {
                this.Text        = "CTDB - Tissue Label File";
                lbTableName.Text = "LabelID";
                tbLabel s = ct.tbLabel.Where(c => c.label_id == ParaDatasetID).Single();
                lbDSName.Text               = s.label_id.ToString();
                lbSpecimenID.Text           = s.tbSlice.tbScan.tbSpecimen.sp_id.ToString();
                mitCreatedFromLabel.Visible = true;
                cdFileRef.Visible           = false;
            }
            else if (ParaTable == "ctdb-specimen")
            {
                this.Text        = "CTDB - Specimen's Demo File";
                lbTableName.Text = "SpecimenID";
                tbSpecimen s = ct.tbSpecimen.Where(c => c.sp_id == ParaDatasetID).Single();
                lbSpecimenID.Text = s.sp_id.ToString();
                lbDSName.Text     = s.Abstract;
                // cdFileRef.Enabled = true;
            }
            else if (ParaTable == "ctdb-scanpara")
            {
                this.Text        = "CTDB - scan parameter's picture file";
                lbTableName.Text = "";
                tbScan s = ct.tbScan.Where(c => c.scan_id == ParaDatasetID).Single();
                lbDSName.Text     = s.Abstract;
                lbSpecimenID.Text = s.tbSpecimen.sp_id.ToString();
                cdFileRef.Visible = false;
            }
            else
            {
                this.Close();
            }


            CTHelper.setControlTag(cdFileType, 14, ParaFileType); // 14 filetype, 指定的Image
            CTHelper.setControlTag(cdFileOpenStatus, 31, 30);     //31 share method, 30 share in group
            CTHelper.LoadControl(cdFileRef, "tbRef", 4);          // 14 filetype, 11 image
            cdFileAuthor.Text = CTHelper.GetConfig("username");

            refreshdb();
        }
Example #7
0
        //add
        private void btnAdd_Click(object sender, EventArgs e)
        {
            CTDBEntities ct = new CTDBEntities();

            //create species
            var s1 = new tbSpecies();

            s1.species_note  = cspeciesNote.Text;
            s1.species_Order = cspeciesOrder.Text;

            s1.date_in = DateTime.Now;
            s1.UserId  = Guid.Parse(CTHelper.GetConfig("userid"));
            ct.tbSpecies.Add(s1);
            ct.SaveChanges();   //将修改保存到数据库中

            //create specimen
            var s2 = new tbSpecimen();

            s2.species_id = s1.species_id;

            s2.sp_spid                = csmSPID.Text; //实际标本号-不是必须字段
            s2.specimen_sex           = (csmSex.SelectedItem as tbTag).tag_id;
            s2.specimen_age           = csmAge.Text;
            s2.sp_note                = csmNote.Text;
            s2.specimen_dry_save_path = csmSavePosition.Text;

            s2.sp_collector     = csmCollector.Text;
            s2.sp_collect_place = csmCollectPlace.Text;
            s2.sp_collect_time  = csmCollectTime.Text;

            s2.sp_dehydrant    = csmDehydrant.Text;
            s2.sp_drycirletime = int.Parse(GetStringNumber(csmDryCycleTime.Text));
            //s2.sp_dryinstrument = "-";

            s2.Abstract           = s1.species_note + "-" + s2.sp_id;
            s2.date_in            = DateTime.Now;
            s2.UserId             = Guid.Parse(CTHelper.GetConfig("userid"));
            s2.sp_preserve_status = "-";
            ct.tbSpecimen.Add(s2);
            ct.SaveChanges();   //将修改保存到数据库中

            //create scan record
            var s3 = new tbScan();

            s3.sp_id = s2.sp_id;
            s3.e_id  = (int)cscanEquipment.SelectedValue;

            s3.scan_specimen_Body    = cscanTagSpecimenParty.Text;
            s3.scan_source_save_path = cscanPath.Text;
            //s3.scan_timebegin = DateTime.Parse(cscanTimeBegin.Text);
            s3.scan_date = cscanTimeBegin.Text;

            s3.scan_para_CameraBinning = cscanCameraBinning.Text;
            s3.scan_para_SourceVoltage = double.Parse(GetStringNumber(cscanSourceVoltage.Text));
            s3.scan_para_SourceCurrent = double.Parse(GetStringNumber(cscanSourceCurrent.Text));
            s3.scan_para_Exposure      = double.Parse(GetStringNumber(cscanExposure.Text));

            s3.Abstract = s2.Abstract + "-" + s3.scan_specimen_Body;
            s3.date_in  = DateTime.Now;
            s3.UserId   = Guid.Parse(CTHelper.GetConfig("userid"));
            ct.tbScan.Add(s3);
            ct.SaveChanges();   //将修改保存到数据库中

            //create slice record
            var s4 = new tbSlice();

            s4.scan_id         = s3.scan_id;
            s4.slice_save_path = csliceSavePath.Text;

            s4.date_in  = DateTime.Now;
            s4.UserId   = Guid.Parse(CTHelper.GetConfig("userid"));
            s4.Abstract = s3.Abstract;
            ct.tbSlice.Add(s4);
            ct.SaveChanges();   //将修改保存到数据库中

            refreshdata(null, null);
        }