public TaxonomyItem GetParentOfRank(TaxonomyItems taxonomyItems, TaxonomyRank rank1) { if (rank1 == Rank) { return(this); } if (!taxonomyItems.taxId2Item.ContainsKey(parentTaxId)) { return(null); } TaxonomyItem parent = taxonomyItems.taxId2Item[parentTaxId]; return(parent.GetParentOfRank(taxonomyItems, rank1)); }
public static string GetTaxonomyIdOfRank(string taxonomyId, TaxonomyRank rank) { int id; if (!int.TryParse(taxonomyId, out id)) { return(taxonomyId); } if (!taxId2Item.ContainsKey(id)) { return(taxonomyId); } TaxonomyItem item = taxId2Item[id]; return("" + item.TaxId); }
public static TaxonomyItem[] Init() { StreamReader reader = GetReader(Resources.nodes_dmp); string line; List <TaxonomyItem> result = new List <TaxonomyItem>(); Dictionary <TaxonomyRank, List <TaxonomyItem> > counts = new Dictionary <TaxonomyRank, List <TaxonomyItem> >(); taxId2Item = new Dictionary <int, TaxonomyItem>(); name2Item = new Dictionary <string, TaxonomyItem>(); while ((line = reader.ReadLine()) != null) { string[] w = line.Split(new[] { "\t|\t" }, StringSplitOptions.None); int taxId = int.Parse(w[0]); int parentTaxId = int.Parse(w[1]); TaxonomyRank rank = GetRank(w[2]); int divisionId = int.Parse(w[4]); int geneticCodeId = int.Parse(w[6]); int mitoGeneticCodeId = int.Parse(w[8]); TaxonomyItem ti = new TaxonomyItem(taxId, parentTaxId, rank, divisionId, geneticCodeId, mitoGeneticCodeId); result.Add(ti); if (!counts.ContainsKey(rank)) { counts.Add(rank, new List <TaxonomyItem>()); } counts[rank].Add(ti); taxId2Item.Add(taxId, ti); } reader = GetReader(Resources.names_dmp); while ((line = reader.ReadLine()) != null) { string[] w = line.Split(new[] { "\t|\t" }, StringSplitOptions.None); int taxId = int.Parse(w[0]); string name = w[1]; TaxonomyNameType nameType = GetNameType(w[3].Substring(0, w[3].Length - 2)); TaxonomyItem item = taxId2Item[taxId]; item.AddName(name, nameType); string low = name.ToLower(); if (!name2Item.ContainsKey(low)) { name2Item.Add(low, item); } } return(result.ToArray()); }
public static TaxonomyItem[] Init() { StreamReader reader = GetReader(Resources.nodes_dmp); string line; List<TaxonomyItem> result = new List<TaxonomyItem>(); Dictionary<TaxonomyRank, List<TaxonomyItem>> counts = new Dictionary<TaxonomyRank, List<TaxonomyItem>>(); taxId2Item = new Dictionary<int, TaxonomyItem>(); name2Item = new Dictionary<string, TaxonomyItem>(); while ((line = reader.ReadLine()) != null){ string[] w = line.Split(new[]{"\t|\t"}, StringSplitOptions.None); int taxId = int.Parse(w[0]); int parentTaxId = int.Parse(w[1]); TaxonomyRank rank = GetRank(w[2]); int divisionId = int.Parse(w[4]); int geneticCodeId = int.Parse(w[6]); int mitoGeneticCodeId = int.Parse(w[8]); TaxonomyItem ti = new TaxonomyItem(taxId, parentTaxId, rank, divisionId, geneticCodeId, mitoGeneticCodeId); result.Add(ti); if (!counts.ContainsKey(rank)){ counts.Add(rank, new List<TaxonomyItem>()); } counts[rank].Add(ti); taxId2Item.Add(taxId, ti); } reader = GetReader(Resources.names_dmp); while ((line = reader.ReadLine()) != null){ string[] w = line.Split(new[]{"\t|\t"}, StringSplitOptions.None); int taxId = int.Parse(w[0]); string name = w[1]; TaxonomyNameType nameType = GetNameType(w[3].Substring(0, w[3].Length - 2)); TaxonomyItem item = taxId2Item[taxId]; item.AddName(name, nameType); string low = name.ToLower(); if (!name2Item.ContainsKey(low)){ name2Item.Add(low, item); } } return result.ToArray(); }