fixed first views

master
parent 585622e631
commit 4383fdfc00
  1. BIN
      __pycache__/run.cpython-37.pyc
  2. 16
      frontend/src/components/Ensemble.vue
  3. 61
      frontend/src/components/Main.vue
  4. 4
      frontend/src/components/Predictions.vue
  5. 142
      run.py

Binary file not shown.

@ -287,25 +287,25 @@ export default {
var allModels = JSON.parse(this.ScatterPlotResults[0]) var allModels = JSON.parse(this.ScatterPlotResults[0])
OverviewPlotly.on('plotly_selected', function (evt) { OverviewPlotly.on('plotly_selected', function (evt) {
if (typeof evt !== 'undefined') { if (typeof evt !== 'undefined') {
var pushModelsRemainingTemp = [] var pushModelsRemainingTempCM = []
const ClassifierIDsList = [] const ClassifierIDsListCM = []
for (let i = 0; evt.points.length; i++) { for (let i = 0; evt.points.length; i++) {
if (evt.points[i] === undefined) { if (evt.points[i] === undefined) {
break break
} else { } else {
const OnlyId = evt.points[i].text.split(' ')[2] const OnlyId = evt.points[i].text.split(' ')[2]
const OnlyIdCleared = OnlyId.split('<br>') const OnlyIdCleared = OnlyId.split('<br>')
ClassifierIDsList.push(OnlyIdCleared[0]) ClassifierIDsListCM.push(OnlyIdCleared[0])
} }
} }
for (let i = 0; i < allModels.length; i++) { for (let i = 0; i < allModels.length; i++) {
if (ClassifierIDsList.indexOf((allModels[i])) < 0) { if (ClassifierIDsListCM.indexOf((allModels[i])) < 0) {
pushModelsRemainingTemp.push(allModels[i]) pushModelsRemainingTempCM.push(allModels[i])
} }
} }
EventBus.$emit('RemainingPointsCM', pushModelsRemainingTemp) EventBus.$emit('RemainingPointsCM', pushModelsRemainingTempCM)
EventBus.$emit('SendSelectedPointsUpdateIndicatorCM', ClassifierIDsList) EventBus.$emit('SendSelectedPointsUpdateIndicatorCM', ClassifierIDsListCM)
EventBus.$emit('SendSelectedPointsToServerEventCM', ClassifierIDsList) EventBus.$emit('SendSelectedPointsToServerEventCM', ClassifierIDsListCM)
} }
}) })
}, },

