Beispiel #1
0
        private string GenerateRelationOtherTypesEnum(string indent)
        {
            var enumData = indent + "/// <summary>Enum listing all relationships between CV terms used in the included CVs</summary>\n";

            enumData += indent + "public enum " + RelationsOtherTypesEnumName + " : int\n" + indent + "{\n";
            var dict       = new Dictionary <string, OBO_File.OBO_Typedef>();
            var unknownDef = new OBO_File.OBO_Typedef {
                Def = "Unknown term relationship"
            };

            dict.Add("Unknown", unknownDef);
            foreach (var obo in _allObo)
            {
                foreach (var typedef in obo.Typedefs.Values)
                {
                    // Remove all duplicates, and automatically create new items....
                    dict[typedef.Id] = typedef;
                }
            }
            // part_of sets are separate.
            if (dict.ContainsKey("part_of"))
            {
                dict.Remove("part_of");
            }
            foreach (var item in dict)
            {
                if (!string.IsNullOrWhiteSpace(item.Value.Def))
                {
                    enumData += indent + "    /// " + EscapeXmlEntities("summary", item.Value.DefShort) + "\n";
                }
                else
                {
                    enumData += indent + "    /// <summary>Description not provided</summary>\n";
                }
                if (!string.IsNullOrWhiteSpace(item.Value.Comment))
                {
                    enumData += indent + "    /// " + EscapeXmlEntities("remarks", item.Value.Comment) + "\n";
                }
                enumData += indent + "    " + item.Key + ",\n\n";
            }
            return(enumData + indent + "}");
        }
Beispiel #2
0
        public void Read(string url)
        {
            var fileData = (new WebClient()).DownloadString(url);

            FileData = new OBO_File(url);
            using (var reader = new StringReader(fileData))
            {
                var line = reader.ReadLine();
                while (string.IsNullOrWhiteSpace(line) && line != null)
                {
                    line = reader.ReadLine();
                }

                var type = "header";
                var data = new List <KeyValuePair <string, string> >();
                while (reader.Peek() != -1 && !string.IsNullOrWhiteSpace(line))
                {
                    if (line.StartsWith("["))
                    {
                        type = line;

                        line = reader.ReadLine();
                        while (string.IsNullOrWhiteSpace(line) && line != null)
                        {
                            line = reader.ReadLine();
                        }
                    }
                    data.Clear();
                    while (!string.IsNullOrWhiteSpace(line) && !line.StartsWith("["))
                    {
                        var keyStop    = line.IndexOf(':');
                        var valueStart = line[keyStop + 1] == ' ' ? keyStop + 2 : keyStop + 1;
                        data.Add(new KeyValuePair <string, string>(line.Substring(0, keyStop), line.Substring(valueStart)));

                        line = reader.ReadLine();
                        while (string.IsNullOrWhiteSpace(line) && line != null)
                        {
                            line = reader.ReadLine();
                        }
                    }

                    switch (type.ToLower())
                    {
                    case "header":
                        FileData.Header = new OBO_File.OBO_Header(data);
                        break;

                    case "[term]":
                        var term = new OBO_File.OBO_Term(data);
                        if (FileData.Terms.ContainsKey(term.Id))
                        {
                            Console.WriteLine("Warning: Duplicate term id found");
                            Console.WriteLine("\tFirst term: \t\"" + FileData.Terms[term.Id].Id + "\": \"" +
                                              FileData.Terms[term.Id].Def + "\".");
                            Console.WriteLine("\tConflict term: \t\"" + term.Id + "\": \"" + term.Def + "\".");
                            Console.WriteLine("\tChanging conflict id to \"" + term.Id + "_\"");
                            term.Id = term.Id + "_";
                        }
                        FileData.Terms.Add(term.Id, term);
                        break;

                    case "[typedef]":
                        var typeDef = new OBO_File.OBO_Typedef(data);
                        FileData.Typedefs.Add(typeDef.Id, typeDef);
                        break;

                    case "[instance]":
                        var instance = new OBO_File.OBO_Instance(data);
                        FileData.Instances.Add(instance.Id, instance);
                        break;
                    }
                }
            }

            foreach (var import in FileData.Header.Import)
            {
                var reader = new OBO_Reader();
                reader.Read(import);
                ImportedFileData.Add(reader.FileData);
                ImportedFileData.AddRange(reader.ImportedFileData);
            }
        }