From 9cde97803b7739d0789f03a57ebc40e08d7b6297 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Wed, 31 Oct 2018 15:25:34 +0100
Subject: [PATCH] custom semantic zooming is always processed

---
 .../src/main/js/gui/admin/AddProjectDialog.js |   15 -
 .../src/main/js/map/data/UserPreferences.js   |    3 -
 .../js/gui/admin/AddProjectDialog-test.js     |    2 -
 .../commands/CreateHierarchyCommand.java      |  667 ++++-----
 .../commands/CreateHierarchyCommandTest.java  |   70 +
 .../testFiles/custom_semantic_zooming.xml     | 1195 +++++++++++++++++
 .../api/projects/ProjectRestImpl.java         |    1 -
 .../services/impl/ProjectService.java         |   26 +-
 .../services/utils/CreateProjectParams.java   |   14 -
 .../services/utils/data/BuildInLayout.java    |    1 -
 .../services/impl/ProjectServiceTest.java     |    1 -
 11 files changed, 1614 insertions(+), 381 deletions(-)
 create mode 100644 model-command/testFiles/custom_semantic_zooming.xml

diff --git a/frontend-js/src/main/js/gui/admin/AddProjectDialog.js b/frontend-js/src/main/js/gui/admin/AddProjectDialog.js
index 4655bf308c..b33a5ef53a 100644
--- a/frontend-js/src/main/js/gui/admin/AddProjectDialog.js
+++ b/frontend-js/src/main/js/gui/admin/AddProjectDialog.js
@@ -286,11 +286,6 @@ AddProjectDialog.prototype.createGeneralTabContent = function () {
     help: 'If this checkbox is checked, the uploaded model will be displayed in SBGN format, instead of default ' +
     'CellDesigner format.'
   }));
