nsol  0.4.1
Nsol - Neuroscience Objects Library
nsol::NeuriteStats Class Reference

This class allows to compute stats for neurites. More...

#include <NeuriteStats.h>

+ Inheritance diagram for nsol::NeuriteStats:
+ Collaboration diagram for nsol::NeuriteStats:

Public Types

enum  TNeuriteStat {
  SURFACE = 0, VOLUME, LENGTH, BIFURCATIONS,
  NEURITE_NUM_STATS
}
 Enumeration of the stats that can be computed for Neurite.
 
- Public Types inherited from nsol::Neurite
enum  TNeuriteType { DENDRITE = 0, AXON }
 Possible types of neurite.
 

Public Member Functions

 NeuriteStats (TNeuriteType neuriteType=DENDRITE)
 Default constructor.
 
virtual NeuriteStatsstats (void)
 Returns object as NeuriteStats. More...
 
virtual float getStat (TNeuriteStat stat, TAggregation agg=TOTAL) const
 Computes the stat given. More...
 
- Public Member Functions inherited from nsol::Neurite
 Neurite (TNeuriteType neuriteType=DENDRITE)
 Default constructor.
 
TNeuriteTypeneuriteType (void)
 Get the type of neurite.
 
NeuronMorphologyPtr morphology (void) const
 
NeuronMorphologyPtr morphology (NeuronMorphologyPtr morphology)
 
bool hasMorphology (void) const
 
NeuronMorphologySectionPtr firstSection (void) const
 
virtual void firstSection (NeuronMorphologySectionPtr section)
 
Sections sections (void) const
 
void computeBranchBifurcations (void)
 
unsigned int numBranches (void)
 
unsigned int numBifurcations (void)
 
virtual NeuritePtr clone (void) const
 
bool operator== (Neurite &other)
 
bool operator!= (Neurite &other)
 

Additional Inherited Members

- Protected Member Functions inherited from nsol::Neurite
void _addBifurcationCount (unsigned int numBifurcations)
 
void _addBranchCount (unsigned int numBranches)
 
void _clone (NeuritePtr neurite) const
 
- Protected Attributes inherited from nsol::Neurite
TNeuriteType _neuriteType
 
NeuronMorphologySectionPtr _firstSection
 
NeuronMorphologyPtr _morphology
 
unsigned int _numBranches
 
unsigned int _numBifurcations
 

Detailed Description

This class allows to compute stats for neurites.

Using this class instead of Neurite when constructing the hierarchy allows to call the method stats from base Neurite class and get the corresponding volume, surface and length.

Example:

