Source code for PAMI.extras.generateDatabase.generateSpatioTemporalDatabase

# generateSpatioTemporalDatabase is a code used to convert the database into SpatioTemporal database.
#
#   **Importing this algorithm into a python program**
#   --------------------------------------------------------
#
#             from PAMI.extras.generateDatabase import generateSpatioTemporalDatabase as db
#
#             obj = db.generateSpatioTemporalDatabase(0, 100, 0, 100, 10, 10, 0.5, 0.9, 0.5, 0.9)
#
#             obj.save()
#
#             obj.createPoint(0,100,0,100) # values can be according to the size of data
#
#             obj.saveAsFile("outputFileName") # To create a file
#




__copyright__ = """
Copyright (C)  2021 Rage Uday Kiran

     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
     the Free Software Foundation, either version 3 of the License, or
     (at your option) any later version.

     This program is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     GNU General Public License for more details.

     You should have received a copy of the GNU General Public License
     along with this program.  If not, see <https://www.gnu.org/licenses/>.
"""
import random as rand
from typing import List, Dict, Tuple, Set, Union, Any, Generator
import pandas
import sys

[docs] class spatioTemporalDatabaseGenerator(): """ :Description: generateSpatioTemporalDatabase is a code used to convert the database into SpatioTemporal database. :param xmin: int : To give minimum value for x :param xmax: int : To give maximum value for x :param ymin: int : To give minimum value for y :param ymax: int : To give maximum value for y :param maxTimeStamp: int : maximum Time Stamp for the database :param numberOfItems: int : number of items in the database :param itemChanceLow: int or float : least chance for item in the database :param itemChanceHigh: int or float : highest chance for item in the database :param timeStampChanceLow: int or float : lowest time stamp value :param timeStampChanceHigh: int or float: highest time stamp value **Importing this algorithm into a python program** -------------------------------------------------------- .. code-block:: python from PAMI.extras.generateDatabase import generateSpatioTemporalDatabase as db obj = db.generateSpatioTemporalDatabase(0, 100, 0, 100, 10, 10, 0.5, 0.9, 0.5, 0.9) obj.save(oFile) obj.createPoint(0,100,0,100) # values can be according to the size of data obj.saveAsFile("outputFileName") # To create a file """ coinFlip = [True, False] timestamp = list() items = list() alreadyAdded = set() outFileName=""
[docs] def createPoint(self, xmin: int, xmax: int, ymin: int, ymax: int) -> Tuple[int, int]: x = rand.randint(xmin, xmax) y = rand.randint(ymin, ymax) coordinate = tuple([x, y]) return coordinate
def __init__(self,xmin: int,xmax: int,ymin: int,ymax: int,maxTimeStamp: int,numberOfItems: int, itemChanceLow: float, itemChanceHigh: float, timeStampChanceLow: float, timeStampChanceHigh: float) -> None: coinFlip = [True, False] timeStamp = 1 self.timeStampList = list() self.itemList = list() while timeStamp != maxTimeStamp + 1: itemSet=list() for i in range(1, numberOfItems+1): #rand1=rand.rand(itemChanceLow,itemChanceHigh) #rand2 = rand.rand(timeStampChanceLow, timeStampChanceHigh) if rand.choices(coinFlip, weights=[itemChanceLow,itemChanceHigh], k=1)[0]: coordinate=self.createPoint(xmin, xmax, ymin, ymax) coordinate=tuple(coordinate) if coordinate not in self.alreadyAdded: coordinate=list(coordinate) itemSet.append(coordinate) coordinate=tuple(coordinate) self.alreadyAdded.add(coordinate) if itemSet != []: self.timeStampList.append( timeStamp) self.itemList.append( itemSet) if rand.choices(coinFlip, weights=[itemChanceLow,itemChanceHigh], k=1)[0]: timeStamp += 1 self.outFileName = "temporal_" + str(maxTimeStamp // 1000) + \ "KI" + str(numberOfItems) + "C" + str(itemChanceLow) + "T" + str(timeStampChanceLow) + ".csv"
[docs] def saveAsFile(self, outFileName="", sep="\t") -> None: if outFileName != "": self.outFileName = outFileName file = open( self.outFileName, "w") for i in range(len(self.timeStampList)): file.write( str(self.timeStampList[i])) for j in range(len(self.itemList[i])): file.write( sep + str(self.itemList[i][j])) file.write('\n') file.close()
if __name__ == "__main__": xmin=0 xmax=100 ymin=0 ymax=100 maxTimeStamp = 10 numberOfItems = 10 itemChanceLow = 0.5 itemChanceHigh = 0.9 timeStampChanceLow = 0.5 timeStampChanceHigh = 0.9 obj = spatioTemporalDatabaseGenerator(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4]) obj.saveAsFile(sys.argv[5])