From 05e5994f2864645b46e64e16249a7dc4e427aa1e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 3 Feb 2026 16:08:35 +0000 Subject: [PATCH 1/7] Initial plan From ff2e7fda76d0b806a4babde7b755d482011d957e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 3 Feb 2026 16:13:24 +0000 Subject: [PATCH 2/7] Remove 'src' from imports - update setup.py, imports, and package structure Co-authored-by: Pablo1990 <1974224+Pablo1990@users.noreply.github.com> --- Tests/test_cell.py | 2 +- Tests/test_degreesOfFreedom.py | 2 +- Tests/test_face.py | 2 +- Tests/test_flip.py | 6 ++-- Tests/test_geo.py | 8 ++--- Tests/test_kg.py | 20 +++++------ Tests/test_newtonRaphson.py | 8 ++--- Tests/test_remodelling.py | 6 ++-- Tests/test_tris.py | 2 +- Tests/test_utils.py | 12 +++---- Tests/test_vertexModel.py | 14 ++++---- Tests/tests.py | 6 ++-- pyVertexModel/__init__.py | 17 ---------- pyVertexModel/napari.yaml | 0 setup.py | 7 ++-- src/pyVertexModel/Kg/kgContractility.py | 4 +-- .../Kg/kgContractility_external.py | 4 +-- src/pyVertexModel/Kg/kgSubstrate.py | 4 +-- .../Kg/kgSurfaceCellBasedAdhesion.py | 6 ++-- src/pyVertexModel/Kg/kgTriAREnergyBarrier.py | 4 +-- src/pyVertexModel/Kg/kgTriEnergyBarrier.py | 6 ++-- src/pyVertexModel/Kg/kgViscosity.py | 2 +- src/pyVertexModel/Kg/kgVolume.py | 4 +-- src/pyVertexModel/__init__.py | 34 ++++++++++++++++++- .../algorithm/VertexModelVoronoi3D.py | 4 +-- src/pyVertexModel/algorithm/newtonRaphson.py | 18 +++++----- src/pyVertexModel/algorithm/vertexModel.py | 18 +++++----- .../algorithm/vertexModelBubbles.py | 4 +-- .../vertexModelVoronoiFromTimeImage.py | 8 ++--- .../analysis/analyse_in_vivo_ablation_data.py | 2 +- .../analysis/analyse_optuna_results.py | 4 +-- .../analysis/analyse_pre_ablation_state.py | 6 ++-- .../analysis/analyse_simulation.py | 4 +-- .../analysis/analyse_simulations.py | 4 +-- src/pyVertexModel/analysis/analysis_megha.py | 18 +++++----- .../analysis/analysis_space_exploration.py | 2 +- .../analysis/average_noise_files.py | 2 +- .../display_different_models_in_one_figure.py | 4 +-- .../analysis/find_required_purse_string.py | 8 ++--- .../analysis/get_same_feature_ablation.py | 6 ++-- .../analysis/obtain_best_parameters.py | 4 +-- .../analysis/obtain_vtks_from_file.py | 10 +++--- .../plot_parameters_based_on_height.py | 4 +-- src/pyVertexModel/geometry/cell.py | 6 ++-- .../geometry/degreesOfFreedom.py | 2 +- src/pyVertexModel/geometry/face.py | 4 +-- src/pyVertexModel/geometry/geo.py | 10 +++--- src/pyVertexModel/geometry/tris.py | 2 +- src/pyVertexModel/gui/qt_gui.py | 6 ++-- src/pyVertexModel/main.py | 8 ++--- src/pyVertexModel/main_bubbles.py | 4 +-- .../main_different_cell_shapes.py | 4 +-- src/pyVertexModel/main_optuna.py | 4 +-- src/pyVertexModel/main_paper_simulations.py | 8 ++--- src/pyVertexModel/mesh_remodelling/flip.py | 4 +-- .../mesh_remodelling/remodelling.py | 8 ++--- src/pyVertexModel/parameters/set.py | 4 +-- src/pyVertexModel/util/space_exploration.py | 12 +++---- 58 files changed, 206 insertions(+), 190 deletions(-) delete mode 100644 pyVertexModel/__init__.py delete mode 100644 pyVertexModel/napari.yaml diff --git a/Tests/test_cell.py b/Tests/test_cell.py index 59e1cf2f..0ece347f 100644 --- a/Tests/test_cell.py +++ b/Tests/test_cell.py @@ -2,7 +2,7 @@ from Tests.test_geo import check_if_cells_are_the_same from Tests.tests import Tests, load_data -from src.pyVertexModel.geometry.cell import Cell +from pyVertexModel.geometry.cell import Cell class TestCell(Tests): def test_compute_cell_area(self): diff --git a/Tests/test_degreesOfFreedom.py b/Tests/test_degreesOfFreedom.py index 5015e479..14ddf8ee 100644 --- a/Tests/test_degreesOfFreedom.py +++ b/Tests/test_degreesOfFreedom.py @@ -2,7 +2,7 @@ from Tests import test_kg from Tests.tests import Tests -from src.pyVertexModel.geometry.degreesOfFreedom import DegreesOfFreedom +from pyVertexModel.geometry.degreesOfFreedom import DegreesOfFreedom class TestDofs(Tests): diff --git a/Tests/test_face.py b/Tests/test_face.py index 845b4cb7..ac3444c3 100644 --- a/Tests/test_face.py +++ b/Tests/test_face.py @@ -1,7 +1,7 @@ import numpy as np from Tests.tests import Tests, load_data, assert_matrix -from src.pyVertexModel.geometry.face import get_key, Face +from pyVertexModel.geometry.face import get_key, Face class TestFace(Tests): diff --git a/Tests/test_flip.py b/Tests/test_flip.py index 3010a4b2..3367349e 100644 --- a/Tests/test_flip.py +++ b/Tests/test_flip.py @@ -3,9 +3,9 @@ from Tests.test_geo import check_if_cells_are_the_same from Tests.tests import Tests, load_data, assert_array1D -from src.pyVertexModel.geometry.degreesOfFreedom import DegreesOfFreedom -from src.pyVertexModel.geometry.geo import Geo -from src.pyVertexModel.mesh_remodelling.flip import y_flip_nm, y_flip_nm_recursive, post_flip +from pyVertexModel.geometry.degreesOfFreedom import DegreesOfFreedom +from pyVertexModel.geometry.geo import Geo +from pyVertexModel.mesh_remodelling.flip import y_flip_nm, y_flip_nm_recursive, post_flip class TestFlip(Tests): diff --git a/Tests/test_geo.py b/Tests/test_geo.py index ef6a6af6..3c7e25a9 100644 --- a/Tests/test_geo.py +++ b/Tests/test_geo.py @@ -1,10 +1,10 @@ import numpy as np from Tests.tests import Tests, load_data, assert_matrix, assert_array1D -from src.pyVertexModel.algorithm.vertexModelBubbles import extrapolate_ys_faces_ellipsoid -from src.pyVertexModel.algorithm.vertexModelVoronoiFromTimeImage import VertexModelVoronoiFromTimeImage -from src.pyVertexModel.geometry.geo import Geo, get_node_neighbours_per_domain -from src.pyVertexModel.util.utils import load_state, ismember_rows +from pyVertexModel.algorithm.vertexModelBubbles import extrapolate_ys_faces_ellipsoid +from pyVertexModel.algorithm.vertexModelVoronoiFromTimeImage import VertexModelVoronoiFromTimeImage +from pyVertexModel.geometry.geo import Geo, get_node_neighbours_per_domain +from pyVertexModel.util.utils import load_state, ismember_rows from Tests.tests import Tests, load_data, assert_matrix diff --git a/Tests/test_kg.py b/Tests/test_kg.py index 84ec32ac..276707e2 100644 --- a/Tests/test_kg.py +++ b/Tests/test_kg.py @@ -1,16 +1,16 @@ import numpy as np from Tests.tests import Tests, load_data, assert_array1D, assert_matrix -from src.pyVertexModel.Kg import kg_functions -from src.pyVertexModel.Kg.kgContractility import KgContractility -from src.pyVertexModel.Kg.kgSubstrate import KgSubstrate -from src.pyVertexModel.Kg.kgSurfaceCellBasedAdhesion import KgSurfaceCellBasedAdhesion -from src.pyVertexModel.Kg.kgTriAREnergyBarrier import KgTriAREnergyBarrier -from src.pyVertexModel.Kg.kgTriEnergyBarrier import KgTriEnergyBarrier -from src.pyVertexModel.Kg.kgViscosity import KgViscosity -from src.pyVertexModel.Kg.kgVolume import KgVolume -from src.pyVertexModel.algorithm.newtonRaphson import KgGlobal -from src.pyVertexModel.geometry.geo import Geo +from pyVertexModel.Kg import kg_functions +from pyVertexModel.Kg.kgContractility import KgContractility +from pyVertexModel.Kg.kgSubstrate import KgSubstrate +from pyVertexModel.Kg.kgSurfaceCellBasedAdhesion import KgSurfaceCellBasedAdhesion +from pyVertexModel.Kg.kgTriAREnergyBarrier import KgTriAREnergyBarrier +from pyVertexModel.Kg.kgTriEnergyBarrier import KgTriEnergyBarrier +from pyVertexModel.Kg.kgViscosity import KgViscosity +from pyVertexModel.Kg.kgVolume import KgVolume +from pyVertexModel.algorithm.newtonRaphson import KgGlobal +from pyVertexModel.geometry.geo import Geo def test_kg_global_filename(filename): diff --git a/Tests/test_newtonRaphson.py b/Tests/test_newtonRaphson.py index 7499fc4e..c67c8322 100644 --- a/Tests/test_newtonRaphson.py +++ b/Tests/test_newtonRaphson.py @@ -2,11 +2,11 @@ from Tests.test_geo import check_if_cells_are_the_same from Tests.tests import load_data, Tests, assert_array1D, assert_matrix -from src.pyVertexModel.algorithm.newtonRaphson import line_search, newton_raphson, newton_raphson_iteration, ml_divide, \ +from pyVertexModel.algorithm.newtonRaphson import line_search, newton_raphson, newton_raphson_iteration, ml_divide, \ solve_remodeling_step -from src.pyVertexModel.geometry.degreesOfFreedom import DegreesOfFreedom -from src.pyVertexModel.geometry.geo import Geo -from src.pyVertexModel.parameters.set import Set +from pyVertexModel.geometry.degreesOfFreedom import DegreesOfFreedom +from pyVertexModel.geometry.geo import Geo +from pyVertexModel.parameters.set import Set class TestNewtonRaphson(Tests): diff --git a/Tests/test_remodelling.py b/Tests/test_remodelling.py index 576a6e28..b97c8b68 100644 --- a/Tests/test_remodelling.py +++ b/Tests/test_remodelling.py @@ -2,9 +2,9 @@ from Tests.test_geo import check_if_cells_are_the_same from Tests.tests import Tests, load_data, assert_matrix -from src.pyVertexModel.geometry.degreesOfFreedom import DegreesOfFreedom -from src.pyVertexModel.geometry.geo import Geo -from src.pyVertexModel.mesh_remodelling.remodelling import Remodelling +from pyVertexModel.geometry.degreesOfFreedom import DegreesOfFreedom +from pyVertexModel.geometry.geo import Geo +from pyVertexModel.mesh_remodelling.remodelling import Remodelling class TestRemodelling(Tests): diff --git a/Tests/test_tris.py b/Tests/test_tris.py index b657a53e..d7bc3ee0 100644 --- a/Tests/test_tris.py +++ b/Tests/test_tris.py @@ -1,7 +1,7 @@ import numpy as np from Tests.tests import load_data, Tests, assert_array1D -from src.pyVertexModel.geometry.tris import Tris +from pyVertexModel.geometry.tris import Tris class TestTris(Tests): diff --git a/Tests/test_utils.py b/Tests/test_utils.py index be49b9f1..0d0680fb 100644 --- a/Tests/test_utils.py +++ b/Tests/test_utils.py @@ -2,12 +2,12 @@ from Tests.test_geo import check_if_cells_are_the_same from Tests.tests import Tests -from src.pyVertexModel.geometry.cell import Cell -from src.pyVertexModel.geometry.degreesOfFreedom import DegreesOfFreedom -from src.pyVertexModel.geometry.face import Face -from src.pyVertexModel.geometry.geo import Geo -from src.pyVertexModel.geometry.tris import Tris -from src.pyVertexModel.util.utils import save_backup_vars, load_backup_vars +from pyVertexModel.geometry.cell import Cell +from pyVertexModel.geometry.degreesOfFreedom import DegreesOfFreedom +from pyVertexModel.geometry.face import Face +from pyVertexModel.geometry.geo import Geo +from pyVertexModel.geometry.tris import Tris +from pyVertexModel.util.utils import save_backup_vars, load_backup_vars class TestUtils(Tests): diff --git a/Tests/test_vertexModel.py b/Tests/test_vertexModel.py index 662911b3..bf837173 100644 --- a/Tests/test_vertexModel.py +++ b/Tests/test_vertexModel.py @@ -7,16 +7,16 @@ from Tests import TEST_DIRECTORY from Tests.test_geo import check_if_cells_are_the_same from Tests.tests import Tests, assert_matrix, load_data, assert_array1D -from src.pyVertexModel.algorithm import newtonRaphson -from src.pyVertexModel.algorithm.newtonRaphson import newton_raphson -from src.pyVertexModel.algorithm.vertexModel import create_tetrahedra -from src.pyVertexModel.algorithm.vertexModelBubbles import build_topo, SeedWithBoundingBox, generate_first_ghost_nodes, \ +from pyVertexModel.algorithm import newtonRaphson +from pyVertexModel.algorithm.newtonRaphson import newton_raphson +from pyVertexModel.algorithm.vertexModel import create_tetrahedra +from pyVertexModel.algorithm.vertexModelBubbles import build_topo, SeedWithBoundingBox, generate_first_ghost_nodes, \ delaunay_compute_entities, VertexModelBubbles -from src.pyVertexModel.algorithm.vertexModelVoronoiFromTimeImage import build_triplets_of_neighs, \ +from pyVertexModel.algorithm.vertexModelVoronoiFromTimeImage import build_triplets_of_neighs, \ VertexModelVoronoiFromTimeImage, add_tetrahedral_intercalations, \ get_four_fold_vertices, divide_quartets_neighbours, process_image -from src.pyVertexModel.geometry.degreesOfFreedom import DegreesOfFreedom -from src.pyVertexModel.util.utils import save_backup_vars +from pyVertexModel.geometry.degreesOfFreedom import DegreesOfFreedom +from pyVertexModel.util.utils import save_backup_vars class TestVertexModel(Tests): diff --git a/Tests/tests.py b/Tests/tests.py index bc6b2f84..eef2d05d 100644 --- a/Tests/tests.py +++ b/Tests/tests.py @@ -3,9 +3,9 @@ import numpy as np from os.path import exists, abspath -from src.pyVertexModel.geometry.geo import Geo -from src.pyVertexModel.parameters.set import Set -from src.pyVertexModel.Kg import kg_functions +from pyVertexModel.geometry.geo import Geo +from pyVertexModel.parameters.set import Set +from pyVertexModel.Kg import kg_functions def load_data(file_name, return_geo=True): test_dir = abspath('Tests/data/%s' % file_name) diff --git a/pyVertexModel/__init__.py b/pyVertexModel/__init__.py deleted file mode 100644 index e0fcb25c..00000000 --- a/pyVertexModel/__init__.py +++ /dev/null @@ -1,17 +0,0 @@ -from __future__ import annotations - -import logging - -# get the logger instance -logger = logging.getLogger(__name__) - -formatter = logging.Formatter( - "%(levelname)s [%(asctime)s] epitools: %(message)s", - datefmt="%Y/%m/%d %I:%M:%S %p", -) -console_handler = logging.StreamHandler() -console_handler.setFormatter(formatter) -logger.addHandler(console_handler) - -logger.setLevel("INFO") -logger.propagate = False diff --git a/pyVertexModel/napari.yaml b/pyVertexModel/napari.yaml deleted file mode 100644 index e69de29b..00000000 diff --git a/setup.py b/setup.py index 1fddb0c6..5d448142 100644 --- a/setup.py +++ b/setup.py @@ -1,13 +1,14 @@ import numpy as np from Cython.Build import cythonize -from setuptools import Extension, setup +from setuptools import Extension, setup, find_packages ext_options = {"compiler_directives": {"profile": True}, "annotate": True} -extensions = [Extension("src.pyVertexModel.Kg.kg_functions", ["src/pyVertexModel/Kg/kg_functions.pyx"])] +extensions = [Extension("pyVertexModel.Kg.kg_functions", ["src/pyVertexModel/Kg/kg_functions.pyx"])] setup( name='pyVertexModel', - packages=['src', 'src.pyVertexModel', 'src.pyVertexModel.Kg', 'pyVertexModel'], + packages=find_packages(where='src'), + package_dir={'': 'src'}, ext_modules=cythonize(extensions, **ext_options), include_dirs=[np.get_include()], zip_safe=False, diff --git a/src/pyVertexModel/Kg/kgContractility.py b/src/pyVertexModel/Kg/kgContractility.py index ed051ce3..f9a6a20d 100644 --- a/src/pyVertexModel/Kg/kgContractility.py +++ b/src/pyVertexModel/Kg/kgContractility.py @@ -2,8 +2,8 @@ import numpy as np -from src.pyVertexModel.Kg.kg import Kg -from src.pyVertexModel.util.utils import get_interface +from pyVertexModel.Kg.kg import Kg +from pyVertexModel.util.utils import get_interface def get_intensity_based_contractility(c_set, current_face, intensity_images=True): diff --git a/src/pyVertexModel/Kg/kgContractility_external.py b/src/pyVertexModel/Kg/kgContractility_external.py index 0fec05c2..79ba64bb 100644 --- a/src/pyVertexModel/Kg/kgContractility_external.py +++ b/src/pyVertexModel/Kg/kgContractility_external.py @@ -3,8 +3,8 @@ import numpy as np -from src.pyVertexModel.Kg.kgContractility import KgContractility, compute_energy_contractility -from src.pyVertexModel.util.utils import get_interface +from pyVertexModel.Kg.kgContractility import KgContractility, compute_energy_contractility +from pyVertexModel.util.utils import get_interface class KgContractilityExternal(KgContractility): diff --git a/src/pyVertexModel/Kg/kgSubstrate.py b/src/pyVertexModel/Kg/kgSubstrate.py index f1e3fd7a..572f2e9a 100644 --- a/src/pyVertexModel/Kg/kgSubstrate.py +++ b/src/pyVertexModel/Kg/kgSubstrate.py @@ -2,8 +2,8 @@ import numpy as np -from src.pyVertexModel.Kg.kg import Kg -from src.pyVertexModel.util.utils import get_interface +from pyVertexModel.Kg.kg import Kg +from pyVertexModel.util.utils import get_interface class KgSubstrate(Kg): diff --git a/src/pyVertexModel/Kg/kgSurfaceCellBasedAdhesion.py b/src/pyVertexModel/Kg/kgSurfaceCellBasedAdhesion.py index f904f98b..cb618f1b 100644 --- a/src/pyVertexModel/Kg/kgSurfaceCellBasedAdhesion.py +++ b/src/pyVertexModel/Kg/kgSurfaceCellBasedAdhesion.py @@ -2,9 +2,9 @@ import numpy as np -from src.pyVertexModel.Kg import kg_functions -from src.pyVertexModel.Kg.kg import Kg -from src.pyVertexModel.util.utils import get_interface +from pyVertexModel.Kg import kg_functions +from pyVertexModel.Kg.kg import Kg +from pyVertexModel.util.utils import get_interface def get_lambda(c_cell, face, Set, Geo): diff --git a/src/pyVertexModel/Kg/kgTriAREnergyBarrier.py b/src/pyVertexModel/Kg/kgTriAREnergyBarrier.py index 050c2107..84f41c17 100644 --- a/src/pyVertexModel/Kg/kgTriAREnergyBarrier.py +++ b/src/pyVertexModel/Kg/kgTriAREnergyBarrier.py @@ -2,8 +2,8 @@ import numpy as np -from src.pyVertexModel.Kg.kg import Kg -from src.pyVertexModel.util.utils import get_interface +from pyVertexModel.Kg.kg import Kg +from pyVertexModel.util.utils import get_interface class KgTriAREnergyBarrier(Kg): diff --git a/src/pyVertexModel/Kg/kgTriEnergyBarrier.py b/src/pyVertexModel/Kg/kgTriEnergyBarrier.py index 7169d1a8..50770e6a 100644 --- a/src/pyVertexModel/Kg/kgTriEnergyBarrier.py +++ b/src/pyVertexModel/Kg/kgTriEnergyBarrier.py @@ -2,9 +2,9 @@ import numpy as np -from src.pyVertexModel.Kg import kg_functions -from src.pyVertexModel.Kg.kg import Kg -from src.pyVertexModel.util.utils import get_interface +from pyVertexModel.Kg import kg_functions +from pyVertexModel.Kg.kg import Kg +from pyVertexModel.util.utils import get_interface class KgTriEnergyBarrier(Kg): diff --git a/src/pyVertexModel/Kg/kgViscosity.py b/src/pyVertexModel/Kg/kgViscosity.py index 60dfd1ef..02aae007 100644 --- a/src/pyVertexModel/Kg/kgViscosity.py +++ b/src/pyVertexModel/Kg/kgViscosity.py @@ -2,7 +2,7 @@ import numpy as np -from src.pyVertexModel.Kg.kg import Kg +from pyVertexModel.Kg.kg import Kg class KgViscosity(Kg): diff --git a/src/pyVertexModel/Kg/kgVolume.py b/src/pyVertexModel/Kg/kgVolume.py index 32030f65..fb3aa9e3 100644 --- a/src/pyVertexModel/Kg/kgVolume.py +++ b/src/pyVertexModel/Kg/kgVolume.py @@ -2,8 +2,8 @@ import numpy as np -from src.pyVertexModel.Kg import kg_functions -from src.pyVertexModel.Kg.kg import Kg +from pyVertexModel.Kg import kg_functions +from pyVertexModel.Kg.kg import Kg def compute_final_k_volume(ge, K, Vol, Vol0, n): diff --git a/src/pyVertexModel/__init__.py b/src/pyVertexModel/__init__.py index 7df9f7aa..f8385adf 100644 --- a/src/pyVertexModel/__init__.py +++ b/src/pyVertexModel/__init__.py @@ -1 +1,33 @@ -from ._version import __version__ \ No newline at end of file +import logging +import os +import warnings + +from ._version import __version__ + +# PROJECT_DIRECTORY = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +PROJECT_DIRECTORY = os.getenv('PROJECT_DIR', os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))) + +# get the logger instance +logger = logging.getLogger("pyVertexModel") + +formatter = logging.Formatter( + "%(levelname)s [%(asctime)s] pyVertexModel: %(message)s", + datefmt="%Y/%m/%d %I:%M:%S %p", +) +console_handler = logging.StreamHandler() +console_handler.setFormatter(formatter) +logger.addHandler(console_handler) + +logger.setLevel(logging.DEBUG) +logger.propagate = False + + +# Function to handle warnings +def warning_handler(message, category, filename, lineno, file=None, line=None): + logger.warning(f'{filename}:{lineno}: {category.__name__}: {message}') + + +# Set the warnings' showwarning function to the handler +warnings.showwarning = warning_handler + +__all__ = ['__version__', 'PROJECT_DIRECTORY', 'logger'] \ No newline at end of file diff --git a/src/pyVertexModel/algorithm/VertexModelVoronoi3D.py b/src/pyVertexModel/algorithm/VertexModelVoronoi3D.py index bd99921f..43d64927 100644 --- a/src/pyVertexModel/algorithm/VertexModelVoronoi3D.py +++ b/src/pyVertexModel/algorithm/VertexModelVoronoi3D.py @@ -1,8 +1,8 @@ import numpy as np from scipy.spatial import Delaunay, Voronoi -from src.pyVertexModel.algorithm.vertexModel import VertexModel, create_tetrahedra, add_faces_and_vertices_to_x -from src.pyVertexModel.algorithm.vertexModelVoronoiFromTimeImage import generate_neighbours_network +from pyVertexModel.algorithm.vertexModel import VertexModel, create_tetrahedra, add_faces_and_vertices_to_x +from pyVertexModel.algorithm.vertexModelVoronoiFromTimeImage import generate_neighbours_network def relax_points(X): diff --git a/src/pyVertexModel/algorithm/newtonRaphson.py b/src/pyVertexModel/algorithm/newtonRaphson.py index d8574c69..ef1155f7 100644 --- a/src/pyVertexModel/algorithm/newtonRaphson.py +++ b/src/pyVertexModel/algorithm/newtonRaphson.py @@ -2,15 +2,15 @@ import numpy as np -from src.pyVertexModel.Kg.kgContractility import KgContractility -from src.pyVertexModel.Kg.kgContractility_external import KgContractilityExternal -from src.pyVertexModel.Kg.kgSubstrate import KgSubstrate -from src.pyVertexModel.Kg.kgSurfaceCellBasedAdhesion import KgSurfaceCellBasedAdhesion -from src.pyVertexModel.Kg.kgTriAREnergyBarrier import KgTriAREnergyBarrier -from src.pyVertexModel.Kg.kgTriEnergyBarrier import KgTriEnergyBarrier -from src.pyVertexModel.Kg.kgViscosity import KgViscosity -from src.pyVertexModel.Kg.kgVolume import KgVolume -from src.pyVertexModel.util.utils import face_centres_to_middle_of_neighbours_vertices, get_interface +from pyVertexModel.Kg.kgContractility import KgContractility +from pyVertexModel.Kg.kgContractility_external import KgContractilityExternal +from pyVertexModel.Kg.kgSubstrate import KgSubstrate +from pyVertexModel.Kg.kgSurfaceCellBasedAdhesion import KgSurfaceCellBasedAdhesion +from pyVertexModel.Kg.kgTriAREnergyBarrier import KgTriAREnergyBarrier +from pyVertexModel.Kg.kgTriEnergyBarrier import KgTriEnergyBarrier +from pyVertexModel.Kg.kgViscosity import KgViscosity +from pyVertexModel.Kg.kgVolume import KgVolume +from pyVertexModel.util.utils import face_centres_to_middle_of_neighbours_vertices, get_interface logger = logging.getLogger("pyVertexModel") diff --git a/src/pyVertexModel/algorithm/vertexModel.py b/src/pyVertexModel/algorithm/vertexModel.py index 51ae4b66..27fb0e7a 100644 --- a/src/pyVertexModel/algorithm/vertexModel.py +++ b/src/pyVertexModel/algorithm/vertexModel.py @@ -15,15 +15,15 @@ from scipy.optimize import minimize from skimage.measure import regionprops -from src import logger, PROJECT_DIRECTORY -from src.pyVertexModel.Kg.kg import add_noise_to_parameter -from src.pyVertexModel.Kg.kgSurfaceCellBasedAdhesion import KgSurfaceCellBasedAdhesion -from src.pyVertexModel.algorithm import newtonRaphson -from src.pyVertexModel.geometry import degreesOfFreedom -from src.pyVertexModel.geometry.geo import Geo, get_node_neighbours_per_domain, edge_valence, get_node_neighbours -from src.pyVertexModel.mesh_remodelling.remodelling import Remodelling, smoothing_cell_surfaces_mesh -from src.pyVertexModel.parameters.set import Set -from src.pyVertexModel.util.utils import save_state, save_backup_vars, load_backup_vars, copy_non_mutable_attributes, \ +from pyVertexModel import logger, PROJECT_DIRECTORY +from pyVertexModel.Kg.kg import add_noise_to_parameter +from pyVertexModel.Kg.kgSurfaceCellBasedAdhesion import KgSurfaceCellBasedAdhesion +from pyVertexModel.algorithm import newtonRaphson +from pyVertexModel.geometry import degreesOfFreedom +from pyVertexModel.geometry.geo import Geo, get_node_neighbours_per_domain, edge_valence, get_node_neighbours +from pyVertexModel.mesh_remodelling.remodelling import Remodelling, smoothing_cell_surfaces_mesh +from pyVertexModel.parameters.set import Set +from pyVertexModel.util.utils import save_state, save_backup_vars, load_backup_vars, copy_non_mutable_attributes, \ screenshot, screenshot_, load_state, find_optimal_deform_array_X_Y, find_timepoint_in_model logger = logging.getLogger("pyVertexModel") diff --git a/src/pyVertexModel/algorithm/vertexModelBubbles.py b/src/pyVertexModel/algorithm/vertexModelBubbles.py index e10e6637..731ab3e6 100644 --- a/src/pyVertexModel/algorithm/vertexModelBubbles.py +++ b/src/pyVertexModel/algorithm/vertexModelBubbles.py @@ -6,8 +6,8 @@ from scipy.optimize import minimize from scipy.spatial import Delaunay -from src.pyVertexModel.algorithm.vertexModel import VertexModel -from src.pyVertexModel.util.utils import save_state +from pyVertexModel.algorithm.vertexModel import VertexModel +from pyVertexModel.util.utils import save_state logger = logging.getLogger("pyVertexModel") diff --git a/src/pyVertexModel/algorithm/vertexModelVoronoiFromTimeImage.py b/src/pyVertexModel/algorithm/vertexModelVoronoiFromTimeImage.py index 1475fb32..601feb98 100644 --- a/src/pyVertexModel/algorithm/vertexModelVoronoiFromTimeImage.py +++ b/src/pyVertexModel/algorithm/vertexModelVoronoiFromTimeImage.py @@ -16,11 +16,11 @@ from skimage.measure import regionprops_table from skimage.morphology import dilation -from src import PROJECT_DIRECTORY, logger -from src.pyVertexModel.algorithm.vertexModel import VertexModel, generate_tetrahedra_from_information, \ +from pyVertexModel import PROJECT_DIRECTORY, logger +from pyVertexModel.algorithm.vertexModel import VertexModel, generate_tetrahedra_from_information, \ calculate_cell_height_on_model -from src.pyVertexModel.geometry.geo import Geo -from src.pyVertexModel.util.utils import ismember_rows, save_variables, save_state, load_state, screenshot_ +from pyVertexModel.geometry.geo import Geo +from pyVertexModel.util.utils import ismember_rows, save_variables, save_state, load_state, screenshot_ def build_quartets_of_neighs_2d(neighbours): diff --git a/src/pyVertexModel/analysis/analyse_in_vivo_ablation_data.py b/src/pyVertexModel/analysis/analyse_in_vivo_ablation_data.py index 18c80609..3f5fd92d 100644 --- a/src/pyVertexModel/analysis/analyse_in_vivo_ablation_data.py +++ b/src/pyVertexModel/analysis/analyse_in_vivo_ablation_data.py @@ -4,7 +4,7 @@ import pandas as pd from matplotlib import pyplot as plt -from src.pyVertexModel.analysis.analyse_simulation import fit_ablation_equation, recoil_model +from pyVertexModel.analysis.analyse_simulation import fit_ablation_equation, recoil_model input_folders = '/media/pablo/d7c61090-024c-469a-930c-f5ada47fb049/PabloVicenteMunuera/VertexModel/pyVertexModel/data/' diff --git a/src/pyVertexModel/analysis/analyse_optuna_results.py b/src/pyVertexModel/analysis/analyse_optuna_results.py index 0073f826..ca3a0251 100644 --- a/src/pyVertexModel/analysis/analyse_optuna_results.py +++ b/src/pyVertexModel/analysis/analyse_optuna_results.py @@ -8,8 +8,8 @@ import seaborn as sns from scipy.optimize import curve_fit -from src import PROJECT_DIRECTORY -from src.pyVertexModel.util.space_exploration import plot_optuna_all, create_study_name +from pyVertexModel import PROJECT_DIRECTORY +from pyVertexModel.util.space_exploration import plot_optuna_all, create_study_name ## Create a study object and optimize the objective function original_wing_disc_height = 15 # in microns diff --git a/src/pyVertexModel/analysis/analyse_pre_ablation_state.py b/src/pyVertexModel/analysis/analyse_pre_ablation_state.py index dcbad9f8..851f3e9f 100644 --- a/src/pyVertexModel/analysis/analyse_pre_ablation_state.py +++ b/src/pyVertexModel/analysis/analyse_pre_ablation_state.py @@ -4,9 +4,9 @@ import numpy as np import pandas as pd -from src.pyVertexModel.algorithm.vertexModelVoronoiFromTimeImage import VertexModelVoronoiFromTimeImage -from src.pyVertexModel.analysis.analyse_simulation import analyse_edge_recoil -from src.pyVertexModel.util.utils import load_state, plot_figure_with_line +from pyVertexModel.algorithm.vertexModelVoronoiFromTimeImage import VertexModelVoronoiFromTimeImage +from pyVertexModel.analysis.analyse_simulation import analyse_edge_recoil +from pyVertexModel.util.utils import load_state, plot_figure_with_line folder = '/media/pablo/d7c61090-024c-469a-930c-f5ada47fb049/PabloVicenteMunuera/VertexModel/pyVertexModel/Result/to_calculate_ps_recoil/c/' diff --git a/src/pyVertexModel/analysis/analyse_simulation.py b/src/pyVertexModel/analysis/analyse_simulation.py index ec856ac5..76254712 100644 --- a/src/pyVertexModel/analysis/analyse_simulation.py +++ b/src/pyVertexModel/analysis/analyse_simulation.py @@ -7,8 +7,8 @@ from matplotlib import pyplot as plt from scipy.optimize import curve_fit -from src.pyVertexModel.algorithm.vertexModel import VertexModel, logger -from src.pyVertexModel.util.utils import load_state, load_variables, save_variables, screenshot +from pyVertexModel.algorithm.vertexModel import VertexModel, logger +from pyVertexModel.util.utils import load_state, load_variables, save_variables, screenshot def analyse_simulation(folder): diff --git a/src/pyVertexModel/analysis/analyse_simulations.py b/src/pyVertexModel/analysis/analyse_simulations.py index 25562097..e0aed197 100644 --- a/src/pyVertexModel/analysis/analyse_simulations.py +++ b/src/pyVertexModel/analysis/analyse_simulations.py @@ -3,8 +3,8 @@ import numpy as np import pandas as pd -from src.pyVertexModel.analysis.analyse_simulation import analyse_simulation, create_video -from src.pyVertexModel.util.utils import plot_figure_with_line +from pyVertexModel.analysis.analyse_simulation import analyse_simulation, create_video +from pyVertexModel.util.utils import plot_figure_with_line folder = '/media/pablo/d7c61090-024c-469a-930c-f5ada47fb049/PabloVicenteMunuera/VertexModel/pyVertexModel/Result/same_recoil_wound_area_results/c/' diff --git a/src/pyVertexModel/analysis/analysis_megha.py b/src/pyVertexModel/analysis/analysis_megha.py index 8dcc2972..a763265d 100644 --- a/src/pyVertexModel/analysis/analysis_megha.py +++ b/src/pyVertexModel/analysis/analysis_megha.py @@ -5,15 +5,15 @@ import matplotlib.cm as cm from scipy import stats -from src import PROJECT_DIRECTORY -from src.pyVertexModel.Kg.kgContractility import KgContractility -from src.pyVertexModel.Kg.kgSubstrate import KgSubstrate -from src.pyVertexModel.Kg.kgSurfaceCellBasedAdhesion import KgSurfaceCellBasedAdhesion -from src.pyVertexModel.Kg.kgTriAREnergyBarrier import KgTriAREnergyBarrier -from src.pyVertexModel.Kg.kgVolume import KgVolume -from src.pyVertexModel.algorithm.vertexModelVoronoiFromTimeImage import VertexModelVoronoiFromTimeImage -from src.pyVertexModel.geometry.cell import compute_2d_circularity -from src.pyVertexModel.util.utils import load_state, save_variables, load_variables, screenshot +from pyVertexModel import PROJECT_DIRECTORY +from pyVertexModel.Kg.kgContractility import KgContractility +from pyVertexModel.Kg.kgSubstrate import KgSubstrate +from pyVertexModel.Kg.kgSurfaceCellBasedAdhesion import KgSurfaceCellBasedAdhesion +from pyVertexModel.Kg.kgTriAREnergyBarrier import KgTriAREnergyBarrier +from pyVertexModel.Kg.kgVolume import KgVolume +from pyVertexModel.algorithm.vertexModelVoronoiFromTimeImage import VertexModelVoronoiFromTimeImage +from pyVertexModel.geometry.cell import compute_2d_circularity +from pyVertexModel.util.utils import load_state, save_variables, load_variables, screenshot def compute_aspect_ratios(cell): diff --git a/src/pyVertexModel/analysis/analysis_space_exploration.py b/src/pyVertexModel/analysis/analysis_space_exploration.py index 7a684c2e..8b2688f1 100644 --- a/src/pyVertexModel/analysis/analysis_space_exploration.py +++ b/src/pyVertexModel/analysis/analysis_space_exploration.py @@ -1,7 +1,7 @@ # Get stats from the space exploration study import optuna -from src.pyVertexModel.util.space_exploration import plot_optuna_all +from pyVertexModel.util.space_exploration import plot_optuna_all output_directory = '/media/pablo/d7c61090-024c-469a-930c-f5ada47fb049/PabloVicenteMunuera/VertexModel/pyVertexModel/Result/' #error_type = '_gr_all_parameters_' diff --git a/src/pyVertexModel/analysis/average_noise_files.py b/src/pyVertexModel/analysis/average_noise_files.py index 01f1758b..bc3d9026 100644 --- a/src/pyVertexModel/analysis/average_noise_files.py +++ b/src/pyVertexModel/analysis/average_noise_files.py @@ -2,7 +2,7 @@ import pandas as pd -from src import PROJECT_DIRECTORY +from pyVertexModel import PROJECT_DIRECTORY folder_to_average = 'final_results_noise_' noise_type = '_0.2' diff --git a/src/pyVertexModel/analysis/display_different_models_in_one_figure.py b/src/pyVertexModel/analysis/display_different_models_in_one_figure.py index 970258a0..a6747066 100644 --- a/src/pyVertexModel/analysis/display_different_models_in_one_figure.py +++ b/src/pyVertexModel/analysis/display_different_models_in_one_figure.py @@ -2,8 +2,8 @@ import pyvista as pv import matplotlib -from src.pyVertexModel.geometry.geo import Geo -from src.pyVertexModel.util.utils import load_state +from pyVertexModel.geometry.geo import Geo +from pyVertexModel.util.utils import load_state matplotlib.use('Agg') import matplotlib.pyplot as plt diff --git a/src/pyVertexModel/analysis/find_required_purse_string.py b/src/pyVertexModel/analysis/find_required_purse_string.py index 7ea61ec7..a9a20d35 100644 --- a/src/pyVertexModel/analysis/find_required_purse_string.py +++ b/src/pyVertexModel/analysis/find_required_purse_string.py @@ -3,10 +3,10 @@ import sys import pandas as pd -from src import PROJECT_DIRECTORY -from src.pyVertexModel.algorithm.vertexModelVoronoiFromTimeImage import VertexModelVoronoiFromTimeImage -from src.pyVertexModel.analysis.analyse_simulation import analyse_simulation -from src.pyVertexModel.util.utils import load_state, plot_figure_with_line +from pyVertexModel import PROJECT_DIRECTORY +from pyVertexModel.algorithm.vertexModelVoronoiFromTimeImage import VertexModelVoronoiFromTimeImage +from pyVertexModel.analysis.analyse_simulation import analyse_simulation +from pyVertexModel.util.utils import load_state, plot_figure_with_line plot_figures = True diff --git a/src/pyVertexModel/analysis/get_same_feature_ablation.py b/src/pyVertexModel/analysis/get_same_feature_ablation.py index dc2ff00c..61fcafb9 100644 --- a/src/pyVertexModel/analysis/get_same_feature_ablation.py +++ b/src/pyVertexModel/analysis/get_same_feature_ablation.py @@ -3,9 +3,9 @@ import os import numpy as np import pandas as pd -from src import PROJECT_DIRECTORY -from src.pyVertexModel.algorithm.vertexModelVoronoiFromTimeImage import VertexModelVoronoiFromTimeImage -from src.pyVertexModel.util.utils import load_state +from pyVertexModel import PROJECT_DIRECTORY +from pyVertexModel.algorithm.vertexModelVoronoiFromTimeImage import VertexModelVoronoiFromTimeImage +from pyVertexModel.util.utils import load_state original_wing_disc_height = 15.0 set_of_resize_z = np.array([0.0001, 0.001, 0.01, 0.1, 0.5, 1.0, 2.0]) * original_wing_disc_height diff --git a/src/pyVertexModel/analysis/obtain_best_parameters.py b/src/pyVertexModel/analysis/obtain_best_parameters.py index d9097d6f..5d43a9fb 100644 --- a/src/pyVertexModel/analysis/obtain_best_parameters.py +++ b/src/pyVertexModel/analysis/obtain_best_parameters.py @@ -2,8 +2,8 @@ import pandas as pd -from src import PROJECT_DIRECTORY -from src.pyVertexModel.util.utils import plot_figure_with_line +from pyVertexModel import PROJECT_DIRECTORY +from pyVertexModel.util.utils import plot_figure_with_line ## Obtain the best parameters per resize_z and percentage of scutoids diff --git a/src/pyVertexModel/analysis/obtain_vtks_from_file.py b/src/pyVertexModel/analysis/obtain_vtks_from_file.py index e0a1b16e..ac6787d4 100644 --- a/src/pyVertexModel/analysis/obtain_vtks_from_file.py +++ b/src/pyVertexModel/analysis/obtain_vtks_from_file.py @@ -1,11 +1,11 @@ import os import numpy as np -from src.pyVertexModel.Kg.kgSurfaceCellBasedAdhesion import KgSurfaceCellBasedAdhesion -from src.pyVertexModel.Kg.kgVolume import KgVolume -from src.pyVertexModel.algorithm.vertexModel import VertexModel -from src.pyVertexModel.analysis.analyse_simulation import create_video -from src.pyVertexModel.util.utils import load_state, screenshot +from pyVertexModel.Kg.kgSurfaceCellBasedAdhesion import KgSurfaceCellBasedAdhesion +from pyVertexModel.Kg.kgVolume import KgVolume +from pyVertexModel.algorithm.vertexModel import VertexModel +from pyVertexModel.analysis.analyse_simulation import create_video +from pyVertexModel.util.utils import load_state, screenshot all_files = False if all_files: diff --git a/src/pyVertexModel/analysis/plot_parameters_based_on_height.py b/src/pyVertexModel/analysis/plot_parameters_based_on_height.py index d2068f5a..aeec4287 100644 --- a/src/pyVertexModel/analysis/plot_parameters_based_on_height.py +++ b/src/pyVertexModel/analysis/plot_parameters_based_on_height.py @@ -4,8 +4,8 @@ import numpy as np import matplotlib.pyplot as plt -from src import PROJECT_DIRECTORY -from src.pyVertexModel.util.utils import lambda_s1_curve, lambda_s2_curve +from pyVertexModel import PROJECT_DIRECTORY +from pyVertexModel.util.utils import lambda_s1_curve, lambda_s2_curve # Define the original wing disc height original_wing_disc_height = 15.0 # in microns diff --git a/src/pyVertexModel/geometry/cell.py b/src/pyVertexModel/geometry/cell.py index 348d2266..a30538f7 100644 --- a/src/pyVertexModel/geometry/cell.py +++ b/src/pyVertexModel/geometry/cell.py @@ -6,9 +6,9 @@ from numpy.ma.extras import setxor1d from sklearn.decomposition import PCA -from src.pyVertexModel.Kg.kg import add_noise_to_parameter -from src.pyVertexModel.geometry import face -from src.pyVertexModel.util.utils import copy_non_mutable_attributes, get_interface +from pyVertexModel.Kg.kg import add_noise_to_parameter +from pyVertexModel.geometry import face +from pyVertexModel.util.utils import copy_non_mutable_attributes, get_interface def compute_2d_circularity(area, perimeter): diff --git a/src/pyVertexModel/geometry/degreesOfFreedom.py b/src/pyVertexModel/geometry/degreesOfFreedom.py index 2723a4a3..be15f32e 100644 --- a/src/pyVertexModel/geometry/degreesOfFreedom.py +++ b/src/pyVertexModel/geometry/degreesOfFreedom.py @@ -1,6 +1,6 @@ import numpy as np -from src.pyVertexModel.util.utils import copy_non_mutable_attributes +from pyVertexModel.util.utils import copy_non_mutable_attributes class DegreesOfFreedom: diff --git a/src/pyVertexModel/geometry/face.py b/src/pyVertexModel/geometry/face.py index 35ecd13e..fe73e5c7 100644 --- a/src/pyVertexModel/geometry/face.py +++ b/src/pyVertexModel/geometry/face.py @@ -1,7 +1,7 @@ import numpy as np -from src.pyVertexModel.geometry import tris -from src.pyVertexModel.util.utils import copy_non_mutable_attributes, get_interface +from pyVertexModel.geometry import tris +from pyVertexModel.util.utils import copy_non_mutable_attributes, get_interface def get_key(dictionary, target_value): diff --git a/src/pyVertexModel/geometry/geo.py b/src/pyVertexModel/geometry/geo.py index 854f1d2e..8eb08ad4 100644 --- a/src/pyVertexModel/geometry/geo.py +++ b/src/pyVertexModel/geometry/geo.py @@ -8,11 +8,11 @@ from scipy.optimize import minimize from scipy.spatial import ConvexHull -from src.pyVertexModel.Kg.kgTriAREnergyBarrier import KgTriAREnergyBarrier -from src.pyVertexModel.geometry import face, cell -from src.pyVertexModel.geometry.cell import Cell, compute_y -from src.pyVertexModel.geometry.face import build_edge_based_on_tetrahedra -from src.pyVertexModel.util.utils import ismember_rows, copy_non_mutable_attributes, calculate_polygon_area, \ +from pyVertexModel.Kg.kgTriAREnergyBarrier import KgTriAREnergyBarrier +from pyVertexModel.geometry import face, cell +from pyVertexModel.geometry.cell import Cell, compute_y +from pyVertexModel.geometry.face import build_edge_based_on_tetrahedra +from pyVertexModel.util.utils import ismember_rows, copy_non_mutable_attributes, calculate_polygon_area, \ get_interface logger = logging.getLogger("pyVertexModel") diff --git a/src/pyVertexModel/geometry/tris.py b/src/pyVertexModel/geometry/tris.py index bb4e3f8d..6611127d 100644 --- a/src/pyVertexModel/geometry/tris.py +++ b/src/pyVertexModel/geometry/tris.py @@ -1,6 +1,6 @@ import numpy as np -from src.pyVertexModel.util.utils import copy_non_mutable_attributes +from pyVertexModel.util.utils import copy_non_mutable_attributes def compute_tri_aspect_ratio(side_lengths): diff --git a/src/pyVertexModel/gui/qt_gui.py b/src/pyVertexModel/gui/qt_gui.py index 6a206fc9..e315a230 100644 --- a/src/pyVertexModel/gui/qt_gui.py +++ b/src/pyVertexModel/gui/qt_gui.py @@ -1,9 +1,9 @@ from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QVBoxLayout, QWidget, QCheckBox, QComboBox, QLabel, \ QStackedLayout, QFileDialog, QFormLayout, QLineEdit, QGroupBox -from src.pyVertexModel.algorithm.vertexModelBubbles import VertexModelBubbles -from src.pyVertexModel.algorithm.vertexModelVoronoiFromTimeImage import VertexModelVoronoiFromTimeImage -from src.pyVertexModel.util.utils import load_state +from pyVertexModel.algorithm.vertexModelBubbles import VertexModelBubbles +from pyVertexModel.algorithm.vertexModelVoronoiFromTimeImage import VertexModelVoronoiFromTimeImage +from pyVertexModel.util.utils import load_state class MainWindow(QMainWindow): diff --git a/src/pyVertexModel/main.py b/src/pyVertexModel/main.py index de929aed..0c7189ea 100644 --- a/src/pyVertexModel/main.py +++ b/src/pyVertexModel/main.py @@ -1,10 +1,10 @@ import os import sys -from src import PROJECT_DIRECTORY -from src.pyVertexModel.algorithm.vertexModelVoronoiFromTimeImage import VertexModelVoronoiFromTimeImage -from src.pyVertexModel.analysis.analyse_simulation import analyse_simulation -from src.pyVertexModel.util.utils import load_state +from pyVertexModel import PROJECT_DIRECTORY +from pyVertexModel.algorithm.vertexModelVoronoiFromTimeImage import VertexModelVoronoiFromTimeImage +from pyVertexModel.analysis.analyse_simulation import analyse_simulation +from pyVertexModel.util.utils import load_state start_new = False if start_new == True: diff --git a/src/pyVertexModel/main_bubbles.py b/src/pyVertexModel/main_bubbles.py index 5442ef4e..21238441 100644 --- a/src/pyVertexModel/main_bubbles.py +++ b/src/pyVertexModel/main_bubbles.py @@ -1,5 +1,5 @@ -from src.pyVertexModel.algorithm.vertexModelBubbles import VertexModelBubbles -from src.pyVertexModel.analysis.analyse_simulation import analyse_simulation +from pyVertexModel.algorithm.vertexModelBubbles import VertexModelBubbles +from pyVertexModel.analysis.analyse_simulation import analyse_simulation vModel = VertexModelBubbles(set_option='bubbles') vModel.initialize() diff --git a/src/pyVertexModel/main_different_cell_shapes.py b/src/pyVertexModel/main_different_cell_shapes.py index ae10347b..fb03a8c6 100644 --- a/src/pyVertexModel/main_different_cell_shapes.py +++ b/src/pyVertexModel/main_different_cell_shapes.py @@ -3,8 +3,8 @@ import numpy as np -from src import logger, PROJECT_DIRECTORY -from src.pyVertexModel.algorithm.vertexModelVoronoiFromTimeImage import VertexModelVoronoiFromTimeImage +from pyVertexModel import logger, PROJECT_DIRECTORY +from pyVertexModel.algorithm.vertexModelVoronoiFromTimeImage import VertexModelVoronoiFromTimeImage original_wing_disc_height = 15.0 # in microns set_of_resize_z = np.array([0.0001, 0.001, 0.01, 0.1, 0.5, 1.0, 2.0]) * original_wing_disc_height diff --git a/src/pyVertexModel/main_optuna.py b/src/pyVertexModel/main_optuna.py index aef023ca..cf141247 100644 --- a/src/pyVertexModel/main_optuna.py +++ b/src/pyVertexModel/main_optuna.py @@ -3,8 +3,8 @@ import numpy as np import optuna -from src import PROJECT_DIRECTORY -from src.pyVertexModel.util.space_exploration import objective, plot_optuna_all, load_simulations, create_study_name +from pyVertexModel import PROJECT_DIRECTORY +from pyVertexModel.util.space_exploration import objective, plot_optuna_all, load_simulations, create_study_name ## Create a study object and optimize the objective function original_wing_disc_height = 15 # in microns diff --git a/src/pyVertexModel/main_paper_simulations.py b/src/pyVertexModel/main_paper_simulations.py index 52cccb11..b40aad3a 100644 --- a/src/pyVertexModel/main_paper_simulations.py +++ b/src/pyVertexModel/main_paper_simulations.py @@ -5,10 +5,10 @@ import numpy as np -from src import PROJECT_DIRECTORY -from src.pyVertexModel.algorithm.vertexModelVoronoiFromTimeImage import VertexModelVoronoiFromTimeImage -from src.pyVertexModel.analysis.analyse_simulation import analyse_simulation -from src.pyVertexModel.util.utils import load_state +from pyVertexModel import PROJECT_DIRECTORY +from pyVertexModel.algorithm.vertexModelVoronoiFromTimeImage import VertexModelVoronoiFromTimeImage +from pyVertexModel.analysis.analyse_simulation import analyse_simulation +from pyVertexModel.util.utils import load_state logger = logging.getLogger("pyVertexModel") diff --git a/src/pyVertexModel/mesh_remodelling/flip.py b/src/pyVertexModel/mesh_remodelling/flip.py index fc1a9b94..c13f2243 100644 --- a/src/pyVertexModel/mesh_remodelling/flip.py +++ b/src/pyVertexModel/mesh_remodelling/flip.py @@ -5,8 +5,8 @@ import numpy as np from scipy.spatial import Delaunay -from src.pyVertexModel.geometry.geo import edge_valence_t -from src.pyVertexModel.util.utils import ismember_rows +from pyVertexModel.geometry.geo import edge_valence_t +from pyVertexModel.util.utils import ismember_rows logger = logging.getLogger("pyVertexModel") diff --git a/src/pyVertexModel/mesh_remodelling/remodelling.py b/src/pyVertexModel/mesh_remodelling/remodelling.py index cad4bd71..56269f9c 100644 --- a/src/pyVertexModel/mesh_remodelling/remodelling.py +++ b/src/pyVertexModel/mesh_remodelling/remodelling.py @@ -3,11 +3,11 @@ import numpy as np import pandas as pd -from src.pyVertexModel.algorithm.newtonRaphson import gGlobal, newton_raphson_iteration_explicit, \ +from pyVertexModel.algorithm.newtonRaphson import gGlobal, newton_raphson_iteration_explicit, \ constrain_bottom_vertices_x_y -from src.pyVertexModel.geometry.geo import edge_valence, get_node_neighbours_per_domain, get_node_neighbours -from src.pyVertexModel.mesh_remodelling.flip import y_flip_nm, post_flip -from src.pyVertexModel.util.utils import ismember_rows, save_backup_vars, load_backup_vars, compute_distance_3d, \ +from pyVertexModel.geometry.geo import edge_valence, get_node_neighbours_per_domain, get_node_neighbours +from pyVertexModel.mesh_remodelling.flip import y_flip_nm, post_flip +from pyVertexModel.util.utils import ismember_rows, save_backup_vars, load_backup_vars, compute_distance_3d, \ laplacian_smoothing, screenshot_, get_interface logger = logging.getLogger("pyVertexModel") diff --git a/src/pyVertexModel/parameters/set.py b/src/pyVertexModel/parameters/set.py index 7cd0715a..3bb4fb61 100644 --- a/src/pyVertexModel/parameters/set.py +++ b/src/pyVertexModel/parameters/set.py @@ -6,8 +6,8 @@ import numpy as np import scipy -from src import PROJECT_DIRECTORY -from src.pyVertexModel.util.utils import copy_non_mutable_attributes +from pyVertexModel import PROJECT_DIRECTORY +from pyVertexModel.util.utils import copy_non_mutable_attributes logger = logging.getLogger("pyVertexModel") diff --git a/src/pyVertexModel/util/space_exploration.py b/src/pyVertexModel/util/space_exploration.py index f2e3e558..7ee4044a 100644 --- a/src/pyVertexModel/util/space_exploration.py +++ b/src/pyVertexModel/util/space_exploration.py @@ -6,12 +6,12 @@ import pandas as pd import plotly -from src import PROJECT_DIRECTORY -from src.pyVertexModel.algorithm.vertexModel import VertexModel -from src.pyVertexModel.algorithm.vertexModelVoronoiFromTimeImage import VertexModelVoronoiFromTimeImage -from src.pyVertexModel.analysis.analyse_simulation import analyse_edge_recoil, analyse_simulation -from src.pyVertexModel.parameters.set import Set -from src.pyVertexModel.util.utils import load_state, load_variables, save_variables +from pyVertexModel import PROJECT_DIRECTORY +from pyVertexModel.algorithm.vertexModel import VertexModel +from pyVertexModel.algorithm.vertexModelVoronoiFromTimeImage import VertexModelVoronoiFromTimeImage +from pyVertexModel.analysis.analyse_simulation import analyse_edge_recoil, analyse_simulation +from pyVertexModel.parameters.set import Set +from pyVertexModel.util.utils import load_state, load_variables, save_variables def objective(trial): From 29fed3985ca3b7edfff4778b2c519b18ec6aeaab Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 3 Feb 2026 16:15:20 +0000 Subject: [PATCH 3/7] Fix remaining src imports and remove obsolete src/__init__.py Co-authored-by: Pablo1990 <1974224+Pablo1990@users.noreply.github.com> --- Tests/test_vertexModel.py | 4 ++-- src/__init__.py | 29 ----------------------------- 2 files changed, 2 insertions(+), 31 deletions(-) delete mode 100644 src/__init__.py diff --git a/Tests/test_vertexModel.py b/Tests/test_vertexModel.py index bf837173..5f30fdcf 100644 --- a/Tests/test_vertexModel.py +++ b/Tests/test_vertexModel.py @@ -502,7 +502,7 @@ def test_initialize_cells_with_numpy_array(self): :return: """ import scipy.io - from src.pyVertexModel.parameters.set import Set + from pyVertexModel.parameters.set import Set # Load an existing image as a numpy array mat_data = scipy.io.loadmat('resources/LblImg_imageSequence.mat') @@ -553,7 +553,7 @@ def test_initialize_with_numpy_array(self): :return: """ import scipy.io - from src.pyVertexModel.parameters.set import Set + from pyVertexModel.parameters.set import Set # Load an existing image as a numpy array mat_data = scipy.io.loadmat('resources/LblImg_imageSequence.mat') diff --git a/src/__init__.py b/src/__init__.py deleted file mode 100644 index 15fc8f09..00000000 --- a/src/__init__.py +++ /dev/null @@ -1,29 +0,0 @@ -import logging -import os -import warnings - -#PROJECT_DIRECTORY = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) -PROJECT_DIRECTORY = os.getenv('PROJECT_DIR', os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) - -# get the logger instance -logger = logging.getLogger("pyVertexModel") - -formatter = logging.Formatter( - "%(levelname)s [%(asctime)s] pyVertexModel: %(message)s", - datefmt="%Y/%m/%d %I:%M:%S %p", -) -console_handler = logging.StreamHandler() -console_handler.setFormatter(formatter) -logger.addHandler(console_handler) - -logger.setLevel(logging.DEBUG) -logger.propagate = False - - -# Function to handle warnings -def warning_handler(message, category, filename, lineno, file=None, line=None): - logger.warning(f'{filename}:{lineno}: {category.__name__}: {message}') - - -# Set the warnings' showwarning function to the handler -warnings.showwarning = warning_handler From 799ac0291e367aab1411b33807a51a831653093a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 3 Feb 2026 16:16:24 +0000 Subject: [PATCH 4/7] Use pathlib for clearer PROJECT_DIRECTORY calculation Co-authored-by: Pablo1990 <1974224+Pablo1990@users.noreply.github.com> --- src/pyVertexModel/__init__.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/pyVertexModel/__init__.py b/src/pyVertexModel/__init__.py index f8385adf..724405a1 100644 --- a/src/pyVertexModel/__init__.py +++ b/src/pyVertexModel/__init__.py @@ -1,11 +1,14 @@ import logging import os import warnings +from pathlib import Path from ._version import __version__ -# PROJECT_DIRECTORY = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) -PROJECT_DIRECTORY = os.getenv('PROJECT_DIR', os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))) +# Get the project root directory (two levels up from this __init__.py file) +# This file is at: src/pyVertexModel/__init__.py +# We want the project root directory (the parent of 'src') +PROJECT_DIRECTORY = os.getenv('PROJECT_DIR', str(Path(__file__).parent.parent.parent)) # get the logger instance logger = logging.getLogger("pyVertexModel") From 6a4666862a903514f51ded7220b603f42b832e71 Mon Sep 17 00:00:00 2001 From: Pablo Vicente Munuera Date: Wed, 4 Feb 2026 10:35:00 +0100 Subject: [PATCH 5/7] Removing GUI --- src/pyVertexModel/gui/__init__.py | 0 src/pyVertexModel/gui/qt_gui.py | 174 ------------------------------ 2 files changed, 174 deletions(-) delete mode 100644 src/pyVertexModel/gui/__init__.py delete mode 100644 src/pyVertexModel/gui/qt_gui.py diff --git a/src/pyVertexModel/gui/__init__.py b/src/pyVertexModel/gui/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/src/pyVertexModel/gui/qt_gui.py b/src/pyVertexModel/gui/qt_gui.py deleted file mode 100644 index e315a230..00000000 --- a/src/pyVertexModel/gui/qt_gui.py +++ /dev/null @@ -1,174 +0,0 @@ -from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QVBoxLayout, QWidget, QCheckBox, QComboBox, QLabel, \ - QStackedLayout, QFileDialog, QFormLayout, QLineEdit, QGroupBox - -from pyVertexModel.algorithm.vertexModelBubbles import VertexModelBubbles -from pyVertexModel.algorithm.vertexModelVoronoiFromTimeImage import VertexModelVoronoiFromTimeImage -from pyVertexModel.util.utils import load_state - - -class MainWindow(QMainWindow): - def __init__(self): - super(MainWindow, self).__init__() - - self.advanced_layout = None - self.advanced_groupbox = None - self.basic_layout = None - self.vModel = VertexModelVoronoiFromTimeImage() - self.run_button = None - self.new_simulation_widget = None - self.select_file_button = None - self.load_state_widget = None - self.selected_filename = None - self.setWindowTitle("Simulation Options") - - self.layout = QVBoxLayout() - - self.switch = QComboBox() - self.switch.addItem("New simulation") - self.switch.addItem("Load state") - self.switch.currentIndexChanged.connect(self.update_layout) - self.layout.addWidget(self.switch) - - # Add widgets for new simulation layout - self.add_widgets_new_simulation() - - # Add a "Run Simulation" button - self.add_run_button() - - self.widget = QWidget() - self.widget.setLayout(self.layout) - self.setCentralWidget(self.widget) - - def add_widgets_new_simulation(self): - self.new_simulation_widget = QLabel("New simulation layout") - self.layout.addWidget(self.new_simulation_widget) - self.add_type_of_model_widget() - - # Basic attributes - self.basic_layout = QFormLayout() - self.basic_layout.addRow("TotalCells", QLineEdit(str(self.vModel.set.TotalCells))) - self.basic_layout.addRow("CellHeight", QLineEdit(str(self.vModel.set.CellHeight))) - - self.basic_layout.addRow("lambdaV", QLineEdit(str(self.vModel.set.lambdaV))) - self.basic_layout.addRow("kSubstrate", QLineEdit(str(self.vModel.set.kSubstrate))) - self.basic_layout.addRow("cLineTension", QLineEdit(str(self.vModel.set.cLineTension))) - self.basic_layout.addRow("noiseContractility", QLineEdit(str(self.vModel.set.noiseContractility))) - self.basic_layout.addRow("lambdaS1", QLineEdit(str(self.vModel.set.lambdaS1))) - - self.layout.addLayout(self.basic_layout) - - # Advanced attributes - self.advanced_groupbox = QGroupBox("Advanced") - self.advanced_groupbox.setCheckable(True) - self.advanced_groupbox.setChecked(False) - - self.advanced_layout = QFormLayout() - self.advanced_layout.addRow("lambdaS2", QLineEdit(str(self.vModel.set.lambdaS2))) - self.advanced_layout.addRow("lambdaS3", QLineEdit(str(self.vModel.set.lambdaS3))) - # Add more advanced attributes here... - - self.advanced_groupbox.setLayout(self.advanced_layout) - - self.layout.addWidget(self.advanced_groupbox) - - def add_type_of_model_widget(self): - QCombobox = QComboBox() - QCombobox.addItem("Voronoi from time images") - QCombobox.addItem("Cyst") - QCombobox.currentIndexChanged.connect(self.initialize_different_model) - QCombobox.setCurrentIndex(0) - self.layout.addWidget(QCombobox) - - def add_widgets_load_state_layout(self): - self.load_state_widget = QLabel("Load state layout") - self.layout.addWidget(self.load_state_widget) - self.add_type_of_model_widget() - self.select_file_button = QPushButton("Select File") - self.select_file_button.clicked.connect(self.select_file) - self.layout.addWidget(self.select_file_button) - - def add_run_button(self): - """ - Add a "Run Simulation" button to the layout - :return: - """ - self.run_button = QPushButton("Run Simulation") - self.run_button.clicked.connect(self.run_simulation) - self.layout.addWidget(self.run_button) - - def update_layout(self, index): - """ - Update the layout based on the selected option - :param index: - :return: - """ - while self.layout.count(): - child = self.layout.takeAt(0) - if child.widget(): - child.widget().deleteLater() - - # Add the switch back to the layout - self.layout.addWidget(self.switch) - - # Add widgets to the layout based on the selected option - if index == 0: # New simulation - # Add widgets for new simulation - self.add_widgets_new_simulation() - elif index == 1: # Load state - # Add widgets for load state - self.add_widgets_load_state_layout() - - self.add_run_button() - - def load_state(self): - """ - Load state of the model - :return: - """ - load_state(self.vModel, self.selected_filename) - - def select_file(self): - """ - Open a file dialog to select a file - :return: - """ - options = QFileDialog.Options() - options |= QFileDialog.ReadOnly - self.selected_filename, _ = QFileDialog.getOpenFileName(self, "QFileDialog.getOpenFileName()", "", - "All Files (*);;Pkl Files (*.pkl);;Mat files (*.mat)", - options=options) - if self.selected_filename: - load_state(self.vModel, self.selected_filename) - self.selected_filename = None - - def initialize_different_model(self, index): - """ - Initialize different models based on the index - :param index: - :return: - """ - if index == 0: - self.vModel = VertexModelVoronoiFromTimeImage() - elif index == 1: - self.vModel = VertexModelBubbles() - - def run_simulation(self): - """ - Run the simulation - :return: - """ - self.vModel.iterate_over_time() - - # # Option to pick the type of model between the different models - # - # # Option to pick the starting geometry - # - # vModel = VertexModelVoronoiFromTimeImage() - # vModel.initialize('/Users/pablovm/PostDoc/pyVertexModel/Tests/data/Newton_Raphson_Iteration_wingdisc.mat') - # # - # # #vModel.set.RemodelStiffness = 0.6 - # # vModel.iteration_converged() - # # # #vModel.t = 0 - # # # #vModel.tr = 0 - # # #vModel.reset_contractility_values() - # # vModel.iterate_over_time() From 534987a37b1a03361261bbd4fb37a657dc7ec59b Mon Sep 17 00:00:00 2001 From: Pablo Vicente Munuera Date: Wed, 4 Feb 2026 10:37:03 +0100 Subject: [PATCH 6/7] Review done --- .idea/pyVertexModel.iml | 4 +++- src/pyVertexModel/__init__.py | 2 ++ src/pyVertexModel/algorithm/vertexModel.py | 4 +--- .../algorithm/vertexModelVoronoiFromTimeImage.py | 6 +++++- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/.idea/pyVertexModel.iml b/.idea/pyVertexModel.iml index 97ddc26b..4b0704c3 100644 --- a/.idea/pyVertexModel.iml +++ b/.idea/pyVertexModel.iml @@ -2,9 +2,11 @@ + + - + diff --git a/src/pyVertexModel/__init__.py b/src/pyVertexModel/__init__.py index 724405a1..b7e540b5 100644 --- a/src/pyVertexModel/__init__.py +++ b/src/pyVertexModel/__init__.py @@ -10,6 +10,8 @@ # We want the project root directory (the parent of 'src') PROJECT_DIRECTORY = os.getenv('PROJECT_DIR', str(Path(__file__).parent.parent.parent)) +__all__ = ["PROJECT_DIRECTORY"] + # get the logger instance logger = logging.getLogger("pyVertexModel") diff --git a/src/pyVertexModel/algorithm/vertexModel.py b/src/pyVertexModel/algorithm/vertexModel.py index 27fb0e7a..6a7226bc 100644 --- a/src/pyVertexModel/algorithm/vertexModel.py +++ b/src/pyVertexModel/algorithm/vertexModel.py @@ -15,7 +15,6 @@ from scipy.optimize import minimize from skimage.measure import regionprops -from pyVertexModel import logger, PROJECT_DIRECTORY from pyVertexModel.Kg.kg import add_noise_to_parameter from pyVertexModel.Kg.kgSurfaceCellBasedAdhesion import KgSurfaceCellBasedAdhesion from pyVertexModel.algorithm import newtonRaphson @@ -27,8 +26,7 @@ screenshot, screenshot_, load_state, find_optimal_deform_array_X_Y, find_timepoint_in_model logger = logging.getLogger("pyVertexModel") - - +PROJECT_DIRECTORY = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) def display_volume_fragments(geo, selected_cells=None): diff --git a/src/pyVertexModel/algorithm/vertexModelVoronoiFromTimeImage.py b/src/pyVertexModel/algorithm/vertexModelVoronoiFromTimeImage.py index 601feb98..16f0c601 100644 --- a/src/pyVertexModel/algorithm/vertexModelVoronoiFromTimeImage.py +++ b/src/pyVertexModel/algorithm/vertexModelVoronoiFromTimeImage.py @@ -1,6 +1,7 @@ from __future__ import annotations import copy +import logging import lzma import os import pickle @@ -16,13 +17,16 @@ from skimage.measure import regionprops_table from skimage.morphology import dilation -from pyVertexModel import PROJECT_DIRECTORY, logger from pyVertexModel.algorithm.vertexModel import VertexModel, generate_tetrahedra_from_information, \ calculate_cell_height_on_model from pyVertexModel.geometry.geo import Geo from pyVertexModel.util.utils import ismember_rows, save_variables, save_state, load_state, screenshot_ +logger = logging.getLogger("pyVertexModel") +PROJECT_DIRECTORY = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + + def build_quartets_of_neighs_2d(neighbours): """ Build quartets of neighboring cells. From 2ef3ddf0d18d95096e2be47ff31d8db07fdc2792 Mon Sep 17 00:00:00 2001 From: Pablo Vicente Munuera Date: Wed, 4 Feb 2026 11:02:14 +0100 Subject: [PATCH 7/7] don't check in pull requests just after push --- .github/workflows/tests.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 3f8b5059..d1f1b688 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -3,8 +3,6 @@ name: Run Python Tests on: workflow_dispatch: push: - branches: [ main megha] - pull_request: branches: [ main ] jobs: