Source code for capalyzer.packet_builder.sub_factories.hmp_comparison_factory
from .subfactory import SubFactory
import pandas as pd
from json import loads
from numpy import percentile
[docs]def jloads(fname):
return loads(open(fname).read())
[docs]def as_dist(raw_vals):
vals = {
site: list(percentile(measures, [0, 25, 50, 75, 100]))
for site, measures in raw_vals.items()
}
return vals
[docs]class HMPFactory(SubFactory):
[docs] def raw(self):
hmpfs = self.factory.get_results(module='hmp_site_dists',
result='metaphlan2')
tbl = {sname: jloads(fname)
for sname, fname in hmpfs}
return tbl
[docs] def dists(self):
tbl = {sname: as_dist(raw_vals)
for sname, raw_vals in self.raw().items()}
return tbl
[docs] def raw_table(self):
cols = {
'sample_name': [],
'body_site': [],
'distance': [],
}
for sname, raw_vals in self.raw().items():
for site, measurements in raw_vals.items():
for measurement in measurements:
cols['sample_name'].append(sname)
cols['body_site'].append(site)
cols['distance'].append(measurement)
tbl = pd.DataFrame.from_dict(cols, orient='columns')
return tbl