<s> import numpy as np <EOL> from skbio . diversity . _util import _validate_counts_vector <EOL> from skbio . util . _decorator import experimental <EOL> @ experimental ( as_of = "<STR_LIT>" ) <EOL> def lladser_pe ( counts , r = <NUM_LIT:10> ) : <EOL> """<STR_LIT>""" <EOL> counts = _validate_counts_vector ( counts ) <EOL> sample = _expand_counts ( counts ) <EOL> np . random . shuffle ( sample ) <EOL> try : <EOL> pe = list ( _lladser_point_estimates ( sample , r ) ) [ - <NUM_LIT:1> ] [ <NUM_LIT:0> ] <EOL> except IndexError : <EOL> pe = np . nan <EOL> return pe <EOL> @ experimental ( as_of = "<STR_LIT>" ) <EOL> def lladser_ci ( counts , r , alpha = <NUM_LIT> , f = <NUM_LIT:10> , ci_type = '<STR_LIT>' ) : <EOL> """<STR_LIT>""" <EOL> counts = _validate_counts_vector ( counts ) <EOL> sample = _expand_counts ( counts ) <EOL> np . random . shuffle ( sample ) <EOL> try : <EOL> ci = list ( _lladser_ci_series ( sample , r , alpha , f , ci_type ) ) [ - <NUM_LIT:1> ] <EOL> except IndexError : <EOL> ci = ( np . nan , np . nan ) <EOL> return ci <EOL> def _expand_counts ( counts ) : <EOL> """<STR_LIT>""" <EOL> return np . repeat ( np . arange ( counts . size ) , counts ) <EOL> def _lladser_point_estimates ( sample , r = <NUM_LIT:10> ) : <EOL> """<STR_LIT>""" <EOL> if r <= <NUM_LIT:2> : <EOL> raise ValueError ( "<STR_LIT>" ) <EOL> for count , seen , cost , i in _get_interval_for_r_new_otus ( sample , r ) : <EOL> t = np . random . gamma ( count , <NUM_LIT:1> ) <EOL> point_est = ( r - <NUM_LIT:1> ) / t <EOL> yield point_est , i , t <EOL> def _get_interval_for_r_new_otus ( seq , r ) : <EOL> """<STR_LIT>""" <EOL> seen = set ( ) <EOL> seq_len = len ( seq ) <EOL> for i , curr in enumerate ( seq ) : <EOL> if curr in seen : <EOL> continue <EOL> else : <EOL> seen . add ( curr ) <EOL> unseen = <NUM_LIT:0> <EOL> j = i + <NUM_LIT:1> <EOL> while unseen < r and j < seq_len : <EOL> if seq [ j ] not in seen : <EOL> unseen += <NUM_LIT:1> <EOL> j += <NUM_LIT:1> <EOL> count = j - i - <NUM_LIT:1> <EOL> cost = j <EOL> if not count or ( unseen < r ) : <EOL> return <EOL> yield count , set ( seen ) , cost , i <EOL> def _lladser_ci_series ( seq , r , alpha = <NUM_LIT> , f = <NUM_LIT:10> , ci_type = '<STR_LIT>' ) : <EOL> """<STR_LIT>""" <EOL> for count , seen , cost , i in _get_interval_for_r_new_otus ( seq , r ) : <EOL> t = np . random . gamma ( count , <NUM_LIT:1> ) <EOL> yield _lladser_ci_from_r ( r , t , alpha , f , ci_type ) <EOL> def _lladser_ci_from_r ( r , t , alpha = <NUM_LIT> , f = <NUM_LIT:10> , ci_type = '<STR_LIT>' ) : <EOL> """<STR_LIT>""" <EOL> alpha = round ( alpha , <NUM_LIT:2> ) <EOL> if ci_type == '<STR_LIT>' : <EOL> if alpha != <NUM_LIT> : <EOL> raise ValueError ( "<STR_LIT>" ) <EOL> if r not in _UPPER_CONFIDENCE_BOUND : <EOL> raise ValueError ( "<STR_LIT>" ) <EOL> return <NUM_LIT:0.0> , _UPPER_CONFIDENCE_BOUND [ r ] / t <EOL> elif ci_type == '<STR_LIT:L>' : <EOL> if alpha != <NUM_LIT> : <EOL> raise ValueError ( "<STR_LIT>" ) <EOL> if r not in _LOWER_CONFIDENCE_BOUND : <EOL> raise ValueError ( "<STR_LIT>" ) <EOL> return _LOWER_CONFIDENCE_BOUND [ r ] / t , <NUM_LIT:1.0> <EOL> bound_params = _ul_confidence_bounds ( f , r , alpha ) <EOL> if ci_type == '<STR_LIT>' : <EOL> bound_param = bound_params [ <NUM_LIT:0> ] <EOL> elif ci_type == '<STR_LIT>' : <EOL> bound_param = bound_params [ <NUM_LIT:1> ] <EOL> else : <EOL> raise ValueError ( "<STR_LIT>" % ci_type ) <EOL> upper_bound = bound_param * f / t <EOL> lower_bound = bound_param / t <EOL> if upper_bound > <NUM_LIT:1> : <EOL> upper_bound = <NUM_LIT:1.0> <EOL> return lower_bound , upper_bound <EOL> def _ul_confidence_bounds ( f , r , alpha ) : <EOL> """<STR_LIT>""" <EOL> a = None <EOL> b = None <EOL> if ( f , r , alpha ) in _PRECOMPUTED_TABLE : <EOL> return _PRECOMPUTED_TABLE [ ( f , r , alpha ) ] <EOL> if f == <NUM_LIT:10> and r <= <NUM_LIT:50> : <EOL> if alpha in _CBS and r < len ( _CBS [ alpha ] ) : <EOL> a , b = _CBS [ alpha ] [ r ] <EOL> if a is None or b is None : <EOL> raise ValueError ( "<STR_LIT>" <EOL> "<STR_LIT>" % ( f , r , alpha ) ) <EOL> return a , b <EOL> _UPPER_CONFIDENCE_BOUND = { <EOL> <NUM_LIT:1> : <NUM_LIT> , <EOL> <NUM_LIT:2> : <NUM_LIT> , <EOL> <NUM_LIT:3> : <NUM_LIT> , <EOL> <NUM_LIT:4> : <NUM_LIT> , <EOL> <NUM_LIT:5> : <NUM_LIT> , <EOL> <NUM_LIT:6> : <NUM_LIT> , <EOL> <NUM_LIT:7> : <NUM_LIT> , <EOL> <NUM_LIT:8> : <NUM_LIT> , <EOL> <NUM_LIT:9> : <NUM_LIT> , <EOL> <NUM_LIT:10> : <NUM_LIT> , <EOL> <NUM_LIT:11> : <NUM_LIT> , <EOL> <NUM_LIT:12> : <NUM_LIT> , <EOL> <NUM_LIT> : <NUM_LIT> , <EOL> <NUM_LIT> : <NUM_LIT> , <EOL> <NUM_LIT:15> : <NUM_LIT> , <EOL> <NUM_LIT:16> : <NUM_LIT> , <EOL> <NUM_LIT> : <NUM_LIT> , <EOL> <NUM_LIT> : <NUM_LIT> , <EOL> <NUM_LIT> : <NUM_LIT> , <EOL> <NUM_LIT:20> : <NUM_LIT> , <EOL> <NUM_LIT> : <NUM_LIT> , <EOL> <NUM_LIT> : <NUM_LIT> , <EOL> <NUM_LIT> : <NUM_LIT> , <EOL> <NUM_LIT> : <NUM_LIT> , <EOL> <NUM_LIT> : <NUM_LIT> , <EOL> <NUM_LIT:50> : <NUM_LIT> <EOL> } <EOL> _LOWER_CONFIDENCE_BOUND = { <EOL> <NUM_LIT:1> : <NUM_LIT> , <EOL> <NUM_LIT:2> : <NUM_LIT> , <EOL> <NUM_LIT:3> : <NUM_LIT> , <EOL> <NUM_LIT:4> : <NUM_LIT> , <EOL> <NUM_LIT:5> : <NUM_LIT> , <EOL> <NUM_LIT:6> : <NUM_LIT> , <EOL> <NUM_LIT:7> : <NUM_LIT> , <EOL> <NUM_LIT:8> : <NUM_LIT> , <EOL> <NUM_LIT:9> : <NUM_LIT> , <EOL> <NUM_LIT:10> : <NUM_LIT> , <EOL> <NUM_LIT:11> : <NUM_LIT> , <EOL> <NUM_LIT:12> : <NUM_LIT> , <EOL> <NUM_LIT> : <NUM_LIT> , <EOL> <NUM_LIT> : <NUM_LIT> , <EOL> <NUM_LIT:15> : <NUM_LIT> , <EOL> <NUM_LIT:16> : <NUM_LIT> , <EOL> <NUM_LIT> : <NUM_LIT> , <EOL> <NUM_LIT> : <NUM_LIT> , <EOL> <NUM_LIT> : <NUM_LIT> , <EOL> <NUM_LIT:20> : <NUM_LIT> , <EOL> <NUM_LIT> : <NUM_LIT> , <EOL> <NUM_LIT> : <NUM_LIT> , <EOL> <NUM_LIT> : <NUM_LIT> , <EOL> <NUM_LIT> : <NUM_LIT> , <EOL> <NUM_LIT> : <NUM_LIT> <EOL> } <EOL> _PRECOMPUTED_TABLE = { <EOL> ( <NUM_LIT:2> , <NUM_LIT:50> , <NUM_LIT> ) : ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT:2> , <NUM_LIT> , <NUM_LIT> ) : ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT:100> , <NUM_LIT> ) : ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ) : ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ) : ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT:2> , <NUM_LIT> ) : ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT:2> , <NUM_LIT> ) : ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT:2> , <NUM_LIT> ) : ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT:2> , <NUM_LIT> ) : ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT:20> , <NUM_LIT:3> , <NUM_LIT> ) : ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT:12> , <NUM_LIT:3> , <NUM_LIT> ) : ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT:10> , <NUM_LIT:4> , <NUM_LIT> ) : ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT:6> , <NUM_LIT:6> , <NUM_LIT> ) : ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT:5> , <NUM_LIT:7> , <NUM_LIT> ) : ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT:3> , <NUM_LIT> , <NUM_LIT> ) : ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ) : ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ) : ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ) : ( <NUM_LIT> , <NUM_LIT> ) <EOL> } <EOL> _CB_90 = [ <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) <EOL> ] <EOL> _CB_95 = [ <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) <EOL> ] <EOL> _CB_99 = [ <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( None , None ) , <EOL> ( <NUM_LIT> , <NUM_LIT> ) <EOL> ] <EOL> _CBS = { <EOL> <NUM_LIT> : _CB_90 , <EOL> <NUM_LIT> : _CB_95 , <EOL> <NUM_LIT> : _CB_99 <EOL> } </s>
