def get_estimates(estimators_tuple, positions, num_workers=<NUM_LIT:1>):
estimators = dict()<EOL>estimators["<STR_LIT>"], estimators["<STR_LIT>"],estimators["<STR_LIT>"] = estimators_tuple<EOL>log_estimates = dict()<EOL>log_estimates["<STR_LIT>"] = log(estimators["<STR_LIT>"])<EOL>X = [(position,) for position in positions]<EOL>with Pool(num_workers) as pool:<EOL><INDENT>first_job = pool.map_async(estimators["<STR_LIT>"].score_samples, tqdm(<EOL>array_split(X, num_workers), desc="<STR_LIT>"))<EOL>second_job = pool.map_async(estimators["<STR_LIT>"].score_samples, tqdm(<EOL>array_split(X, num_workers), desc="<STR_LIT>"))<EOL>log_estimates["<STR_LIT>"] = concatenate(first_job.get())<EOL>log_estimates["<STR_LIT>"] = concatenate(second_job.get())<EOL><DEDENT>log_estimates["<STR_LIT>"] =log_estimates["<STR_LIT>"] + log_estimates["<STR_LIT>"]<EOL>log_estimates["<STR_LIT>"] =log_estimates["<STR_LIT>"] - log_estimates["<STR_LIT>"]<EOL>return (<EOL>[estimators["<STR_LIT>"]] * len(X), exp(log_estimates["<STR_LIT>"]),<EOL>exp(log_estimates["<STR_LIT>"]), exp(log_estimates["<STR_LIT>"]),<EOL>exp(log_estimates["<STR_LIT>"]))<EOL>
Estimates densities, and probabilities for paragraph positions.

Parameters
----------
estimators_tuple : (float, KernelDensity, KernelDensity)
    An estimate of the prior probability P(relevant), an estimator of the prior density
    p(position), and an estimator of the conditional density p(position | relevant).
positions : iterable of float
    Paragraph positions for which densities, and probabilities will be estimated.
num_workers : int, optional
    The number of processes that will compute the estimates.

Returns
-------
five-tuple of (sequence of float)
    Estimates of P(relevant), p(position), p(position | relevant), P(position, relevant), and
    P(relevant | position) in the form of histograms.