private void btnTest_Click(object sender, EventArgs e) { if (dlgOpenDirectory.ShowDialog() == System.Windows.Forms.DialogResult.OK) { FormToDefinition(); var parser = new PropertyMappingParser(items); var map = new Dictionary <string, BreastCancerSampleItem>(); parser.ParseDataset(dlgOpenDirectory.SelectedPath, map); var lst = (from v in map.Values orderby v.Sample select v).ToList(); var form = new BreastCancerSampleInformationForm(); var reader = new RawSampleInfoReader(); form.SetRawInfoReader(reader, Path.GetFileNameWithoutExtension(dlgOpenDirectory.SelectedPath)); form.SetDataSource(lst); form.ShowDialog(); } }
public void ParseDataset(string datasetDirectory, Dictionary <string, BreastCancerSampleItem> sampleMap) { var files = GeoUtils.GetGsmNameFileMap(datasetDirectory); var dirname = Path.GetFileName(datasetDirectory); var map = new RawSampleInfoReader().ReadDescriptionFromDirectory(datasetDirectory); foreach (var key in map.Keys) { if (files.ContainsKey(key.ToLower())) { if (!sampleMap.ContainsKey(key)) { sampleMap[key] = new BreastCancerSampleItem(dirname, key); } var sample = sampleMap[key]; var qsMap = map[key]; //parse information foreach (var question in qsMap.Keys) { if (converters.ContainsKey(question)) { var converter = converters[question]; var answer = qsMap[question].First(); converter.SetProperty(sample, answer); } } //set defaultvalue foreach (var dfConverter in defaultConverters) { dfConverter.Key.SetProperty(sample, dfConverter.Value); } } } }
public void NewFromData(string subdir) { var siformat = Directory.GetFiles(subdir, "*.siformat"); TextFileDefinition prefile = new TextFileDefinition(); if (siformat.Length > 0) { prefile.ReadFromFile(siformat[0]); bool bFound = false; prefile.ForEach(m => { if (m.PropertyName.Equals("TumorStage")) { m.PropertyName = "TumorStatus"; bFound = true; } if (m.PropertyName.Equals("Metastasis")) { m.PropertyName = "MetastasisStatus"; bFound = true; } }); if (bFound) { prefile.WriteToFile(siformat[0]); } } var map = new RawSampleInfoReader().ReadDescriptionFromDirectory(subdir); lastDirectory = subdir; lastFile = String.Empty; var files = new HashSet <string>(from f in CelFile.GetCelFiles(subdir, false) select GeoUtils.GetGsmName(f)); Dictionary <string, HashSet <string> > headers = new Dictionary <string, HashSet <string> >(); foreach (var m in map) { var gsm = m.Key.ToLower(); if (!files.Contains(gsm)) { continue; } var curmap = m.Value; foreach (var entry in curmap) { if (!headers.ContainsKey(entry.Key)) { headers[entry.Key] = new HashSet <string>(); } headers[entry.Key].UnionWith(entry.Value); } } ClearDataSource(); items.Clear(); foreach (var part in headers) { items.Add(new FileDefinitionItem() { AnnotationName = part.Key, Example = (from v in part.Value orderby v select v).Merge(";") }); } foreach (var olditem in prefile) { if (!string.IsNullOrEmpty(olditem.PropertyName)) { var newitem = items.Find(m => m.AnnotationName.Equals(olditem.AnnotationName)); if (newitem != null) { newitem.PropertyName = olditem.PropertyName; } } } items.DefaultValues.Clear(); foreach (var olddv in prefile.DefaultValues) { if (propertyNames.Contains(olddv.PropertyName)) { items.DefaultValues.Add(new DefaultValue() { PropertyName = olddv.PropertyName, Value = olddv.Value }); } } items.Sort((m1, m2) => m1.AnnotationName.CompareTo(m2.AnnotationName)); UpdateDataSource(); this.Text = title + " - " + Path.GetFileName(subdir); }