from __future__ import print_function import io import nbformat import sys from formatting import * def inplace_change(filename, old_string, new_string): # Safely read the input filename using 'with' with open(filename, encoding='utf-8') as f: s = f.read() if old_string not in s: return # Safely write the changed content, if found in the file with open(filename, 'w', encoding='utf-8') as f: s = s.replace(old_string, new_string) f.write(s) def merge_notebooks(outfile, filenames): merged = None added_appendix = False for fname in filenames: with io.open(fname, 'r', encoding='utf-8') as f: nb = nbformat.read(f, nbformat.NO_CONVERT) remove_formatting(nb) if not added_appendix and fname[0:8] == 'Appendix': remove_links_add_appendix(nb) added_appendix = True else: remove_links(nb) if merged is None: merged = nb else: merged.cells.extend(nb.cells) #merged.metadata.name += "_merged" outfile.write(nbformat.writes(merged, nbformat.NO_CONVERT)) if __name__ == '__main__': with open('book.ipynb', 'w', encoding='utf-8') as f: '''merge_notebooks(f, ['../04-One-Dimensional-Kalman-Filters.ipynb'])''' merge_notebooks(f, ['./tmp/00-Preface.ipynb', './tmp/01-g-h-filter.ipynb', './tmp/02-Discrete-Bayes.ipynb', './tmp/03-Gaussians.ipynb', './tmp/04-One-Dimensional-Kalman-Filters.ipynb', './tmp/05-Multivariate-Gaussians.ipynb', './tmp/06-Multivariate-Kalman-Filters.ipynb', './tmp/07-Kalman-Filter-Math.ipynb', './tmp/08-Designing-Kalman-Filters.ipynb', './tmp/09-Nonlinear-Filtering.ipynb', './tmp/10-Unscented-Kalman-Filter.ipynb', './tmp/11-Extended-Kalman-Filters.ipynb', './tmp/12-Particle-Filters.ipynb', './tmp/13-Smoothing.ipynb', './tmp/14-Adaptive-Filtering.ipynb', './tmp/Appendix-A-Installation.ipynb', './tmp/Appendix-B-Symbols-and-Notations.ipynb', './tmp/Appendix-D-HInfinity-Filters.ipynb', './tmp/Appendix-E-Ensemble-Kalman-Filters.ipynb']) #remove text printed for matplotlib charts inplace_change('book.ipynb', '', '') inplace_change('book.ipynb', '', '')