Authored by pranathivemuri
1 parent b3a38641

### added functions to find average segment length, tortuoisity in a network

Showing 1 changed file with 67 additions and 0 deletions
stim/biomodels/network.h

 ... ... @@ -90,6 +90,7 @@ class network{ 90 90 return ss.str(); 91 91 } 92 92 93 + 93 94 }; 94 95 95 96 protected: ... ... @@ -109,6 +110,72 @@ public: 109 110 return V.size(); 110 111 } 111 112 113 + std::vector operator*(T s){ 114 + for (unsigned i=0; i< vertices; i ++ ){ 115 + V[i] = V[i] * s; 116 + } 117 + return V; 118 + } 119 + 120 + std::vector operator*(vec s){ 121 + for (unsigned i=0; i< vertices; i ++ ){ 122 + for (unsigned dim = 0 ; dim< 3; dim ++){ 123 + V[i][dim] = V[i][dim] * s[dim]; 124 + } 125 + } 126 + return V; 127 + } 128 + 129 + // Returns an average of fiber/edge lengths in the network 130 + double Lengths(){ 131 + stim::vec L;double sumLength = 0; 132 + for(unsigned e = 0; e < E.size(); e++){ //for each edge in the network 133 + L.push_back(E[e].length()); //append the edge length 134 + sumLength = sumLength + E[e].length(); 135 + } 136 + double avg = sumLength / E.size(); 137 + return avg; 138 + } 139 + 140 + 141 + // Returns an average of tortuosities in the network 142 + double Tortuosities(){ 143 + stim::vec t; 144 + stim::vec id1, id2; // starting and ending vertices of the edge 145 + //std::vector< stim::vec > vert; // list of visited vertices 146 + //std::vector>::iterator it; //create an iterator for searching the id2vert array 147 + //std::vector daughters; // to count number of daughter vessels at branch points 148 + //stim::vec visitedVert; 149 + //unsigned visited; 150 + double distance;double tortuosity;double sumTortuosity = 0; 151 + for(unsigned e = 0; e < E.size(); e++){ //for each edge in the network 152 + id1 = E[e][0]; //get the edge starting point 153 + id2 = E[e][E[e].size() - 1]; //get the edge ending point 154 + distance = (id1 - id2).len(); //displacement between the starting and ending points 155 + //it = find(vert.begin(), vert.end(), id1); //look for the first node has a daughter vessel already 156 + //visitedVert = std::distance(vert.begin(), it); //index where it already exists 157 + //if(visitedVert == id1){ 158 + // visited += 1; 159 + // daughters[e] = visited; 160 + //} 161 + //else{ 162 + // vert.push_back(id1); 163 + // daughters[e] = 1; 164 + //} 165 + if(distance > 0){ 166 + tortuosity = E[e].length()/ distance ; // tortuoisty = edge length / edge displacement 167 + } 168 + else{ 169 + tortuosity = 0;} 170 + t.push_back(tortuosity); 171 + sumTortuosity += tortuosity; 172 + } 173 + double avg = sumTortuosity / E.size(); 174 + //std::cout<<"number of unique branch points"< get_cylinder(unsigned f){ 113 180 return E[f]; //return the specified edge (casting it to a fiber) 114 181 } ... ...