in src/vocabularies/mesh/mesh.go [94:135]
func loadTaxonomy(fname string) *taxonomy.Taxonomy {
file, err := os.Open(fname)
if err != nil {
glog.Fatal(err)
}
defer file.Close()
byteValue, _ := ioutil.ReadAll(file)
var descriptors Descriptors
if err := xml.Unmarshal(byteValue, &descriptors); err != nil {
glog.Fatal(err)
}
root := taxonomy.NewNode("root")
for _, d := range descriptors.Descriptors {
treeNumbers := d.TreeNumbers.TreeNumbers
if HasAnimalCode(treeNumbers) {
continue
}
treeNumbers = Trim(treeNumbers)
if len(treeNumbers) == 0 {
continue
}
de := taxonomy.NewNode(d.Name.Value)
for _, c := range d.Concepts.Concepts {
if !isAnimalConcept(c.Name.Value) {
ce := taxonomy.NewNode(c.Name.Value)
for _, t := range c.Terms.Terms {
ce.AddSynonym(t.Name)
}
ce.AddSynonym(c.Name.Value)
ce.AddTreeNumber(treeNumbers...)
de.AddChild(ce)
}
}
root.AddChild(de)
}
return taxonomy.New(root)
}