Source code for PAMI.extras.imageProcessing.imagery2Databases

# imagery2Databases is a code used to creating transactional database by applying threshold
#
#  **Importing this algorithm into a python program**
# --------------------------------------------------------
#
#     from PAMI.extras.imageProcessing import imagery2Databases as db
#
#     obj = db.imagery2Databases(detected_objects, 16 )
#
#     obj.save()
#





__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 pandas as pd
import sys


# creating transactional database by applying threshold
[docs] class createDatabase: """ :Description: imagery2Databases is a code used to creating transactional database by applying threshold :param detected_objects: list : List data to be processed :param threshold: int : It is threshold value of all item **Importing this algorithm into a python program** -------------------------------------------------------- .. code-block:: python from PAMI.extras.imageProcessing import imagery2Databases as db obj = db.imagery2Databases(detected_obj, 16 ) obj.save(oFile) """ # pass the list of detected objects and specify the minimum probability score an object must maintain. def __init__(self, detected_objects: list, threshold: float): # initialize data frame to store objects self.dataframe = pd.DataFrame(columns=['objects']) self.threshold = threshold self.itemList = [] self.probabilityValuesList = [] self.detected_objects = detected_objects self.itemSupport = [] self.itemSupportSum = [] # pruning the objects having scores less than threshold value for objectList in self.detected_objects: supportSum = 0 dataDic = {} self.items = [] self.values = [] self.supports = [] for item in objectList: supportSum = supportSum + 1 if item[1] >= self.threshold: if item[0] not in dataDic.keys(): dataDic[item[0]] = [item[1]] else: dataDic[item[0]].append(item[1]) # storing objects,their probabilities and count self.items = [item for item in dataDic.keys()] self.values = [max(value) for value in dataDic.values()] self.supports = [len(value) for value in dataDic.values()] self.itemSupportSum.append(supportSum) self.itemList.append(self.items) self.probabilityValuesList.append(self.values) self.itemSupport.append(self.supports) self.dataframe.loc[self.dataframe.shape[0], 'objects'] = dataDic.keys()
[docs] def getDataFrame(self) -> pd.DataFrame: return self.dataframe
# This function will save the list of objects found in each image as a transactional database. # creating transactional database
[docs] def saveAsTransactionalDB(self, outputFile: str, sep: str) -> None: writeFile = open(outputFile, 'w') for i in range(len(self.itemList)): if self.itemList[i]: writeLine = sep.join(map(str, self.itemList[i])) writeFile.write(writeLine + '\n') writeFile.close()
# creating temporal database
[docs] def saveAsTemporalDB(self, outputFile: str, sep: str): writeFile = open(outputFile, 'w') for i in range(len(self.itemList)): if self.itemList[i]: writeLine = sep.join(map(str, self.itemList[i])) writeFile.write(str(i) + sep + writeLine + '\n') writeFile.close()
# creating utility transactional database
[docs] def saveAsUtilityTransactionalDB(self, outputFile: str, sep: str) -> None: writeFile = open(outputFile, 'w') for i in range(len(self.itemList)): if self.itemList[i]: writeLine = sep.join(map(str, self.itemList[i])) writeLine2 = sep.join(map(str, self.itemSupport[i])) writeFile.write(writeLine + ':' + str(self.itemSupportSum[i]) + ':' + writeLine2 + '\n') writeFile.close()
# creating utility temporal database
[docs] def saveAsUtilityTemporalDB(self, outputFile: str, sep: str) -> None: writeFile = open(outputFile, 'w') for i in range(len(self.itemList)): if self.itemList[i]: writeLine = sep.join(map(str, self.itemList[i])) writeLine2 = sep.join(map(str, self.itemSupport[i])) writeFile.write( str(i) + str(sep) + writeLine + ':' + str(self.itemSupportSum[i]) + ':' + writeLine2 + '\n') writeFile.close()
# creating uncertain transactional database
[docs] def saveAsUncertainTransactionalDB(self, outputFile: str, sep: str) -> None: writeFile = open(outputFile, 'w') for i in range(len(self.itemList)): if self.itemList[i]: writeLine = sep.join(map(str, self.itemList[i])) writeLine2 = sep.join(map(str, self.probabilityValuesList[i])) writeFile.write(writeLine + ":1:" + writeLine2 + '\n') writeFile.close()
# creating uncertain Temporal database
[docs] def saveAsUncertainTemporalDB(self, outputFile: str, sep: str) -> None: writeFile = open(outputFile, 'w') for i in range(len(self.itemList)): if self.itemList[i]: writeLine = sep.join(map(str, self.itemList[i])) writeLine2 = sep.join(map(str, self.probabilityValuesList[i])) writeFile.write(str(i) + str(sep) + writeLine + ":1:" + writeLine2 + '\n') writeFile.close()
if __name__ == '__main__': obj = createDatabase(sys.argv[1], sys.argv[2]) obj.saveAsUncertainTemporalDB(sys.argv[4],sys.argv[3])