/* * private void pruneToncepts() * { * for (int t = 0; t < toncepts.Count; t++) * { * Symbol tc = toncepts.Values.ElementAt(t); * if (tc.getTonceptVerticalSupport() < min_ver_sup) * { * for(int i = 0; i < tc.entIdxKeyList.Count; i++) * { * string[] userPair = tc.entIdxKeyList.ElementAt(i).Split(';'); * entityKarma eK = entitiesKarmaVec[int.Parse(userPair[0])]; * //entitiesKarmaVec[int.Parse(userPair[0])].instancesDic.Remove(entitiesKarmaVec[int.Parse(userPair[0])].instancesDic.ElementAt(int.Parse(userPair[1])).Key); * //eK.instancesDic.Remove(userPair[1]); // eK.instancesDic.ElementAt(int.Parse(userPair[1])).Key); * } * toncepts.Remove(toncepts.Keys.ElementAt(t)); * t--; * } * tc.entIdxKeyList.Clear(); * } * for (int v = 0; v < glblTindexVerticalSupport.Count(); v++) * if (glblTindexVerticalSupport.ElementAt(v).Value.Count() < min_ver_sup) * { * glblTindexVerticalSupport.Remove(glblTindexVerticalSupport.ElementAt(v).Key); * v--; * } * }*/ public TIRP getMatrixDICasTIRP(int tTrgtID, int tErlyID, int rel) { TIRP twoSzdTIRP = new TIRP(tTrgtID, tErlyID, rel); //string trK = toncepts[tTrgtID].tonceptINDEX + "-" + rel + "-" + toncepts[tErlyID].tonceptINDEX; for (int eIdx = 0; eIdx < entitieSize; eIdx++) { if (entitiesKarmaVec[eIdx].instancesDicContainsKey(toncepts[tTrgtID].SymbolINDEX, rel, toncepts[tErlyID].SymbolINDEX)) // .instancesDic.ContainsKey(trK)) { Dictionary <SymbolicTimeInterval, List <SymbolicTimeInterval> > tiListDic = entitiesKarmaVec[eIdx].getInstancesDicValuebyKey(toncepts[tTrgtID].SymbolINDEX, rel, toncepts[tErlyID].SymbolINDEX); // .instancesDic[trK]; foreach (KeyValuePair <SymbolicTimeInterval, List <SymbolicTimeInterval> > tiListTi in tiListDic) // for(int i = 0; i < tiListDic.Count; i++) { foreach (SymbolicTimeInterval tis in tiListTi.Value) { StiInstance tisInsNew = new StiInstance(tiListTi.Key, tis, eIdx); twoSzdTIRP.AddEntity(eIdx); // int.Parse(tiListTi.Key.Split('-')[0])); twoSzdTIRP.tinstancesList.Add(tisInsNew); } twoSzdTIRP.meanHorizontalSupport += tiListTi.Value.Count(); } } } twoSzdTIRP.meanHorizontalSupport = twoSzdTIRP.meanHorizontalSupport / twoSzdTIRP.supprtingEntities.Count(); return(twoSzdTIRP); }
public TIRP get2SizedAsTIRP(int tTrgtID, int tErlyID, int tTrgtIdx, int tErlyIdx, int rel) { TIRP twoSzdTIRP = new TIRP(tTrgtID, tErlyID, rel); ////string trK = toncepts[tTrgtID].tonceptINDEX.ToString() + "-" + rel + "-" + toncepts[tErlyID].tonceptINDEX; ////Dictionary<string, List<SymbolicTimeInterval>> tiListDic = twoSizedTIRPsMatrix[toncepts[tTrgtID].tonceptINDEX][toncepts[tErlyID].tonceptINDEX].prsMxRelVec[rel].instancesDicList; //entitiesKarmaVec[eIdx].instancesDic[trK]; //Dictionary<SymbolicTimeInterval, List<SymbolicTimeInterval>>[] tiListDicsVec = karma.Kindex[toncepts[tTrgtID].tonceptINDEX, toncepts[tErlyID].tonceptINDEX].getRelEntitiesDics(rel); //Dictionary<SymbolicTimeInterval, List<SymbolicTimeInterval>>[] tiListDicsVec = getTindexRelEntitiesDicsVec(tTrgtIdx, tErlyIdx, rel); Dictionary <int, Dictionary <SymbolicTimeInterval, List <SymbolicTimeInterval> > > tiListDicsVec = getTindexRelEntitiesDicsVec(tTrgtIdx, tErlyIdx, rel); for (int eIdx = 0; eIdx < tiListDicsVec.Count(); eIdx++) { //Dictionary<SymbolicTimeInterval, List<SymbolicTimeInterval>> tiListTiDic = tiListDicsVec[eIdx]; //if (tiListDicsVec[eIdx] != null) { foreach (KeyValuePair <SymbolicTimeInterval, List <SymbolicTimeInterval> > tiListTi in tiListDicsVec.ElementAt(eIdx).Value) // [eIdx]) // tiListTiDic) { foreach (SymbolicTimeInterval tis in tiListTi.Value) { StiInstance tisInsNew = new StiInstance(new SymbolicTimeInterval(tiListTi.Key.startTime, tiListTi.Key.endTime, tiListTi.Key.symbol), tis, tiListDicsVec.ElementAt(eIdx).Key); // eIdx); twoSzdTIRP.AddEntity(eIdx); //// int.Parse(tiListTi.Key.Split('-')[0])); twoSzdTIRP.tinstancesList.Add(tisInsNew); twoSzdTIRP.meanHorizontalSupport++; } } } } return(twoSzdTIRP); }
/// <summary> /// Gets all suporting instances for the newly extended TIRP /// </summary> /// <param name="tNew"></param> /// <param name="tinstances"></param> /// <returns></returns> private bool SearchSupportingInstances(ref TIRP tNew, List <StiInstance> tinstances) { bool seedRelEmpty = true; bool[] entitieSupport = new bool[KLC.NUM_OF_ENTITIES]; int topRelIdx = ((tNew.size - 1) * (tNew.size - 2) / 2), seedRelIdx = (tNew.size * (tNew.size - 1) / 2 - 1); int seedRelation = tNew.rels[seedRelIdx]; int tncptLst = tNew.symbols[tNew.size - 2], tncptNew = tNew.symbols[tNew.size - 1]; int lsTncptIdx = karma.getSymbolIndexByID(tncptLst); int nxTncptIdx = karma.getSymbolIndexByID(tncptNew); for (int tins = 0; tins < tinstances.Count; tins++) { seedRelEmpty = false; //Get all intervals where the relation takes place for the last STI added to the TIRP List <SymbolicTimeInterval> tisList = karma.karma.GetStisInRelationWithKeyStiForEntityByRelationAndSymbols(lsTncptIdx, nxTncptIdx, seedRelation, tinstances[tins].entityIdx, tinstances[tins].sti[tNew.size - 2]); if (tisList != null) { //Add all the found instances to the TIRP for (int i = 0; (karma.getHS1() == false && i < tisList.Count) || (karma.getHS1() == true && i < 1); i++) { int relIdx = 0; for (relIdx = topRelIdx; relIdx < seedRelIdx; relIdx++) { if (!KLC.checkRelationAmongTwoTIs(tinstances[tins].sti[relIdx - topRelIdx], tisList.ElementAt(i), tNew.rels[relIdx], karma.getEpsilon(), karma.getMaxGap())) { break; } } if (relIdx == seedRelIdx) { StiInstance newIns = new StiInstance(tNew.size, tinstances[tins].sti, tisList.ElementAt(i), tinstances[tins].entityIdx); tNew.AddEntity(newIns.entityIdx); tNew.tinstancesList.Add(newIns); } } } } return(seedRelEmpty); }
/// <summary> /// Gets all the two sized instances for a certain relation and certain symbols. /// </summary> /// <param name="tTrgtID">First symbol id</param> /// <param name="tErlyID">Second symbol id</param> /// <param name="rel">Relation id</param> /// <returns></returns> public TIRP GetTwoSizedTirpForSymbolsAndRel(int tTrgtID, int tErlyID, int rel) { TIRP twoSzdTIRP = new TIRP(tTrgtID, tErlyID, rel); Dictionary <SymbolicTimeInterval, List <SymbolicTimeInterval> >[] tiListDicsVec = karma.Kindex[Symbols[tTrgtID].SymbolINDEX, Symbols[tErlyID].SymbolINDEX].GetStiMapsInArrayIndexedByEntityIdForRelation(rel); for (int eIdx = 0; eIdx < tiListDicsVec.Count(); eIdx++) // for every entity... { Dictionary <SymbolicTimeInterval, List <SymbolicTimeInterval> > tiListTiDic = tiListDicsVec[eIdx]; foreach (KeyValuePair <SymbolicTimeInterval, List <SymbolicTimeInterval> > tiListTi in tiListTiDic) // ...and every pair of mappings between symbolic time interavls to the list of stis they are in relation with { foreach (SymbolicTimeInterval tis in tiListTi.Value) // add all the two sized instances to twoSzdTIRP { StiInstance tisInsNew = new StiInstance(new SymbolicTimeInterval(tiListTi.Key.startTime, tiListTi.Key.endTime, tiListTi.Key.symbol), tis, eIdx); twoSzdTIRP.AddEntity(eIdx); twoSzdTIRP.tinstancesList.Add(tisInsNew); twoSzdTIRP.meanHorizontalSupport++; } } } return(twoSzdTIRP); }