Nilesh Patra pushed to branch upstream at Debian Med / python-leidenalg


Commits:
eefd31db by Nilesh Patra at 2021-10-19T16:45:11+05:30
New upstream version 0.8.8
- - - - -


4 changed files:

- CHANGELOG
- doc/source/advanced.rst
- src/leidenalg/MutableVertexPartition.cpp
- src/leidenalg/python_optimiser_interface.cpp


Changes:

=====================================
CHANGELOG
=====================================
@@ -1,3 +1,7 @@
+0.8.8
+- Corrected relabeling bug (PR #82)
+- Improved error handling, avoiding some crashses (issue #81)
+
 0.8.7
 - Improved numerical stability
 


=====================================
doc/source/advanced.rst
=====================================
@@ -222,7 +222,7 @@ We can then only update the community assignments for the 
new nodes as follows
 >>> new_partition = la.CPMVertexPartition(G2, new_membership,
 ...                                       
resolution_parameter=partition.resolution_parameter)
 ... is_membership_fixed = [i < G.vcount() for i in range(G2.vcount())]
->>> diff = optimiser.optimise_partition(partition, 
is_membership_fixed=is_membership_fixed)
+>>> diff = optimiser.optimise_partition(new_partition, 
is_membership_fixed=is_membership_fixed)
 
 In this example we used :class:`~leidenalg.CPMVertexPartition`. but any other
 ``VertexPartition`` would work as well.


=====================================
src/leidenalg/MutableVertexPartition.cpp
=====================================
@@ -286,9 +286,10 @@ void 
MutableVertexPartition::relabel_communities(vector<size_t> const& new_comm_
   vector<size_t> new_csize(nbcomms, 0);
   vector<size_t> new_cnodes(nbcomms, 0);
 
+  // Relabel community admin
   for (size_t c = 0; c < new_comm_id.size(); c++) {
     size_t new_c = new_comm_id[c];
-    if (this->_csize[c] > 0) {
+    if (this->_cnodes[c] > 0) {
       new_total_weight_in_comm[new_c] = this->_total_weight_in_comm[c];
       new_total_weight_from_comm[new_c] = this->_total_weight_from_comm[c];
       new_total_weight_to_comm[new_c] = this->_total_weight_to_comm[c];
@@ -305,7 +306,7 @@ void 
MutableVertexPartition::relabel_communities(vector<size_t> const& new_comm_
 
   this->_empty_communities.clear();
   for (size_t c = 0; c < nbcomms; c++) {
-    if (this->_csize[c] == 0) {
+    if (this->_cnodes[c] == 0) {
       this->_empty_communities.push_back(c);
     }
   }


=====================================
src/leidenalg/python_optimiser_interface.cpp
=====================================
@@ -83,7 +83,8 @@ extern "C"
       size_t nb_is_membership_fixed = PyList_Size(py_is_membership_fixed);
       if (nb_is_membership_fixed != n)
       {
-        throw Exception("Node size vector not the same size as the number of 
nodes.");
+        PyErr_SetString(PyExc_ValueError, "Node size vector not the same size 
as the number of nodes.");
+        return NULL;
       }
 
       for (size_t v = 0; v < n; v++)
@@ -167,7 +168,10 @@ extern "C"
       }
 
       if (isnan(layer_weights[layer]))
-        throw Exception("Cannot accept NaN weights.");
+      {
+        PyErr_SetString(PyExc_TypeError, "Cannot accept NaN weights.");
+        return NULL;
+      }
     }
 
     if (nb_partitions == 0)
@@ -184,7 +188,8 @@ extern "C"
       size_t nb_is_membership_fixed = PyList_Size(py_is_membership_fixed);
       if (nb_is_membership_fixed != n)
       {
-        throw Exception("Node size vector not the same size as the number of 
nodes.");
+        PyErr_SetString(PyExc_TypeError, "Node size vector not the same size 
as the number of nodes.");
+        return NULL;
       }
 
       for (size_t v = 0; v < n; v++)
@@ -265,7 +270,8 @@ extern "C"
       size_t nb_is_membership_fixed = PyList_Size(py_is_membership_fixed);
       if (nb_is_membership_fixed != n)
       {
-        throw Exception("Node size vector not the same size as the number of 
nodes.");
+        PyErr_SetString(PyExc_TypeError, "Node size vector not the same size 
as the number of nodes.");
+        return NULL;
       }
 
       for (size_t v = 0; v < n; v++)
@@ -340,7 +346,8 @@ extern "C"
       size_t nb_is_membership_fixed = PyList_Size(py_is_membership_fixed);
       if (nb_is_membership_fixed != n)
       {
-        throw Exception("Node size vector not the same size as the number of 
nodes.");
+        PyErr_SetString(PyExc_TypeError, "Node size vector not the same size 
as the number of nodes.");
+        return NULL;
       }
 
       for (size_t v = 0; v < n; v++)



View it on GitLab: 
https://salsa.debian.org/med-team/python-leidenalg/-/commit/eefd31db4aab24dec4d2bfb0851fd2efd07b4d27

-- 
View it on GitLab: 
https://salsa.debian.org/med-team/python-leidenalg/-/commit/eefd31db4aab24dec4d2bfb0851fd2efd07b4d27
You're receiving this email because of your account on salsa.debian.org.


_______________________________________________
debian-med-commit mailing list
[email protected]
https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/debian-med-commit

Reply via email to