123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- import csv
- from CertainTrust import Opinion
- class CSVReader:
- gathered_predictions = dict()
- @staticmethod
- def read_csv_prediction_errorcompl(inputfile, vendormodel, months, f=0.5, norm_param=4):
- '''
- Converts input csv file into a dictionary of opinions,
- The CSV input file should contain the following structure:
- packageName:prediction:errorComplement:initial_expectation
- :param inputfile: relative path to input csv file
- :param vendormodel: vendor model, needed for unifying the source-name of a package
- :param f: initial expectation value, will be used if csv does not contain row[3]
- :param months: number of months
- :return: dictionary of package-names as key and opinions as value
- '''
- result = {}
- with open(inputfile, newline="") as csvfile:
- reader = csv.reader(csvfile, delimiter=':')
- for row in reader:
- if not len(row) == 0:
- package = vendormodel.unifySrcName(row [0])
- prediction = float(row [1])
- CSVReader.gathered_predictions[package]=prediction
- errorCompl = float(row [2])
- resT = 1 - prediction / (30 * months * norm_param)
- if len(row)==4:
- oldf = float(row[3])
- newf = 1 + ( (oldf - 1) / (norm_param / 4 ))
- result[package]=Opinion(resT, errorCompl, newf)
- else:
- result[package] = Opinion(resT, errorCompl, f)
- return result
- @staticmethod
- def read_csv_opinons(months):
- '''
- Reads a opinions from CSV file into python dictionary
- The CSV input file should contain the following structure:
- packageName:t:c:f
- :param months: number of months
- :return: dictionary of package-names as key and opinions as value
- '''
- result = {}
- with open("vendors/debian/models/dummy_model_"+str(months)+".csv", newline="") as csvfile:
- reader = csv.reader(csvfile, delimiter=':', quotechar='|')
- for row in reader:
- if not len(row) == 0:
- result[row[0]]=Opinion(float(row[1]),float(row[2]),float(row[3]))
- return result
- @staticmethod
- def read_csv_package_names(filename):
- '''
- reads package names from csv file
- :param filename:
- :return: dictionary of package names
- '''
- result = []
- with open(filename, newline="") as csvfile:
- reader = csv.reader(csvfile, delimiter=':', quotechar='|')
- for row in reader:
- if not len(row) == 0:
- result.append(row[0])
- return result
- '''
- res =CSVReader.readCSV("inputs/dummy_input.csv", 1, 3)
- for key in res:
- print(key + ":" + str(res[key].t)+ ":" + str(res[key].c)+ ":" + str(res[key].f))
- CSVReader.read_csv_package_names("inputs/dummy_input_package.csv")
- '''
- # /home/keks/mstar/mstar-project/vendors/debian/inputs/dummy_input_package_prediction_errorcompl.csv
|