From 8eb034f2d6cc18b56c8189560209c27dc2561aaa Mon Sep 17 00:00:00 2001 From: Guillaume Gay Date: Tue, 13 Feb 2024 19:27:47 +0100 Subject: [PATCH] Dev (#283) * Fix for Issues #261 - cell division failed at the border * Fix Mesh creation Surface mesh create wasn't create all faces. Now it is fixed. Also : -add two methods to Mesh to list faces and vertices. -generalised coordinates -add `write_polygon_mesh` to export mesh into .ply to visualised with blinder * Add 2D collision solver Add class to solve collision in 2D or in 3D. 3D collision solver need to be fixed * Update README.md Add `How to cite` section Add `Geometry` section Add `Publications` section Update bibliography link * Generalised wich vertex penetrate face * Attempt to set out particular cases * Detect and fix self-crossing face Unable to make this algo works... https://europepmc.org/article/PMC/3660981 Use ordered vertices and their angle position. -> uncrossed face : angles are monotonically increasing -> crossed face : angles are not monotonically increasing * Use `.apply()` Need to recalculate angle_e for twisted face One fix which is only suitable for 2D lateral sheet... * ENH: write `mean_XX` method in `Epithelium` class (Issue #224) * Fix according to comments * Fix Issue #258 ax argument not considered in `plt_draw.sheet_view` * ENH: pass column name to `data_at_opposite` issue (#245) * Add publication and remove bibtex reference * Add check face convexity * Use reset_index and code simplification * yAdd to_mesh function (issue #221) and some test * Remove the use of reset_index in face_self_intersect * use ipv_draw with 2D data * Fix solution after detection point inside polygon * Remove solving collision for 2 same face... * Abord vertex displacement if it creates twisted face * New way to calculate the position of "penetrate" vertices For now, it is the best way to fix collision (compare to what I tried before). So when a vertex is inside an other face. It is pullback by 10% of the length of the ([v-f1]+[v-f2]/2). with v, f1, f2 position of vertices and center of face 1 and face 2, which are the faces to which the vertex belongs. It is not perfect and very arbitrary for now, but it avoids vertex displacement at strange place. * WIP - use force field to fix collision * Small fix * Remove function duplication due to circular import * Calculate "repulsion" gradient in the effector method. Remove loop * Fix tests Remove collisions tests Fix method call in meshes test Comment "update_repulstion" method in planar geometry * Add lateralsheet shapes + test * Update publication + add collapse texte * Add test for Repulsion effector * Add test update repulsion * Remove unused import * Add `drop_face` to allow hole (issues #220 and #141) (associate #221) * Update readme.md * Update publications in README.md * Add `lineage` attribute to `Epithelium` In order to keep track of cell lineage * Remove memory oscillation * builds with pip adds pyproject.toml build command: pip install --no-build-isolation --config-settings=editable.rebuild=true -ve. * debugging, still no build apparently * build and tests * update nb submodule * fix pyproject * install with pip in CI * install with pip in CI * install with pip in CI * adds scikit-build dep * python version * python version specifier * remove strang flags * adds _version.py * setuptools_scm dep * simplified I guess * zdds setuptools-scm to env, MakeFilelist shenanigans * restricting to 3.10 * install dev * pyhon version coherence * install cmd * trying to move to modern sckit-build (it's painful) * WIP change build * getting closer I hope * make_spherical test pasess \o/ * tests passing, warnings still to be treated * don't install editable version in gh action * remove diff chars * tagging again to avoid metadata mismatch * Uncomment 2D repulsion + tests Fix pandas issue * Add comments in effectors.py * rmeove _version.py and ignore in git * Update history.py (#274) > Added the self.time_stamps() method code for HistoryHdf5 class into the __init__() method so that time_stamps are only calculated once as self._time_stamps > Edited self.time_stamps() method to return self._time_stamps > Greatly improves efficiency of retrieve() method as time_stamps is not computed each time a new time-point is loaded. * skip 2 tests * fix non existing hdf5 * submodules * adds notebooks submodule * should fix history bug * adds submodules again * minoor fix, notebooks * updates readme and rtd --------- Co-authored-by: Sophie T Co-authored-by: sniffo --- .readthedocs.yaml | 1 - README.md | 10 +++++----- doc/notebooks | 2 +- pyproject.toml | 3 +++ src/tyssue/core/objects.py | 2 +- 5 files changed, 10 insertions(+), 8 deletions(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 2a0660cf..191de8ce 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -16,7 +16,6 @@ conda: submodules: include: - doc/notebooks - - pybind11 recursive: true diff --git a/README.md b/README.md index f8965001..d5665322 100644 --- a/README.md +++ b/README.md @@ -9,12 +9,12 @@ This commit to the **new default branch `main` is the official start of the 1.0 ### Short term -- [ ] fix CI w/ github actions +- [X] fix CI w/ github actions - [ ] Readthedocs with mkdoc -- [ ] Tests -- [ ] Notebook tests -- [ ] Merge PRs #263 #274 -- [ ] Tests +- [x] Tests +- [x] Notebook tests +- [x] Merge PRs #263 #274 +- [x] Tests - [ ] Check Polarization notebooks diff --git a/doc/notebooks b/doc/notebooks index 03d48f9f..dd5eeb54 160000 --- a/doc/notebooks +++ b/doc/notebooks @@ -1 +1 @@ -Subproject commit 03d48f9f143edb54dcb9c3f8331a247a0f59189d +Subproject commit dd5eeb54244bbe2b7e4120083f068f7e5ccdcabb diff --git a/pyproject.toml b/pyproject.toml index 9737e6c0..bceb176e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -37,6 +37,8 @@ test = [ "nox", "pytest", "pytest-cov", + "scikit-build-core", + "nbval" "scikit-build-core" ] dev = [ @@ -44,6 +46,7 @@ dev = [ "pytest-cov", "scikit-build-core", "pre-commit", + "nbval" ] docs = [ "Sphinx", diff --git a/src/tyssue/core/objects.py b/src/tyssue/core/objects.py index 7bce26f1..ac07db0a 100644 --- a/src/tyssue/core/objects.py +++ b/src/tyssue/core/objects.py @@ -671,7 +671,7 @@ def validate(self): e.g. has only closed polygons and polyhedra """ - return np.alltrue(self.get_valid()) + return np.all(self.get_valid()) def get_valid(self): """Set the 'is_valid' column to true if the faces are all closed polygons,