-  table.appendChild(self.createCheckboxRow({
-    labelName: "Custom semantic zooming:",
-    defaultValue: false,
-    inputName: "project-semantic-zooming"
-  }));
   table.appendChild(self.createCheckboxRow({
     labelName: "Custom semantic zooming contains multiple overlays:",
     defaultValue: false,
@@ -709,7 +704,6 @@ AddProjectDialog.prototype.init = function () {
     self.bindProjectUploadPreferences(user, "autoResize", "project-auto-margin");
     self.bindProjectUploadPreferences(user, "validateMiriam", "project-verify-annotations");
     self.bindProjectUploadPreferences(user, "cacheData", "project-cache-data");
-    self.bindProjectUploadPreferences(user, "semanticZooming", "project-semantic-zooming");
     self.bindProjectUploadPreferences(user, "semanticZoomingContainsMultipleOverlays", "project-semantic-zooming-contains-multiple-overlays");
     self.bindProjectUploadPreferences(user, "sbgn", "project-sbgn-visualization");
   });
@@ -1072,14 +1066,6 @@ AddProjectDialog.prototype.isSbgn = function () {
   return $("[name='project-sbgn-visualization']", this.getElement()).is(':checked');
 };
 
-/**
- *
- * @returns {boolean}
- */
-AddProjectDialog.prototype.isSemanticZooming = function () {
-  return $("[name='project-semantic-zooming']", this.getElement()).is(':checked');
-};
-
 /**
  *
  * @returns {boolean}
@@ -1158,7 +1144,6 @@ AddProjectDialog.prototype.onSaveClicked = function () {
       "organism": self.getOrganism(),
       "mapCanvasType": self.getMapCanvasTypeId(),
       "sbgn": self.isSbgn(),
-      "semantic-zoom": self.isSemanticZooming(),
       "semantic-zoom-contains-multiple-layouts": self.isSemanticZoomingContainsMultipleOverlays(),
       "annotate": self.isAnnotateAutomatically(),
       "verify-annotations": self.isVerifyAnnotations(),
diff --git a/frontend-js/src/main/js/map/data/UserPreferences.js b/frontend-js/src/main/js/map/data/UserPreferences.js
index fba86c1bec..427e7a06c8 100644
--- a/frontend-js/src/main/js/map/data/UserPreferences.js
+++ b/frontend-js/src/main/js/map/data/UserPreferences.js
@@ -56,7 +56,6 @@ UserPreferences.prototype.update = function (userPreferences) {
  * @param {boolean} projectUpload.validate-miriam
  * @param {boolean} projectUpload.validate-miriam
  * @param {boolean} projectUpload.cache-data
- * @param {boolean} projectUpload.semantic-zooming
  * @param {boolean} projectUpload.sbgn
  */
 UserPreferences.prototype.setProjectUpload = function (projectUpload) {
@@ -65,7 +64,6 @@ UserPreferences.prototype.setProjectUpload = function (projectUpload) {
     validateMiriam: projectUpload["validate-miriam"],
     annotateModel: projectUpload["annotate-model"],
     cacheData: projectUpload["cache-data"],
-    semanticZooming: projectUpload["semantic-zooming"],
     semanticZoomingContainsMultipleOverlays: projectUpload["semantic-zooming-contains-multiple-overlays"],
     sbgn: projectUpload["sbgn"]
   };
@@ -183,7 +181,6 @@ UserPreferences.prototype.toExport = function () {
       "annotate-model": this._projectUpload.annotateModel,
       "cache-data": this._projectUpload.cacheData,
       "sbgn": this._projectUpload.sbgn,
-      "semantic-zooming": this._projectUpload.semanticZooming,
       "semantic-zooming-contains-multiple-overlays":this._projectUpload.semanticZoomingContainsMultipleOverlays
     },
     "element-annotators": this._elementAnnotators,
diff --git a/frontend-js/src/test/js/gui/admin/AddProjectDialog-test.js b/frontend-js/src/test/js/gui/admin/AddProjectDialog-test.js
index 65a5fcdffd..255f09191d 100644
--- a/frontend-js/src/test/js/gui/admin/AddProjectDialog-test.js
+++ b/frontend-js/src/test/js/gui/admin/AddProjectDialog-test.js
@@ -153,8 +153,6 @@ describe('AddProjectDialog', function () {
         assert.ok(options["sbgn"] !== undefined);
         assert.ok(options["version"] !== undefined);
 
-        assert.ok(options["semantic-zoom"] !== undefined);
-
         assert.ok(projectAdded);
       }).finally(function () {
         return dialog.destroy();
diff --git a/model-command/src/main/java/lcsb/mapviewer/commands/CreateHierarchyCommand.java b/model-command/src/main/java/lcsb/mapviewer/commands/CreateHierarchyCommand.java
index 57800a7e4f..7c8d040e7d 100644
--- a/model-command/src/main/java/lcsb/mapviewer/commands/CreateHierarchyCommand.java
+++ b/model-command/src/main/java/lcsb/mapviewer/commands/CreateHierarchyCommand.java
@@ -6,12 +6,12 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
+import org.apache.commons.lang3.math.NumberUtils;
 import org.apache.log4j.Logger;
 
 import lcsb.mapviewer.common.Configuration;
 import lcsb.mapviewer.common.exception.InvalidStateException;
 import lcsb.mapviewer.common.exception.NotImplementedException;
-import lcsb.mapviewer.model.map.BioEntity;
 import lcsb.mapviewer.model.map.compartment.Compartment;
 import lcsb.mapviewer.model.map.compartment.PathwayCompartment;
 import lcsb.mapviewer.model.map.layout.graphics.Layer;
@@ -31,355 +31,368 @@ import lcsb.mapviewer.model.map.species.Species;
  * 
  */
 public class CreateHierarchyCommand extends ModelCommand {
-	/**
-	 * Default class logger.
-	 */
-	@SuppressWarnings("unused")
-	private static Logger				logger																					= Logger.getLogger(CreateHierarchyCommand.class);
-	/**
-	 * Natural logarithm of four.
-	 */
-	private static final double	LOG_4																						= Math.log(4);
+  /**
+   * Default class logger.
+   */
+  @SuppressWarnings("unused")
+  private static Logger logger = Logger.getLogger(CreateHierarchyCommand.class);
+  /**
+   * Natural logarithm of four.
+   */
+  private static final double LOG_4 = Math.log(4);
 
-	/**
-	 * Top left corner x coordinate of the text associated with compratment.
-	 */
-	private static final double	DEFAULT_TITLE_X_COORD_IN_ARTIFITIAL_COMPARTMENT	= 10;
-	/**
-	 * Top left corner y coordinate of the text associated with compratment.
-	 */
-	private static final double	DEFAULT_TITLE_Y_COORD_IN_ARTIFITIAL_COMPARTMENT	= 10;
+  /**
+   * Top left corner x coordinate of the text associated with compratment.
+   */
+  private static final double DEFAULT_TITLE_X_COORD_IN_ARTIFITIAL_COMPARTMENT = 10;
+  /**
+   * Top left corner y coordinate of the text associated with compratment.
+   */
+  private static final double DEFAULT_TITLE_Y_COORD_IN_ARTIFITIAL_COMPARTMENT = 10;
 
-	/**
-	 * How many levels are possible.
-	 */
-	private int									zoomLevels;
-	/**
-	 * What is the maximum zoom factor in the view.
-	 */
-	private double							maxZoomFactor;
+  /**
+   * How many levels are possible.
+   */
+  private int zoomLevels;
+  /**
+   * What is the maximum zoom factor in the view.
+   */
+  private double maxZoomFactor;
 
-	/**
-	 * Default constructor that intializes data.
-	 * 
-	 * @param model
-	 *          model on which command will be executed
-	 * @param maxZoomFactor
-	 *          what is the maximum zoom out factor
-	 * @param zoomLevels
-	 *          how many levels are possible
-	 */
-	public CreateHierarchyCommand(Model model, int zoomLevels, double maxZoomFactor) {
-		super(model);
-		this.zoomLevels = zoomLevels;
-		this.maxZoomFactor = maxZoomFactor;
-	}
+  /**
+   * Default constructor that initializes data.
+   * 
+   * @param model
+   *          model on which command will be executed
+   * @param maxZoomFactor
+   *          what is the maximum zoom out factor
+   * @param zoomLevels
+   *          how many levels are possible
+   */
+  public CreateHierarchyCommand(Model model, int zoomLevels, double maxZoomFactor) {
+    super(model);
+    this.zoomLevels = zoomLevels;
+    this.maxZoomFactor = maxZoomFactor;
+  }
 
-	@Override
-	protected void undoImplementation() {
-		throw new NotImplementedException();
-	}
+  @Override
+  protected void undoImplementation() {
+    throw new NotImplementedException();
+  }
 
-	@Override
-	protected void executeImplementation() {
-		if (!ModelCommandStatus.CREATED.equals(getStatus()) && !ModelCommandStatus.UNDONE.equals(getStatus())) {
-			throw new InvalidStateException("To execute command, the command must be in CREATED or UNDONE state. " + getStatus() + " found.");
-		}
-		Model model = getModel();
-		List<Species> compacts = new ArrayList<>();
-		for (Element alias : model.getElements()) {
-			if (alias instanceof Complex) {
-				if (((Complex) alias).getState().contains("brief")) {
-					compacts.add((Species) alias);
-					compacts.addAll(((Complex) alias).getElements());
-				}
-			}
-		}
-		model.getElements().removeAll(compacts);
-		clean();
-		createArtificials();
-		assignAliases();
+  @Override
+  protected void executeImplementation() {
+    if (!ModelCommandStatus.CREATED.equals(getStatus()) && !ModelCommandStatus.UNDONE.equals(getStatus())) {
+      throw new InvalidStateException(
+          "To execute command, the command must be in CREATED or UNDONE state. " + getStatus() + " found.");
+    }
+    Model model = getModel();
+    List<Species> compacts = new ArrayList<>();
+    for (Element alias : model.getElements()) {
+      if (alias instanceof Complex) {
+        if (((Complex) alias).getState().contains("brief")) {
+          compacts.add((Species) alias);
+          compacts.addAll(((Complex) alias).getElements());
+        }
+      }
+    }
+    model.getElements().removeAll(compacts);
+    clean();
+    createArtificials();
+    assignAliases();
 
-		List<Element> sortedAliases = model.getElementsSortedBySize();
-		setParentingAndChildreningOfNonComplexChildrens(sortedAliases);
-		model.getElements().addAll(compacts);
-		sortedAliases = model.getElementsSortedBySize();
-		preSettingOfVisibilityLevel(sortedAliases, maxZoomFactor);
-		settingOfTransparencyLevel(sortedAliases);
+    List<Element> sortedAliases = model.getElementsSortedBySize();
+    setParentingAndChildreningOfNonComplexChildrens(sortedAliases);
+    model.getElements().addAll(compacts);
+    sortedAliases = model.getElementsSortedBySize();
+    settingOfTransparencyLevel(sortedAliases);
 
-		setStatus(ModelCommandStatus.EXECUTED);
-	}
+    setDefaultVisibilityLevel(sortedAliases);
 
-	@Override
-	protected void redoImplementation() {
-		throw new NotImplementedException();
-	}
+    setStatus(ModelCommandStatus.EXECUTED);
+  }
 
-	/**
-	 * Cleans hierarchical information from the model.
-	 */
-	protected void clean() {
-		for (Element alias : getModel().getElements()) {
-			alias.setCompartment(null);
-			alias.setTransparencyLevel("");
-		}
-		for (BioEntity bioEntity : getModel().getBioEntities()) {
-			bioEntity.setVisibilityLevel("0");
-		}
-		Set<Compartment> toRemove = new HashSet<>();
-		for (Compartment alias : getModel().getCompartments()) {
-			if (alias instanceof PathwayCompartment) {
-				toRemove.add(alias);
-			}
-		}
-		for (Compartment alias : toRemove) {
-			getModel().removeElement(alias);
-		}
-	}
+  private void setDefaultVisibilityLevel(List<Element> sortedAliases) {
+    for (Element element: sortedAliases) {
+      if (element.getVisibilityLevel()==null||element.getVisibilityLevel().isEmpty()) {
+        element.setVisibilityLevel(0);
+      }
+    }
+  }
 
-	/**
-	 * Creates artifitial compartment alias for rectangles and texts object on
-	 * additional graphic layers.
-	 */
-	private void createArtificials() {
-		Model model = getModel();
-		int id = 0;
-		for (Layer layer : model.getLayers()) {
-			for (LayerRect rect : layer.getRectangles()) {
-				PathwayCompartment alias = new PathwayCompartment("art" + (id++));
-				alias.setX(rect.getX());
-				alias.setY(rect.getY());
-				alias.setWidth(rect.getWidth());
-				alias.setHeight(rect.getHeight());
-				alias.setColor(rect.getColor());
-				alias.setNamePoint(
-						new Point2D.Double(rect.getX() + DEFAULT_TITLE_X_COORD_IN_ARTIFITIAL_COMPARTMENT, rect.getY() + DEFAULT_TITLE_Y_COORD_IN_ARTIFITIAL_COMPARTMENT));
+  @Override
+  protected void redoImplementation() {
+    throw new NotImplementedException();
+  }
 
-				model.addElement(alias);
-			}
-			for (LayerText text : layer.getTexts()) {
-				PathwayCompartment alias = new PathwayCompartment("art" + (id++));
-				alias.setX(text.getX());
-				alias.setY(text.getY());
-				alias.setWidth(text.getWidth());
-				alias.setHeight(text.getHeight());
-				alias.setColor(text.getColor());
-				alias.setName(text.getNotes().trim());
-				alias.setNamePoint(
-						new Point2D.Double(text.getX() + DEFAULT_TITLE_X_COORD_IN_ARTIFITIAL_COMPARTMENT, text.getY() + DEFAULT_TITLE_Y_COORD_IN_ARTIFITIAL_COMPARTMENT));
+  /**
+   * Cleans hierarchical information from the model.
+   */
+  protected void clean() {
+    for (Element alias : getModel().getElements()) {
+      alias.setCompartment(null);
+      if (alias.getTransparencyLevel() == null || alias.getTransparencyLevel().isEmpty()) {
+        alias.setTransparencyLevel("");
+      }
+    }
+    Set<Compartment> toRemove = new HashSet<>();
+    for (Compartment alias : getModel().getCompartments()) {
+      if (alias instanceof PathwayCompartment) {
+        toRemove.add(alias);
+      }
+    }
+    for (Compartment alias : toRemove) {
+      getModel().removeElement(alias);
+    }
+  }
 
-				model.addElement(alias);
+  /**
+   * Creates artifitial compartment alias for rectangles and texts object on
+   * additional graphic layers.
+   */
+  private void createArtificials() {
+    Model model = getModel();
+    int id = 0;
+    for (Layer layer : model.getLayers()) {
+      for (LayerRect rect : layer.getRectangles()) {
+        PathwayCompartment alias = new PathwayCompartment("art" + (id++));
+        alias.setX(rect.getX());
+        alias.setY(rect.getY());
+        alias.setWidth(rect.getWidth());
+        alias.setHeight(rect.getHeight());
+        alias.setColor(rect.getColor());
+        alias.setNamePoint(new Point2D.Double(rect.getX() + DEFAULT_TITLE_X_COORD_IN_ARTIFITIAL_COMPARTMENT,
+            rect.getY() + DEFAULT_TITLE_Y_COORD_IN_ARTIFITIAL_COMPARTMENT));
 
-			}
-		}
-	}
+        model.addElement(alias);
+      }
+      for (LayerText text : layer.getTexts()) {
+        PathwayCompartment alias = new PathwayCompartment("art" + (id++));
+        alias.setX(text.getX());
+        alias.setY(text.getY());
+        alias.setWidth(text.getWidth());
+        alias.setHeight(text.getHeight());
+        alias.setColor(text.getColor());
+        alias.setName(text.getNotes().trim());
+        alias.setNamePoint(new Point2D.Double(text.getX() + DEFAULT_TITLE_X_COORD_IN_ARTIFITIAL_COMPARTMENT,
+            text.getY() + DEFAULT_TITLE_Y_COORD_IN_ARTIFITIAL_COMPARTMENT));
 
-	/**
-	 * Assign aliases in hierarchical structure.
-	 */
-	private void assignAliases() {
-		assignToCompartments();
-	}
+        model.addElement(alias);
 
-	/**
-	 * Computes visibility levels for aliases based on the size.
-	 * 
-	 * @param sortedAliases
-	 *          list of aliases
-	 * @param maxZoomFactor
-	 *          max scale used on the map
-	 */
-	private void preSettingOfVisibilityLevel(List<Element> sortedAliases, double maxZoomFactor) {
-		for (Element alias : sortedAliases) {
-			double rate = computeRate(alias, Configuration.MIN_VISIBLE_OBJECT_SIZE);
-			int logValue = (int) ((int) Math.ceil(Math.log(rate)) / LOG_4);
-			boolean hasCompartment = alias.getCompartment() != null;
-			boolean hasComplex = false;
-			if (alias instanceof Species) {
-				hasComplex = ((Species) alias).getComplex() != null;
-			}
-			if (!hasCompartment && !hasComplex) {
-				logValue = 0;
-			}
-			if (logValue >= zoomLevels) {
-				if (hasComplex) {
-					logValue = zoomLevels - 1;
-				} else {
-					logValue = zoomLevels;
-				}
-			}
-			alias.setVisibilityLevel(logValue + "");
-		}
-	}
+      }
+    }
+  }
 
-	/**
-	 * Sets transparency level in hierarchical view for compartment alias.
-	 * 
-	 * @param compartment
-	 *          comaprtment alias
-	 */
-	private void settingTransparencyLevelForCompartment(Compartment compartment) {
-		int maxVisibilityLevel = Integer.MAX_VALUE;
-		double rate = computeRate(compartment, Configuration.MAX_VISIBLE_OBJECT_SIZE);
-		maxVisibilityLevel = (int) ((int) Math.ceil(Math.log(rate)) / LOG_4);
-		for (Element child : compartment.getElements()) {
-			maxVisibilityLevel = Math.min(maxVisibilityLevel, Integer.valueOf(child.getVisibilityLevel()));
-		}
-		if (maxVisibilityLevel >= zoomLevels) {
-			maxVisibilityLevel = zoomLevels;
-		}
-		if (maxVisibilityLevel <= 0) {
-			maxVisibilityLevel = 1;
-		}
-		compartment.setTransparencyLevel(maxVisibilityLevel + "");
-		for (Element child : compartment.getElements()) {
-			child.setVisibilityLevel(compartment.getTransparencyLevel());
-		}
-	}
+  /**
+   * Assign aliases in hierarchical structure.
+   */
+  private void assignAliases() {
+    assignToCompartments();
+  }
 
-	/**
-	 * Sets transparency level in hierarchical view for complex alias.
-	 * 
-	 * @param complex
-	 *          complex alias
-	 */
-	private void settingTransparencyLevelForComplex(Complex complex) {
-		int maxVisibilityLevel = Integer.MAX_VALUE;
-		double rate = computeRate(complex, Configuration.MAX_VISIBLE_OBJECT_SIZE);
-		maxVisibilityLevel = (int) ((int) Math.ceil(Math.log(rate)) / LOG_4);
-		for (Element child : complex.getElements()) {
-			maxVisibilityLevel = Math.min(maxVisibilityLevel, Integer.valueOf(child.getVisibilityLevel()));
-		}
-		if (maxVisibilityLevel >= zoomLevels) {
-			maxVisibilityLevel = zoomLevels;
-		}
-		if (maxVisibilityLevel <= 0) {
-			maxVisibilityLevel = 1;
-		}
-		complex.setTransparencyLevel(maxVisibilityLevel + "");
-		for (Element child : complex.getElements()) {
-			child.setVisibilityLevel(complex.getTransparencyLevel());
-		}
-	}
+  private int computeVisibility(Element alias) {
+    if (!NumberUtils.isNumber(alias.getVisibilityLevel())) {
+      double rate = computeRate(alias, Configuration.MIN_VISIBLE_OBJECT_SIZE);
+      int logValue = (int) ((int) Math.ceil(Math.log(rate)) / LOG_4);
+      boolean hasCompartment = alias.getCompartment() != null;
+      boolean hasComplex = false;
+      if (alias instanceof Species) {
+        hasComplex = ((Species) alias).getComplex() != null;
+      }
+      if (!hasCompartment && !hasComplex) {
+        logValue = 0;
+      }
+      if (logValue >= zoomLevels) {
+        if (hasComplex) {
+          logValue = zoomLevels - 1;
+        } else {
+          logValue = zoomLevels;
+        }
+      }
+      return logValue;
+    } else {
+      return Integer.valueOf(alias.getVisibilityLevel());
+    }
+  }
 
-	/**
-	 * Sets transparency level in hierarchical view for all elements.
-	 * 
-	 * @param sortedAliases
-	 *          list of aliases
-	 */
-	private void settingOfTransparencyLevel(List<Element> sortedAliases) {
-		for (Element alias : sortedAliases) {
-			if (alias instanceof Compartment) {
-				settingTransparencyLevelForCompartment((Compartment) alias);
-			} else if (alias instanceof Complex) {
-				settingTransparencyLevelForComplex((Complex) alias);
-			} else {
-				alias.setTransparencyLevel("0");
-			}
-		}
-	}
+  /**
+   * Sets transparency level in hierarchical view for compartment alias.
+   * 
+   * @param compartment
+   *          compartment alias
+   */
+  private void settingTransparencyLevelForCompartment(Compartment compartment) {
+    if (compartment.getTransparencyLevel() == null || compartment.getTransparencyLevel().isEmpty()) {
+      int maxVisibilityLevel = Integer.MAX_VALUE;
+      double rate = computeRate(compartment, Configuration.MAX_VISIBLE_OBJECT_SIZE);
+      maxVisibilityLevel = (int) ((int) Math.ceil(Math.log(rate)) / LOG_4);
+      for (Element child : compartment.getElements()) {
+        maxVisibilityLevel = Math.min(maxVisibilityLevel, Integer.valueOf(computeVisibility(child)));
+      }
+      if (maxVisibilityLevel >= zoomLevels) {
+        maxVisibilityLevel = zoomLevels;
+      }
+      if (maxVisibilityLevel <= 0) {
+        maxVisibilityLevel = 1;
+      }
+      compartment.setTransparencyLevel(maxVisibilityLevel + "");
+    }
+    for (Element child : compartment.getElements()) {
+      if (child.getVisibilityLevel() == null || child.getVisibilityLevel().isEmpty()) {
+        child.setVisibilityLevel(compartment.getTransparencyLevel());
+      }
+    }
+  }
 
-	/**
-	 * Removes invalid compartment children.
-	 * 
-	 * @param sortedAliases
-	 *          list of aliases
-	 */
-	private void setChildrening(List<Element> sortedAliases) {
-		for (Element compartment : sortedAliases) {
-			if (compartment instanceof Compartment) {
-				Set<Element> removable = new HashSet<>();
-				for (Element alias : ((Compartment) compartment).getElements()) {
-					if (alias.getCompartment() != compartment) {
-						removable.add(alias);
-					}
-				}
-				((Compartment) compartment).getElements().removeAll(removable);
-			}
-		}
-	}
+  /**
+   * Sets transparency level in hierarchical view for complex alias.
+   * 
+   * @param complex
+   *          complex alias
+   */
+  private void settingTransparencyLevelForComplex(Complex complex) {
+    if (complex.getTransparencyLevel() == null || complex.getTransparencyLevel().isEmpty()) {
+      int maxVisibilityLevel = Integer.MAX_VALUE;
+      double rate = computeRate(complex, Configuration.MAX_VISIBLE_OBJECT_SIZE);
+      maxVisibilityLevel = (int) ((int) Math.ceil(Math.log(rate)) / LOG_4);
+      for (Element child : complex.getElements()) {
+        maxVisibilityLevel = Math.min(maxVisibilityLevel, Integer.valueOf(computeVisibility(child)));
+      }
+      if (maxVisibilityLevel >= zoomLevels) {
+        maxVisibilityLevel = zoomLevels;
+      }
+      if (maxVisibilityLevel <= 0) {
+        maxVisibilityLevel = 1;
+      }
+      complex.setTransparencyLevel(maxVisibilityLevel + "");
+    }
+    for (Element child : complex.getElements()) {
+      if (child.getVisibilityLevel() == null || child.getVisibilityLevel().isEmpty()) {
+        child.setVisibilityLevel(complex.getTransparencyLevel());
+      }
+    }
+  }
 
-	/**
-	 * Sets parent for elements.
-	 * 
-	 * @param sortedAliases
-	 *          list of aliases
-	 */
-	private void setParentingOfNonComplexChildrens(List<Element> sortedAliases) {
-		for (Element element : getModel().getElements()) {
-			if (element.getCompartment() == null) {
-				for (Element compartment : sortedAliases) {
-					if (compartment instanceof Compartment) {
-						if (((Compartment) compartment).getElements().contains(element)) {
-							element.setCompartment((Compartment) compartment);
-						}
-					}
-				}
+  /**
+   * Sets transparency level in hierarchical view for all elements.
+   * 
+   * @param sortedAliases
+   *          list of aliases
+   */
+  private void settingOfTransparencyLevel(List<Element> sortedAliases) {
+    for (Element alias : sortedAliases) {
+      if (alias instanceof Compartment) {
+        settingTransparencyLevelForCompartment((Compartment) alias);
+      } else if (alias instanceof Complex) {
+        settingTransparencyLevelForComplex((Complex) alias);
+      } else {
+        if (alias.getTransparencyLevel() == null || alias.getTransparencyLevel().isEmpty()) {
+          alias.setTransparencyLevel("0");
+        }
+      }
+    }
+  }
 
-			}
-			if (element instanceof Species) {
-				Species species = (Species) element;
-				if (species.getComplex() == null) {
-					for (Element complex : sortedAliases) {
-						if (complex instanceof Complex) {
-							if (((Complex) complex).getElements().contains(element)) {
-								species.setComplex((Complex) complex);
-							}
-						}
-					}
-				}
-			}
-		}
-	}
+  /**
+   * Removes invalid compartment children.
+   * 
+   * @param sortedAliases
+   *          list of aliases
+   */
+  private void setChildrening(List<Element> sortedAliases) {
+    for (Element compartment : sortedAliases) {
+      if (compartment instanceof Compartment) {
+        Set<Element> removable = new HashSet<>();
+        for (Element alias : ((Compartment) compartment).getElements()) {
+          if (alias.getCompartment() != compartment) {
+            removable.add(alias);
+          }
+        }
+        ((Compartment) compartment).getElements().removeAll(removable);
+      }
+    }
+  }
 
-	/**
-	 * Set parents for the elements in hierarchical view.
-	 * 
-	 * @param sortedAliases
-	 *          list of aliases
-	 */
-	private void setParentingAndChildreningOfNonComplexChildrens(List<Element> sortedAliases) {
-		setParentingOfNonComplexChildrens(sortedAliases);
-		setChildrening(sortedAliases);
-	}
+  /**
+   * Sets parent for elements.
+   * 
+   * @param sortedAliases
+   *          list of aliases
+   */
+  private void setParentingOfNonComplexChildrens(List<Element> sortedAliases) {
+    for (Element element : getModel().getElements()) {
+      if (element.getCompartment() == null) {
+        for (Element compartment : sortedAliases) {
+          if (compartment instanceof Compartment) {
+            if (((Compartment) compartment).getElements().contains(element)) {
+              element.setCompartment((Compartment) compartment);
+            }
+          }
+        }
 
-	/**
-	 * Assign aliases to compartments.
-	 */
-	private void assignToCompartments() {
-		Compartment nullCompartment = new Compartment("null");
-		nullCompartment.setWidth(Double.MAX_VALUE);
-		nullCompartment.setHeight(Double.MAX_VALUE);
-		for (Element element : getModel().getElements()) {
-			Compartment supposedParent = nullCompartment;
-			for (Compartment alias : getModel().getCompartments()) {
-				if (alias.contains(element) && alias.getSize() < supposedParent.getSize()) {
-					supposedParent = alias;
-				}
-			}
-			if (supposedParent != nullCompartment) {
-				supposedParent.addElement(element);
-			}
-		}
-	}
+      }
+      if (element instanceof Species) {
+        Species species = (Species) element;
+        if (species.getComplex() == null) {
+          for (Element complex : sortedAliases) {
+            if (complex instanceof Complex) {
+              if (((Complex) complex).getElements().contains(element)) {
+                species.setComplex((Complex) complex);
+              }
+            }
+          }
+        }
+      }
+    }
+  }
 
-	/**
-	 * Computes the ratio between the minimal object that should be visible, and
-	 * alias visible on the top level.
-	 * 
-	 * @param alias
-	 *          alias for which computation is done
-	 * @param limit
-	 *          size of the minimal visibe object
-	 * @return ratio between the minimal object that should be visible, and alias
-	 *         visible on the top level
-	 */
-	private double computeRate(Element alias, double limit) {
-		double length = alias.getWidth() / maxZoomFactor;
-		double height = alias.getHeight() / maxZoomFactor;
-		double size = length * height;
-		return (double) Math.ceil(limit / size);
-	}
+  /**
+   * Set parents for the elements in hierarchical view.
+   * 
+   * @param sortedAliases
+   *          list of aliases
+   */
+  private void setParentingAndChildreningOfNonComplexChildrens(List<Element> sortedAliases) {
+    setParentingOfNonComplexChildrens(sortedAliases);
+    setChildrening(sortedAliases);
+  }
+
+  /**
+   * Assign aliases to compartments.
+   */
+  private void assignToCompartments() {
+    Compartment nullCompartment = new Compartment("null");
+    nullCompartment.setWidth(Double.MAX_VALUE);
+    nullCompartment.setHeight(Double.MAX_VALUE);
+    for (Element element : getModel().getElements()) {
+      Compartment supposedParent = nullCompartment;
+      for (Compartment alias : getModel().getCompartments()) {
+        if (alias.contains(element) && alias.getSize() < supposedParent.getSize()) {
+          supposedParent = alias;
+        }
+      }
+      if (supposedParent != nullCompartment) {
+        supposedParent.addElement(element);
+      }
+    }
+  }
+
+  /**
+   * Computes the ratio between the minimal object that should be visible, and
+   * alias visible on the top level.
+   * 
+   * @param alias
+   *          alias for which computation is done
+   * @param limit
+   *          size of the minimal visible object
+   * @return ratio between the minimal object that should be visible, and alias
+   *         visible on the top level
+   */
+  private double computeRate(Element alias, double limit) {
+    double length = alias.getWidth() / maxZoomFactor;
+    double height = alias.getHeight() / maxZoomFactor;
+    double size = length * height;
+    return (double) Math.ceil(limit / size);
+  }
 
 }
diff --git a/model-command/src/test/java/lcsb/mapviewer/commands/CreateHierarchyCommandTest.java b/model-command/src/test/java/lcsb/mapviewer/commands/CreateHierarchyCommandTest.java
index 7047e09410..87f960d795 100644
--- a/model-command/src/test/java/lcsb/mapviewer/commands/CreateHierarchyCommandTest.java
+++ b/model-command/src/test/java/lcsb/mapviewer/commands/CreateHierarchyCommandTest.java
@@ -9,7 +9,9 @@ import static org.junit.Assert.fail;
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
 import java.util.HashSet;
+import java.util.Map;
 import java.util.Set;
 
 import org.apache.log4j.Logger;
@@ -25,6 +27,7 @@ import lcsb.mapviewer.model.map.compartment.PathwayCompartment;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.species.Element;
 import lcsb.mapviewer.model.map.species.Species;
+import lcsb.mapviewer.modelutils.map.ElementUtils;
 
 public class CreateHierarchyCommandTest extends CommandTestFunctions {
   Logger logger = Logger.getLogger(CreateHierarchyCommandTest.class);
@@ -304,4 +307,71 @@ public class CreateHierarchyCommandTest extends CommandTestFunctions {
     }
   }
 
+  @Test
+  public void testHierarchyWithCustomSemanticZooming() throws Exception {
+    try {
+      Model model = getModelForFile("testFiles/custom_semantic_zooming.xml", false);
+
+      Map<Element, String> visibilityLevels = new HashMap<>();
+      for (Element element : model.getElements()) {
+        if (element.getVisibilityLevel() != null && !element.getVisibilityLevel().isEmpty()) {
+          visibilityLevels.put(element, element.getVisibilityLevel());
+        }
+      }
+
+      new CreateHierarchyCommand(model, 4, 80).execute();
+
+      for (Element element : model.getElements()) {
+        if (visibilityLevels.get(element) != null) {
+          assertEquals("Visibility level changed, but shouldn't", visibilityLevels.get(element),
+              element.getVisibilityLevel());
+        }
+      }
+
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
+  @Test
+  public void testHierarchyWithCustomSemanticZoomingPathwayLevels() throws Exception {
+    try {
+      ElementUtils eu = new ElementUtils();
+      Model model = getModelForFile("testFiles/custom_semantic_zooming.xml", false);
+
+      Map<Element, String> visibilityLevels = new HashMap<>();
+      for (Element element : model.getElements()) {
+        if (element.getVisibilityLevel() != null && !element.getVisibilityLevel().isEmpty()) {
+          visibilityLevels.put(element, element.getVisibilityLevel());
+        }
+      }
+
+      new CreateHierarchyCommand(model, 4, 80).execute();
+
+      for (Element element : model.getElements()) {
+        if (visibilityLevels.get(element) == null) {
+          int visibilityLevel = Integer.parseInt(element.getVisibilityLevel());
+          if (element.getCompartment() != null) {
+            int parentTransparency = Integer.parseInt(element.getCompartment().getTransparencyLevel());
+            assertEquals(
+                eu.getElementTag(element) + eu.getElementTag(element.getCompartment())
+                    + "Element should be directly visible when parent is transparent",
+                parentTransparency, visibilityLevel);
+          } else if (element instanceof Species) {
+            int parentTransparency = Integer.parseInt(((Species) element).getComplex().getTransparencyLevel());
+            assertEquals(
+                eu.getElementTag(element) + eu.getElementTag(((Species) element).getComplex())
+                    + "Element should be directly visible when parent is transparent",
+                parentTransparency, visibilityLevel);
+          }
+        }
+      }
+
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
 }
diff --git a/model-command/testFiles/custom_semantic_zooming.xml b/model-command/testFiles/custom_semantic_zooming.xml
new file mode 100644
index 0000000000..736899cb21
--- /dev/null
+++ b/model-command/testFiles/custom_semantic_zooming.xml
@@ -0,0 +1,1195 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns="http://www.sbml.org/sbml/level2/version4" xmlns:celldesigner="http://www.sbml.org/2001/ns/celldesigner" level="2" version="4">
+<model metaid="untitled" id="untitled">
+<annotation>
+<celldesigner:extension>
+<celldesigner:modelVersion>4.0</celldesigner:modelVersion>
+<celldesigner:modelDisplay sizeX="2500" sizeY="2000"/>
+<celldesigner:listOfCompartmentAliases>
+<celldesigner:compartmentAlias id="ca1" compartment="c1">
+<celldesigner:class>SQUARE</celldesigner:class>
+<celldesigner:bounds x="1495.0" y="85.0" w="550.0" h="440.0"/>
+<celldesigner:namePoint x="1944.5" y="488.5"/>
+<celldesigner:doubleLine thickness="12.0" outerWidth="2.0" innerWidth="1.0"/>
+<celldesigner:paint color="ffcccc00" scheme="Color"/>
+<celldesigner:info state="empty" angle="-1.5707963267948966"/>
+</celldesigner:compartmentAlias>
+<celldesigner:compartmentAlias id="ca2" compartment="c2">
+<celldesigner:class>SQUARE</celldesigner:class>
+<celldesigner:bounds x="1140.0" y="45.0" w="1270.0" h="1315.0"/>
+<celldesigner:namePoint x="1767.0" y="1308.0"/>
+<celldesigner:doubleLine thickness="12.0" outerWidth="2.0" innerWidth="1.0"/>
+<celldesigner:paint color="ffcccc00" scheme="Color"/>
+<celldesigner:info state="empty" angle="-1.5707963267948966"/>
+</celldesigner:compartmentAlias>
+<celldesigner:compartmentAlias id="ca3" compartment="c3">
+<celldesigner:class>SQUARE</celldesigner:class>
+<celldesigner:bounds x="90.0" y="30.0" w="1020.0" h="1940.0"/>
+<celldesigner:namePoint x="585.0" y="1933.5"/>
+<celldesigner:doubleLine thickness="12.0" outerWidth="2.0" innerWidth="1.0"/>
+<celldesigner:paint color="ffcccc00" scheme="Color"/>
+<celldesigner:info state="empty" angle="-1.5707963267948966"/>
+</celldesigner:compartmentAlias>
+<celldesigner:compartmentAlias id="ca4" compartment="c4">
+<celldesigner:class>SQUARE</celldesigner:class>
+<celldesigner:bounds x="1125.0" y="1405.0" w="1310.0" h="570.0"/>
+<celldesigner:namePoint x="1762.0" y="1938.5"/>
+<celldesigner:doubleLine thickness="12.0" outerWidth="2.0" innerWidth="1.0"/>
+<celldesigner:paint color="ffcccc00" scheme="Color"/>
+<celldesigner:info state="empty" angle="-1.5707963267948966"/>
+</celldesigner:compartmentAlias>
+</celldesigner:listOfCompartmentAliases>
+<celldesigner:listOfComplexSpeciesAliases/>
+<celldesigner:listOfSpeciesAliases>
+<celldesigner:speciesAlias id="sa1" species="s1" compartmentAlias="ca1">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="1525.0" y="185.0" w="80.0" h="40.0"/>
+<celldesigner:font size="12"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="30.0" y="100.0"/>
+<celldesigner:boxSize width="80.0" height="40.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ffccffcc" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="80.0" height="60.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+<celldesigner:info state="empty" angle="-1.5707963267948966"/>
+</celldesigner:speciesAlias>
+<celldesigner:speciesAlias id="sa3" species="s3" compartmentAlias="ca1">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="1725.0" y="305.0" w="80.0" h="40.0"/>
+<celldesigner:font size="12"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="230.0" y="220.0"/>
+<celldesigner:boxSize width="80.0" height="40.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ffccffcc" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="80.0" height="60.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+<celldesigner:info state="empty" angle="-1.5707963267948966"/>
+</celldesigner:speciesAlias>
+<celldesigner:speciesAlias id="sa5" species="s5" compartmentAlias="ca1">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="1935.0" y="305.0" w="80.0" h="40.0"/>
+<celldesigner:font size="12"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="440.0" y="220.0"/>
+<celldesigner:boxSize width="80.0" height="40.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ffccffcc" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="80.0" height="60.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+<celldesigner:info state="empty" angle="-1.5707963267948966"/>
+</celldesigner:speciesAlias>
+<celldesigner:speciesAlias id="sa6" species="s6" compartmentAlias="ca1">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="1927.5" y="178.75" w="95.0" h="32.5"/>
+<celldesigner:font size="12"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="432.5" y="93.75"/>
+<celldesigner:boxSize width="95.0" height="32.5"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ffffff66" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="80.0" height="60.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+<celldesigner:info state="empty" angle="-1.5707963267948966"/>
+</celldesigner:speciesAlias>
+<celldesigner:speciesAlias id="sa7" species="s7" compartmentAlias="ca1">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="1940.0" y="412.5" w="70.0" h="25.0"/>
+<celldesigner:font size="12"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="445.0" y="327.5"/>
+<celldesigner:boxSize width="70.0" height="25.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ffccff66" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="80.0" height="60.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+<celldesigner:info state="empty" angle="-1.5707963267948966"/>
+</celldesigner:speciesAlias>
+<celldesigner:speciesAlias id="sa8" species="s8" compartmentAlias="ca1">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="1530.0" y="305.0" w="80.0" h="40.0"/>
+<celldesigner:font size="12"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="35.0" y="220.0"/>
+<celldesigner:boxSize width="80.0" height="40.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ffccffcc" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="80.0" height="60.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+<celldesigner:info state="empty" angle="-1.5707963267948966"/>
+</celldesigner:speciesAlias>
+<celldesigner:speciesAlias id="sa9" species="s9" compartmentAlias="ca2">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="1230.0" y="960.0" w="80.0" h="40.0"/>
+<celldesigner:font size="12"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="90.0" y="915.0"/>
+<celldesigner:boxSize width="80.0" height="40.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ffccffcc" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="80.0" height="60.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+<celldesigner:info state="empty" angle="-1.5707963267948966"/>
+</celldesigner:speciesAlias>
+<celldesigner:speciesAlias id="sa10" species="s10" compartmentAlias="ca2">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="1350.0" y="955.0" w="80.0" h="40.0"/>
+<celldesigner:font size="12"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="210.0" y="910.0"/>
+<celldesigner:boxSize width="80.0" height="40.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ffccffcc" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="80.0" height="60.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+<celldesigner:info state="empty" angle="-1.5707963267948966"/>
+</celldesigner:speciesAlias>
+<celldesigner:speciesAlias id="sa11" species="s11" compartmentAlias="ca2">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="1460.0" y="955.0" w="80.0" h="40.0"/>
+<celldesigner:font size="12"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="320.0" y="910.0"/>
+<celldesigner:boxSize width="80.0" height="40.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ffccffcc" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="80.0" height="60.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+<celldesigner:info state="empty" angle="-1.5707963267948966"/>
+</celldesigner:speciesAlias>
+<celldesigner:speciesAlias id="sa12" species="s12" compartmentAlias="ca2">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="1570.0" y="955.0" w="80.0" h="40.0"/>
+<celldesigner:font size="12"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="430.0" y="910.0"/>
+<celldesigner:boxSize width="80.0" height="40.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ffccffcc" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="80.0" height="60.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+<celldesigner:info state="empty" angle="-1.5707963267948966"/>
+</celldesigner:speciesAlias>
+<celldesigner:speciesAlias id="sa13" species="s13" compartmentAlias="ca2">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="1630.0" y="790.0" w="80.0" h="40.0"/>
+<celldesigner:font size="12"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="490.0" y="745.0"/>
+<celldesigner:boxSize width="80.0" height="40.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ffccffcc" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="80.0" height="60.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+<celldesigner:info state="empty" angle="-1.5707963267948966"/>
+</celldesigner:speciesAlias>
+<celldesigner:speciesAlias id="sa17" species="s16" compartmentAlias="ca1">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="1540.0" y="445.0" w="80.0" h="40.0"/>
+<celldesigner:font size="12"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="45.0" y="360.0"/>
+<celldesigner:boxSize width="80.0" height="40.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ffccffcc" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="80.0" height="60.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+<celldesigner:info state="empty" angle="-1.5707963267948966"/>
+</celldesigner:speciesAlias>
+<celldesigner:speciesAlias id="sa19" species="s18" compartmentAlias="ca2">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="1360.0" y="1170.0" w="80.0" h="40.0"/>
+<celldesigner:font size="12"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="220.0" y="1125.0"/>
+<celldesigner:boxSize width="80.0" height="40.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ffccffcc" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="80.0" height="60.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+<celldesigner:info state="empty" angle="-1.5707963267948966"/>
+</celldesigner:speciesAlias>
+<celldesigner:speciesAlias id="sa20" species="s19" compartmentAlias="ca2">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="1210.0" y="790.0" w="80.0" h="40.0"/>
+<celldesigner:font size="12"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="70.0" y="745.0"/>
+<celldesigner:boxSize width="80.0" height="40.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ffccffcc" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="80.0" height="60.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+<celldesigner:info state="empty" angle="-1.5707963267948966"/>
+</celldesigner:speciesAlias>
+<celldesigner:speciesAlias id="sa16" species="s17" compartmentAlias="ca1">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="1700.0" y="445.0" w="80.0" h="40.0"/>
+<celldesigner:font size="12"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="205.0" y="360.0"/>
+<celldesigner:boxSize width="80.0" height="40.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ffccffcc" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="80.0" height="60.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+<celldesigner:info state="empty" angle="-1.5707963267948966"/>
+</celldesigner:speciesAlias>
+<celldesigner:speciesAlias id="sa21" species="s20" compartmentAlias="ca3">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="850.0" y="1140.0" w="80.0" h="40.0"/>
+<celldesigner:font size="12"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="760.0" y="1110.0"/>
+<celldesigner:boxSize width="80.0" height="40.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ffccffcc" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="80.0" height="60.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+<celldesigner:info state="empty" angle="-1.5707963267948966"/>
+</celldesigner:speciesAlias>
+<celldesigner:speciesAlias id="sa22" species="s21" compartmentAlias="ca4">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="1200.0" y="1460.0" w="80.0" h="40.0"/>
+<celldesigner:font size="12"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="75.0" y="55.0"/>
+<celldesigner:boxSize width="80.0" height="40.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ffccffcc" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="80.0" height="60.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+<celldesigner:info state="empty" angle="-1.5707963267948966"/>
+</celldesigner:speciesAlias>
+<celldesigner:speciesAlias id="sa23" species="s22" compartmentAlias="ca4">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="1340.0" y="1580.0" w="80.0" h="40.0"/>
+<celldesigner:font size="12"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="215.0" y="175.0"/>
+<celldesigner:boxSize width="80.0" height="40.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ffccffcc" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="80.0" height="60.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+<celldesigner:info state="empty" angle="-1.5707963267948966"/>
+</celldesigner:speciesAlias>
+<celldesigner:speciesAlias id="sa25" species="s23" compartmentAlias="ca2">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="1610.0" y="1160.0" w="80.0" h="40.0"/>
+<celldesigner:font size="12"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="470.0" y="1115.0"/>
+<celldesigner:boxSize width="80.0" height="40.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ffccffcc" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="80.0" height="60.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+<celldesigner:info state="empty" angle="-1.5707963267948966"/>
+</celldesigner:speciesAlias>
+<celldesigner:speciesAlias id="sa26" species="s24" compartmentAlias="ca4">
+<celldesigner:activity>inactive</celldesigner:activity>
+<celldesigner:bounds x="1540.0" y="1510.0" w="80.0" h="40.0"/>
+<celldesigner:font size="12"/>
+<celldesigner:view state="usual"/>
+<celldesigner:usualView>
+<celldesigner:innerPosition x="415.0" y="105.0"/>
+<celldesigner:boxSize width="80.0" height="40.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="ffccffcc" scheme="Color"/>
+</celldesigner:usualView>
+<celldesigner:briefView>
+<celldesigner:innerPosition x="0.0" y="0.0"/>
+<celldesigner:boxSize width="80.0" height="60.0"/>
+<celldesigner:singleLine width="1.0"/>
+<celldesigner:paint color="3fff0000" scheme="Color"/>
+</celldesigner:briefView>
+<celldesigner:info state="empty" angle="-1.5707963267948966"/>
+</celldesigner:speciesAlias>
+</celldesigner:listOfSpeciesAliases>
+<celldesigner:listOfGroups/>
+<celldesigner:listOfProteins>
+<celldesigner:protein id="pr1" name="BID" type="GENERIC"/>
+<celldesigner:protein id="pr3" name="BAD" type="GENERIC"/>
+<celldesigner:protein id="pr5" name="DAD" type="GENERIC"/>
+<celldesigner:protein id="pr6" name="B" type="GENERIC"/>
+<celldesigner:protein id="pr7" name="AAA" type="GENERIC"/>
+<celldesigner:protein id="pr8" name="AA0" type="GENERIC"/>
+<celldesigner:protein id="pr9" name="AA1" type="GENERIC"/>
+<celldesigner:protein id="pr10" name="AA3" type="GENERIC"/>
+<celldesigner:protein id="pr11" name="empty" type="GENERIC"/>
+<celldesigner:protein id="pr12" name="ST1" type="GENERIC"/>
+<celldesigner:protein id="pr14" name="T1" type="GENERIC"/>
+<celldesigner:protein id="pr15" name="S2T2" type="GENERIC"/>
+<celldesigner:protein id="pr13" name="S0T1" type="GENERIC"/>
+<celldesigner:protein id="pr16" name="S2" type="GENERIC"/>
+<celldesigner:protein id="pr17" name="TL0" type="GENERIC"/>
+<celldesigner:protein id="pr18" name="TL1" type="GENERIC"/>
+<celldesigner:protein id="pr19" name="S0" type="GENERIC"/>
+<celldesigner:protein id="pr20" name="T2" type="GENERIC"/>
+</celldesigner:listOfProteins>
+<celldesigner:listOfGenes>
+<celldesigner:gene id="gn1" name="E" type="GENE">
+<celldesigner:listOfRegions>
+<celldesigner:region id="tr1" name="Ee" size="0.2" pos="0.03" type="CodingRegion" active="false"/>
+<celldesigner:region id="tr2" name="Ef" size="0.16" pos="0.26999999999999996" type="CodingRegion" active="false"/>
+<celldesigner:region id="tr3" name="Eg" size="0.1" pos="0.46" type="transcriptionStartingSiteL" active="false"/>
+<celldesigner:region id="tr4" name="Eh" size="0.1" pos="0.72" type="transcriptionStartingSiteR" active="false"/>
+</celldesigner:listOfRegions>
+</celldesigner:gene>
+</celldesigner:listOfGenes>
+<celldesigner:listOfRNAs/>
+<celldesigner:listOfAntisenseRNAs/>
+<celldesigner:listOfLayers>
+<celldesigner:layer id="1" name="Layer0001" locked="false" visible="true">
+<celldesigner:listOfTexts>
+<celldesigner:layerSpeciesAlias x="0.0" y="0.0">
+<celldesigner:layerNotes>
+zoom1
+</celldesigner:layerNotes>
+<celldesigner:bounds x="1345.0" y="72.5" w="890.0" h="515.0"/>
+<celldesigner:paint color="ff000000"/>
+<celldesigner:font size="11"/>
+</celldesigner:layerSpeciesAlias>
+<celldesigner:layerSpeciesAlias x="0.0" y="0.0">
+<celldesigner:layerNotes>
+Sem
+</celldesigner:layerNotes>
+<celldesigner:bounds x="1210.0" y="935.0" w="480.0" h="90.0"/>
+<celldesigner:paint color="ff000000"/>
+<celldesigner:font size="11"/>
+</celldesigner:layerSpeciesAlias>
+<celldesigner:layerSpeciesAlias x="0.0" y="0.0">
+<celldesigner:layerNotes>
+Tran
+</celldesigner:layerNotes>
+<celldesigner:bounds x="45.0" y="15.0" w="2415.0" h="1980.0"/>
+<celldesigner:paint color="ff000000"/>
+<celldesigner:font size="11"/>
+</celldesigner:layerSpeciesAlias>
+</celldesigner:listOfTexts>
+</celldesigner:layer>
+</celldesigner:listOfLayers>
+<celldesigner:listOfBlockDiagrams/>
+</celldesigner:extension>
+</annotation>
+<listOfUnitDefinitions>
+<unitDefinition metaid="substance" id="substance" name="substance">
+<listOfUnits>
+<unit metaid="CDMT00007" kind="mole"/>
+</listOfUnits>
+</unitDefinition>
+<unitDefinition metaid="volume" id="volume" name="volume">
+<listOfUnits>
+<unit metaid="CDMT00008" kind="litre"/>
+</listOfUnits>
+</unitDefinition>
+<unitDefinition metaid="area" id="area" name="area">
+<listOfUnits>
+<unit metaid="CDMT00009" kind="metre" exponent="2"/>
+</listOfUnits>
+</unitDefinition>
+<unitDefinition metaid="length" id="length" name="length">
+<listOfUnits>
+<unit metaid="CDMT00014" kind="metre"/>
+</listOfUnits>
+</unitDefinition>
+<unitDefinition metaid="time" id="time" name="time">
+<listOfUnits>
+<unit metaid="CDMT00015" kind="second"/>
+</listOfUnits>
+</unitDefinition>
+</listOfUnitDefinitions>
+<listOfCompartments>
+<compartment metaid="default" id="default" size="1" units="volume"/>
+<compartment metaid="c2" id="c2" name="Cell" size="1" units="volume" outside="default">
+<annotation>
+<celldesigner:extension>
+<celldesigner:name>Cell</celldesigner:name>
+</celldesigner:extension>
+</annotation>
+</compartment>
+<compartment metaid="c1" id="c1" name="nucleus" size="1" units="volume" outside="c2">
+<notes>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title/>
+</head>
+<body>SemanticZoomLevelVisibility: 2
+</body>
+</html>
+</notes>
+<annotation>
+<celldesigner:extension>
+<celldesigner:name>nucleus</celldesigner:name>
+</celldesigner:extension>
+</annotation>
+</compartment>
+<compartment metaid="c3" id="c3" name="pink" size="1" units="volume" outside="default">
+<notes>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title/>
+</head>
+<body>SemanticZoomLevelVisibility: 1
+TransparencyZoomLevelVisibility: 2
+</body>
+</html>
+</notes>
+<annotation>
+<celldesigner:extension>
+<celldesigner:name>pink</celldesigner:name>
+</celldesigner:extension>
+</annotation>
+</compartment>
+<compartment metaid="c4" id="c4" name="black" size="1" units="volume" outside="default">
+<notes>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title/>
+</head>
+<body>SemanticZoomLevelVisibility: 3
+</body>
+</html>
+</notes>
+<annotation>
+<celldesigner:extension>
+<celldesigner:name>black</celldesigner:name>
+</celldesigner:extension>
+</annotation>
+</compartment>
+</listOfCompartments>
+<listOfSpecies>
+<species metaid="s1" id="s1" name="BID" compartment="c1" initialAmount="0">
+<notes>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title/>
+</head>
+<body>SemanticZoomLevelVisibility: 2
+</body>
+</html>
+</notes>
+<annotation>
+<celldesigner:extension>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>PROTEIN</celldesigner:class>
+<celldesigner:proteinReference>pr1</celldesigner:proteinReference>
+</celldesigner:speciesIdentity>
+</celldesigner:extension>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/" xmlns:bqmodel="http://biomodels.net/model-qualifiers/">
+<rdf:Description rdf:about="#s1">
+<bqmodel:isDescribedBy>
+<rdf:Bag>
+<rdf:li rdf:resource="urn:miriam:uniprot:Q9BXM7"/>
+</rdf:Bag>
+</bqmodel:isDescribedBy>
+</rdf:Description>
+</rdf:RDF>
+</annotation>
+</species>
+<species metaid="s3" id="s3" name="BAD" compartment="c1" initialAmount="0">
+<notes>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title/>
+</head>
+<body>SemanticZoomLevelVisibility: 3
+</body>
+</html>
+</notes>
+<annotation>
+<celldesigner:extension>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>PROTEIN</celldesigner:class>
+<celldesigner:proteinReference>pr3</celldesigner:proteinReference>
+</celldesigner:speciesIdentity>
+</celldesigner:extension>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/" xmlns:bqmodel="http://biomodels.net/model-qualifiers/">
+<rdf:Description rdf:about="#s3">
+<bqmodel:isDescribedBy>
+<rdf:Bag>
+<rdf:li rdf:resource="urn:miriam:hgnc:936"/>
+</rdf:Bag>
+</bqmodel:isDescribedBy>
+<bqmodel:isDescribedBy>
+<rdf:Bag>
+<rdf:li rdf:resource="urn:miriam:rhea:12345"/>
+</rdf:Bag>
+</bqmodel:isDescribedBy>
+</rdf:Description>
+</rdf:RDF>
+</annotation>
+</species>
+<species metaid="s5" id="s5" name="DAD" compartment="c1" initialAmount="0">
+<notes>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title/>
+</head>
+<body>SemanticZoomLevelVisibility: 0
+</body>
+</html>
+</notes>
+<annotation>
+<celldesigner:extension>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>PROTEIN</celldesigner:class>
+<celldesigner:proteinReference>pr5</celldesigner:proteinReference>
+</celldesigner:speciesIdentity>
+</celldesigner:extension>
+</annotation>
+</species>
+<species metaid="s6" id="s6" name="E" compartment="c1" initialAmount="0">
+<notes>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title/>
+</head>
+<body>SemanticZoomLevelVisibility: 3
+</body>
+</html>
+</notes>
+<annotation>
+<celldesigner:extension>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>GENE</celldesigner:class>
+<celldesigner:geneReference>gn1</celldesigner:geneReference>
+</celldesigner:speciesIdentity>
+</celldesigner:extension>
+</annotation>
+</species>
+<species metaid="s7" id="s7" name="DAD" compartment="c1" initialAmount="0">
+<notes>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title/>
+</head>
+<body>SemanticZoomLevelVisibility: 3
+</body>
+</html>
+</notes>
+<annotation>
+<celldesigner:extension>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>SIMPLE_MOLECULE</celldesigner:class>
+<celldesigner:name>DAD</celldesigner:name>
+</celldesigner:speciesIdentity>
+</celldesigner:extension>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/" xmlns:bqmodel="http://biomodels.net/model-qualifiers/">
+<rdf:Description rdf:about="#s7">
+<bqmodel:isDescribedBy>
+<rdf:Bag>
+<rdf:li rdf:resource="urn:miriam:rhea:21220"/>
+</rdf:Bag>
+</bqmodel:isDescribedBy>
+</rdf:Description>
+</rdf:RDF>
+</annotation>
+</species>
+<species metaid="s8" id="s8" name="B" compartment="c1" initialAmount="0">
+<annotation>
+<celldesigner:extension>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>PROTEIN</celldesigner:class>
+<celldesigner:proteinReference>pr6</celldesigner:proteinReference>
+</celldesigner:speciesIdentity>
+</celldesigner:extension>
+</annotation>
+</species>
+<species metaid="s9" id="s9" name="AAA" compartment="c2" initialAmount="0">
+<annotation>
+<celldesigner:extension>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>PROTEIN</celldesigner:class>
+<celldesigner:proteinReference>pr7</celldesigner:proteinReference>
+</celldesigner:speciesIdentity>
+</celldesigner:extension>
+</annotation>
+</species>
+<species metaid="s10" id="s10" name="AA0" compartment="c2" initialAmount="0">
+<notes>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title/>
+</head>
+<body>SemanticZoomLevelVisibility: 0
+</body>
+</html>
+</notes>
+<annotation>
+<celldesigner:extension>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>PROTEIN</celldesigner:class>
+<celldesigner:proteinReference>pr8</celldesigner:proteinReference>
+</celldesigner:speciesIdentity>
+</celldesigner:extension>
+</annotation>
+</species>
+<species metaid="s11" id="s11" name="AA1" compartment="c2" initialAmount="0">
+<notes>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title/>
+</head>
+<body>SemanticZoomLevelVisibility: 1
+</body>
+</html>
+</notes>
+<annotation>
+<celldesigner:extension>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>PROTEIN</celldesigner:class>
+<celldesigner:proteinReference>pr9</celldesigner:proteinReference>
+</celldesigner:speciesIdentity>
+</celldesigner:extension>
+</annotation>
+</species>
+<species metaid="s12" id="s12" name="AA3" compartment="c2" initialAmount="0">
+<notes>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title/>
+</head>
+<body>SemanticZoomLevelVisibility: 3
+</body>
+</html>
+</notes>
+<annotation>
+<celldesigner:extension>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>PROTEIN</celldesigner:class>
+<celldesigner:proteinReference>pr10</celldesigner:proteinReference>
+</celldesigner:speciesIdentity>
+</celldesigner:extension>
+</annotation>
+</species>
+<species metaid="s13" id="s13" name="empty" compartment="c2" initialAmount="0">
+<annotation>
+<celldesigner:extension>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>PROTEIN</celldesigner:class>
+<celldesigner:proteinReference>pr11</celldesigner:proteinReference>
+</celldesigner:speciesIdentity>
+</celldesigner:extension>
+</annotation>
+</species>
+<species metaid="s16" id="s16" name="ST1" compartment="c1" initialAmount="0">
+<notes>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title/>
+</head>
+<body>SemanticZoomLevelVisibility: 1
+TransparencyZoomLevelVisibility: 1
+</body>
+</html>
+</notes>
+<annotation>
+<celldesigner:extension>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>PROTEIN</celldesigner:class>
+<celldesigner:proteinReference>pr12</celldesigner:proteinReference>
+</celldesigner:speciesIdentity>
+</celldesigner:extension>
+</annotation>
+</species>
+<species metaid="s18" id="s18" name="T1" compartment="c2" initialAmount="0">
+<notes>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title/>
+</head>
+<body>TransparencyZoomLevelVisibility: 1
+</body>
+</html>
+</notes>
+<annotation>
+<celldesigner:extension>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>PROTEIN</celldesigner:class>
+<celldesigner:proteinReference>pr14</celldesigner:proteinReference>
+</celldesigner:speciesIdentity>
+</celldesigner:extension>
+</annotation>
+</species>
+<species metaid="s19" id="s19" name="S2T2" compartment="c2" initialAmount="0">
+<notes>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title/>
+</head>
+<body>SemanticZoomLevelVisibility: 2
+TransparencyZoomLevelVisibility: 1
+</body>
+</html>
+</notes>
+<annotation>
+<celldesigner:extension>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>PROTEIN</celldesigner:class>
+<celldesigner:proteinReference>pr15</celldesigner:proteinReference>
+</celldesigner:speciesIdentity>
+</celldesigner:extension>
+</annotation>
+</species>
+<species metaid="s17" id="s17" name="S0T1" compartment="c1" initialAmount="0">
+<notes>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title/>
+</head>
+<body>TransparencyZoomLevelVisibility: 1
+</body>
+</html>
+</notes>
+<annotation>
+<celldesigner:extension>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>PROTEIN</celldesigner:class>
+<celldesigner:proteinReference>pr13</celldesigner:proteinReference>
+</celldesigner:speciesIdentity>
+</celldesigner:extension>
+</annotation>
+</species>
+<species metaid="s20" id="s20" name="S2" compartment="c3" initialAmount="0">
+<notes>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title/>
+</head>
+<body>SemanticZoomLevelVisibility: 2
+</body>
+</html>
+</notes>
+<annotation>
+<celldesigner:extension>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>PROTEIN</celldesigner:class>
+<celldesigner:proteinReference>pr16</celldesigner:proteinReference>
+</celldesigner:speciesIdentity>
+</celldesigner:extension>
+</annotation>
+</species>
+<species metaid="s21" id="s21" name="TL0" compartment="c4" initialAmount="0">
+<notes>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title/>
+</head>
+<body>TransparencyZoomLevelVisibility: 0
+</body>
+</html>
+</notes>
+<annotation>
+<celldesigner:extension>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>PROTEIN</celldesigner:class>
+<celldesigner:proteinReference>pr17</celldesigner:proteinReference>
+</celldesigner:speciesIdentity>
+</celldesigner:extension>
+</annotation>
+</species>
+<species metaid="s22" id="s22" name="TL1" compartment="c4" initialAmount="0">
+<notes>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title/>
+</head>
+<body>TransparencyZoomLevelVisibility: 1
+</body>
+</html>
+</notes>
+<annotation>
+<celldesigner:extension>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>PROTEIN</celldesigner:class>
+<celldesigner:proteinReference>pr18</celldesigner:proteinReference>
+</celldesigner:speciesIdentity>
+</celldesigner:extension>
+</annotation>
+</species>
+<species metaid="s23" id="s23" name="S0" compartment="c2" initialAmount="0">
+<notes>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title/>
+</head>
+<body>SemanticZoomLevelVisibility: 0
+</body>
+</html>
+</notes>
+<annotation>
+<celldesigner:extension>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>PROTEIN</celldesigner:class>
+<celldesigner:proteinReference>pr19</celldesigner:proteinReference>
+</celldesigner:speciesIdentity>
+</celldesigner:extension>
+</annotation>
+</species>
+<species metaid="s24" id="s24" name="T2" compartment="c4" initialAmount="0">
+<notes>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title/>
+</head>
+<body>TransparencyZoomLevelVisibility: 2
+</body>
+</html>
+</notes>
+<annotation>
+<celldesigner:extension>
+<celldesigner:positionToCompartment>inside</celldesigner:positionToCompartment>
+<celldesigner:speciesIdentity>
+<celldesigner:class>PROTEIN</celldesigner:class>
+<celldesigner:proteinReference>pr20</celldesigner:proteinReference>
+</celldesigner:speciesIdentity>
+</celldesigner:extension>
+</annotation>
+</species>
+</listOfSpecies>
+<listOfReactions>
+<reaction metaid="re1" id="re1" reversible="false">
+<annotation>
+<celldesigner:extension>
+<celldesigner:reactionType>STATE_TRANSITION</celldesigner:reactionType>
+<celldesigner:baseReactants>
+<celldesigner:baseReactant species="s1" alias="sa1"/>
+</celldesigner:baseReactants>
+<celldesigner:baseProducts>
+<celldesigner:baseProduct species="s3" alias="sa3"/>
+</celldesigner:baseProducts>
+<celldesigner:connectScheme connectPolicy="direct" rectangleIndex="0">
+<celldesigner:listOfLineDirection>
+<celldesigner:lineDirection index="0" value="unknown"/>
+</celldesigner:listOfLineDirection>
+</celldesigner:connectScheme>
+<celldesigner:line width="1.0" color="ff000000"/>
+</celldesigner:extension>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/" xmlns:bqmodel="http://biomodels.net/model-qualifiers/">
+<rdf:Description rdf:about="#re1">
+<bqmodel:isDescribedBy>
+<rdf:Bag>
+<rdf:li rdf:resource="urn:miriam:rhea:16508"/>
+</rdf:Bag>
+</bqmodel:isDescribedBy>
+</rdf:Description>
+</rdf:RDF>
+</annotation>
+<listOfReactants>
+<speciesReference metaid="CDMT00001" species="s1">
+<annotation>
+<celldesigner:extension>
+<celldesigner:alias>sa1</celldesigner:alias>
+</celldesigner:extension>
+</annotation>
+</speciesReference>
+</listOfReactants>
+<listOfProducts>
+<speciesReference metaid="CDMT00002" species="s3">
+<annotation>
+<celldesigner:extension>
+<celldesigner:alias>sa3</celldesigner:alias>
+</celldesigner:extension>
+</annotation>
+</speciesReference>
+</listOfProducts>
+</reaction>
+<reaction metaid="re4" id="re4" reversible="false">
+<annotation>
+<celldesigner:extension>
+<celldesigner:reactionType>REDUCED_MODULATION</celldesigner:reactionType>
+<celldesigner:baseReactants>
+<celldesigner:baseReactant species="s3" alias="sa3">
+<celldesigner:linkAnchor position="E"/>
+</celldesigner:baseReactant>
+</celldesigner:baseReactants>
+<celldesigner:baseProducts>
+<celldesigner:baseProduct species="s5" alias="sa5">
+<celldesigner:linkAnchor position="W"/>
+</celldesigner:baseProduct>
+</celldesigner:baseProducts>
+<celldesigner:connectScheme connectPolicy="direct">
+<celldesigner:listOfLineDirection>
+<celldesigner:lineDirection index="0" value="unknown"/>
+</celldesigner:listOfLineDirection>
+</celldesigner:connectScheme>
+<celldesigner:line width="1.0" color="ff000000"/>
+</celldesigner:extension>
+</annotation>
+<listOfReactants>
+<speciesReference metaid="CDMT00010" species="s3">
+<annotation>
+<celldesigner:extension>
+<celldesigner:alias>sa3</celldesigner:alias>
+</celldesigner:extension>
+</annotation>
+</speciesReference>
+</listOfReactants>
+<listOfProducts>
+<speciesReference metaid="CDMT00011" species="s5">
+<annotation>
+<celldesigner:extension>
+<celldesigner:alias>sa5</celldesigner:alias>
+</celldesigner:extension>
+</annotation>
+</speciesReference>
+</listOfProducts>
+</reaction>
+<reaction metaid="re5" id="re5" reversible="false">
+<annotation>
+<celldesigner:extension>
+<celldesigner:reactionType>STATE_TRANSITION</celldesigner:reactionType>
+<celldesigner:baseReactants>
+<celldesigner:baseReactant species="s6" alias="sa6">
+<celldesigner:linkAnchor position="S"/>
+</celldesigner:baseReactant>
+</celldesigner:baseReactants>
+<celldesigner:baseProducts>
+<celldesigner:baseProduct species="s5" alias="sa5">
+<celldesigner:linkAnchor position="N"/>
+</celldesigner:baseProduct>
+</celldesigner:baseProducts>
+<celldesigner:connectScheme connectPolicy="direct" rectangleIndex="0">
+<celldesigner:listOfLineDirection>
+<celldesigner:lineDirection index="0" value="unknown"/>
+</celldesigner:listOfLineDirection>
+</celldesigner:connectScheme>
+<celldesigner:line width="1.0" color="ff000000"/>
+</celldesigner:extension>
+</annotation>
+<listOfReactants>
+<speciesReference metaid="CDMT00012" species="s6">
+<annotation>
+<celldesigner:extension>
+<celldesigner:alias>sa6</celldesigner:alias>
+</celldesigner:extension>
+</annotation>
+</speciesReference>
+</listOfReactants>
+<listOfProducts>
+<speciesReference metaid="CDMT00013" species="s5">
+<annotation>
+<celldesigner:extension>
+<celldesigner:alias>sa5</celldesigner:alias>
+</celldesigner:extension>
+</annotation>
+</speciesReference>
+</listOfProducts>
+</reaction>
+<reaction metaid="re6" id="re6" reversible="false">
+<annotation>
+<celldesigner:extension>
+<celldesigner:reactionType>POSITIVE_INFLUENCE</celldesigner:reactionType>
+<celldesigner:baseReactants>
+<celldesigner:baseReactant species="s5" alias="sa5">
+<celldesigner:linkAnchor position="S"/>
+</celldesigner:baseReactant>
+</celldesigner:baseReactants>
+<celldesigner:baseProducts>
+<celldesigner:baseProduct species="s7" alias="sa7">
+<celldesigner:linkAnchor position="N"/>
+</celldesigner:baseProduct>
+</celldesigner:baseProducts>
+<celldesigner:connectScheme connectPolicy="direct">
+<celldesigner:listOfLineDirection>
+<celldesigner:lineDirection index="0" value="unknown"/>
+</celldesigner:listOfLineDirection>
+</celldesigner:connectScheme>
+<celldesigner:line width="1.0" color="ff000000"/>
+</celldesigner:extension>
+</annotation>
+<listOfReactants>
+<speciesReference metaid="CDMT00005" species="s5">
+<annotation>
+<celldesigner:extension>
+<celldesigner:alias>sa5</celldesigner:alias>
+</celldesigner:extension>
+</annotation>
+</speciesReference>
+</listOfReactants>
+<listOfProducts>
+<speciesReference metaid="CDMT00006" species="s7">
+<annotation>
+<celldesigner:extension>
+<celldesigner:alias>sa7</celldesigner:alias>
+</celldesigner:extension>
+</annotation>
+</speciesReference>
+</listOfProducts>
+</reaction>
+<reaction metaid="re7" id="re7" reversible="false">
+<annotation>
+<celldesigner:extension>
+<celldesigner:reactionType>STATE_TRANSITION</celldesigner:reactionType>
+<celldesigner:baseReactants>
+<celldesigner:baseReactant species="s8" alias="sa8"/>
+</celldesigner:baseReactants>
+<celldesigner:baseProducts>
+<celldesigner:baseProduct species="s3" alias="sa3"/>
+</celldesigner:baseProducts>
+<celldesigner:connectScheme connectPolicy="direct" rectangleIndex="0">
+<celldesigner:listOfLineDirection>
+<celldesigner:lineDirection index="0" value="unknown"/>
+</celldesigner:listOfLineDirection>
+</celldesigner:connectScheme>
+<celldesigner:line width="1.0" color="ff000000"/>
+</celldesigner:extension>
+</annotation>
+<listOfReactants>
+<speciesReference metaid="CDMT00003" species="s8">
+<annotation>
+<celldesigner:extension>
+<celldesigner:alias>sa8</celldesigner:alias>
+</celldesigner:extension>
+</annotation>
+</speciesReference>
+</listOfReactants>
+<listOfProducts>
+<speciesReference metaid="CDMT00004" species="s3">
+<annotation>
+<celldesigner:extension>
+<celldesigner:alias>sa3</celldesigner:alias>
+</celldesigner:extension>
+</annotation>
+</speciesReference>
+</listOfProducts>
+</reaction>
+</listOfReactions>
+</model>
+</sbml>
diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/projects/ProjectRestImpl.java b/rest-api/src/main/java/lcsb/mapviewer/api/projects/ProjectRestImpl.java
index b0d4cee6b5..0acdd3af10 100644
--- a/rest-api/src/main/java/lcsb/mapviewer/api/projects/ProjectRestImpl.java
+++ b/rest-api/src/main/java/lcsb/mapviewer/api/projects/ProjectRestImpl.java
@@ -635,7 +635,6 @@ public class ProjectRestImpl extends BaseRestImpl {
     params.projectName(getFirstValue(data.get("name")));
     params.projectOrganism(getFirstValue(data.get("organism")));
     params.sbgnFormat(getFirstValue(data.get("sbgn")));
-    params.semanticZoom(getFirstValue(data.get("semantic-zoom")));
     params.semanticZoomContainsMultipleLayouts(getFirstValue(data.get("semantic-zoom-contains-multiple-layouts")));
     params.version(getFirstValue(data.get("version")));
     params.annotations(getFirstValue(data.get("annotate")));
diff --git a/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java b/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java
index 78f9c1a5ec..10adc7f4a5 100644
--- a/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java
+++ b/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java
@@ -616,17 +616,11 @@ public class ProjectService implements IProjectService {
     projectDao.flush();
 
     List<BuildInLayout> buildInLayouts = new ArrayList<>();
-    BuildInLayout nested = null;
-    if (params.isSemanticZoom()) {
-      nested = BuildInLayout.SEMANTIC;
-    } else {
-      nested = BuildInLayout.NESTED;
-    }
     if (params.isNetworkLayoutAsDefault()) {
       buildInLayouts.add(BuildInLayout.NORMAL);
-      buildInLayouts.add(nested);
+      buildInLayouts.add(BuildInLayout.NESTED);
     } else {
-      buildInLayouts.add(nested);
+      buildInLayouts.add(BuildInLayout.NESTED);
       buildInLayouts.add(BuildInLayout.NORMAL);
     }
     buildInLayouts.add(BuildInLayout.CLEAN);
@@ -645,7 +639,7 @@ public class ProjectService implements IProjectService {
       topLayout.setHierarchicalView(buildInLayout.isNested());
       topModel.addLayout(0, topLayout);
       List<Layout> semanticLevelOverlays = new ArrayList<>();
-      if (buildInLayout.equals(BuildInLayout.SEMANTIC) && params.isSemanticZoomContainsMultipleLayouts()) {
+      if (params.isSemanticZoomContainsMultipleLayouts()) {
         for (int i = 0; i <= topModel.getZoomLevels(); i++) {
           String directory = params.getProjectDir() + "/" + buildInLayout.getDirectorySuffix() + "-" + i + "-"
               + topModel.getId() + "/";
@@ -669,7 +663,7 @@ public class ProjectService implements IProjectService {
 
         connection.getSubmodel().setZoomLevels(generator.computeZoomLevels(connection.getSubmodel().getModel()));
         connection.getSubmodel().setTileSize(MapGenerator.TILE_SIZE);
-        if (buildInLayout.equals(BuildInLayout.SEMANTIC) && params.isSemanticZoomContainsMultipleLayouts()) {
+        if (params.isSemanticZoomContainsMultipleLayouts()) {
           for (int i = 0; i <= topModel.getZoomLevels(); i++) {
             String directory = params.getProjectDir() + "/" + buildInLayout.getDirectorySuffix() + "-" + i + "-"
                 + submodelId + "/";
@@ -812,13 +806,11 @@ public class ProjectService implements IProjectService {
 
           createModel(params, project);
           Model originalModel = project.getModels().iterator().next().getModel();
-          if (!params.isSemanticZoom()) {
-            new CreateHierarchyCommand(originalModel, generator.computeZoomLevels(originalModel),
-                generator.computeZoomFactor(originalModel)).execute();
-            for (Model model : originalModel.getSubmodels()) {
-              new CreateHierarchyCommand(model, generator.computeZoomLevels(model), generator.computeZoomFactor(model))
-                  .execute();
-            }
+          new CreateHierarchyCommand(originalModel, generator.computeZoomLevels(originalModel),
+              generator.computeZoomFactor(originalModel)).execute();
+          for (Model model : originalModel.getSubmodels()) {
+            new CreateHierarchyCommand(model, generator.computeZoomLevels(model), generator.computeZoomFactor(model))
+                .execute();
           }
 
           addUsers(project, params);
diff --git a/service/src/main/java/lcsb/mapviewer/services/utils/CreateProjectParams.java b/service/src/main/java/lcsb/mapviewer/services/utils/CreateProjectParams.java
index a7b7d87c1e..ca990427c6 100644
--- a/service/src/main/java/lcsb/mapviewer/services/utils/CreateProjectParams.java
+++ b/service/src/main/java/lcsb/mapviewer/services/utils/CreateProjectParams.java
@@ -63,7 +63,6 @@ public class CreateProjectParams {
    * Is the project a complex multi-file project.
    */
   private boolean complex;
-  private boolean semanticZoom;
   private boolean semanticZoomContainsMultipleLayouts = false;
 
   /**
@@ -782,19 +781,6 @@ public class CreateProjectParams {
     return this;
   }
 
-  public CreateProjectParams semanticZoom(boolean semanticZoom) {
-    this.semanticZoom = semanticZoom;
-    return this;
-  }
-
-  public CreateProjectParams semanticZoom(String value) {
-    return this.semanticZoom("true".equals(value));
-  }
-
-  public boolean isSemanticZoom() {
-    return this.semanticZoom;
-  }
-
   public CreateProjectParams semanticZoomContainsMultipleLayouts(boolean semanticZoomContainsMultipleLayouts) {
     this.semanticZoomContainsMultipleLayouts = semanticZoomContainsMultipleLayouts;
     return this;
diff --git a/service/src/main/java/lcsb/mapviewer/services/utils/data/BuildInLayout.java b/service/src/main/java/lcsb/mapviewer/services/utils/data/BuildInLayout.java
index 3a54c156fb..8f30ecde59 100644
--- a/service/src/main/java/lcsb/mapviewer/services/utils/data/BuildInLayout.java
+++ b/service/src/main/java/lcsb/mapviewer/services/utils/data/BuildInLayout.java
@@ -32,7 +32,6 @@ public enum BuildInLayout { //
 	 * Standard visualization with hierarchical view.
 	 */
 	NESTED("Pathways and compartments", "_nested", null, true), //
-	SEMANTIC("Semantic zoom", "_semantic", null, true),
 	/**
 	 * Clean visualization (with colors reset to black and white).
 	 */
diff --git a/service/src/test/java/lcsb/mapviewer/services/impl/ProjectServiceTest.java b/service/src/test/java/lcsb/mapviewer/services/impl/ProjectServiceTest.java
index 3c3b575db1..d743432d06 100644
--- a/service/src/test/java/lcsb/mapviewer/services/impl/ProjectServiceTest.java
+++ b/service/src/test/java/lcsb/mapviewer/services/impl/ProjectServiceTest.java
@@ -169,7 +169,6 @@ public class ProjectServiceTest extends ServiceTestFunctions {
           addZipEntry(entry4).//
           addZipEntry(entry5).//
           annotations(true).//
-          semanticZoom(true).//
           images(true).//
           async(false).//
           projectDir(tmpResultDir).//
-- 
GitLab