Skip to content

Commit

Permalink
Merge pull request #545 from Tarun-Sreepada/main
Browse files Browse the repository at this point in the history
found bug. fixed. hopefully
  • Loading branch information
udayRage authored Nov 8, 2024
2 parents 6290dad + f1b84cf commit 303b31c
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 39 deletions.
37 changes: 12 additions & 25 deletions PAMI/partialPeriodicFrequentPattern/basic/GPFgrowth.py
Original file line number Diff line number Diff line change
Expand Up @@ -306,9 +306,8 @@ def _getPerSup(self, arr):
:type arr: array
:return: locs
"""
arr = list(arr)
arr.append(self._maxTS)
arr.append(0)
arr = list(arr) + [self._maxTS, 0]
arr = list(set(arr))
arr = np.sort(arr)
arr = np.diff(arr)

Expand Down Expand Up @@ -342,11 +341,12 @@ def _construct(self, items, data):
"""


items = {k: v for k, v in items.items() if len(v) >= self._partialPeriodicPatterns__minSup and self._ratioCalc(v) >= self._partialPeriodicPatterns__minPR}
items = {k: v for k, v in items.items() if len(v) >= self._partialPeriodicPatterns__minSup}

#tested ok
for item, ts in items.items():
self._partialPeriodicPatterns__finalPatterns[tuple([item])] = [len(ts), self._ratioCalc(ts)]
ratio = self._ratioCalc(ts)
if ratio >= self._partialPeriodicPatterns__minPR:
self._partialPeriodicPatterns__finalPatterns[tuple([item])] = [len(ts), ratio]

root = _Node([], None, None)
itemNodes = {}
Expand All @@ -364,7 +364,6 @@ def _construct(self, items, data):

return root, itemNodes


def _recursive(self, root, itemNode):
"""
This method recursively constructs a pattern tree from the given root node,
Expand Down Expand Up @@ -410,14 +409,13 @@ def _recursive(self, root, itemNode):
# maxPerResults = {item: self._getMaxPer(itemLocs[item], maxTS) for item in itemLocs if len(itemLocs[item]) >= minSup}
maxPerResults = {item: self._ratioCalc(itemLocs[item]) for item in itemLocs if len(itemLocs[item]) >= self._partialPeriodicPatterns__minSup}

for item in maxPerResults:
if maxPerResults[item] >= self._partialPeriodicPatterns__minPR:
self._partialPeriodicPatterns__finalPatterns[tuple(newRoot.item + [item])] = [len(itemLocs[item]), maxPerResults[item]]

# Filter itemLocs based on minSup and maxPer
itemLocs = {k: len(v) for k, v in itemLocs.items() if k in maxPerResults and maxPerResults[k] >= self._partialPeriodicPatterns__minPR}
itemLocs = {k: len(v) for k, v in itemLocs.items() if len(v) >= self._partialPeriodicPatterns__minSup}

# Iterate over filtered itemLocs
for item in itemLocs:
self._partialPeriodicPatterns__finalPatterns[tuple(newRoot.item + [item])] = [itemLocs[item], maxPerResults[item]]

if not itemLocs:
continue

Expand All @@ -437,14 +435,11 @@ def _recursive(self, root, itemNode):

self._recursive(newRoot, newItemNodes)


def mine(self):
self.__inputFile = self._partialPeriodicPatterns__iFile
self._partialPeriodicPatterns__startTime = time.time()
self._partialPeriodicPatterns__finalPatterns = {}
self.__creatingItemSets()

# self.minPR = self.convert(self.minPR)
self._partialPeriodicPatterns__minPR = float(self._partialPeriodicPatterns__minPR)

self._maxTS = 0
Expand Down Expand Up @@ -581,13 +576,5 @@ def printResults(self):
print("Total Memory in RSS", ap.getMemoryRSS())
print("Total ExecutionTime in ms:", ap.getRuntime())
else:
for i in [350]:
_ap = GPFgrowth('/Users/tarunsreepada/Downloads/Temporal_T10I4D100K.csv', i, 300, 0.7, '\t')
_ap.mine()
print("Total number of Maximal Partial Periodic Patterns:", len(_ap.getPatterns()))
_ap.save('/Users/tarunsreepada/Downloads/output1.txt')
print(_ap.getPatternsAsDataFrame())
print("Total Memory in USS:", _ap.getMemoryUSS())
print("Total Memory in RSS", _ap.getMemoryRSS())
print("Total ExecutionTime in ms:", _ap.getRuntime())
print("Error! The number of input parameters do not match the total number of parameters provided")

print("Error! The number of input parameters do not match the total number of parameters provided")
20 changes: 6 additions & 14 deletions PAMI/partialPeriodicFrequentPattern/basic/PPF_DFS.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@
import numpy as np
import pandas as pd


class PPF_DFS(partialPeriodicPatterns):
"""
**About this algorithm**
Expand Down Expand Up @@ -286,6 +287,7 @@ def _getPerSup(self, arr):
arr = list(arr)
arr.append(self._maxTS)
arr.append(0)
arr = list(set(arr))
arr = np.sort(arr)
arr = np.diff(arr)

Expand Down Expand Up @@ -314,12 +316,12 @@ def __recursive(self, cands, items):
if len(intersection) >= self._partialPeriodicPatterns__minSup:
perSup = self._getPerSup(intersection)
ratio = perSup / (len(intersection) + 1)
nCand = cands[i] + tuple([cands[j][-1]])
newCands.append(nCand)
nitems[nCand] = intersection
if ratio >= self._partialPeriodicPatterns__minPR:
nCand = cands[i] + tuple([cands[j][-1]])
newCands.append(nCand)
nitems[nCand] = intersection
self._partialPeriodicPatterns__finalPatterns[nCand] = [len(intersection), ratio]
if len(newCands) > 1:
if len(newCands):
self.__recursive(newCands, nitems)


Expand Down Expand Up @@ -473,15 +475,5 @@ def printResults(self):
print("Total Memory in RSS", ap.getMemoryRSS())
print("Total ExecutionTime in ms:", ap.getRuntime())
else:
for i in [350]:
#385
_ap = PPF_DFS('/Users/tarunsreepada/Downloads/Temporal_T10I4D100K.csv', i, 300, 0.7, '\t')
_ap.mine()
_ap.save('/Users/tarunsreepada/Downloads/output2.txt')
print(_ap.getPatternsAsDataFrame())
print("Total Memory in USS:", _ap.getMemoryUSS())
print("Total Memory in RSS", _ap.getMemoryRSS())
print("Total ExecutionTime in ms:", _ap.getRuntime())
print("Error! The number of input parameters do not match the total number of parameters provided")


0 comments on commit 303b31c

Please sign in to comment.