Angelos Chatzimparmpas 4 years ago
parent 3c47f3cbc3
commit f8dd6d87b8
  1. BIN
      __pycache__/run.cpython-38.pyc
  2. 1
      frontend/src/components/AlgorithmsController.vue
  3. 9
      frontend/src/components/Ensemble.vue
  4. 7
      frontend/src/components/HyperParameterSpace.vue
  5. 45
      frontend/src/components/Main.vue
  6. 52
      frontend/src/components/Predictions.vue
  7. 9
      frontend/src/components/ValidationController.vue
  8. 4
      frontend/src/main.js
  9. 1566
      run.py

Binary file not shown.

@ -266,6 +266,7 @@ export default {
visible: false
},
yaxis: {
nticks: 2,
range: [minimumDiff, maximumDiff],
title: {
text: 'Dev. (px)',

@ -2,9 +2,9 @@
<div>
<div align="center">
Projection method: <select id="selectBarChartCM" @change="selectVisualRepresentationCM()">
<option value="mdsCM" selected>MDS</option>
<option value="umapCM" selected>UMAP</option>
<option value="mdsCM">MDS</option>
<option value="tsneCM">t-SNE</option>
<option value="umapCM">UMAP</option>
</select>
&nbsp;&nbsp;
Actions: <button
@ -41,7 +41,7 @@ export default {
CrossoverMutateText: 'Remove unselected models from ensemble',
WH: [],
ScatterPlotResults: '',
representationDef: 'mdsCM',
representationDef: 'umapCM',
storeEnsembleLoc: [],
valueActive: 'Compute performance for active ensemble',
pushModelsTempCMSame: [],
@ -281,7 +281,7 @@ export default {
visible: false,
range: [minY, maxY]
},
font: { family: 'Helvetica', size: 22, color: '#000000' },
font: { family: 'Helvetica', size: 22, color: '#000000' },
autosize: true,
width: width,
height: height,
@ -331,7 +331,6 @@ export default {
EventBus.$emit('RemainingPointsCM', pushModelsRemainingTempCM)
EventBus.$emit('callValidationData', ResultsAll)
EventBus.$emit('SendSelectedPointsUpdateIndicatorCM', ClassifierIDsListCM)
EventBus.$emit('SendSelectedPointsToServerEventCM', ClassifierIDsListCM)
}
})
},

@ -2,9 +2,9 @@
<div>
<div align="center">
Projection method: <select id="selectBarChart" @change="selectVisualRepresentation()">
<option value="mds" selected>MDS</option>
<option value="umap" selected>UMAP</option>
<option value="mds">MDS</option>
<option value="tsne">t-SNE</option>
<option value="umap">UMAP</option>
</select>
&nbsp;&nbsp;
Action:
@ -43,7 +43,7 @@ export default {
AddEnsemble: 'Add selected models to ensemble',
WH: [],
ScatterPlotResults: '',
representationDef: 'mds',
representationDef: 'umapCM',
FlagFinalStage: 0,
//RemainingPointsIndices: []
}
@ -331,7 +331,6 @@ export default {
EventBus.$emit('RemainingPoints', pushModelsRemainingTemp)
EventBus.$emit('callValidationData', ResultsAll)
EventBus.$emit('SendSelectedPointsUpdateIndicator', ClassifierIDsList)
EventBus.$emit('SendSelectedPointsToServerEvent', ClassifierIDsList)
}
})
},

@ -6,7 +6,7 @@
<b-row class="md-3">
<b-col cols="3" >
<mdb-card>
<mdb-card-header color="primary-color" tag="h5" class="text-center">Data Sets and Performance Metrics Manager</mdb-card-header>
<mdb-card-header color="primary-color" tag="h5" class="text-center">Data Sets and Validation Metrics Manager</mdb-card-header>
<mdb-card-body>
<mdb-card-text class="text-left" style="font-size: 18.5px;">
<PerformanceMetrics/>
@ -18,7 +18,7 @@
</b-col>
<b-col cols="6">
<mdb-card>
<mdb-card-header color="primary-color" tag="h5" class="text-center"><span class="float-left"><font-awesome-icon icon="arrow-alt-circle-right"/> {{ Status }}</span>History and Algorithms/Models Selector<span class="badge badge-primary badge-pill float-right">Active<span class="badge badge-light" style="margin-left:4px; margin-bottom:1px">1&2</span></span></mdb-card-header>
<mdb-card-header color="primary-color" tag="h5" class="text-center"><span class="float-left"><font-awesome-icon icon="arrow-alt-circle-right"/> {{ Status }}</span>Process Tracker and Algorithms/Models Selector<span class="badge badge-primary badge-pill float-right">Active<span class="badge badge-light" style="margin-left:4px; margin-bottom:1px">1&2</span></span></mdb-card-header>
<mdb-card-body>
<mdb-card-text class="text-left" style="font-size: 18.5px; min-height: 357px">
<History/>
@ -52,11 +52,11 @@
</b-col>
<b-col cols="6">
<mdb-card style="margin-top: 15px;">
<mdb-card-header color="primary-color" tag="h5" class="text-center"><small class="float-left"><Knowledge/></small>Majority-Voting Ensemble
<mdb-card-header color="primary-color" tag="h5" class="text-center"><span class="float-left"><Knowledge/></span>Majority-Voting Ensemble
[Sel: {{OverSelLengthCM}} / All: {{OverAllLengthCM}}]<small class="float-right"></small><span class="badge badge-info badge-pill float-right">Projection<span class="badge badge-light" style="margin-left:4px; margin-bottom:1px">2</span></span>
</mdb-card-header>
<mdb-card-body>
<mdb-card-text class="text-center" style="min-height: 434px">
<mdb-card-text class="text-center" style="min-height: 430px">
<Ensemble/>
</mdb-card-text>
</mdb-card-body>
@ -77,7 +77,7 @@
</b-col>
<b-col cols="6">
<mdb-card style="margin-top: 15px;">
<mdb-card-header color="primary-color" tag="h5" class="text-center">Predictive Results for Each Data Instance<span class="badge badge-primary badge-pill float-right">Active<span class="badge badge-light" style="margin-left:4px; margin-bottom:1px">{{projectionID_A}}</span></span>
<mdb-card-header color="primary-color" tag="h5" class="text-center"><span class="float-left"><font-awesome-icon id="mode0" icon="stop-circle"/><font-awesome-icon id="mode1" style="display: none" icon="play-circle"/> {{ MeanShift }}</span>Predictive Results for Each Data Instance<span class="badge badge-primary badge-pill float-right">Active<span class="badge badge-light" style="margin-left:4px; margin-bottom:1px">{{projectionID_A}}</span></span>
</mdb-card-header>
<mdb-card-body>
<mdb-card-text class="text-center" style="min-height: 270px">
@ -172,8 +172,10 @@ export default Vue.extend({
data () {
return {
Status: " (S) Stage 0",
MeanShift: "Mean Shift Clustering",
mode: 0,
valuePickled: 'Close',
sankeyCallS: true,
sankeyCallS: 1,
CMNumberofModelsOFFICIAL: [0,0,0,0,0,0,50,50,50,50,50,0,50,50,50,50,50,0],
CMNumberofModels: [0,0,0,0,0,0,5,5,5,5,5,0,5,5,5,5,5,0], // Remove that!
CMNumberofModelsOFFICIALS2: [0,0,0,0,0,0,50,50,50,50,50,0,50,50,50,50,50,0,25,25,25,25,25,0,25,25,25,25,25,0,25,25,25,25,25,0,25,25,25,25,25,0],
@ -289,6 +291,10 @@ export default Vue.extend({
var ModelsLocalInitial = JSON.parse(this.OverviewResults[0])
EventBus.$emit('SendStoredIDsInitial', ModelsLocalInitial)
var PerformanceInitial = JSON.parse(this.OverviewResults[1])
this.mode = JSON.parse(this.OverviewResults[15])
if (this.mode == 1) {
this.swapSymbol()
}
EventBus.$emit('SendPerformanceInitialAlgs', PerformanceInitial)
EventBus.$emit('emittedEventCallingScatterPlot', this.OverviewResults)
@ -311,15 +317,16 @@ export default Vue.extend({
EventBus.$emit('SendPerformance', Performance)
EventBus.$emit('emittedEventCallingCrossoverMutation', this.OverviewResults)
this.PredictSelEnsem = []
if (this.sankeyCallS) {
if (this.sankeyCallS == 1) {
EventBus.$emit('SendSank')
EventBus.$emit('emittedEventCallingSankeyStage2')
this.Status = " (S) Stage 2"
} else {
} else if (this.sankeyCallS == 2){
EventBus.$emit('SendSankS')
EventBus.$emit('emittedEventCallingSankeyStage3')
EventBus.$emit('hideCrossMut')
this.Status = " (S) Stage \u2014"
} else {
}
this.storeBothEnsCM[1] = this.OverviewResults
this.getFinalResults()
@ -351,6 +358,7 @@ export default Vue.extend({
axios.get(path, axiosConfig)
.then(response => {
this.OverviewResultsCM = response.data.OverviewResultsCM
var ModelsLocal = JSON.parse(this.OverviewResultsCM[0])
EventBus.$emit('SendStoredCMHist', ModelsLocal)
EventBus.$emit('SendStoredIDsInitial', ModelsLocal)
@ -360,6 +368,7 @@ export default Vue.extend({
console.log('Server successfully sent all the data related to visualizations for CM!')
EventBus.$emit('emittedEventCallingScatterPlot', this.OverviewResultsCM)
this.storeBothEnsCM[0] = this.OverviewResultsCM
EventBus.$emit('callAlgorithhms')
//EventBus.$emit('emittedEventCallingSankey', this.OverviewResultsCM)
//this.PredictSel = []
@ -434,8 +443,9 @@ export default Vue.extend({
.then(response => {
this.PredictSel = response.data.PredictSel
console.log('Server successfully sent the predictions!')
EventBus.$emit('SendSelectedPointsToServerEvent', this.PredictSel)
EventBus.$emit('emittedEventCallingGrid', this.storeBothEnsCM[0])
EventBus.$emit('SendSelectedPointsToServerEvent', this.PredictSel)
})
.catch(error => {
console.log(error)
@ -478,8 +488,8 @@ export default Vue.extend({
.then(response => {
this.PredictSelEnsem = response.data.PredictSelEnsem
console.log('Server successfully sent the predictions!')
EventBus.$emit('SendSelectedPointsToServerEvent', this.PredictSelEnsem)
EventBus.$emit('emittedEventCallingGrid', this.storeBothEnsCM[1])
EventBus.$emit('SendSelectedPointsToServerEvent', this.PredictSelEnsem)
})
.catch(error => {
console.log(error)
@ -496,7 +506,7 @@ export default Vue.extend({
} else {
this.OverSelLengthCM = this.ClassifierIDsListCM.length
const path = `http://127.0.0.1:5000/data/ServerRequestSelPoin`
console.log(this.ClassifierIDsListCM)
const postData = {
ClassifiersList: this.ClassifierIDsListCM,
}
@ -778,7 +788,9 @@ export default Vue.extend({
this.OverAllLength = 0
this.OverSelLengthCM = 0
this.OverAllLengthCM = 0
this.sankeyCallS = true
this.sankeyCallS = 1
this.mode = 0
this.CurrentStage = 1
const postData = {
ClassifiersList: this.reset
}
@ -887,6 +899,12 @@ export default Vue.extend({
console.log(error)
})
},
swapSymbol () {
var off = document.getElementById('mode0');
var on = document.getElementById('mode1');
on.style.display = 'inline'
off.style.display = 'none'
},
sendPointsCrossMutat () {
const path = `http://127.0.0.1:5000/data/CrossoverMutation`
@ -906,7 +924,7 @@ export default Vue.extend({
loopNumber: this.CMNumberofModelsS2,
Stage: this.CurrentStage
}
this.sankeyCallS = false
this.sankeyCallS = this.sankeyCallS + 1
}
const axiosConfig = {
@ -941,6 +959,7 @@ export default Vue.extend({
}
},
created () {
// does the browser support the Navigation Timing API?
if (window.performance) {
console.info("window.performance is supported");

@ -48,7 +48,8 @@ export default {
var svg = d3.select("#containerAll");
svg.selectAll("*").remove();
var yValues = JSON.parse(this.GetResultsAll[6])
var yValues = JSON.parse(this.GetResultsAll[14])
var targetNames = JSON.parse(this.GetResultsAll[7])
var getIndices = []
@ -61,7 +62,7 @@ export default {
getIndices.push(clTemp)
}
getIndices.reverse()
var predictions = JSON.parse(this.GetResultsAll[12])
var KNNPred = predictions[0]
var LRPred = predictions[1]
@ -100,20 +101,20 @@ export default {
dataRF = []
dataGradB = []
getIndices[targetNames[i]].forEach(element => {
dataAver.push({ id: element, value: PredAver[element][targetNames[i]] })
dataKNN.push({ id: element, value: KNNPred[element][targetNames[i]] })
dataLR.push({ id: element, value: LRPred[element][targetNames[i]] })
dataMLP.push({ id: element, value: MLPPred[element][targetNames[i]] })
dataRF.push({ id: element, value: RFPred[element][targetNames[i]] })
dataGradB.push({ id: element, value: GradBPred[element][targetNames[i]] })
dataAver.push({ id: element, value: PredAver[element] })
dataKNN.push({ id: element, value: KNNPred[element] })
dataLR.push({ id: element, value: LRPred[element] })
dataMLP.push({ id: element, value: MLPPred[element] })
dataRF.push({ id: element, value: RFPred[element] })
dataGradB.push({ id: element, value: GradBPred[element] })
});
for (let j = 0; j < size - getIndices[targetNames[i]].length; j++) {
dataAver.push({ id: -1, value: 1.0 })
dataKNN.push({ id: -1, value: 1.0 })
dataLR.push({ id: -1, value: 1.0 })
dataMLP.push({ id: -1, value: 1.0 })
dataRF.push({ id: -1, value: 1.0 })
dataGradB.push({ id: -1, value: 1.0 })
dataAver.push({ id: -1, value: 100 })
dataKNN.push({ id: -1, value: 100 })
dataLR.push({ id: -1, value: 100 })
dataMLP.push({ id: -1, value: 100 })
dataRF.push({ id: -1, value: 100 })
dataGradB.push({ id: -1, value: 100 })
}
dataAverGetResults.push(dataAver)
dataKNNResults.push(dataKNN)
@ -128,7 +129,7 @@ export default {
dataMLPResults.reverse()
dataRFResults.reverse()
dataGradBResults.reverse()
var classArray = []
this.StoreIndices = []
for (let i = 0; i < dataAverGetResults.length; i++) {
@ -201,7 +202,7 @@ export default {
function databind(data, size, sqrtSize) {
colourScale = d3.scaleSequential(d3.interpolateGreens).domain([1, 0])
colourScale = d3.scaleSequential(d3.interpolateGreens).domain([100, 0])
var join = custom.selectAll('custom.rect')
.data(data);
@ -275,7 +276,7 @@ export default {
svg.selectAll("*").remove();
var predictionsAll = JSON.parse(this.GetResultsAll[12])
console.log(this.predictSelection.length)
if (this.predictSelection.length != 0) {
var predictions = this.predictSelection
var KNNPred = predictions[0]
@ -299,7 +300,7 @@ export default {
var GradBPredAll = predictionsAll[4]
var PredAverAll = predictionsAll[5]
var yValues = JSON.parse(this.GetResultsAll[6])
var yValues = JSON.parse(this.GetResultsAll[14])
var targetNames = JSON.parse(this.GetResultsAll[7])
var getIndices = []
@ -345,12 +346,12 @@ export default {
dataGradB = []
getIndices[targetNames[i]].forEach(element => {
dataAver.push({ id: element, value: PredAver[element][targetNames[i]] - PredAverAll[element][targetNames[i]] })
dataKNN.push({ id: element, value: KNNPred[element][targetNames[i]] - KNNPredAll[element][targetNames[i]] })
dataLR.push({ id: element, value: LRPred[element][targetNames[i]] - LRPredAll[element][targetNames[i]] })
dataMLP.push({ id: element, value: MLPPred[element][targetNames[i]] - MLPPredAll[element][targetNames[i]] })
dataRF.push({ id: element, value: RFPred[element][targetNames[i]] - RFPredAll[element][targetNames[i]] })
dataGradB.push({ id: element, value: GradBPred[element][targetNames[i]] - GradBPredAll[element][targetNames[i]] })
dataAver.push({ id: element, value: PredAver[element] - PredAverAll[element] })
dataKNN.push({ id: element, value: KNNPred[element] - KNNPredAll[element] })
dataLR.push({ id: element, value: LRPred[element] - LRPredAll[element] })
dataMLP.push({ id: element, value: MLPPred[element] - MLPPredAll[element] })
dataRF.push({ id: element, value: RFPred[element] - RFPredAll[element] })
dataGradB.push({ id: element, value: GradBPred[element] - GradBPredAll[element] })
});
for (let j = 0; j < size - getIndices[targetNames[i]].length; j++) {
dataAver.push({ id: -1, value: 0 })
@ -445,8 +446,7 @@ export default {
function databind(data, size, sqrtSize) {
colourScale = d3.scaleSequential(d3.interpolatePRGn).domain([-1, 1])
colourScale = d3.scaleSequential(d3.interpolatePRGn).domain([-100, 100])
var join = custom.selectAll('custom.rect')
.data(data);

@ -64,10 +64,11 @@ export default {
for (let j=0; j<this.factorsValid.length; j++) {
if (this.factorsValid[j] == 1) {
for (let i=0; i<IDs.length; i++){
let tempValid = JSON.parse(valid[j])
console.log(tempValid)
let tempSplit = IDs[i].split(/([0-9]+)/)
console.log(tempSplit)
if (tempSplit[0] == 'KNN' || tempSplit[0] == 'KNNC' || tempSplit[0] == 'KNNM' || tempSplit[0] == 'KNNCC' || tempSplit[0] == 'KNNCM' || tempSplit[0] == 'KNNMC' || tempSplit[0] == 'KNNMM') {
data.push({Algorithm: this.Metrics[j], value: tempValid[i], category: "#ff7f00"})
}
@ -85,7 +86,7 @@ export default {
}
if (this.selectedSimple.length != 0) {
console.log("selected", this.selectedSimple)
if (this.selectedSimple.includes(IDs[i])) {
sumGlobalSel[j] = sumGlobalSel[j] + tempValid[i]
countValuesSel[j] = countValuesSel[j] + 1
@ -111,8 +112,10 @@ export default {
for (let j=0; j<this.factorsValid.length; j++) {
if (this.factorsValid[j] == 1) {
for (let i=0; i<mergedStoreEnsembleLoc.length; i++){
let tempValid = JSON.parse(valid[j])
tempValid = mergedStoreEnsembleLocFormatted.map((item) => tempValid[item])
let tempSplit = mergedStoreEnsembleLoc[i].split(/([0-9]+)/)
if (tempSplit[0] == 'KNN' || tempSplit[0] == 'KNNC' || tempSplit[0] == 'KNNM' || tempSplit[0] == 'KNNCC' || tempSplit[0] == 'KNNCM' || tempSplit[0] == 'KNNMC' || tempSplit[0] == 'KNNMM') {
data.push({Algorithm: this.Metrics[j], value: tempValid[i], category: "#ff7f00"})

@ -6,10 +6,10 @@ import 'bootstrap-vue/dist/bootstrap-vue.css'
import router from './router'
import { library } from '@fortawesome/fontawesome-svg-core'
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'
import { faDna, faEraser, faSearch, faTrash, faCalculator, faPlusSquare, faFileExport, faWindowClose, faArrowAltCircleRight} from '@fortawesome/free-solid-svg-icons'
import { faDna, faEraser, faSearch, faTrash, faCalculator, faPlusSquare, faFileExport, faWindowClose, faArrowAltCircleRight, faStopCircle, faPlayCircle} from '@fortawesome/free-solid-svg-icons'
import bFormSlider from 'vue-bootstrap-slider'
library.add(faDna, faEraser, faSearch, faTrash, faCalculator, faPlusSquare, faFileExport, faWindowClose, faArrowAltCircleRight)
library.add(faDna, faEraser, faSearch, faTrash, faCalculator, faPlusSquare, faFileExport, faWindowClose, faArrowAltCircleRight, faStopCircle, faPlayCircle)
Vue.component('font-awesome-icon', FontAwesomeIcon)

1566
run.py

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save