public virtual void Build(PolyIndexLC_Composite pmi, int lambda, SequenceBuilder seq_builder = null) { var list = new List<LC_RNN> (); foreach (var lc in pmi.LC_LIST) { list.Add (lc); } var as_pmi = pmi.IDX as PolyIndexLC; if (as_pmi != null) { foreach (var lc in as_pmi.LC_LIST) { var _lc = new LC(); _lc.Build(lc, SequenceBuilders.GetIISeq(BitmapBuilders.GetPlainSortedList())); list.Add(_lc); } } this.Build(list, lambda, seq_builder); }
public void Test(string nick, MetricDB db, string queries, int num_centers, int num_perms, int num_refs) { var qstream = new QueryStream (queries); var reslist = new List<string> (); // Exhaustive search { Sequential seq = new Sequential (); seq.Build (db); var idxname = "Index.Sequential." + nick; IndexGenericIO.Save (idxname, seq); var resname = "Res." + idxname + "." + queries; if (!File.Exists (resname)) { Commands.Search (seq, qstream.Iterate (), new ShellSearchOptions (queries, idxname, resname)); } reslist.Add (resname); } /// /// The List of Clusters and variants /// // LC_RNN reslist.Add (this.TestLC ("Index.LC_RNN." + nick, db, num_centers, new LC_RNN (), queries, qstream)); // LC reslist.Add (this.TestLC ("Index.LC." + nick, db, num_centers, new LC (), queries, qstream)); // LC_IRNN reslist.Add (this.TestLC ("Index.LC_IRNN." + nick, db, num_centers, new LC_IRNN (), queries, qstream)); // LC_PRNN reslist.Add (this.TestLC ("Index.LC_PRNN." + nick, db, num_centers, new LC_PRNN (), queries, qstream)); // LC_ParallelBuild reslist.Add (this.TestLC ("Index.LC_ParallelBuild." + nick, db, num_centers, new LC_ParallelBuild (), queries, qstream)); /// /// Permutation Based Indexes /// // Permutations reslist.Add (this.TestPI ("Index.Perms." + nick, db, num_perms, new Perms (), queries, qstream)); // Brief Index reslist.Add (this.TestPI ("Index.BinPerms." + nick, db, num_perms, new BinPerms (), queries, qstream)); // BinPermsTwoBits reslist.Add (this.TestPI ("Index.BinPermsTwoBits." + nick, db, num_perms, new BinPermsTwoBit (), queries, qstream)); /// /// KNR /// { KnrSeqSearch idx; var idxname = "Index.KnrSeqSearch." + nick; if (File.Exists (idxname)) { idx = (KnrSeqSearch)IndexGenericIO.Load (idxname); } else { Console.WriteLine ("** Starting construction of '{0}'", idxname); var knr = new KnrSeqSearch (); var sample = RandomSets.GetRandomSubSet (num_refs, db.Count); var refsdb = new SampleSpace ("", db, sample); var refsidx = new LC (); refsidx.Build (refsdb, refsdb.Count / 10); knr.Build (db, refsidx, 7); IndexGenericIO.Save (idxname, knr); idx = knr; } idx.MAXCAND = 1024; this.TestKNR(idx, idxname, queries, num_refs, reslist, (I) => I); Console.WriteLine ("==== Working on a permuted space"); idxname = idxname + ".proximity-sorted"; if (!File.Exists(idxname)) { idx = idx.GetSortedByPrefix(); idx.MAXCAND = 1024; IndexGenericIO.Save(idxname, idx); } else { idx = (KnrSeqSearch)IndexGenericIO.Load(idxname); } this.TestKNR(idx, idxname, queries, num_refs, reslist, (I) => new PermutedIndex(I)); } reslist.Add("--horizontal"); Commands.Check(reslist); }
protected virtual Action BuildOneClosure(IList<LC> output, int i, MetricDB db, int numcenters, Random rand) { var action = new Action(delegate () { var lc = new LC (); lc.Build (db, numcenters, rand); output[i] = lc; }); return action; }
public static string ExecuteLC(IndexArgumentSetup setup, string nick, int bsize) { var idxname = String.Format ("{0}/Index.LC-{1}", nick, bsize); return Execute (setup, nick, idxname, (db) => { var lc = new LC (); lc.Build (db, bsize, RandomSets.GetRandom()); return lc; }); }