def extract_data(data_path, feature): '''Loads a list of neurons, extracts feature and transforms the fitted distribution in the correct format. Returns the optimal distribution, corresponding parameters, minimun and maximum values. ''' population = ezy.load_neurons(data_path) feature_data = [getattr(n, 'get_' + feature)() for n in population] try: opt_fit = stats.optimal_distribution(feature_data) except ValueError: from itertools import chain feature_data = list(chain(*feature_data)) opt_fit = stats.optimal_distribution(feature_data) return opt_fit
def extract_data(data_path, feature): """Loads a list of neurons, extracts feature and transforms the fitted distribution in the correct format. Returns the optimal distribution, corresponding parameters, minimun and maximum values. """ population = ezy.load_neurons(data_path) feature_data = [getattr(n, "get_" + feature)() for n in population] try: opt_fit = stats.optimal_distribution(feature_data) except ValueError: from itertools import chain feature_data = list(chain(*feature_data)) opt_fit = stats.optimal_distribution(feature_data) return opt_fit
def extract_data(data_path, feature): '''Loads a list of neurons, extracts feature and transforms the fitted distribution in the correct format. Returns the optimal distribution, corresponding parameters, minimun and maximum values. ''' population = nm.load_neurons(data_path) feature_data = [nm.get(feature, n) for n in population] feature_data = list(chain(*feature_data)) return stats.optimal_distribution(feature_data)
def extract_data(files, feature, params=None): '''Loads a list of neurons, extracts feature and transforms the fitted distribution in the correct format. Returns the optimal distribution and corresponding parameters. Normal distribution params (mean, std) Exponential distribution params (loc, scale) Uniform distribution params (min, range) ''' neurons = ezy.load_neurons(files) if params is None: params = {} feature_data = [FEATURE_MAP[feature](n, params) for n in neurons] try: opt_fit = stats.optimal_distribution(feature_data) except ValueError: feature_data = list(chain(*feature_data)) opt_fit = stats.optimal_distribution(feature_data) return opt_fit
def extract_data(neurons, feature, params=None): '''Extracts feature from a list of neurons and transforms the fitted distribution in the correct format. Returns the optimal distribution and corresponding parameters. Normal distribution params (mean, std) Exponential distribution params (loc, scale) Uniform distribution params (min, range) ''' if params is None: params = {} feature_data = [get(FEATURE_MAP[feature], n, **params) for n in neurons] feature_data = list(chain(*feature_data)) return stats.optimal_distribution(feature_data)
def extract_data(files, feature, params=None): '''Loads a list of neurons, extracts feature and transforms the fitted distribution in the correct format. Returns the optimal distribution and corresponding parameters. Normal distribution params (mean, std) Exponential distribution params (loc, scale) Uniform distribution params (min, range) ''' population = ezy.load_neurons(files) if params is None: params = {} feature_data = [getattr(n, 'get_' + feature)(**params) for n in population] try: opt_fit = stats.optimal_distribution(feature_data) except ValueError: from itertools import chain feature_data = list(chain(*feature_data)) opt_fit = stats.optimal_distribution(feature_data) return opt_fit
def test_multiple_distr(filepath): '''Runs the distribution fit for multiple distributions and returns the optimal distribution along with the corresponding parameters. ''' # load a neuron from an SWC file population = nm.load_neurons(filepath) # Create a list of basic distributions distr_to_check = ('norm', 'expon', 'uniform') # Get the soma radii of a population of neurons soma_size = nm.get('soma_radii', population) # Find the best fit distribution return st.optimal_distribution(soma_size, distr_to_check)
def test_optimal_distribution_normal(): optimal = st.optimal_distribution(NORMAL) assert optimal.type == 'norm'
def test_optimal_distribution_uniform(): optimal = st.optimal_distribution(UNIFORM) nt.ok_(optimal.type == 'uniform')
def test_optimal_distribution_exponential(): optimal = st.optimal_distribution(EXPON) nt.ok_(optimal.type == 'expon')
def test_optimal_distribution_normal(): optimal = st.optimal_distribution(NORMAL) nt.ok_(optimal.type == 'norm')
parser.add_argument('datapath', help='Path to morphology data file or directory') parser.add_argument('feature', help='Feature available for the ezy.neuron') return parser.parse_args() if __name__ == '__main__': args = parse_args() data_path = args.datapath feature = args.feature population = ezy.load_neurons(data_path) feature_data = [getattr(n, 'get_' + feature)() for n in population] try: result = st.optimal_distribution(feature_data) except ValueError: from itertools import chain feature_data = list(chain(*feature_data)) result = st.optimal_distribution(feature_data) print "Optimal distribution fit for %s is: %s with parameters %s"\ % (feature, result.type, result.params)
def test_optimal_distribution_exponential(): optimal = st.optimal_distribution(EXPON) assert optimal.type == 'expon'
def test_optimal_distribution_uniform(): optimal = st.optimal_distribution(UNIFORM) assert optimal.type == 'uniform'