@ -144,7 +144,7 @@
<b-row class="md-3"> <b-row class="md-3">
<b-col cols="6"> <b-col cols="6">
<mdb-card style="margin-top: 15px;"> <mdb-card style="margin-top: 15px;">
<mdb-card-header color="primary-color" tag="h5" class="text-center">Hyper-Parameters Predictions <mdb-card-header color="primary-color" tag="h5" class="text-center">Hyper-Parameters' Predictions
</mdb-card-header> </mdb-card-header>
<mdb-card-body> <mdb-card-body>
<mdb-card-text class="text-center" style="min-height: 270px"> <mdb-card-text class="text-center" style="min-height: 270px">
@ -155,7 +155,7 @@
</b-col> </b-col>
<b-col cols="6"> <b-col cols="6">
<mdb-card style="margin-top: 15px;"> <mdb-card style="margin-top: 15px;">
<mdb-card-header color="primary-color" tag="h5" class="text-center">Majority-Voting Ensemble Predictions <mdb-card-header color="primary-color" tag="h5" class="text-center">Majority-Voting Ensemble's Predictions
</mdb-card-header> </mdb-card-header>
<mdb-card-body> <mdb-card-body>
<mdb-card-text class="text-center" style="min-height: 270px"> <mdb-card-text class="text-center" style="min-height: 270px">
@ -217,8 +217,10 @@ export default Vue.extend({
data () { data () {
return { return {
storeEnsemble: [], storeEnsemble: [],
PredictSelEnsem: [],
firstTimeExec: true, firstTimeExec: true,
unselectedRemainingPoints: [], unselectedRemainingPoints: [],
unselectedRemainingPointsEnsem: [],
Collection: 0, Collection: 0,
OverviewResults: 0, OverviewResults: 0,
preDataResults: '', preDataResults: '',
@ -321,6 +323,8 @@ export default Vue.extend({
EventBus.$emit('emittedEventCallingGridSelection', this.OverviewResults) EventBus.$emit('emittedEventCallingGridSelection', this.OverviewResults)
this.firstTimeExec = false this.firstTimeExec = false
} else { } else {
this.PredictSelEnsem = []
EventBus.$emit('SendSelectedPointsToServerEventCM', this.PredictSelEnsem)
EventBus.$emit('emittedEventCallingCrossoverMutation', this.OverviewResults) EventBus.$emit('emittedEventCallingCrossoverMutation', this.OverviewResults)
EventBus.$emit('emittedEventCallingGridCrossoverMutation', this.OverviewResults) EventBus.$emit('emittedEventCallingGridCrossoverMutation', this.OverviewResults)
EventBus.$emit('emittedEventCallingGridSelectionCrossoverMutation', this.OverviewResults) EventBus.$emit('emittedEventCallingGridSelectionCrossoverMutation', this.OverviewResults)
@ -346,6 +350,8 @@ export default Vue.extend({
.then(response => { .then(response => {
this.OverviewResultsCM = response.data.OverviewResultsCM this.OverviewResultsCM = response.data.OverviewResultsCM
console.log('Server successfully sent all the data related to visualizations!') console.log('Server successfully sent all the data related to visualizations!')
this.PredictSel = []
EventBus.$emit('SendSelectedPointsToServerEvent', this.PredictSel)
EventBus.$emit('emittedEventCallingScatterPlot', this.OverviewResultsCM) EventBus.$emit('emittedEventCallingScatterPlot', this.OverviewResultsCM)
EventBus.$emit('emittedEventCallingGrid', this.OverviewResultsCM) EventBus.$emit('emittedEventCallingGrid', this.OverviewResultsCM)
EventBus.$emit('emittedEventCallingGridSelection', this.OverviewResultsCM) EventBus.$emit('emittedEventCallingGridSelection', this.OverviewResultsCM)
@ -423,8 +429,52 @@ export default Vue.extend({
console.log(error) console.log(error)
}) })
}, },
SendSelectedIDsEnsemble () {
const path = `http://127.0.0.1:5000/data/SendtoSeverSelIDsEnsem`
const postData = {
predictSelectionIDsCM: this.ClassifierIDsListCM
}
const axiosConfig = {
headers: {
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Headers': 'Origin, Content-Type, X-Auth-Token',
'Access-Control-Allow-Methods': 'GET, PUT, POST, DELETE, OPTIONS'
}
}
axios.post(path, postData, axiosConfig)
.then(response => {
console.log('Sent the selected IDs to compute predictions!')
this.retrievePredictionsSelEnsemble()
})
.catch(error => {
console.log(error)
})
},
retrievePredictionsSelEnsemble () {
const path = `http://localhost:5000/data/RetrievePredictionsEnsem`
const axiosConfig = {
headers: {
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Headers': 'Origin, Content-Type, X-Auth-Token',
'Access-Control-Allow-Methods': 'GET, PUT, POST, DELETE, OPTIONS'
}
}
axios.get(path, axiosConfig)
.then(response => {
this.PredictSelEnsem = response.data.PredictSelEnsem
console.log('Server successfully sent the predictions!')
EventBus.$emit('SendSelectedPointsToServerEventCM', this.PredictSelEnsem)
})
.catch(error => {
console.log(error)
})
},
SelectedPointsCM () { SelectedPointsCM () {
this.OverSelLengthCM = this.ClassifierIDsListCM.length this.OverSelLengthCM = this.ClassifierIDsListCM.length
this.SendSelectedIDsEnsemble()
}, },
SendSelectedPointsToServer () { SendSelectedPointsToServer () {
if (this.ClassifierIDsList === ''){ if (this.ClassifierIDsList === ''){
@ -818,9 +868,12 @@ export default Vue.extend({
const path = `http://127.0.0.1:5000/data/CrossoverMutation` const path = `http://127.0.0.1:5000/data/CrossoverMutation`
EventBus.$emit('SendStoredEnsemble', this.storeEnsemble) EventBus.$emit('SendStoredEnsemble', this.storeEnsemble)
var mergedStoreEnsembleLoc = [].concat.apply([], this.storeEnsemble)
const postData = { const postData = {
RemainingPoints: this.unselectedRemainingPoints RemainingPoints: this.unselectedRemainingPoints,
StoreEnsemble: mergedStoreEnsembleLoc
} }
const axiosConfig = { const axiosConfig = {
headers: { headers: {
@ -885,6 +938,8 @@ export default Vue.extend({
EventBus.$on('RemainingPoints', data => { this.unselectedRemainingPoints = data }) EventBus.$on('RemainingPoints', data => { this.unselectedRemainingPoints = data })
EventBus.$on('InitializeCrossoverMutation', this.sendPointsCrossMutat) EventBus.$on('InitializeCrossoverMutation', this.sendPointsCrossMutat)
EventBus.$on('RemainingPointsCM', data => { this.unselectedRemainingPointsEnsem = data })
EventBus.$on('ChangeKey', data => { this.keyNow = data }) EventBus.$on('ChangeKey', data => { this.keyNow = data })
EventBus.$on('SendSelectedPointsUpdateIndicator', data => { this.ClassifierIDsList = data; this.storeEnsemble.push(this.ClassifierIDsList)}) EventBus.$on('SendSelectedPointsUpdateIndicator', data => { this.ClassifierIDsList = data; this.storeEnsemble.push(this.ClassifierIDsList)})
EventBus.$on('SendSelectedPointsUpdateIndicator', this.SelectedPoints) EventBus.$on('SendSelectedPointsUpdateIndicator', this.SelectedPoints)

@ -61,8 +61,6 @@ export default {
var KNNPred = predictions[0] var KNNPred = predictions[0]
var LRPred = predictions[1] var LRPred = predictions[1]
var PredAver = predictions[2] var PredAver = predictions[2]
console.log(PredAver)
var dataAver = [] var dataAver = []
var dataAverGetResults = [] var dataAverGetResults = []
var dataKNN = [] var dataKNN = []
@ -125,7 +123,7 @@ export default {
} }
var classStore = [].concat.apply([], classArray); var classStore = [].concat.apply([], classArray);
console.log(classStore)
// === Set up canvas === // // === Set up canvas === //
var width = 1200, var width = 1200,

142
run.py

@ -76,6 +76,9 @@ def reset():
global yData global yData
yData = [] yData = []
global EnsembleActive
EnsembleActive = []
global addKNN global addKNN
addKNN = 0 addKNN = 0
@ -205,6 +208,9 @@ def retrieveFileName():
global detailsParams global detailsParams
detailsParams = [] detailsParams = []
global EnsembleActive
EnsembleActive = []
global addKNN global addKNN
addKNN = 0 addKNN = 0
@ -652,6 +658,53 @@ def PreprocessingPred():
return [predictionsKNN, predictionsLR, predictions] return [predictionsKNN, predictionsLR, predictions]
def PreprocessingPredEnsemble():
global EnsembleActive
numberIDKNN = []
numberIDLR = []
for el in EnsembleActive:
match = re.match(r"([a-z]+)([0-9]+)", el, re.I)
if match:
items = match.groups()
if (items[0] == 'KNN'):
numberIDKNN.append(int(items[1]))
else:
numberIDLR.append(int(items[1]))
dicKNN = allParametersPerformancePerModel[3]
dicLR = allParametersPerformancePerModel[7]
dfKNN = pd.DataFrame.from_dict(dicKNN)
dfLR = pd.DataFrame.from_dict(dicLR)
df_concatProbs = pd.concat([dfKNN, dfLR])
df_concatProbs = df_concatProbs.reset_index(drop=True)
dfKNN = df_concatProbs.loc[numberIDKNN]
dfLR = df_concatProbs.loc[numberIDLR]
df_concatProbs = pd.DataFrame()
df_concatProbs = df_concatProbs.iloc[0:0]
df_concatProbs = pd.concat([dfKNN, dfLR])
predictionsKNN = []
for column, content in dfKNN.items():
el = [sum(x)/len(x) for x in zip(*content)]
predictionsKNN.append(el)
predictionsLR = []
for column, content in dfLR.items():
el = [sum(x)/len(x) for x in zip(*content)]
predictionsLR.append(el)
predictions = []
for column, content in df_concatProbs.items():
el = [sum(x)/len(x) for x in zip(*content)]
predictions.append(el)
return [predictionsKNN, predictionsLR, predictions]
def PreprocessingParam(): def PreprocessingParam():
dicKNN = allParametersPerformancePerModel[1] dicKNN = allParametersPerformancePerModel[1]
dicLR = allParametersPerformancePerModel[5] dicLR = allParametersPerformancePerModel[5]
@ -765,6 +818,7 @@ def InitializeEnsemble():
global ModelSpaceMDS global ModelSpaceMDS
global ModelSpaceTSNE global ModelSpaceTSNE
global allParametersPerformancePerModel global allParametersPerformancePerModel
global EnsembleActive
XModels = XModels.fillna(0) XModels = XModels.fillna(0)
@ -773,7 +827,10 @@ def InitializeEnsemble():
ModelSpaceTSNE = ModelSpaceTSNE.tolist() ModelSpaceTSNE = ModelSpaceTSNE.tolist()
ModelSpaceUMAP = FunUMAP(XModels) ModelSpaceUMAP = FunUMAP(XModels)
PredictionProbSel = PreprocessingPred() if (len(EnsembleActive) == 0):
PredictionProbSel = PreprocessingPred()
else:
PredictionProbSel = PreprocessingPredEnsemble()
returnResults(ModelSpaceMDS,ModelSpaceTSNE,ModelSpaceUMAP,PredictionProbSel) returnResults(ModelSpaceMDS,ModelSpaceTSNE,ModelSpaceUMAP,PredictionProbSel)
@ -820,6 +877,13 @@ def CrossoverMutateFun():
RemainingIds = RemainingIds['RemainingPoints'] RemainingIds = RemainingIds['RemainingPoints']
global EnsembleActive
EnsembleActive = request.get_data().decode('utf8').replace("'", '"')
EnsembleActive = json.loads(EnsembleActive)
EnsembleActive = EnsembleActive['StoreEnsemble']
global XData global XData
global yData global yData
global LRModelsCount global LRModelsCount
@ -1377,28 +1441,25 @@ def PreprocessingPredSel(SelectedIDs):
numberIDKNN = [] numberIDKNN = []
numberIDLR = [] numberIDLR = []
print(SelectedIDs)
for el in SelectedIDs: for el in SelectedIDs:
match = re.match(r"([a-z]+)([0-9]+)", el, re.I) match = re.match(r"([a-z]+)([0-9]+)", el, re.I)
if match: if match:
items = match.groups() items = match.groups()
if (items[0] == 'KNN'): if (items[0] == 'KNN'):
numberIDKNN.append(int(items[1]) - addKNN) numberIDKNN.append(int(items[1]) -addKNN)
else: else:
numberIDLR.append(int(items[1]) - addLR) numberIDLR.append(int(items[1]) - addLR)
print(numberIDKNN)
dicKNN = allParametersPerformancePerModel[3] dicKNN = allParametersPerformancePerModel[3]
dicLR = allParametersPerformancePerModel[7] dicLR = allParametersPerformancePerModel[7]
dfKNN = pd.DataFrame.from_dict(dicKNN) dfKNN = pd.DataFrame.from_dict(dicKNN)
print(dfKNN)
dfKNN = dfKNN.loc[numberIDKNN] dfKNN = dfKNN.loc[numberIDKNN]
dfLR = pd.DataFrame.from_dict(dicLR) dfLR = pd.DataFrame.from_dict(dicLR)
dfLR = dfLR.loc[numberIDLR] dfLR = dfLR.loc[numberIDLR]
print(dfLR)
dfLR.index += addKNN dfLR.index += addKNN
df_concatProbs = pd.concat([dfKNN, dfLR]) df_concatProbs = pd.concat([dfKNN, dfLR])
print(df_concatProbs)
predictionsKNN = [] predictionsKNN = []
for column, content in dfKNN.items(): for column, content in dfKNN.items():
@ -1436,4 +1497,71 @@ def SendPredictSel():
response = { response = {
'PredictSel': ResultsSelPred 'PredictSel': ResultsSelPred
} }
return jsonify(response)
def PreprocessingPredSelEnsem(SelectedIDsEnsem):
numberIDKNN = []
numberIDLR = []
for el in SelectedIDsEnsem:
match = re.match(r"([a-z]+)([0-9]+)", el, re.I)
if match:
items = match.groups()
if (items[0] == 'KNN'):
numberIDKNN.append(int(items[1]))
else:
numberIDLR.append(int(items[1]))
dicKNN = allParametersPerformancePerModel[3]
dicLR = allParametersPerformancePerModel[7]
dfKNN = pd.DataFrame.from_dict(dicKNN)
dfLR = pd.DataFrame.from_dict(dicLR)
df_concatProbs = pd.concat([dfKNN, dfLR])
df_concatProbs = df_concatProbs.reset_index(drop=True)
dfKNN = df_concatProbs.loc[numberIDKNN]
dfLR = df_concatProbs.loc[numberIDLR]
df_concatProbs = pd.DataFrame()
df_concatProbs = df_concatProbs.iloc[0:0]
df_concatProbs = pd.concat([dfKNN, dfLR])
predictionsKNN = []
for column, content in dfKNN.items():
el = [sum(x)/len(x) for x in zip(*content)]
predictionsKNN.append(el)
predictionsLR = []
for column, content in dfLR.items():
el = [sum(x)/len(x) for x in zip(*content)]
predictionsLR.append(el)
predictions = []
for column, content in df_concatProbs.items():
el = [sum(x)/len(x) for x in zip(*content)]
predictions.append(el)
return [predictionsKNN, predictionsLR, predictions]
@cross_origin(origin='localhost',headers=['Content-Type','Authorization'])
@app.route('/data/SendtoSeverSelIDsEnsem', methods=["GET", "POST"])
def RetrieveSelIDsPredictEnsem():
global ResultsSelPredEnsem
ResultsSelPredEnsem = []
RetrieveIDsSelectionEnsem = request.get_data().decode('utf8').replace("'", '"')
RetrieveIDsSelectionEnsem = json.loads(RetrieveIDsSelectionEnsem)
RetrieveIDsSelectionEnsem = RetrieveIDsSelectionEnsem['predictSelectionIDsCM']
ResultsSelPredEnsem = PreprocessingPredSelEnsem(RetrieveIDsSelectionEnsem)
return 'Everything Okay'
@app.route('/data/RetrievePredictionsEnsem', methods=["GET", "POST"])
def SendPredictSelEnsem():
global ResultsSelPredEnsem
response = {
'PredictSelEnsem': ResultsSelPredEnsem
}
return jsonify(response) return jsonify(response)
Loading…
Cancel
Save