{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "*This notebook contains course material from [CBE20255](https://jckantor.github.io/CBE20255)\n", "by Jeffrey Kantor (jeff at nd.edu); the content is available [on Github](https://github.com/jckantor/CBE20255.git).\n", "The text is released under the [CC-BY-NC-ND-4.0 license](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode),\n", "and code is released under the [MIT license](https://opensource.org/licenses/MIT).*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "< [Getting Started](http://nbviewer.jupyter.org/github/jckantor/CBE20255/blob/master/notebooks/00.00-Getting-Started.ipynb) | [Contents](toc.ipynb) | [Solving Linear Equations with Simpy](http://nbviewer.jupyter.org/github/jckantor/CBE20255/blob/master/notebooks/00.02-Solving-Linear-Equations-with-Sympy.ipynb) >

\"Open" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "ub8jClemdOv-" }, "source": [ "# Jupyter Notebooks, Python, and Google Colaboratory" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "HlCqwbAEg6Fw" }, "source": [ "## Summary\n", "\n", "The purpose of this notebook is to introduce Jupyter Notebooks, Python, and Google Colaboratory for routine engineering calculations. This introduction assumes this is your first exposure to these topics.\n", "\n", "**[Jupyter Notebooks](https://Jupyter.org)** are interactive documents, like this one, that include text and code. The documents are ordinary files with a suffix `.ipynb`. They can be uploaded, downloaded, and shared like any other digital document. The notebooks are composed of individual cells containing either text, code, or the output of a calculation. The code cells be written in different programming languages such as Python, R, and Julia.\n", "\n", "**[Python](https://www.python.org/)** is a high-level, object-oriented programming language well suited to the rapid development of web and scientific applications. It is widely used for interactive science and engineering computations where productivity is a more important than achieving the highest levels of numerical performance. Python refers to the language itself plus a large eco-system of development tools, documentation, and code libraries for numerical computations, data management, and graphics. \n", "\n", "**[Google Colaboratory](https://colab.research.google.com/)** is Google's cloud environment for viewing and executing Jupyter/Python notebooks. It operates like Google docs, providing for the collaborative creation and editing of notebooks, and allowing notebooks to be saved to your Google Drive account. Because Colaboratory is based entirely in the cloud, there is no need to install any local software. Colaboratory requires only a browser and internet access to view and execute notebooks. \n", "\n", "There other software development environments well suited to viewing and executing the notebooks in this repository. Among them are the excellent distributions\n", "\n", "* [Anaconda](https://store.continuum.io/cshop/anaconda/) available from [Continuum Analytics](http://continuum.io/).\n", "* [Enthought Canopy](https://www.enthought.com/products/canopy/) available from [Enthought, Inc.](https://www.enthought.com/)\n", "\n", "which include tools to view and edit Jupyter notebooks, curated versions of all the major Python code libraries, and additional software development tools. You will want to install one of these distributions if you need off-line access to these notebooks, or if you intend to do more extensive development. " ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "rZ7GJBr7dOwB" }, "source": [ "## Setting up Google Colaboratory and Google Drive\n", "\n", "The easiest way to get started with Google Colaboratory is to open a notebook. If you are not currently reading this notebook on Colaboratory, open it [here from the github repository](https://colab.research.google.com/github/jckantor/CBE20255/blob/master/notebooks/Getting_Started_with_Jupyter_Notebooks_and_Python.ipynb).\n", "\n", "Google Colaboratory is tightly integrated with Google Drive. Notebooks can be opened directly from Google Drive and automatically saved back to Google Drive. Notebooks can be shared, and support mutiple users collaborating simultaenously the same notebook. These features will be familiar if you've previously used Google Docs. You can obtain a Google Drive or a Google One account [here](https://www.google.com/drive/) if you don't already have one. The free tier offers 15GB of storage which is enough for routine use of these notebooks.\n", "\n", "When opened from a third party resource such as github, the notebook is initially in `playground mode`. This is fine for viewing notebooks and executing code cells. To save your work you will need to save a copy of the notebook. You can save a copy to:\n", "\n", "* your Google Drive\n", "* a repository in your own github account\n", "* download the notebook to your personal device\n" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "NLvYtMzqdOwI" }, "source": [ "## Python Basics\n", "\n", "Python is an elegant and modern language for programming and problem solving that has found increasing use by engineers and scientists. In the next few cells we'll demonstrate some basic Python functionality." ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "6GvOBb-UdOwK" }, "source": [ "### Arithmetic Operations" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "a9jceXKbdOwK" }, "source": [ "Basic arithmetic functions" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "colab": {}, "colab_type": "code", "id": "tHiS8xANdOwL", "outputId": "3c0fb60e-eda8-4b50-9932-ef5abf5e04cb" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a + b = 14\n", "a**b = 144\n", "a/b = 6.0\n" ] } ], "source": [ "a = 12\n", "b = 2\n", "print(\"a + b = \", a + b)\n", "print(\"a**b = \", a**b)\n", "print(\"a/b = \", a/b)" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "MoVqT__pdOwP" }, "source": [ "Most math functions are in the `numpy` library. This next cell shows how to import `numpy` with the prefix `np`, then use it to call a common function" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "colab": {}, "colab_type": "code", "id": "qaWjJLpPdOwQ", "outputId": "b592d447-a49e-4261-f36b-7d19188ea5d3" }, "outputs": [ { "data": { "text/plain": [ "-2.4492935982947064e-16" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import numpy as np\n", "np.sin(2*np.pi)" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "FEQz3ZaddOwT" }, "source": [ "### Lists" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "PuQyiwjwdOwT" }, "source": [ "Lists are a versatile way of organizing your data in Python. Here are some examples, more can be found on [this Khan Academy video](http://youtu.be/zEyEC34MY1A)." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "colab": {}, "colab_type": "code", "id": "KNekErcidOwV", "outputId": "027d078b-6ce8-42f2-c8fb-eb4ca6eddb2c" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1, 2, 3, 4]\n" ] } ], "source": [ "xList = [1, 2, 3, 4]\n", "print(xList)" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "Qx1TyoKPdOwY" }, "source": [ "Concatentation is the operation of joining one list to another. " ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "colab": {}, "colab_type": "code", "id": "27RQ4lVCdOwZ", "outputId": "45135d5b-f30d-492b-ca60-c816f2c06eb5" }, "outputs": [ { "data": { "text/plain": [ "[1, 2, 3, 4, 5, 6, 7, 8]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Concatenation\n", "x = [1, 2, 3, 4];\n", "y = [5, 6, 7, 8];\n", "\n", "x + y" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "WFvsUiyOdOwb" }, "source": [ "A common operation is to apply a binary operation to elements of a single list. For an example such as arithmetic addition, this can be done using the `sum` function from `numpy`." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "colab": {}, "colab_type": "code", "id": "3uvuKZRTdOwc", "outputId": "06b2040c-63bb-4905-d090-6a61367c20a4" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "10\n" ] } ], "source": [ "# Two ways to sum a list of numbers\n", "print(np.sum(x))" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "ERV4Nw5UdOwf" }, "source": [ "A for loop is a means for iterating over the elements of a list. The colon marks the start of code that will be executed for each element of a list. Indenting has meaning in Python. In this case, everything in the indented block will be executed on each iteration of the for loop." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "colab": {}, "colab_type": "code", "id": "2lQNC1GddOwg", "outputId": "70335dd5-1449-4c3f-b16c-351f72895d5b" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "x = 1 sin(x) = 0.8414709848078965\n", "x = 2 sin(x) = 0.9092974268256817\n", "x = 3 sin(x) = 0.1411200080598672\n", "x = 4 sin(x) = -0.7568024953079282\n" ] } ], "source": [ "for x in xList:\n", " print(\"x =\", x, \" sin(x) = \", np.sin(x))" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "azHKUfrHdOwj" }, "source": [ "A **list comprehension** is a very useful tool for creating a new list using data from an existing. For example, suppose you have a list consisting random numbers" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "colab": {}, "colab_type": "code", "id": "v-wqo344dOwl", "outputId": "527aabbe-7ddb-4d77-bb35-b70b6026995a" }, "outputs": [ { "data": { "text/plain": [ "[0.1952325947356377,\n", " 1.5664950727528784,\n", " 2.8645620994056857,\n", " 3.610813783399313,\n", " 4.745590841711996,\n", " 5.929632460883009,\n", " 6.0790789599780926,\n", " 7.643940863853748,\n", " 8.721811826350383,\n", " 9.506420667869708]" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from random import random\n", "\n", "[i + random() for i in range(0,10)]" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "K3IUohOGdOwo" }, "source": [ "### Dictionaries" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "A0wFoRPIdOwp" }, "source": [ "Dictionaries are useful for storing and retrieving data as key-value pairs. For example, here is a short dictionary of molar masses. The keys are molecular formulas, and the values are the corresponding molar masses." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "colab": {}, "colab_type": "code", "id": "tdy5Uz0YdOwr", "outputId": "1660f0ad-da69-49f2-b44d-571b0a86441b" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'CH4': 16.04, 'H2O': 18.02, 'O2': 32.0, 'CO2': 44.01}\n" ] } ], "source": [ "mw = {'CH4': 16.04, 'H2O': 18.02, 'O2':32.00, 'CO2': 44.01}\n", "print(mw)" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "7z0wjD94dOwu" }, "source": [ "We can a value to an existing dictionary." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "colab": {}, "colab_type": "code", "id": "PsDuwnM_dOww", "outputId": "273fd808-4aec-4f1e-a1b5-c74509d46fb1" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'CH4': 16.04, 'H2O': 18.02, 'O2': 32.0, 'CO2': 44.01, 'C8H18': 114.23}\n" ] } ], "source": [ "mw['C8H18'] = 114.23\n", "print(mw)" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "2bv2O_vhdOw1" }, "source": [ "We can retrieve a value from a dictionary." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "colab": {}, "colab_type": "code", "id": "FsfBuSZbdOw1", "outputId": "ede088e7-0f45-4529-d9f5-17dd3860eea4" }, "outputs": [ { "data": { "text/plain": [ "16.04" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mw['CH4']" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "6P6YjVDwdOw6" }, "source": [ "A for loop is a useful means of interating over all key-value pairs of a dictionary." ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "colab": {}, "colab_type": "code", "id": "YkPMDAw-dOw7", "outputId": "965778f0-b25c-457e-8002-dd9f82b94fad" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The molar mass of CH4 is 16.04 \n", "The molar mass of H2O is 18.02 \n", "The molar mass of O2 is 32.00 \n", "The molar mass of CO2 is 44.01 \n", "The molar mass of C8H18 is 114.23 \n" ] } ], "source": [ "for species in mw.keys():\n", " print(\"The molar mass of {:7.2f}\".format(species, mw[species]))" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "colab": {}, "colab_type": "code", "id": "0CQdhGm9dOxF", "outputId": "1a7d2441-7574-4dff-d972-793129e26bc9" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " CH4 16.04\n", " H2O 18.02\n", " O2 32.00\n", " CO2 44.01\n", " C8H18 114.23\n" ] } ], "source": [ "for species in sorted(mw, key = mw.get):\n", " print(\" {:<8s} {:>7.2f}\".format(species, mw[species]))" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "tCAFS5j6dOxI" }, "source": [ "### Plotting" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "3Vneyg9wdOxI" }, "source": [ "Importing the `matplotlib.pyplot` library gives IPython notebooks plotting functionality very similar to Matlab's. Here are some examples using functions from the " ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "colab": {}, "colab_type": "code", "id": "A1RIkEcPdOxJ", "outputId": "cdc4220b-756a-4d36-f407-f687e0fa816a" }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "

" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "%matplotlib inline\n", "\n", "x = np.linspace(0,10)\n", "y = np.sin(x)\n", "z = np.cos(x)\n", "\n", "plt.plot(x,y,'b',x,z,'r')\n", "plt.xlabel('Radians');\n", "plt.ylabel('Value');\n", "plt.title('Plotting Demonstration')\n", "plt.legend(['Sin','Cos'])\n", "plt.grid(True)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "colab": {}, "colab_type": "code", "id": "c34av3p6dOxM", "outputId": "bd03e477-f089-4c3d-c879-9595d46cefdd" }, "outputs": [ { "data": { "text/plain": [ "(-1.09972447591003,\n", " 1.0979832896606587,\n", " -1.0992804688576738,\n", " 1.0999657366122702)" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(y,z)\n", "plt.axis('equal')" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "colab": {}, "colab_type": "code", "id": "EsQgcqBqdOxO", "outputId": "ad1b2c5b-ac14-45fe-98a6-76270c63523d" }, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'Cos(x)')" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.subplot(2,1,1)\n", "plt.plot(x,y)\n", "plt.title('Sin(x)')\n", "\n", "plt.subplot(2,1,2)\n", "plt.plot(x,z)\n", "plt.title('Cos(x)')" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "bd5zqdXXdOxR" }, "source": [ "## Solving Equations using Sympy" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "nq1m8gaddOxS" }, "source": [ "One of the best features of Python is the ability to extend it's functionality by importing special purpose libraries of functions. Here we demonstrate the use of a symbolic algebra package [`Sympy`](http://sympy.org/en/index.html) for routine problem solving." ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "colab": {}, "colab_type": "code", "id": "jl-wimO3dOxU", "outputId": "3a61fdfe-df02-4deb-d543-0a8e52b5433a" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "85521.9882637211/V\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import sympy as sym\n", "\n", "sym.var('P V n R T');\n", "\n", "# Gas constant\n", "R = 8.314 # J/K/gmol\n", "R = R * 1000 # J/K/kgmol\n", "\n", "# Moles of air\n", "mAir = 1 # kg\n", "mwAir = 28.97 # kg/kg-mol\n", "n = mAir/mwAir # kg-mol\n", "\n", "# Temperature\n", "T = 298\n", "\n", "# Equation\n", "eqn = sym.Eq(P*V,n*R*T)\n", "\n", "# Solve for P \n", "f = sym.solve(eqn,P)\n", "print(f[0])\n", "\n", "# Use the sympy plot function to plot\n", "sym.plot(f[0],(V,1,10),xlabel='Volume m**3',ylabel='Pressure Pa')" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "ydgkecqJdOxW" }, "source": [ "## Defining your own Functions\n", "\n", "Many of the physical properties of chemical species are given as functions of temperature or pressure. " ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "nnJxBIH-dOxW" }, "source": [ "## Learn More" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "F0uuyQNgdOxX" }, "source": [ "Python offers a full range of programming language features, and there is a seemingly endless range of packages for scientific and engineering computations. Here are some suggestions on places you can go for more information on programming for engineering applications in Python." ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "F0uuyQNgdOxX" }, "source": [ "### Tutorial Introductions to Python for Science and Engineering\n", "\n", "This excellent introduction to python is aimed at undergraduates in science with no programming experience. It is free and available at the following link.\n", "\n", "* [Introduction to Python for Science](https://github.com/djpine/pyman)\n", "\n", "The following text is licensed by the Hesburgh Library for use by Notre Dame students and faculty only. Please refer to the library's [acceptable use policy](http://library.nd.edu/eresources/access/acceptable_use.shtml). Others can find it at [Springer](http://www.springer.com/us/book/9783642549588) or [Amazon](http://www.amazon.com/Scientific-Programming-Computational-Science-Engineering/dp/3642549586/ref=dp_ob_title_bk). Resources for this book are available on [github](http://hplgit.github.io/scipro-primer/).\n", "\n", "* [A Primer on Scientific Programming with Python (Fourth Edition)](http://link.springer.com.proxy.library.nd.edu/book/10.1007/978-3-642-54959-5) by Hans Petter Langtangen. Resources for this book are available on [github](http://hplgit.github.io/scipro-primer/).\n", "\n", "pycse is a package of python functions, examples, and document prepared by John Kitchin at Carnegie Mellon University. It is a recommended for its coverage of topics relevant to chemical engineers, including a chapter on typical chemical engineering computations. \n", "\n", "* [pycse - Python Computations in Science and Engineering](https://github.com/jkitchin/pycse/blob/master/pycse.pdf) by John Kitchin at Carnegie Mellon. This is a link into the the [github repository for pycse](https://github.com/jkitchin/pycse), click on the `Raw` button to download the `.pdf` file." ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "F0uuyQNgdOxX" }, "source": [ "### Interactive Learning and On-Line Tutorials\n", "\n", "* [Code Academy on Python](http://www.codecademy.com/tracks/python)\n", "* [Khan Academy Videos on Python Programming](https://www.khanacademy.org/science/computer-science-subject/computer-science)\n", "* [Python Tutorial](http://docs.python.org/2/tutorial/)\n", "* [Think Python: How to Think Like a Computer Scientist](http://www.greenteapress.com/thinkpython/html/index.html)\n", "* [Engineering with Python](http://www.engineeringwithpython.com/)" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "F0uuyQNgdOxX" }, "source": [ "### Official documentation, examples, and galleries\n", "\n", "* [Notebook Examples](https://github.com/ipython/ipython/tree/master/examples/notebooks)\n", "* [Notebook Gallery](https://github.com/ipython/ipython/wiki/A-gallery-of-interesting-IPython-Notebooks)\n", "* [Official Notebook Documentation](http://ipython.org/ipython-doc/stable/interactive/notebook.html)\n", "* [Matplotlib](http://matplotlib.org/index.html) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "< [Getting Started](http://nbviewer.jupyter.org/github/jckantor/CBE20255/blob/master/notebooks/00.00-Getting-Started.ipynb) | [Contents](toc.ipynb) | [Solving Linear Equations with Simpy](http://nbviewer.jupyter.org/github/jckantor/CBE20255/blob/master/notebooks/00.02-Solving-Linear-Equations-with-Sympy.ipynb) >

\"Open" ] } ], "metadata": { "colab": { "collapsed_sections": [], "name": "Getting_Started_with_Jupyter_Notebooks_and_Python.ipynb", "provenance": [], "toc_visible": true, "version": "0.3.2" }, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" } }, "nbformat": 4, "nbformat_minor": 2 }