/*
* Copyright (c) 2014-2017 GMRV/URJC.
*
* This file is part of nsol <https://github.com/gmrvvis/nsol>
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License version 3.0 as published
* by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this library; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
*/
/*
* Example to show how to use stats and cached stats
*/
#include <nsol/nsol.h>
void ComputeAndPrintSurface( nsol::NeuronPtr n )
{
unsigned int i = 0;
for ( const auto& neurite : n->morphology( )->neurites( ))
{
std::cout << "\tDendrite " << i++ << " type: "
<< neurite->neuriteType( ) << " ";
if ( neurite->neuriteType( ) == nsol::Neurite::DENDRITE )
std::cout << NSOL_DYNAMIC_CAST( nsol::Dendrite, neurite )->dendriteType( );
std::cout << " surface: ";
if ( neurite->stats( ))
{
std::cout << " " << neurite->stats( )->getStat(
nsol::NeuriteStats::SURFACE ) << " ";
const nsol::Sections& sections = neurite->sections( );
std::cout << "[ ";
for ( const auto& section : sections )
{
std::cout << dynamic_cast< nsol::NeuronMorphologySectionPtr >(
section )->stats( )->getStat(
nsol::NeuronMorphologySectionStats::/*TSectionStat::*/SURFACE ) << " ";
}
std::cout << "]";
}
else
std::cout << "No stats available";
std::cout << std::endl;
}
}
void PrintCachedSurfaceState( nsol::NeuronPtr n )
{
unsigned int i = 0;
for ( const auto& neurite : n->morphology( )->neurites( ))
{
std::cout << "\tDendrite " << i++ << " type: "
<< neurite->neuriteType( ) << " ";
if ( neurite->neuriteType( ) == nsol::Neurite::DENDRITE )
std::cout << NSOL_DYNAMIC_CAST( nsol::Dendrite, ( neurite ))
->dendriteType( );
std::cout << " surface: ";
if ( neurite->stats( ))
{
nsol::Cached<> * cached =
NSOL_DYNAMIC_CAST( nsol::Cached<>, neurite->stats( ));
if ( cached )
std::cout << ( !cached->dirty( nsol::NeuriteCachedStats::SURFACE )
? "C" : "D" );
nsol::Sections sections = neurite->sections( );
std::cout << " [ ";
for ( const auto& section : sections )
{
cached =
NSOL_DYNAMIC_CAST(
nsol::Cached<>, dynamic_cast< nsol::NeuronMorphologySectionPtr >(
section )->stats( ));
if ( cached )
std::cout <<
( ! cached->dirty(
nsol::NeuronMorphologySectionCachedStats::SURFACE )
? "C " : "D " );
}
std::cout << "]";
}
else
std::cout << "No stats available";
std::cout << std::endl;
}
}
int main ( int argc, char ** argv )
{
std::cout << std::endl;
if ( argc < 2 )
{
std::cerr << "Error. Usage: " << argv[0]
<< " swc_input_file" << std::endl;
return -1;
}
std::cout << "Reading neuron without stats" << std::endl;
nsol::SwcReader readerWithoutStats;
nsol::NeuronPtr neuron = readerWithoutStats.readNeuron( argv[1] );
std::cout << "Reading neuron with stats" << std::endl;
nsol::SwcReaderStats readerWithStats;
nsol::NeuronPtr neuronWithStats = readerWithStats.readNeuron( argv[1] );
std::cout << "Reading neuron with cached stats" << std::endl;
nsol::SwcReaderCachedStats readerWithCachedStats;
nsol::NeuronPtr neuronWithCachedStats =
readerWithCachedStats.readNeuron( argv[1] );
if ( ! neuron || ! neuronWithStats || ! neuronWithCachedStats )
{
std::cerr << "Could not read neurons" << std::endl;
return -1;
}
std::cout << std::endl;
std::cout << "Compute and print neuron stats when not available" << std::endl;
ComputeAndPrintSurface( neuron );
std::cout << std::endl;
std::cout << "Compute and print neuron stats when not cacheable" << std::endl;
ComputeAndPrintSurface( neuronWithStats );
std::cout << std::endl;
std::cout << "Print cached stats" << std::endl;
PrintCachedSurfaceState( neuronWithCachedStats );
std::cout << std::endl;
std::cout << "Compute and print cacheable stats" << std::endl;
ComputeAndPrintSurface( neuronWithCachedStats );
std::cout << std::endl;
std::cout << "Print cached stats" << std::endl;
PrintCachedSurfaceState( neuronWithCachedStats );
std::cout << std::endl;
PrintCachedSurfaceState( neuronWithCachedStats );
std::cout << std::endl;
ComputeAndPrintSurface( neuronWithCachedStats );
std::cout << std::endl;
PrintCachedSurfaceState( neuronWithCachedStats );
std::cout << std::endl;
return 0;
}

Definition at line 39 of file NeuriteStats.h.

Member Function Documentation

virtual float nsol::NeuriteStats::getStat ( TNeuriteStat  stat,
TAggregation  agg = TOTAL 
) const
virtual

Computes the stat given.

Parameters
statstat to compute
aggaggregation used
Returns
stat value using the aggregation given

Reimplemented in nsol::NeuriteCachedStats.

Referenced by nsol::NeuriteCachedStats::getStat(), and stats().

+ Here is the caller graph for this function:

virtual NeuriteStats* nsol::NeuriteStats::stats ( void  )
inlinevirtual

Returns object as NeuriteStats.

Returns
pointer to NeuriteStats object

Reimplemented from nsol::Neurite.

Reimplemented in nsol::DendriteCachedStats.

Definition at line 67 of file NeuriteStats.h.

References getStat().

+ Here is the call graph for this function:


The documentation for this class was generated from the following file: