MCPcopy Create free account
hub / github.com/BirolLab/abyss / controlErode

Method controlErode

Parallel/NetworkSequenceCollection.cpp:286–325  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

284}
285
286size_t NetworkSequenceCollection::controlErode()
287{
288 SetState(NAS_ERODE);
289 m_comm.sendControlMessage(APC_SET_STATE, NAS_ERODE);
290 m_comm.barrier();
291 size_t numEroded = AssemblyAlgorithms::erodeEnds(this);
292 EndState();
293
294 // Do not call SetState, because it clears the
295 // checkpoint information.
296 //SetState(NAS_ERODE_WAITING);
297 m_state = NAS_ERODE_WAITING;
298
299 m_numReachedCheckpoint++;
300 while (!checkpointReached())
301 pumpNetwork();
302 numEroded += m_checkpointSum;
303 EndState();
304
305 if (numEroded == 0) {
306 SetState(NAS_WAITING);
307 m_comm.sendControlMessage(APC_WAIT);
308 m_comm.barrier();
309 return 0;
310 }
311
312 SetState(NAS_ERODE_COMPLETE);
313 m_comm.sendControlMessage(APC_ERODE_COMPLETE);
314 completeOperation();
315 numEroded += m_comm.reduce(
316 AssemblyAlgorithms::getNumEroded());
317 cout << "Eroded " << numEroded << " tips.\n";
318 size_t removed = m_comm.reduce(m_data.cleanup());
319 m_comm.barrier();
320 assert(removed == numEroded);
321 (void)removed;
322
323 SetState(NAS_WAITING);
324 return numEroded;
325}
326
327/** Remove marked k-mer.
328 * @return the number of k-mer removed

Callers

nothing calls this directly

Calls 6

erodeEndsFunction · 0.85
getNumErodedFunction · 0.85
barrierMethod · 0.80
reduceMethod · 0.80
cleanupMethod · 0.80
sendControlMessageMethod · 0.45

Tested by

no test coverage detected