Source code for app.model.lib.model_export

import io
import csv


[docs] def export_model_csv(db_session, study, user=None): buf = io.StringIO() writer = csv.DictWriter( buf, fieldnames=[ 'bioreplicate', 'compartment', 'subject_type', 'subject_name', 'model_type', 'input_pointCount', 'input_endTime', 'y0', 'mumax', 'lag', 'y0_lm', 'K', 'h0', 'r2', 'rss', ] ) writer.writeheader() for modeling_result in study.modelingResults: if modeling_result.state != 'ready': continue if not modeling_result.isPublished and not study.manageable_by_user(user): continue measurement_context = modeling_result.measurementContext subject = measurement_context.get_subject(db_session) params = modeling_result.params writer.writerow({ 'bioreplicate': measurement_context.bioreplicate.name, 'compartment': measurement_context.compartment.name, 'subject_type': measurement_context.subjectType, 'subject_name': measurement_context.subjectName, 'model_type': modeling_result.model_name, # Inputs: 'input_pointCount': params.get('inputs', {}).get('pointCount', None), 'input_endTime': params.get('inputs', {}).get('endTime', None), # Coefficients: 'y0': params.get('coefficients', {}).get('y0', None), 'mumax': params.get('coefficients', {}).get('mumax', None), 'lag': params.get('coefficients', {}).get('lag', None), 'y0_lm': params.get('coefficients', {}).get('y0_lm', None), 'K': params.get('coefficients', {}).get('K', None), 'h0': params.get('coefficients', {}).get('h0', None), # Fit: 'r2': params.get('fit', {}).get('r2', None), 'rss': params.get('fit', {}).get('rss', None), }) return buf.getvalue().encode('utf-8')