Source code for SISSOkit.notebook

from . import evaluation as evl
from . import utils as utils

import os
import re
import json
import string





[docs]def generate_report(path,file_path,notebook_name,file_name=None): r""" Generates jupyter notebook reports. Arguments: path (list): path to SISSO results. If there is only one result over whole data set, then it should be a list containing only 1 item. If there is also cross validation results, it should be [path to result over whole data set, path to cross validation results]. file_path (string): path to newly generated jupyter notebook. notebook_name (int or string): notebook index or notebook name. ===== ===== index name ===== ===== 0 regression 1 regression with CV ===== ===== file_name (None or string): the newly generated jupyter notebook name. If it is ``None``, the file name is the same as notebook template name. """ if notebook_name=='regression' or notebook_name==0: notebook_name='regression' if file_name==None: file_name=notebook_name regression=evl.Regression(path[0]) with open(os.path.join(os.path.dirname(__file__),'notebook_templates',notebook_name+'.ipynb'),'r') as f: notebook=json.load(f) notebook['cells'][2]['source'][0]='path="%s"\n'%path[0] for dimension in range(regression.dimension): notebook['cells'][11]['source'].append('1. %dD descriptor:\n'%(dimension+1)) notebook['cells'][11]['source'].append('\n') for i in range(dimension+1): notebook['cells'][11]['source'].append('$$\n'+utils.descriptors_to_markdown(regression.descriptors[dimension][i])+'\n$$') notebook['cells'][11]['source'].append('\n') notebook['cells'][11]['source'].append('\n') notebook['cells'][11]['source'].append('$$$$\n') notebook['cells'][11]['source'].append('\n') for dimension in range(regression.dimension): notebook['cells'][28]['source'].append('1. %dD model:\n'%(dimension+1)) notebook['cells'][28]['source'].append('\n') for task in range(regression.n_task): notebook['cells'][28]['source'].append('\t1. Task %d:\n'%(task+1)) notebook['cells'][28]['source'].append('\n') notebook['cells'][28]['source'].append('$$\n'+utils.models_to_markdown(regression,task+1,dimension+1,indent='\\\\')+'\n$$') notebook['cells'][28]['source'].append('\n') with open(os.path.join(file_path,file_name+'.ipynb'),'w') as f: json.dump(notebook,f,indent=1) if notebook_name=='regression with CV' or notebook_name==1: notebook_name='regression with CV' if file_name==None: file_name=notebook_name regression=evl.Regression(path[0]) with open(os.path.join(os.path.dirname(__file__),'notebook_templates',notebook_name+'.ipynb'),'r') as f: notebook=json.load(f) notebook['cells'][2]['source'][0]='path="%s"\n'%path[0] notebook['cells'][2]['source'][1]='cv_path="%s"\n'%path[1] for dimension in range(regression.dimension): notebook['cells'][13]['source'].append('1. %dD descriptor:\n'%(dimension+1)) notebook['cells'][13]['source'].append('\n') for i in range(dimension+1): notebook['cells'][13]['source'].append('$$\n'+utils.descriptors_to_markdown(regression.descriptors[dimension][i])+'\n$$') notebook['cells'][13]['source'].append('\n') notebook['cells'][13]['source'].append('\n') notebook['cells'][13]['source'].append('$$$$\n') notebook['cells'][13]['source'].append('\n') for dimension in range(regression.dimension): notebook['cells'][41]['source'].append('1. %dD model:\n'%(dimension+1)) notebook['cells'][41]['source'].append('\n') for task in range(regression.n_task): notebook['cells'][41]['source'].append('\t1. Task %d:\n'%(task+1)) notebook['cells'][41]['source'].append('\n') notebook['cells'][41]['source'].append('$$\n'+utils.models_to_markdown(regression,task+1,dimension+1,indent='\\\\')+'\n$$') notebook['cells'][41]['source'].append('\n') with open(os.path.join(file_path,file_name+'.ipynb'),'w') as f: json.dump(notebook,f,indent=1)