<jupyter_start><jupyter_text>Rental investment property worksheetCrunch numbers about potential real estate investments First-time introductionTo use this notebook, you must _run_ code in each of its _cells_. Simply select "Run All" in the "Cell" menu above, wait a moment, and crunch your numbers. Use this notebook onlineIf you are viewing this in a static notebook frontend, such as on GitHub, there won't be much to see. Unfortunately, this notebook is only useful when it's actually being run inside Jupyter.However, you can use  to run the notebook online. This does run it inside a real Jupyter instance, allowing full interactive use and even writing and running code in new Python cells.[![Binder](https://mybinder.org/badge.svg)](https://mybinder.org/v2/gh/mrled/jupyter-mortgage/master?filepath=MortgageWorksheet.ipynb)---<jupyter_code>import logging.config
import os

import bloodloan.ui.ui as ui

# The directory where this Jupyter notebook is found
# NOTE: os.getcwd() is not portable in Jupyter notebooks
# <https://github.com/ipython/ipython/issues/10123>
# If necessary, hard-code this path
notebookdir = os.getcwd()

# Configure logging to a file
logging.config.dictConfig(ui.getlogconfig(notebookdir, level='DEBUG'))
# Start the UI
ui.disablecellscroll()
ui.main(notebookdir)
ui.toggleinputcells()<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.0824665676077266, 'fraction_numerical': 0.004457652303120356, 'mean_word_length': 5.538834951456311, 'pattern_counts': {'":': 0, '<': 6, '<?xml version=': 0, '>': 6, 'https://': 3, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '632504', 'license': 'Unlicense', 'n_tokens_mistral': 406, 'n_tokens_neox': 393, 'n_words': 151, 'path': 'MortgageWorksheet.ipynb', 'repo_name': 'edenbaus/jupyter-mortgage', 'size': '1346'}