Region-specific atrophy in dendrites (Narayanan, Narayan, Chattarji, 2005)

 Download zip file 
Help downloading and running models
Accession:147756
...in this study, we develop an algorithm that uses statistics from precise morphometric analyses to systematically remodel neuronal reconstructions. We use the distribution function of the ratio of two normal distributed random variables to specify the probabilities of remodeling along various regions of the dendritic arborization. We then use these probabilities to drive an iterative algorithm for manipulating the dendritic tree in a region-specific manner. As a test, we apply this framework to a well characterized example of dendritic remodeling: stress-induced dendritic atrophy in hippocampal CA3 pyramidal cells. We show that our pruning algorithm is capable of eliciting atrophy that matches biological data from rodent models of chronic stress. <br>
Reference:
1 . Narayanan R, Narayan A, Chattarji S (2005) A probabilistic framework for region-specific remodeling of dendrites in three-dimensional neuronal reconstructions. Neural Comput 17:75-96 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Neuron or other electrically excitable cell; Dendrite;
Brain Region(s)/Organism: Hippocampus;
Cell Type(s): Hippocampus CA3 pyramidal cell;
Channel(s):
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: C or C++ program;
Model Concept(s): Influence of Dendritic Geometry;
Implementer(s): Narayanan, Rishikesh [rishi at iisc.ac.in];
Search NeuronDB for information about:  Hippocampus CA3 pyramidal cell;
#ifndef __PRUNE__H_
#define __PRUNE__H_

#include"Sholl.h"
#include<sys/time.h>


#define BASAL 0
#define APICAL 1

struct Subset{
	int npts;		// Number of points in the subset
	int * Pts;		// The indices to the points
};

struct twodouble{
	double x1;
	double x2;
};

class Prune: public Sholl
{
protected:

	Subset TP;		// Terminal Points;
	Subset BP;		// Branch Points;
	Subset Stems;	// Stems;
	Subset Soma;	// Soma;

	Subset * Children;

	ShollData BPStats;	// BP Stats in sholl fashion
	
	int npc;              // number of SWC compartments in pruned neuron
	SWCData * PruCom ;     // The Pruned Compartments

	int antra;		// number of sholl tracks on apical side
	int bntra;		// number of sholl tracks on basal side

	double * abpzeta;	// Actual BP pruning values along apical side
	double * bbpzeta;	// Actual BP pruning values along basal side;

	double * adlzeta;	// Actual DL pruning values along apical side
	double * bdlzeta;	// Actual DL pruning values along basal side;
	

	double * abpP;			// Probability of apical BP Pruning
	double * adlP;			// Probability of apical DL Pruning

	double * bbpP;			// Probability of basal BP Pruning
	double * bdlP;			// Probability of basal DL Pruning

	double * bpPruneP;

	double maxdlP;

	double * abpprune;	// Completed BP pruning along apical side
	double * bbpprune;	// Completed BP pruning along basal side;

	double * adlprune;	// Completed DL pruning along apical side
	double * bdlprune;	// Completed DL pruning along basal side;

	char * outfilename;
	char * basefilename;

	int * TPBP;
	double * TPBPdist;

	int cmr;
	double dlr;
	double dlsum;
	double dlred;	// Specification on the amount of reduction


public:

	Prune();
	void LoadParams(char * = NULL);
	void PruneTree();
	void PrintFinal();
	void WriteBPStats(char*);

protected:

	void printSubsets();
	void printStatus();
	void generateSpecs();
	void saveSWC(char * = NULL);
	void checkTPs();

// ******************* Base Functions *****************************//

	void getBP();		// Get Branch Points
	void getTP();		// Get Terminal Points
	void getStems();	// Get Stems
	void getSoma();		// Get Soma

	int isParentSoma(int);	// To find if a pt's parent is soma
	int isParentBP(int);	// To find if a pt's parent is BP

	void findTPBP();		// Find the BP's corres. to TP's
	void findChildren();	// Update/form Children list
	void getBPHist();		// Per segment BP count
	void getStemHist();		// Per segment Stem count

	double disttoParent(int); 	// Distance of a cmpt to its parent     

// ******************* Specification Functions **********************//

	twodouble normal(double, double, double, double); // Normal distribution
	double pnorm(double);	// Gaussian CDF
	double dnorm(double);	// Gaussian PDF

	double ratio(double,double,double);	// PDF of a+x/b+y
	double maxratio (double,double,double, double);
	double maxxratio (double,double,double, double);
	double finratio (double,double,double, double);

	void setZeta(char *);
	void setMaxZeta(char *);
	void setApicalMaxZeta(char *);
	void setBasalMaxZeta(char *);
	double generateZeta(double, double, double, double, double);
	void setDLProbs();
	void setBPProbs();
	void setProbabilities();	// Set the initial probabilities

// ******************* TPPrune Functions *****************************//

	void pruneTP(int, int);
	void tpPrune(int);
	void rcParentBP(int, int);
	void rcParentSoma(int);
	void rcParentDendrite(int);
	void rmcmpt(int);
	void removeCompartment(int, int);

// ******************* BPPrune Functions *****************************//

	void pruneBP(int);
	void bpPrune(int);
	int removeCmprtmnt(int);

// ******************* Prune Functions *******************************//

	void initialize();
	void prune();	// Prune
	double convmeasure();
};	
#endif 

Loading data, please wait...