Commit bc5232b9 authored by Erwan Bousse's avatar Erwan Bousse
Browse files

Cleanup lots of useless/autosave files

parent 49a8853d
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2014 Université de Rennes 1.
All rights reserved. This program and the accompanying materials
are made available under the terms of the Eclipse Public License v1.0
which accompanies this distribution, and is available at
http://www.eclipse.org/legal/epl-v10.html
Contributors:
Erwan Bousse - initial API and implementation
-->
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>fr.inria.diverse.cloning.benchmark</groupId>
<artifactId>fr.inria.diverse.cloning.benchmark.tool</artifactId>
<version>0.1.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
<parent>
<groupId>fr.inria.diverse.cloning</groupId>
<artifactId>parent</artifactId>
<version>0.1.0-SNAPSHOT</version>
</parent>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2014 Université de Rennes 1.
All rights reserved. This program and the accompanying materials
are made available under the terms of the Eclipse Public License v1.0
which accompanies this distribution, and is available at
http://www.eclipse.org/legal/epl-v10.html
Contributors:
Erwan Bousse - initial API and implementation
-->
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>fr.inria.diverse.cloning.benchmark</groupId>
<artifactId>fr.inria.diverse.cloning.benchmark.tool.product</artifactId>
<version>0.1.0-SNAPSHOT</version>
<packaging>eclipse-repository</packaging>
<parent>
<groupId>fr.inria.diverse.cloning</groupId>
<artifactId>parent</artifactId>
<version>0.1.0-SNAPSHOT</version>
</parent>
<build>
<plugins>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-p2-director-plugin</artifactId>
<version>${tycho.version}</version>
<executions>
<execution>
<id>create-product-distributions</id>
<goals>
<goal>materialize-products</goal>
<goal>archive-products</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2014 Université de Rennes 1.
All rights reserved. This program and the accompanying materials
are made available under the terms of the Eclipse Public License v1.0
which accompanies this distribution, and is available at
http://www.eclipse.org/legal/epl-v10.html
Contributors:
Erwan Bousse - initial API and implementation
-->
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>fr.inria.diverse.cloning.benchmark</groupId>
<artifactId>fr.inria.diverse.cloning.benchmark.runner</artifactId>
<version>0.1.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
<parent>
<groupId>fr.inria.diverse.cloning</groupId>
<artifactId>parent</artifactId>
<version>0.1.0-SNAPSHOT</version>
</parent>
</project>
source.. = src/
output.. = bin/
bin.includes = META-INF/,\
.,\
lib/commons-io-1.4.jar,\
lib/jopt-simple-4.6.jar,\
lib/slf4j-api-1.6.6.jar,\
lib/slf4j-jdk14-1.6.6.jar,\
lib/zt-zip-1.7.jar
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2014 Université de Rennes 1.
All rights reserved. This program and the accompanying materials
are made available under the terms of the Eclipse Public License v1.0
which accompanies this distribution, and is available at
http://www.eclipse.org/legal/epl-v10.html
Contributors:
Erwan Bousse - initial API and implementation
-->
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>fr.inria.diverse.cloning</groupId>
<artifactId>fr.inria.diverse.cloning.external-libs</artifactId>
<version>0.1.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
<parent>
<groupId>fr.inria.diverse.cloning</groupId>
<artifactId>parent</artifactId>
<version>0.1.0-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
<groupId>org.zeroturnaround</groupId>
<artifactId>zt-zip</artifactId>
<version>1.7</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>net.sf.jopt-simple</groupId>
<artifactId>jopt-simple</artifactId>
<version>4.6</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jdk14</artifactId>
<version>1.6.6</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>validate</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<overWriteIfNewer>true</overWriteIfNewer>
<outputDirectory>${project.basedir}/lib</outputDirectory>
<markersDirectory>${project.basedir}/lib</markersDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<executions>
<execution>
<id>clean-dependencies</id>
<phase>clean</phase>
<goals>
<goal>clean</goal>
</goals>
<configuration>
<filesets>
<fileset>
<directory>lib</directory>
<includes>
<include>**/*</include>
</includes>
</fileset>
</filesets>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>fr.inria.diverse.cloning</groupId>
<artifactId>fr.inria.diverse.cloning.materialgenerator.app</artifactId>
<version>0.1.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
<parent>
<groupId>fr.inria.diverse.cloning</groupId>
<artifactId>parent</artifactId>
<version>0.1.0-SNAPSHOT</version>
</parent>
</project>
#!/bin/bash
RARGS=""
for i in "$@"
do
RARGS="$RARGS $i"
done
R --no-save --args $RARGS < ~/Dev/modelCloning/emf/process-data.R
#ls *.pdf | xargs -I '{}' pdfcrop '{}' '{}'
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>fr.inria.diverse.cloning</groupId>
<artifactId>parent</artifactId>
<version>0.1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<!-- Cloner plugins -->
<module>fr.inria.diverse.cloning.external-libs</module>
<module>fr.inria.diverse.cloning.runtime</module>
<module>fr.inria.diverse.cloning.materialgenerator</module>
<!-- Benchmark plugins -->
<module>fr.inria.diverse.cloning.benchmark.common</module>
<module>fr.inria.diverse.cloning.benchmark.metamodelsgenerator</module>
<module>fr.inria.diverse.cloning.benchmark.materialgenerator</module>
<module>fr.inria.diverse.cloning.benchmark.runner</module>
<module>fr.inria.diverse.cloning.benchmark.tool</module>
<module>fr.inria.diverse.cloning.benchmark.tool.product</module>
<!-- Disabled plugins (unnecessary eclipse products) -->
<!--
<module>fr.inria.diverse.cloning.materialgenerator.cli</module>
<module>fr.inria.diverse.cloning.materialgenerator.cli.product</module>
<module>fr.inria.diverse.cloning.benchmark.metamodelsgenerator.product</module>
<module>fr.inria.diverse.cloning.benchmark.materialgenerator.product</module>
<module>fr.inria.diverse.cloning.benchmark.runner.product</module>
-->
</modules>
<properties>
<tycho.version>0.20.0</tycho.version>
<!--<tycho-extras.version>[0.19.0,)</tycho-extras.version>-->
<kepler-repo.url>http://download.eclipse.org/releases/kepler</kepler-repo.url>
</properties>
<repositories>
<repository>
<id>kepler</id>
<url>${kepler-repo.url}</url>
<layout>p2</layout>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.zeroturnaround</groupId>
<artifactId>zt-zip</artifactId>
<version>1.7</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>net.sf.jopt-simple</groupId>
<artifactId>jopt-simple</artifactId>
<version>4.6</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jdk14</artifactId>
<version>1.6.6</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-maven-plugin</artifactId>
<version>${tycho.version}</version>
<extensions>true</extensions>
</plugin>
</plugins>
</build>
</project>
library(reshape2)
library(scales)
###
# To prepare the ploting with a file of a name and a format (svg of pdf)
###
initImage <- function(name, extension) {
#par(mar=c(0,0,0,0), mgp=c(0,0,0,0))
if(extension=="svg")
svg(filename=paste(name,".svg", sep=""))
else
pdf(file=paste(name,".pdf", sep=""))
}
###
# Retrieves in a df the memory used in a given run
###
getValue <- function(data, mmname, cloningname, nbclones, column) {
value = data[data$MetamodelName==mmname & data$CloningTechnique==cloningname & data$NumberOfClones==nbclones, c(column)]
return(value)
}
###
# Computes and return an operation that, for a given row,
# computes memory gain with regards to another cloning technique
###
computeGainCreator <- function(rawdata, cloningName, column) {
numberClonesColumn = which(colnames(rawdata)=="NumberOfClones")
totalMemoryColumn = which(colnames(rawdata)==column)
nameColumn = which(colnames(rawdata)=="MetamodelName")
computeMemoryRatio <- function(row) {
totalMemory <- as.integer(row[totalMemoryColumn])
name <- as.character(row[nameColumn])
nbClones <- as.integer(row[numberClonesColumn])
otherCloningMemory = getValue(rawdata, name, cloningName,nbClones,column)
result = ((otherCloningMemory - totalMemory) / otherCloningMemory)
return(result)
}
# We return the function that can process each row
return(computeMemoryRatio)
}
###
# Preprocessing: new columns, enforce order, etc.
###
preprocessData <- function (rawdata) {
# We merge the columns cloningtechnique and light (to create "LightDeep" for instance)
rawdata$CloningTechnique = paste(rawdata$Light, rawdata$CloningTechnique, sep="")
# For each line, we compute the gain compared to three out of four techniques, and we put it in
# Note that the "1" indicates "compute for each row" as opposed to "2"
rawdata$MemoryGainDeep = apply(rawdata,1,computeGainCreator(rawdata, 'Deep', "MemoryUsed"))
rawdata$MemoryGainLightDeep = apply(rawdata,1,computeGainCreator(rawdata, 'LightDeep',"MemoryUsed"))
rawdata$MemoryGainMutClassOnly = apply(rawdata,1,computeGainCreator(rawdata, 'MutClassOnly',"MemoryUsed"))
rawdata$TimeGainDeep = apply(rawdata,1,computeGainCreator(rawdata, 'Deep', "TimeSpent"))
rawdata$TimeGainLightDeep = apply(rawdata,1,computeGainCreator(rawdata, 'LightDeep',"TimeSpent"))
rawdata$TimeGainMutClassOnly = apply(rawdata,1,computeGainCreator(rawdata, 'MutClassOnly',"TimeSpent"))
# Performance gain as well
rawdata$PerfGain = ((rawdata$OriginalModelPerformance - rawdata$CloneModelPerformance)/rawdata$OriginalModelPerformance)
print ("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa")
thousand = rawdata[rawdata$NumberOfClones==1000 & rawdata$CloningTechnique=="LightDeep",]
print(median(thousand$PerfGain))
print ("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa")
thousand = rawdata[rawdata$NumberOfClones==1000 & rawdata$CloningTechnique=="LightMutClassOnly",]
print(median(thousand$PerfGain))
print ("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa")
# Getting the list of cloning techniques, in the right order
techniques = unique(rawdata$CloningTechnique)
# Enforcing the order of the cloning techniques column
# https://stackoverflow.com/questions/19710986/how-to-make-acast-preserve-order-of-variable-in-reshape2
rawdata$CloningTechnique = factor(rawdata$CloningTechnique, techniques)
return(rawdata)
}
###
# Creates a barplot that compares a given metamodel on one aspect (memory or time) for numerous "number of clones" values
###
plotNumberOfClones <- function(rawdata, metamodelname, minvalue, maxvalue, measure, title){
prefiltered = rawdata
filtered = prefiltered[prefiltered$MetamodelName==metamodelname & prefiltered$NumberOfClones<=maxvalue & prefiltered$NumberOfClones>=minvalue & prefiltered$CloningTechnique!="Deep",
c(measure,'CloningTechnique', 'NumberOfClones')]
# Transform the table nicely: NumberOfClones becomes lines, and CloningTechniques columns
# Means that we want to compare "cloningtechniques" regarding "measure" for each "numberofclones"
result = dcast(filtered,CloningTechnique~NumberOfClones,value.var=measure)
# We store the column with the name of the cloning techniques, for the legend, and we delete it
legendc = c("ShareFieldsOnly","ShareObjectsOnly","ShareAll")#result$CloningTechnique
colors = gray.colors(length(legendc), start = 0.9, end = 0.3, gamma = 2.2)
result$CloningTechnique = NULL
# We plot with bars, and we put a legend
name = paste(metamodelname,"_",minvalue,"-",maxvalue,"_clones_",measure, sep="")
formats = c("pdf")
myylab=measure
if (measure == "MemoryGainDeep") {
myylab = "memory gain over DeepClone"
}
for (format in formats) {
initImage(name,format)
barplot(as.matrix(result), main=title, xlab= "number of clones", ylab=myylab,beside=TRUE, col=colors, yaxt="n")
axis(2, at=pretty(filtered[,c(measure)]), lab=paste0(pretty(filtered[,c(measure)]) * 100,"%"), las=TRUE,pos=0)
legend("topleft", as.vector(legendc), cex=1, bty="n", fill=colors);
}
return(result)
}
###
# Creates a plot... mostly used for memory
###
plotStuff <- function(rawdata, measure, variable, numberOfClones, cloning, style, maxX, maxY, percentX) {
myxlim = NULL
if (maxX > 0) {
myxlim = c(0,maxX)
}
myylim = NULL
if (maxY > 0) {
myylim = c(0,maxY)
}
myxlab=variable
if (variable == "ObjShareShareableClassesRatio") {
myxlab = "proportion of shareable classes (case ObjShare)"
}
if (variable == "NoObjShareShareablePropertiesInPartShareableClassesDensity") {
myxlab = "density of shareable properties in part shareable classes\n (ShareFieldsOnly strategy)"
}
if (variable == "ObjShareShareablePropertiesInPartShareableClassesDensity") {
myxlab = "density of shareable properties in part shareable classes\n (ShareBoth strategy)"
}
if (variable == "ObjShareShareableClassesRatio") {
myxlab = "proportion of shareable classes (ShareObjectsOnly strategy)"
}
if (variable == "NoObjShareShareablePropertiesInPartShareableClassesDensity") {
myxlab = "density of shareable properties in part shareable classes\n (ShareFieldsOnly strategy)"
}
if (variable == "ObjShareShareablePropertiesInPartShareableClassesDensity") {
myxlab = "density of shareable properties in part shareable classes\n (ShareBoth strategy)"
}
myylab=measure
if (measure == "MemoryGainDeep") {
myylab = "memory gain over DeepClone"
}
if (measure == "MemoryGainLightDeep") {
myylab = "memory gain over ShareFieldsOnly"
}
if (measure == "MemoryGainMutClassOnly") {
myylab = "memory gain over ShareObjectsOnly"
}
if (measure == "PerfGain") {
myylab = "Model manipulation efficiency gain over the original model"
}
data = rawdata
mutclassonly = data[data$CloningTechnique==cloning & data$NumberOfClones==numberOfClones,]
initImage(paste(cloning,measure,variable,sep=""),'pdf')
# Type=h pour mettre des petits batons, lwd pour l'épaisseur des traits
plot(mutclassonly[,c(variable)], mutclassonly[,c(measure)], pch=style, xlab=myxlab, ylab=myylab, yaxt="n", xaxt="n",frame=F)#, xlim=myxlim, ylim=myylim)#, type="h", lwd="3")#, main=title)
#text(mutclassonly[,c(variable)], mutclassonly[,c(measure)], mutclassonly[,c("MetamodelName")], cex=0.6, pos=1, col="red")
axis(2, at=pretty(mutclassonly[,c(measure)]), lab=paste0(pretty(mutclassonly[,c(measure)]) * 100,"%"), las=TRUE,pos=0)
if (percentX) {
axis(1, at=pretty(mutclassonly[,c(measure)]), lab=paste0(pretty(mutclassonly[,c(measure)]) * 100,"%"), las=TRUE,pos=0)
} else {
axis(1, at=pretty(mutclassonly[,c(variable)]), pos=0)
}
}
###
# Adds points to a plot created with "plotStuff"
###
addPointsPlotStuff <- function(rawdata, measure,variable, numberOfClones, cloning, style) {
data = rawdata
mutclassonly = data[data$CloningTechnique==cloning & data$NumberOfClones==numberOfClones,]
points(mutclassonly[,c(variable)], mutclassonly[,c(measure)], pch=style)
}
###################################################################################################################################
###################################################################################################################################
###################################################################################################################################
args = commandArgs(TRUE)
myrawdata = c()
if (length(args)==1) {
myrawdata = read.csv(args)
} else {
for (arg in args) {
# Parsing CSV file
newdata = read.csv(arg)
if (length(myrawdata) == 0) {
myrawdata = newdata
} else {
myrawdata = rbind(myrawdata,newdata)
}
}
}
fig
data = preprocessData(myrawdata)
# 1:ShareObjects, 2:ShareFields, 3:ShareAll, 4:NoShare
pointsStyles=c(15,4,2,1)
#
# Plotting performance /!\ FILTERING + ONLY PROXY TECHNIQUES
#
perfdata=data[(data$CloneModelPerformance>-1.0) & data$NoObjShareShareablePropertiesInPartShareableClassesDensity<30,]
plotStuff (perfdata,'PerfGain','NoObjShareShareablePropertiesInPartShareableClassesDensity', 1, 'LightDeep', pointsStyles[2], -1, -1,FALSE)
addPointsPlotStuff(perfdata,'PerfGain','NoObjShareShareablePropertiesInPartShareableClassesDensity', 1, 'LightMutClassOnly',pointsStyles[3])
legend("topright", c("ShareFieldsOnly","ShareAll"), cex=1, bty="n", pch=pointsStyles[2:3])
#
# Plotting the memory gain graph (all metamodels) for shareobjects
#
plotStuff (data, 'MemoryGainDeep', 'ObjShareShareableClassesRatio', 1000, 'LightMutClassOnly', pointsStyles[3], 1, 1, TRUE)
#addPointsPlotStuff(data, 'MemoryGainDeep', 'ObjShareShareableClassesRatio', 1000, 'LightDeep', pointsStyles[2])
addPointsPlotStuff(data, 'MemoryGainDeep', 'ObjShareShareableClassesRatio', 1000, 'MutClassOnly', pointsStyles[1])
legend("right", c("ShareObjectsOnly","ShareAll"), cex=1, bty="n", pch=c(pointsStyles[1],pointsStyles[3]))
#
# Plotting the memory gain (sharefields)
#
sharefieldsdata=data[data$NoObjShareShareablePropertiesInPartShareableClassesDensity<30,]
plotStuff(sharefieldsdata, 'MemoryGainDeep', 'NoObjShareShareablePropertiesInPartShareableClassesDensity', 1000, 'LightDeep', pointsStyles[2], -1, 1, FALSE)