Commit eceb65712409c0a2a8fb73efcac14b8b8cd556e9

Authored by Jiaming Guo
1 parent 26e84a59

fixed bug when swc file only contains one edge

Showing 2 changed files with 31 additions and 4 deletions   Show diff stats
stim/biomodels/network.h
... ... @@ -170,6 +170,26 @@ public:
170 170 return V.size();
171 171 }
172 172  
  173 + ///Returns the radius at specific point in the edge
  174 + T get_R(unsigned e, unsigned i) {
  175 + return E[e].r(i);
  176 + }
  177 +
  178 + ///Returns the length of current edge
  179 + T get_L(unsigned e) {
  180 + return E[e].length();
  181 + }
  182 +
  183 + ///Returns the start vertex of current edge
  184 + size_t get_SP(unsigned e) {
  185 + return E[e].v[0];
  186 + }
  187 +
  188 + ///Returns the end vertex of current edge
  189 + size_t get_EP(unsigned e) {
  190 + return E[e].v[1];
  191 + }
  192 +
173 193 //scale the network by some constant value
174 194 // I don't think these work??????
175 195 /*std::vector<vertex> operator*(T s){
... ...
stim/visualization/swc.h
... ... @@ -195,10 +195,10 @@ namespace stim {
195 195  
196 196 // resample the tree-like SWC
197 197 void resample() {
198   - unsigned n = node.size();
  198 + unsigned nn = node.size();
199 199  
200 200 std::vector<int> joint_node;
201   - for (unsigned i = 1; i < n; i++) { // search all nodes(except the first one) to find joint nodes
  201 + for (unsigned i = 1; i < nn; i++) { // search all nodes(except the first one) to find joint nodes
202 202 if (node[i].son_idx.size() > 1) {
203 203 joint_node.push_back(node[i].idx); // store the original index
204 204 }
... ... @@ -206,10 +206,10 @@ namespace stim {
206 206  
207 207 std::vector<int> new_edge; // new edge in the network
208 208  
209   - n = joint_node.size();
  209 + unsigned n = joint_node.size();
210 210  
211 211 for (unsigned i = 0; i < n; i++) { // for every joint nodes
212   - std::vector<int> new_edge; // new edge in the network
  212 +
213 213 swc_tree::swc_node<T> cur_node = node[joint_node[i] - 1]; // store current node
214 214  
215 215 // go up
... ... @@ -236,6 +236,13 @@ namespace stim {
236 236 }
237 237 }
238 238 }
  239 +
  240 + if (n == 0) { // just one edge
  241 + new_edge.clear();
  242 + for (unsigned i = 0; i < nn; i++)
  243 + new_edge.push_back(node[i].idx);
  244 + E.push_back(new_edge);
  245 + }
239 246 }
240 247  
241 248 // get points in one edge
... ...