Наследование: KnrSeqSearchJaccard
Пример #1
0
        protected void Application_Start(Object sender, EventArgs e)
        {
            var dataroot = "/Users/ericsadit/data-cophir282/";
            SpaceGenericIO.NormalizePath = (string name) =>  dataroot + Path.GetFileName (name);
            IndexGenericIO.NormalizePath = (string name) =>  dataroot + Path.GetFileName (name);

            if (false) {
            //				var indexname = "Index.eptable-optimize.numgroups=4.max_pivots=1000.beta=0.8.DB.CoPhIR-282-1M.sapir-100";
            //				var index = IndexGenericIO.Load (indexname);
                var indexname = "Index.knrseq.DB.CoPhIR-282-1M.sapir-100.knr=7.num_refs=2048";
                var index = new KnrSeqSearchFootrule( (KnrSeqSearch) IndexGenericIO.Load (indexname) );
            //				var index = new KnrSeqSearchJaccard( (KnrSeqSearch) IndexGenericIO.Load (indexname) );
                index.MAXCAND = 60000;
                index.MAXCAND = -100;
                Cophir = new CoPhIR_Original (index, indexname);
            } else {
                var indexname = "Index.knrseqsearch.num_refs=2048.knr=7.HFP-512.DB.CoPhIR-282-1M.sapir-100";
                // var index = new KnrSeqSearchJaccard( (KnrSeqSearch) IndexGenericIO.Load (indexname) );
                var index = new KnrSeqSearchFootrule( (KnrSeqSearch) IndexGenericIO.Load (indexname) );
                index.MAXCAND = 60000;
                index.MAXCAND = -100;
            //				var indexname = "Index.eptable-optimize.numgroups=4.max_pivots=1000.beta=0.8.HFP-512.DB.CoPhIR-282-1M.sapir-100";
            //				var index = IndexGenericIO.Load (indexname);
                Cophir = new CoPhIR_HFP(index, indexname, dataroot + "PhotoInfo-DB.CoPhIR-282-1M.sapir-100");
                // Cophir = new CoPhIR_HFP("Index.knrseqsearch.num_refs=2048.knr=7.HFP-256.DB.CoPhIR-282-1M.sapir-100", "PhotoInfo-DB.CoPhIR-282-1M.sapir-100", 60000);
                // Cophir = new CoPhIR_HFP("Index.knrseqsearch.num_refs=2048.knr=7.HFP-128.DB.CoPhIR-282-1M.sapir-100", "PhotoInfo-DB.CoPhIR-282-1M.sapir-100", 60000);
            }
        }
Пример #2
0
        public static List<string> ExecuteKNRSEQ(IndexArgumentSetup setup, string nick, int numrefs, int k, double maxcand_ratio)
        {
            var idxname = String.Format ("{0}/Index.knrseq-{1}-{2}", nick, numrefs, k);
            MetricDB db = SpaceGenericIO.Load (setup.BINARY_DATABASE);
            Index idx;
            var suffix = "";

            var resnamelist = new List<string> ();
            if (!File.Exists (idxname)) {
                Console.WriteLine ("*** creating index {0}", idxname);
                var s = DateTime.Now.Ticks;
                var c = db.NumberDistances;
                var IDX = new KnrSeqSearch ();
                var refsDB = new SampleSpace("", db, numrefs);
                var refsIDX = new EPTable ();
                refsIDX.Build(refsDB, 4, (_db, _rand) => new EPListOptimizedA(_db, 4, _rand));
                if (k == 0) {
                    k = KnrEstimateParameters.EstimateKnrEnsuringSharedNeighborhoods (db, refsIDX, (int)Math.Abs (setup.QARG));
                    suffix = String.Format ("estimated-K={0}.", k);
                }
                IDX.Build (db, refsIDX, k, int.MaxValue);
                SaveConstructionTime (idxname, DateTime.Now.Ticks - s, db.NumberDistances - c);
                IndexGenericIO.Save (idxname, IDX);
                idx = IDX;
            } else {
                Console.WriteLine ("*** loading index {0}", idxname);
                idx = IndexGenericIO.Load (idxname);
                if (k == 0) {
                    var _idx = idx as KnrSeqSearch;
                    suffix = String.Format ("estimated-K={0}.", _idx.K);
                }
            }
            string resname;
            // PPIndex
            resname = GetResultName (nick, idxname, setup, String.Format(suffix + "maxcand={0}.PPI", maxcand_ratio));
            resnamelist.Add(resname);
            if (!File.Exists (resname)) {
                var knr = idx as KnrSeqSearch;
                knr.MAXCAND = (int)(idx.DB.Count * maxcand_ratio);
                PerformSearch (resname, knr, idxname, setup);
            }
            // KnrSeqSearchCosine
            resname = GetResultName (nick, idxname, setup, String.Format(suffix + "maxcand={0}.COS", maxcand_ratio));
            resnamelist.Add(resname);
            if (!File.Exists (resname)) {
                var knr = new KnrSeqSearchCosine(idx as KnrSeqSearch);
                knr.MAXCAND = (int)(idx.DB.Count * maxcand_ratio);
                PerformSearch (resname, knr, idxname, setup);
            }
            // KnrSeqSearchFootrule
            resname = GetResultName (nick, idxname, setup, String.Format(suffix + "maxcand={0}.FOOTRULE", maxcand_ratio));
            resnamelist.Add(resname);
            if (!File.Exists (resname)) {
                var knr = new KnrSeqSearchFootrule(idx as KnrSeqSearch);
                knr.MAXCAND = (int)(idx.DB.Count * maxcand_ratio);
                PerformSearch (resname, knr, idxname, setup);
            }
            // KnrSeqSearchJaccLCS
            resname = GetResultName (nick, idxname, setup, String.Format(suffix + "maxcand={0}.JACCLCS", maxcand_ratio));
            resnamelist.Add(resname);
            if (!File.Exists (resname)) {
                var knr = new KnrSeqSearchJaccLCS(idx as KnrSeqSearch);
                knr.MAXCAND = (int)(idx.DB.Count * maxcand_ratio);
                PerformSearch (resname, knr, idxname, setup);
            }
            // KnrSeqSearchLCSv3
            resname = GetResultName (nick, idxname, setup, String.Format(suffix + "maxcand={0}.LCSv3", maxcand_ratio));
            resnamelist.Add(resname);
            if (!File.Exists (resname)) {
                var knr = new KnrSeqSearchLCSv3(idx as KnrSeqSearch);
                knr.MAXCAND = (int)(idx.DB.Count * maxcand_ratio);
                PerformSearch (resname, knr, idxname, setup);
            }
            // NAPP
            foreach (var ksearch in setup.KNR_KSEARCH) {
                var knr = new NAPP(idx as KnrSeqSearch);
                knr.MAXCAND = (int)(idx.DB.Count * maxcand_ratio);
                resname = GetResultName (nick, idxname, setup, String.Format(suffix + "maxcand={0}.NAPP.ksearch={1}", maxcand_ratio, ksearch));
                resnamelist.Add(resname);
                if (!File.Exists (resname)) {
                    PerformSearch (resname, knr, idxname, setup);
                }
            }
            return resnamelist;
        }