Last active
April 15, 2025 10:06
-
-
Save waltherg/6071963 to your computer and use it in GitHub Desktop.
AUTO 07p run from an iPython Notebook
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"metadata": { | |
"name": "Mori_LPA_1D" | |
}, | |
"nbformat": 3, | |
"nbformat_minor": 0, | |
"worksheets": [ | |
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# AUTO 07p in the IPython Notebook" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Introduction" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"I have used both the fantastic [XPP/XPPAUT](http://www.math.pitt.edu/~bard/xpp/xpp.html) software package and the [matcont](http://www.matcont.ugent.be/) MATLAB toolbox\n", | |
"for numerical continuation and bifurcation analysis of ordinary differential equations.\n", | |
"\n", | |
"As a user, both of these packages have you do mostly GUI operations: clicking buttons and typing keyboard shortcuts -- although there may be ways of automating usage of both packages.\n", | |
"\n", | |
"The software, [AUTO](http://indy.cs.concordia.ca/auto/), that XPPAUT relies on (the `auto` part of XPP used for continuation and bifurcation analysis) is a bit trickier to use\n", | |
"than either one of the aforementioned packages -- although, in my very limited experience, using AUTO directly seems to be a more stable eperience than calling it through XPPAUT.\n", | |
"\n", | |
"While both XPP and matcont provide their own, user-friendly notation for defining ODEs and relatively straight-forward interfaces, AUTO requires the user to dig into some\n", | |
"technical aspects of defining your ODE and setting AUTO's numerous parameters and variables.\n", | |
"\n", | |
"Numerous examples provided with the latest version of AUTO give newcomers to AUTO a reasonbly fast and pain-free entry point and you'll be up and running relatively quickly.\n", | |
"\n", | |
"Using AUTO with its current AUTO CLUI (a Python-based command-line tool) and the various methods defined in AUTO's Python interface has been a pleasurable (whatever I mean by that)\n", | |
"experience but left me confused regarding some aspects:\n", | |
"\n", | |
"I generally found it hard to grasp what data structure the AUTO output had been saved in and how to plot the resultant continuation branches and bifurcation points in precisely\n", | |
"the way I wanted.\n", | |
"\n", | |
"I started this notebook to just play around with the Python interface that ships with the latest AUTO version.\n", | |
"\n", | |
"For now, my goal is to parse and plot (using matplotlib) AUTO output. At some later stage I would love to find a way of integrating an ODE numerically and then passing the discovered \n", | |
"stable steady state into AUTO (zeal abound).\n", | |
"\n", | |
"In the unlikely event that the person reading this is not me and you have any words of advice or criticism, I would be delighted to [hear from you](http://georg.io).\n", | |
"\n", | |
"This notebook [lives here](https://github.com/waltherg/auto/blob/master/examples/LPA_Mori_1D/Mori_LPA_1D.ipynb) and is part of a [repoistory all things auto](https://github.com/waltherg/auto/)." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## This Notebook\n", | |
"\n", | |
"The structure of this notebook:\n", | |
"\n", | |
"* First I'll load a few Python modules (most of which I won't use for now) and then invoke AUTO for [a sample system](https://github.com/waltherg/auto/tree/master/examples/LPA_Mori_1D),\n", | |
"\n", | |
"* then I'll parse and plot some of AUTO's output manually (using `pandas`), and\n", | |
"\n", | |
"* at last I'll use some of the Python modules that were written by the AUTO developers that can be used to parse AUTO's output.\n", | |
"\n", | |
"Again, eveything I'm doing here can be done with the AUTO CLUI with just a few keystrokes -- here I'm just trying to start digging into parsing AUTO output and hopefully, eventually how AUTO works." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Load AUTO 07p Python Moduls" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Add `$AUTO_DIR/python` to `sys.path` to import the Python modules defined by `AUTO 07p`." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"import sys\n", | |
"auto_directory = !echo $AUTO_DIR\n", | |
"if auto_directory == ['']:\n", | |
" home = !echo $HOME\n", | |
" auto_directory = home[0]+'/auto/07p/'\n", | |
" sys.path.append(auto_directory+'/python')\n", | |
"else:\n", | |
" sys.path.append(auto_directory[0] + '/python')" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 1 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Not all of these are necessary -- in fact we'll use just one of these modules for now --\n", | |
"however it's good to see what Python modules have been written by the authors AUTO." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"import AUTOCommands as ac\n", | |
"import AUTOclui as acl\n", | |
"import interactiveBindings as ib\n", | |
"import runAUTO as ra" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 2 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Start AUTO, Load System, and Run" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Start AUTO and catch the returned `runner` object." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"runner = ra.runAUTO()" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 3 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"`AUTOCommands` defines multiple methods that return *solution* objects. Method `load` is one of them." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"lpa = ac.load('lpa', runner=runner);" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"Runner configured\n" | |
] | |
} | |
], | |
"prompt_number": 4 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"The above is shorthand for\n", | |
"\n", | |
" ac.load(e='lpa', c='lpa', runner=runner)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Going through the library code, it is hard to understand what the following does exactly.\n", | |
"\n", | |
"For now, this compiles our system defined in `lpa.f90` into an object `lpa.o` and then links `lpa.o` and AUTO's FORTRAN library objects in `auto/07p/lib/` into an executable `lpa.exe`.\n", | |
"\n", | |
"After executing the next command, you'll notice this `lpa.exe` in your directory and you will be able to rerun AUTO just by doing this in your shell:\n", | |
"\n", | |
" $ ./lpa.exe" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": true, | |
"input": [ | |
"lpa.run()" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"gfortran -fopenmp -O -c lpa.f90 -o lpa.o\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"gfortran -fopenmp -O lpa.o -o lpa.exe /usr/users/cbu/waltherg/auto/07p/lib/*.o\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"Starting lpa ...\n", | |
"\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" BR PT TY LAB tot L2-NORM aL aR \n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 1 1 EP 1 2.20000E+00 1.50299E+00 1.48478E+00 2.33260E-01\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 1 69 BP 2 2.59883E+00 1.20417E+00 8.51476E-01 8.51476E-01\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 1 113 LP 3 3.55784E+00 1.57949E+00 2.94288E-01 1.55183E+00\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 1 173 BP 4 2.30031E+00 4.16196E-01 2.94295E-01 2.94295E-01\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 1 191 LP 5 1.90883E+00 8.66653E-01 8.51476E-01 1.61477E-01\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 1 250 EP 6 2.53817E+00 1.20992E+00 9.18747E-01 7.87276E-01\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" BR PT TY LAB tot L2-NORM aL aR \n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 2 47 EP 7 4.05832E+00 2.62318E+00 1.85487E+00 1.85487E+00\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" BR PT TY LAB tot L2-NORM aL aR \n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 2 38 BP 8 2.30031E+00 4.16196E-01 2.94295E-01 2.94295E-01\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 2 85 EP 9 -5.47355E-02 4.86145E-03 -3.43757E-03 -3.43757E-03\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" BR PT TY LAB tot L2-NORM aL aR \n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 3 41 BP 10 2.59883E+00 1.20417E+00 8.51476E-01 8.51476E-01\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 3 80 EP 11 4.03627E+00 2.60477E+00 1.84185E+00 1.84185E+00\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" BR PT TY LAB tot L2-NORM aL aR \n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 3 78 EP 12 -6.65122E-02 5.90790E-03 -4.17751E-03 -4.17751E-03\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" BR PT TY LAB tot L2-NORM aL aR \n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 4 113 LP 13 3.55784E+00 1.57949E+00 2.94294E-01 1.55183E+00\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 4 156 BP 14 2.59883E+00 1.20417E+00 8.51481E-01 8.51471E-01\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 4 212 LP 15 1.90883E+00 8.66653E-01 8.51476E-01 1.61477E-01\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 4 243 BP 16 2.30031E+00 4.16196E-01 2.94295E-01 2.94295E-01\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 4 250 EP 17 2.35726E+00 4.77285E-01 2.13454E-01 4.26894E-01\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" BR PT TY LAB tot L2-NORM aL aR \n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 4 74 LP 18 1.90883E+00 8.66653E-01 8.51476E-01 1.61477E-01\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 4 204 BP 19 2.59883E+00 1.20417E+00 8.51476E-01 8.51476E-01\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 4 239 LP 20 3.55784E+00 1.57949E+00 2.94288E-01 1.55183E+00\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 4 250 EP 21 3.44623E+00 1.49946E+00 2.31974E-01 1.48141E+00\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" BR PT TY LAB tot L2-NORM aL aR \n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 5 53 LP 22 3.55784E+00 1.57949E+00 2.94295E-01 1.55183E+00\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 5 113 BP 23 2.30031E+00 4.16196E-01 2.94295E-01 2.94295E-01\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 5 131 LP 24 1.90883E+00 8.66653E-01 8.51476E-01 1.61477E-01\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 5 196 BP 25 2.59883E+00 1.20417E+00 8.51476E-01 8.51476E-01\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 5 241 MX 26 3.55240E+00 1.57333E+00 2.78799E-01 1.54843E+00\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" BR PT TY LAB tot L2-NORM aL aR \n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 5 98 LP 27 1.90883E+00 8.66653E-01 8.51476E-01 1.61477E-01\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 5 131 BP 28 2.30031E+00 4.16196E-01 2.94295E-01 2.94295E-01\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 5 203 LP 29 3.55784E+00 1.57949E+00 2.94295E-01 1.55183E+00\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 5 238 BP 30 2.59883E+00 1.20417E+00 8.51477E-01 8.51477E-01\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 5 250 EP 31 2.36543E+00 1.43361E+00 1.35478E+00 4.68833E-01\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" BR PT TY LAB tot L2-NORM aL aR \n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 6 47 EP 32 4.05830E+00 2.62316E+00 1.85486E+00 1.85486E+00\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" BR PT TY LAB tot L2-NORM aL aR \n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 6 38 BP 33 2.30031E+00 4.16196E-01 2.94295E-01 2.94295E-01\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 6 85 EP 34 -5.47355E-02 4.86145E-03 -3.43757E-03 -3.43757E-03\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" BR PT TY LAB tot L2-NORM aL aR \n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 7 41 BP 35 2.59883E+00 1.20417E+00 8.51476E-01 8.51476E-01\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 7 80 EP 36 4.03627E+00 2.60477E+00 1.84185E+00 1.84185E+00\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" BR PT TY LAB tot L2-NORM aL aR \n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 7 78 EP 37 -6.65135E-02 5.90801E-03 -4.17759E-03 -4.17759E-03\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" BR PT TY LAB tot L2-NORM aL aR \n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 8 47 EP 38 4.05832E+00 2.62318E+00 1.85487E+00 1.85487E+00\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" BR PT TY LAB tot L2-NORM aL aR \n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 8 38 BP 39 2.30031E+00 4.16196E-01 2.94295E-01 2.94295E-01\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 8 85 EP 40 -5.47355E-02 4.86145E-03 -3.43757E-03 -3.43757E-03\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" BR PT TY LAB tot L2-NORM aL aR \n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 9 41 BP 41 2.59883E+00 1.20417E+00 8.51476E-01 8.51476E-01\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 9 80 EP 42 4.03627E+00 2.60477E+00 1.84185E+00 1.84185E+00\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" BR PT TY LAB tot L2-NORM aL aR \n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 9 78 EP 43 -6.65122E-02 5.90790E-03 -4.17751E-03 -4.17751E-03\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" BR PT TY LAB tot L2-NORM aL aR \n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 10 47 EP 44 4.05831E+00 2.62318E+00 1.85487E+00 1.85487E+00\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" BR PT TY LAB tot L2-NORM aL aR \n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 10 38 BP 45 2.30031E+00 4.16196E-01 2.94295E-01 2.94295E-01\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 10 85 EP 46 -5.47355E-02 4.86145E-03 -3.43757E-03 -3.43757E-03\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" BR PT TY LAB tot L2-NORM aL aR \n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 11 41 BP 47 2.59883E+00 1.20417E+00 8.51476E-01 8.51476E-01\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 11 80 EP 48 4.03627E+00 2.60477E+00 1.84185E+00 1.84185E+00\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" BR PT TY LAB tot L2-NORM aL aR \n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 11 78 EP 49 -6.65136E-02 5.90802E-03 -4.17760E-03 -4.17760E-03\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"\n" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" Total Time 0.236E+00\n" | |
] | |
}, | |
{ | |
"ename": "AUTORuntimeError", | |
"evalue": "Error running AUTO", | |
"output_type": "pyerr", | |
"traceback": [ | |
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mAUTORuntimeError\u001b[0m Traceback (most recent call last)", | |
"\u001b[1;32m<ipython-input-5-9e1a82d0b3e4>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mlpa\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrun\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", | |
"\u001b[1;32m/usr/users/cbu/waltherg/auto/07p/python/parseS.pyc\u001b[0m in \u001b[0;36mrun\u001b[1;34m(self, **kw)\u001b[0m\n\u001b[0;32m 847\u001b[0m \u001b[0mReturns\u001b[0m \u001b[0ma\u001b[0m \u001b[0mbifurcation\u001b[0m \u001b[0mdiagram\u001b[0m \u001b[0mof\u001b[0m \u001b[0mthe\u001b[0m \u001b[0mresult\u001b[0m\u001b[1;33m.\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 848\u001b[0m \"\"\"\n\u001b[1;32m--> 849\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mrunAUTO\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrunAUTO\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mselected_solution\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mload\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m**\u001b[0m\u001b[0mkw\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrun\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 850\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 851\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mreadAllFilename\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mfilename\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", | |
"\u001b[1;32m/usr/users/cbu/waltherg/auto/07p/python/runAUTO.pyc\u001b[0m in \u001b[0;36mrun\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 383\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 384\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrunMakefile\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 385\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__outputCommand\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 386\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mbifDiag\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 387\u001b[0m return bifDiag.bifDiag(self.fort7_path,self.fort8_path,\n", | |
"\u001b[1;32m/usr/users/cbu/waltherg/auto/07p/python/runAUTO.pyc\u001b[0m in \u001b[0;36m__outputCommand\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 594\u001b[0m not os.path.isfile(self.fort9_path)):\n\u001b[0;32m 595\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0moptions\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"selected_solution\"\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mc\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwriteFilename\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'fort.2'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 596\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mAUTOExceptions\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mAUTORuntimeError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Error running AUTO\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 597\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 598\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mtest\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", | |
"\u001b[1;31mAUTORuntimeError\u001b[0m: Error running AUTO" | |
] | |
}, | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"lpa ... done\n" | |
] | |
} | |
], | |
"prompt_number": 5 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**Going through the output of the above `lpa.run()` command you'll notice at least two things:**\n", | |
"\n", | |
"1. It would probably suffice to `os.system()` run the following commands (delete `lpa.o` in the current directory if you don't notice these command invocations at the top)\n", | |
"\n", | |
"```\n", | |
" gfortran -fopenmp -O -c lpa.f90 -o lpa.o\n", | |
" gfortran -fopenmp -O lpa.o -o lpa.exe $HOME/auto/07p/lib/*.o\n", | |
" ./lpa.exe\n", | |
"```\n", | |
"\n", | |
" By that I mean, you could probably just write a Python script that does\n", | |
"\n", | |
" os.system('gfortran -fopenmp -O -c lpa.f90 -o lpa.o')\n", | |
" os.system('gfortran -fopenmp -O lpa.o -o lpa.exe $HOME/auto/07p/lib/*.o')\n", | |
" os.system('./lpa.exe')\n", | |
"\n", | |
" This should generate the same output files in your directory.\n", | |
"\n", | |
"2. Some part of the `auto` toolchain seems broken by our use of the IPython Notebook\n", | |
"\n", | |
"```\n", | |
"\n", | |
" 596 raise AUTOExceptions.AUTORuntimeError(\"Error running AUTO\")\n", | |
"\n", | |
" 597 \n", | |
"\n", | |
" 598 def test():\n", | |
"\n", | |
" AUTORuntimeError: Error running AUTO\n", | |
"```\n", | |
"\n", | |
"**Despite the fact that something seems broken, we notice that `auto` still ran and created three output files.**" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Read Output Files and Plot Solution Branches\n", | |
"\n", | |
"### Parse and Plot By Hand" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"!ls" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"b.lpa c.lpa d.lpa fort.2 lpa.auto lpa.exe\tlpa.f90 lpa.o\tMori_LPA_1D.ipynb Mori_LPA_1D_with_output.ipynb README.md s.lpa\r\n" | |
] | |
} | |
], | |
"prompt_number": 6 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"The `b.lpa` file (see comment on naming schemes below) seems to hold all branches and some `auto`-specific info at the top of the file.\n", | |
"\n", | |
"Let's import a few tools that will come in handy reading `b.lpa` and plotting the branches described therein." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"import pandas as pd\n", | |
"from matplotlib import pylab as pl" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 8 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"#### Parse `b.lpa`" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"content = None\n", | |
"with open('b.lpa', 'r') as f:\n", | |
" content = f.readlines()" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 9 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Line 15 (zero-indexed) onwards are the branches." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"content[15:20]" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"output_type": "pyout", | |
"prompt_number": 10, | |
"text": [ | |
"[' 0 PT TY LAB tot L2-NORM aL aR \\n',\n", | |
" ' 1 -1 9 1 2.2000000477E+00 1.5029909321E+00 1.4847799540E+00 2.3326000571E-01\\n',\n", | |
" ' 1 -2 0 0 2.2134966291E+00 1.5173334705E+00 1.4984026874E+00 2.3893565497E-01\\n',\n", | |
" ' 1 -3 0 0 2.2203765460E+00 1.5243104071E+00 1.5049760440E+00 2.4201099991E-01\\n',\n", | |
" ' 1 -4 0 0 2.2273489685E+00 1.5311331034E+00 1.5113607046E+00 2.4527005702E-01\\n']" | |
] | |
} | |
], | |
"prompt_number": 10 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"content_csv = [[el for el in content[15].split(' ') if len(el) > 0 and el != '\\n']]\n", | |
"content_csv[0][0] = 'branch'\n", | |
"column_names = content_csv[0]" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 11 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"These are our column names found in `content[15]`." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"column_names" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"output_type": "pyout", | |
"prompt_number": 12, | |
"text": [ | |
"['branch', 'PT', 'TY', 'LAB', 'tot', 'L2-NORM', 'aL', 'aR']" | |
] | |
} | |
], | |
"prompt_number": 12 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"for line in content:\n", | |
" dummy = line.split(' ')\n", | |
" dummy = [el for el in dummy if len(el) > 0 and el != '\\n']\n", | |
" if dummy[0] == '0':\n", | |
" continue\n", | |
" \n", | |
" for el_i, el in enumerate(dummy):\n", | |
" if el_i < 4:\n", | |
" dummy[el_i] = int(el)\n", | |
" else:\n", | |
" dummy[el_i] = float(el)\n", | |
" \n", | |
" if len(dummy) > 1:\n", | |
" content_csv.append(dummy)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 13 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Load the resulting list of lists into a `pandas` `DataFrame`." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"df = pd.DataFrame(content_csv, columns=column_names)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 14 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"df" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"html": [ | |
"<pre>\n", | |
"<class 'pandas.core.frame.DataFrame'>\n", | |
"Int64Index: 2402 entries, 0 to 2401\n", | |
"Data columns (total 8 columns):\n", | |
"branch 2402 non-null values\n", | |
"PT 2402 non-null values\n", | |
"TY 2402 non-null values\n", | |
"LAB 2402 non-null values\n", | |
"tot 2402 non-null values\n", | |
"L2-NORM 2402 non-null values\n", | |
"aL 2402 non-null values\n", | |
"aR 2402 non-null values\n", | |
"dtypes: object(8)\n", | |
"</pre>" | |
], | |
"output_type": "pyout", | |
"prompt_number": 15, | |
"text": [ | |
"<class 'pandas.core.frame.DataFrame'>\n", | |
"Int64Index: 2402 entries, 0 to 2401\n", | |
"Data columns (total 8 columns):\n", | |
"branch 2402 non-null values\n", | |
"PT 2402 non-null values\n", | |
"TY 2402 non-null values\n", | |
"LAB 2402 non-null values\n", | |
"tot 2402 non-null values\n", | |
"L2-NORM 2402 non-null values\n", | |
"aL 2402 non-null values\n", | |
"aR 2402 non-null values\n", | |
"dtypes: object(8)" | |
] | |
} | |
], | |
"prompt_number": 15 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"#### Plot branches in `b.lpa`" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Plotting branches is easy now." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"scatter(df[df['branch'] == 1].tot,df[df['branch'] == 1].aL)\n", | |
"scatter(df[df['branch'] == 2].tot,df[df['branch'] == 2].aL)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"output_type": "pyout", | |
"prompt_number": 16, | |
"text": [ | |
"<matplotlib.collections.PathCollection at 0x3a80350>" | |
] | |
}, | |
{ | |
"output_type": "display_data", | |
"png": "iVBORw0KGgoAAAANSUhEUgAAAXkAAAD9CAYAAABZVQdHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlYlFX7wPHvMzMMuwgq4IILboCCIO4rmlu5Va5UWlnW\na2WlZWVqmVn5tmnLW5lpmWKaW7lmbrgrKu64i4riBoisw2zn98chf/W+lijLCJzPdXEpM888zz2U\n9xzu55z7aEIIgaIoilIm6RwdgKIoilJ8VJJXFEUpw1SSVxRFKcNUklcURSnDVJJXFEUpw1SSVxRF\nKcMKleSTkpLo1KkTjRo1Iioqinnz5t3yuLFjxxIYGEhkZCTHjh0rzCUVRVGUO6AVZp785cuXuXz5\nMuHh4aSkpNCiRQsOHDiAp6fnzWPi4uIYPXo0y5YtY82aNcTExLBixYoiCV5RFEX5Z4Uayfv7+xMe\nHg5A5cqVadSoEXv27PnLMbt27aJ///74+PgQHR3N0aNHC3NJRVEU5Q4UWU3+1KlTHDlyhBYtWvzl\n8bi4OEJCQm5+X6VKFU6fPl1Ul1UURVH+gaEoTpKZmcmgQYOYOnUq7u7uf3lOCMF/V4Q0Tfufc9zq\nMUVRFOWf3a7iXuiRvMVioV+/fgwZMoS+ffv+z/MtW7YkISHh5vfXrl0jMDDwluf64wOhrH29/fbb\nDo9BvT/1/tT7K3tfBVGoJC+E4KmnnqJx48a8/PLLtzymZcuWLF68mNTUVObNm0dwcHBhLqkoiqLc\ngUKVa7Zt28bcuXMJCwsjIiICgPfff5/z588D8Oyzz9KiRQvatWtHs2bN8PHxYe7cuYWPWlEURSmQ\nQiX5du3aYbfbb3vclClTmDJlSmEuVapFRUU5OoRipd5f6abeX9lWqHnyRUnTtALXmBRFUZSC5U3V\n1kBRFKUMU0leURSlDFNJXlEUpQxTSV5RlDLPZrNx+vRpLl++7OhQSpxK8oqilGmXLl0iJKQ5TZp0\nonbtYIYNe65cTfJQSV5RlDLtiSee58yZ7mRnnyMv7xwLFuxhzpw5jg6rxKgkryhKmbZ//wGs1icB\nDahATk5/9uw54OiwSoxK8oqilDk2m41Lly5hNpupW7cuOt2q/GcsuLmtJSiorkPjK0kqySuKUqbs\n3LmTKlVqEhjYBG9vf4YMeZhKlaZRoUJb3N1DaN3aleHDhzs6zBKjVrwqilJm5OXl4e9fh/T0b4A+\n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\n" | |
} | |
], | |
"prompt_number": 16 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"The above bifurcation plot is close to the one shown in [Figure 3](http://link.springer.com/static-content/images/354/art%253A10.1007%252Fs11538-012-9766-5/MediaObjects/11538_2012_9766_Fig3_HTML.gif) of a [previous article](http://link.springer.com/article/10.1007%2Fs11538-012-9766-5/fulltext.html) where the same analysis was done on the same system.\n", | |
"\n", | |
"What's still missing are stability data (eigenvalues along the solution branches) and bifurcation points.\n", | |
"\n", | |
"The file `d.lpa` generated by `AUTO` seems to contain that information." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Parse and Plot with Built-In AUTO CLUI methods" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"#### Parse `b.lpa`\n", | |
"\n", | |
"The manual says that files `fort.7`, `fort.8` and `fort.9` are equivalent to `b.*`, `s.*`, and `d.*` (in that order).\n", | |
"The `fort.*` naming scheme may be older as the latest version of AUTO appears to produce files in the latter naming scheme.\n", | |
"\n", | |
"`parseB.py` in `auto/07p/python/` is probably a good start for what we want to do here." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"import parseB" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 17 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"The class `parseB.parseBMixin` provides a method called `readFilename` so let's hope this allows us to read and parse our `b.lpa` file." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"pb_obj = parseB.parseBMixin()" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 18 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"pb_obj.readFilename('b.lpa')" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"ename": "AttributeError", | |
"evalue": "'parseBMixin' object has no attribute 'read'", | |
"output_type": "pyerr", | |
"traceback": [ | |
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", | |
"\u001b[1;32m<ipython-input-19-2954f2989688>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mpb_obj\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mreadFilename\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'b.lpa'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", | |
"\u001b[1;32m/usr/users/cbu/waltherg/auto/07p/python/parseB.pyc\u001b[0m in \u001b[0;36mreadFilename\u001b[1;34m(self, filename)\u001b[0m\n\u001b[0;32m 131\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mreadFilename\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mfilename\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 132\u001b[0m \u001b[0minputfile\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mAUTOutil\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mopenFilename\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;34m\"r\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 133\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mread\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minputfile\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 134\u001b[0m \u001b[0minputfile\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 135\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", | |
"\u001b[1;31mAttributeError\u001b[0m: 'parseBMixin' object has no attribute 'read'" | |
] | |
} | |
], | |
"prompt_number": 19 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Hmmm ... nope." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Let's try the class `parseB` in `parseB.py` instead." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"pb_obj = parseB.parseB()" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 20 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"b_lpa = open('b.lpa', 'r')\n", | |
"pb_obj.read(b_lpa)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 22 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"pb_obj.read(b_lpa)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 23 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"The object `pb_obj` seems to store an array of the branches found in `b.lpa`." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"pb_obj.branches[:2]" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"output_type": "pyout", | |
"prompt_number": 24, | |
"text": [ | |
"Pointset <no name> (non-parameterized)\n", | |
"Coordinates:\n", | |
"tot: [ 2.20000005 2.21349663, ..., 2.52736747 2.53817435]\n", | |
"L2-NORM: [ 1.50299093 1.51733347, ..., 1.21240612 1.20991699]\n", | |
"aL: [ 1.48477995 1.49840269, ..., 0.93242092 0.91874681]\n", | |
"aR: [ 0.23326001 0.23893565, ..., 0.77493215 0.78727595]\n", | |
"Labels by index: 0: {EP: {keys=TY number,LAB}},\n", | |
" 68: {BP: {keys=TY number,LAB}}, {No Label: {keys=stab}},\n", | |
" 112: {LP: {keys=TY number,LAB}}, {No Label: {keys=stab}},\n", | |
" 172: {BP: {keys=TY number,LAB}}, {No Label: {keys=stab}},\n", | |
" 190: {LP: {keys=TY number,LAB}}, {No Label: {keys=stab}},\n", | |
" 249: {EP: {keys=TY number,LAB}}, {No Label: {keys=stab}}\n", | |
"Pointset <no name> (non-parameterized)\n", | |
"Coordinates:\n", | |
"tot: [ 2.59883325 2.60497552, ..., 3.98163094 4.05831704]\n", | |
"L2-NORM: [ 1.20416931 1.21281264, ..., 2.55899781 2.62317914]\n", | |
"aL: [ 0.85147627 0.85758804, ..., 1.8094847 1.85486776]\n", | |
"aR: [ 0.8514763 0.85758804, ..., 1.8094847 1.85486776]\n", | |
"Labels by index: 0: {No Label: {keys=stab}},\n", | |
" 46: {EP: {keys=TY number,LAB}}, {No Label: {keys=stab}}\n" | |
] | |
} | |
], | |
"prompt_number": 24 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Branches are saved as instances of `Points.Pointset` which inherits from class `Points` (`Points.py` is found in `auto/07p/python`).\n", | |
"\n", | |
"Let's see what members the class `Pointset` defines." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"pb_obj.branches[0].name" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"output_type": "pyout", | |
"prompt_number": 25, | |
"text": [ | |
"''" | |
] | |
} | |
], | |
"prompt_number": 25 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"pb_obj.branches[0].keys()" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"output_type": "pyout", | |
"prompt_number": 26, | |
"text": [ | |
"['tot', 'L2-NORM', 'aL', 'aR']" | |
] | |
} | |
], | |
"prompt_number": 26 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"pb_obj.branches[0]['tot']" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"output_type": "pyout", | |
"prompt_number": 27, | |
"text": [ | |
"array([ 2.20000005, 2.21349663, 2.22037655, 2.22734897, 2.23441774,\n", | |
" 2.24158606, 2.2488557 , 2.25622545, 2.26368866, 2.27122892,\n", | |
" 2.27881339, 2.28638314, 2.29384258, 2.30105483, 2.30785548,\n", | |
" 2.31409115, 2.31966462, 2.32455469, 2.32880198, 2.33248011,\n", | |
" 2.3356718 , 2.33845551, 2.34090015, 2.34306406, 2.34499587,\n", | |
" 2.346736 , 2.34831803, 2.3497701 , 2.35111588, 2.35237546,\n", | |
" 2.35356603, 2.35470244, 2.35579755, 2.35686267, 2.35842555,\n", | |
" 2.3599721 , 2.36231418, 2.36474314, 2.36731516, 2.37007681,\n", | |
" 2.37306729, 2.37631999, 2.37986352, 2.38372244, 2.38791783,\n", | |
" 2.39246762, 2.39738692, 2.40268817, 2.40838135, 2.41447408,\n", | |
" 2.42097177, 2.42787768, 2.43519312, 2.44291749, 2.45104845,\n", | |
" 2.45958206, 2.46851291, 2.47783427, 2.48753827, 2.49761604,\n", | |
" 2.50805786, 2.51885331, 2.52999146, 2.54146093, 2.55325008,\n", | |
" 2.56534711, 2.57774014, 2.59041732, 2.59883325, 2.6119543 ,\n", | |
" 2.62532876, 2.63894548, 2.6527936 , 2.66686259, 2.68114228,\n", | |
" 2.69562285, 2.71029486, 2.72514927, 2.74017739, 2.75537094,\n", | |
" 2.77072199, 2.78622298, 2.80186669, 2.81764627, 2.83355516,\n", | |
" 2.84958713, 2.86573624, 2.88199685, 2.89836356, 2.91483124,\n", | |
" 2.931395 , 2.94805016, 2.96479226, 2.98161703, 2.99852037,\n", | |
" 3.01549835, 3.04109708, 3.06684308, 3.09272473, 3.11873084,\n", | |
" 3.14485055, 3.17107321, 3.19738812, 3.23700962, 3.27677508,\n", | |
" 3.31663985, 3.35654831, 3.39642325, 3.43614199, 3.47547179,\n", | |
" 3.51383355, 3.54868909, 3.55784484, 3.54682042, 3.53788786,\n", | |
" 3.52832392, 3.51843325, 3.50835013, 3.49814341, 3.48785237,\n", | |
" 3.47750134, 3.46710631, 3.4566783 , 3.4462252 , 3.43575288,\n", | |
" 3.42526576, 3.41476731, 3.40426028, 3.38848835, 3.37270796,\n", | |
" 3.35692364, 3.34113901, 3.32535701, 3.30169411, 3.27804936,\n", | |
" 3.25442837, 3.23083598, 3.20727651, 3.18375398, 3.16027218,\n", | |
" 3.13683484, 3.10177026, 3.06682684, 3.03201805, 2.99735838,\n", | |
" 2.96286374, 2.92855183, 2.89444259, 2.86055872, 2.8269263 ,\n", | |
" 2.79357555, 2.76054182, 2.72786682, 2.6956002 , 2.66380159,\n", | |
" 2.63254332, 2.60191397, 2.57202303, 2.543007 , 2.51503737,\n", | |
" 2.4883303 , 2.46315749, 2.43985511, 2.41882258, 2.40049288,\n", | |
" 2.38524196, 2.37320034, 2.36396461, 2.35629178, 2.34795483,\n", | |
" 2.33610522, 2.31860696, 2.30031026, 2.27369037, 2.24428666,\n", | |
" 2.21334358, 2.18168627, 2.14988629, 2.11838594, 2.08757457,\n", | |
" 2.05783533, 2.02957415, 2.00323507, 1.97929997, 1.95826768,\n", | |
" 1.94060902, 1.92670355, 1.91677745, 1.91086917, 1.90883843,\n", | |
" 1.90883418, 1.91057407, 1.91555295, 1.92340268, 1.93377161,\n", | |
" 1.94634353, 1.96084486, 1.97704502, 1.99475352, 2.01381598,\n", | |
" 2.03411038, 2.05554421, 2.07805298, 2.10160056, 2.12618211,\n", | |
" 2.15183088, 2.178631 , 2.20673904, 2.23640776, 2.2678968 ,\n", | |
" 2.30012612, 2.32545177, 2.333608 , 2.33965353, 2.34426826,\n", | |
" 2.34793019, 2.35096226, 2.35358697, 2.35596306, 2.35820787,\n", | |
" 2.36041112, 2.36264339, 2.36496164, 2.36741283, 2.37003634,\n", | |
" 2.37286562, 2.37592938, 2.37925242, 2.38285622, 2.38675932,\n", | |
" 2.39097769, 2.39552494, 2.40041248, 2.40564965, 2.41124387,\n", | |
" 2.41720067, 2.42352384, 2.43021549, 2.43727615, 2.44470484,\n", | |
" 2.45249922, 2.46065564, 2.46916931, 2.47803437, 2.48724404,\n", | |
" 2.49679073, 2.50666618, 2.51686152, 2.52736747, 2.53817435])" | |
] | |
} | |
], | |
"prompt_number": 27 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"scatter(pb_obj.branches[0]['tot'], pb_obj.branches[0]['aL'])" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"output_type": "pyout", | |
"prompt_number": 30, | |
"text": [ | |
"<matplotlib.collections.PathCollection at 0x40e87d0>" | |
] | |
}, | |
{ | |
"output_type": "display_data", | |
"png": "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\nCCE80P8Ayau7SDSvkE0AAAAASUVORK5CYII=\n" | |
} | |
], | |
"prompt_number": 30 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"This is one of the solution branches we saw before -- solution branches and AUTO's branches seem to be different.\n", | |
"\n", | |
"Let's plot a few AUTO branches together." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"scatter(pb_obj.branches[0]['tot'], pb_obj.branches[0]['aL'], c='b')\n", | |
"scatter(pb_obj.branches[1]['tot'], pb_obj.branches[1]['aL'], c='r')\n", | |
"scatter(pb_obj.branches[2]['tot'], pb_obj.branches[2]['aL'], c='g')" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"output_type": "pyout", | |
"prompt_number": 33, | |
"text": [ | |
"<matplotlib.collections.PathCollection at 0x3d68d50>" | |
] | |
}, | |
{ | |
"output_type": "display_data", | |
"png": "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\nt9nkP70AAAAASUVORK5CYII=\n" | |
} | |
], | |
"prompt_number": 33 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"The `pb_obj` also has a few convenience methods:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": true, | |
"input": [ | |
"pb_obj.branches[0].todict() ## I'll spare you the large output" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"output_type": "pyout", | |
"prompt_number": 34, | |
"text": [ | |
"{'L2-NORM': array([ 1.50299093, 1.51733347, 1.52431041, 1.5311331 , 1.53777665,\n", | |
" 1.54420939, 1.55039068, 1.55626777, 1.5617717 , 1.56681228,\n", | |
" 1.57127286, 1.57500755, 1.57784687, 1.57962069, 1.58020247,\n", | |
" 1.57955806, 1.57776322, 1.57497373, 1.5713737 , 1.56713586,\n", | |
" 1.5624041 , 1.55729149, 1.5518846 , 1.5462494 , 1.54043635,\n", | |
" 1.53448448, 1.52842434, 1.52228021, 1.51607166, 1.50981469,\n", | |
" 1.50352259, 1.49720651, 1.49087598, 1.48453921, 1.47503779,\n", | |
" 1.4655591 , 1.4514218 , 1.43742557, 1.42361308, 1.41002167,\n", | |
" 1.39668486, 1.38363342, 1.37089597, 1.3584994 , 1.34646902,\n", | |
" 1.33482873, 1.32360099, 1.31280681, 1.30246564, 1.29259531,\n", | |
" 1.2832119 , 1.27432963, 1.26596081, 1.2581157 , 1.25080251,\n", | |
" 1.24402734, 1.23779422, 1.2321051 , 1.22695991, 1.22235668,\n", | |
" 1.2182916 , 1.21475919, 1.21175239, 1.20926274, 1.20728052,\n", | |
" 1.20579492, 1.20479418, 1.20426577, 1.20416931, 1.20439219,\n", | |
" 1.20505133, 1.20613253, 1.20762136, 1.20950329, 1.2117638 ,\n", | |
" 1.21438845, 1.21736294, 1.22067318, 1.22430533, 1.22824583,\n", | |
" 1.23248145, 1.23699933, 1.24178696, 1.24683219, 1.25212331,\n", | |
" 1.25764897, 1.26339822, 1.26936053, 1.27552572, 1.28188403,\n", | |
" 1.28842605, 1.29514274, 1.30202542, 1.30906574, 1.31625566,\n", | |
" 1.32358746, 1.33483505, 1.34636127, 1.35814346, 1.37015999,\n", | |
" 1.38239019, 1.39481414, 1.4074124 , 1.42659478, 1.44606094,\n", | |
" 1.46574156, 1.48555735, 1.50540779, 1.52514678, 1.54451916,\n", | |
" 1.5629404 , 1.57811451, 1.5794869 , 1.5687925 , 1.56207463,\n", | |
" 1.55519499, 1.54825666, 1.54129557, 1.53432585, 1.52735334,\n", | |
" 1.52038039, 1.51340773, 1.50643535, 1.49946287, 1.49248973,\n", | |
" 1.48551533, 1.47853902, 1.47156017, 1.46108581, 1.45060245,\n", | |
" 1.4401083 , 1.42960167, 1.41908101, 1.40327051, 1.38742052,\n", | |
" 1.37152671, 1.35558492, 1.33959114, 1.32354143, 1.30743183,\n", | |
" 1.2912584 , 1.26686966, 1.24231413, 1.21757697, 1.19264235,\n", | |
" 1.16749323, 1.14211106, 1.11647552, 1.09056425, 1.06435246,\n", | |
" 1.03781259, 1.01091384, 0.98362175, 0.95589762, 0.92769801,\n", | |
" 0.89897429, 0.86967228, 0.83973237, 0.80909046, 0.77768058,\n", | |
" 0.74544081, 0.71232504, 0.67832515, 0.64350991, 0.60808656,\n", | |
" 0.57248362, 0.53743236, 0.50400646, 0.47361248, 0.44799335,\n", | |
" 0.42915268, 0.41863467, 0.41619573, 0.4193826 , 0.42779303,\n", | |
" 0.44010658, 0.45551102, 0.47355105, 0.49399693, 0.51675935,\n", | |
" 0.54183437, 0.56926253, 0.59909141, 0.63133603, 0.66593726,\n", | |
" 0.70272621, 0.74140929, 0.78158674, 0.82280354, 0.86461307,\n", | |
" 0.86665272, 0.90867005, 0.95058018, 0.99217276, 1.03331013,\n", | |
" 1.07390923, 1.11392467, 1.153335 , 1.19213244, 1.23031517,\n", | |
" 1.26788149, 1.30482467, 1.34112767, 1.3767561 , 1.41164733,\n", | |
" 1.44569068, 1.47868739, 1.51025808, 1.5395943 , 1.56465397,\n", | |
" 1.57945349, 1.57431403, 1.5655873 , 1.55475907, 1.54271903,\n", | |
" 1.52996987, 1.51680549, 1.50340884, 1.48990162, 1.47636993,\n", | |
" 1.46287829, 1.44947757, 1.43620969, 1.42311052, 1.41021172,\n", | |
" 1.39754194, 1.38512756, 1.37299322, 1.36116209, 1.34965607,\n", | |
" 1.3384959 , 1.32770115, 1.3172902 , 1.30728025, 1.29768717,\n", | |
" 1.28852546, 1.27980817, 1.27154681, 1.26375131, 1.25642991,\n", | |
" 1.24958919, 1.24323402, 1.23736757, 1.23199134, 1.22710519,\n", | |
" 1.22270745, 1.21879493, 1.2153631 , 1.21240612, 1.20991699]),\n", | |
" 'aL': array([ 1.48477995, 1.49840269, 1.50497604, 1.5113607 , 1.51752675,\n", | |
" 1.52343648, 1.5290419 , 1.53428132, 1.53907506, 1.54332025,\n", | |
" 1.54688593, 1.54961151, 1.55131523, 1.55182178, 1.55101139,\n", | |
" 1.54886973, 1.54550009, 1.54108509, 1.53582917, 1.52991769,\n", | |
" 1.52350111, 1.51669498, 1.50958606, 1.5022392 , 1.49470311,\n", | |
" 1.4870148 , 1.47920274, 1.47128913, 1.46329156, 1.45522413,\n", | |
" 1.44709831, 1.43892356, 1.43070778, 1.42245762, 1.41003018,\n", | |
" 1.39755418, 1.37877759, 1.35995767, 1.34112398, 1.32230151,\n", | |
" 1.30351214, 1.28477567, 1.26611036, 1.24753344, 1.22906128,\n", | |
" 1.21070957, 1.19249344, 1.17442742, 1.15652544, 1.13880082,\n", | |
" 1.12126618, 1.10393337, 1.08681343, 1.06991647, 1.05325166,\n", | |
" 1.03682715, 1.02065001, 1.00472627, 0.98906085, 0.9736576 ,\n", | |
" 0.9585193 , 0.94364773, 0.92904367, 0.914707 , 0.90063673,\n", | |
" 0.88683108, 0.87328758, 0.86000307, 0.85147627, 0.83861137,\n", | |
" 0.82599455, 0.81362094, 0.80148534, 0.78958226, 0.77790599,\n", | |
" 0.76645066, 0.75521025, 0.74417865, 0.73334971, 0.72271722,\n", | |
" 0.71227498, 0.70201679, 0.69193647, 0.68202789, 0.67228498,\n", | |
" 0.66270171, 0.6532721 , 0.64399027, 0.63485036, 0.6258466 ,\n", | |
" 0.61697328, 0.60822472, 0.59959529, 0.5910794 , 0.5826715 ,\n", | |
" 0.574366 , 0.5620876 , 0.5500082 , 0.53810862, 0.52636918,\n", | |
" 0.51476945, 0.50328796, 0.49190176, 0.47494583, 0.45805081,\n", | |
" 0.44109757, 0.42392995, 0.40632754, 0.38794832, 0.36818766,\n", | |
" 0.34573293, 0.31625018, 0.29428768, 0.27257098, 0.26556664,\n", | |
" 0.25984917, 0.25498014, 0.2507126 , 0.24689574, 0.24343086,\n", | |
" 0.24024972, 0.23730304, 0.234554 , 0.2319743 , 0.22954164,\n", | |
" 0.22723815, 0.22504924, 0.22296283, 0.22000368, 0.21722476,\n", | |
" 0.21460383, 0.21212287, 0.20976705, 0.2064415 , 0.20333637,\n", | |
" 0.20042494, 0.1976858 , 0.1951015 , 0.19265768, 0.1903424 ,\n", | |
" 0.18814566, 0.18505477, 0.18218886, 0.17953002, 0.17706442,\n", | |
" 0.17478169, 0.17267438, 0.17073766, 0.16896916, 0.16736893,\n", | |
" 0.16593947, 0.16468594, 0.16361646, 0.16274261, 0.16208009,\n", | |
" 0.16164972, 0.16147877, 0.16160287, 0.16206859, 0.16293713,\n", | |
" 0.16428937, 0.16623277, 0.16891039, 0.1725118 , 0.1772844 ,\n", | |
" 0.1835415 , 0.1916635 , 0.2020933 , 0.2153266 , 0.23184635,\n", | |
" 0.25183462, 0.27467653, 0.29429511, 0.319194 , 0.34431144,\n", | |
" 0.36964244, 0.39537342, 0.42174781, 0.44901923, 0.47743682,\n", | |
" 0.50723802, 0.53863865, 0.57181568, 0.60688131, 0.64385106,\n", | |
" 0.68261553, 0.72293108, 0.76444229, 0.80673496, 0.84940017,\n", | |
" 0.85147638, 0.8941548 , 0.9365703 , 0.97853663, 1.01993532,\n", | |
" 1.06069805, 1.10079021, 1.14019768, 1.17891689, 1.21694735,\n", | |
" 1.25428568, 1.29092024, 1.32682497, 1.36195107, 1.3962135 ,\n", | |
" 1.42946652, 1.46145433, 1.49169878, 1.51920334, 1.54152399,\n", | |
" 1.55182868, 1.54009678, 1.52780136, 1.51335635, 1.4976584 ,\n", | |
" 1.48119409, 1.46423712, 1.44695127, 1.429441 , 1.41177704,\n", | |
" 1.39400996, 1.37617784, 1.35831073, 1.34043335, 1.32256687,\n", | |
" 1.30472998, 1.28693964, 1.26921159, 1.25156066, 1.23400097,\n", | |
" 1.21654609, 1.19920908, 1.18200255, 1.16493862, 1.14802892,\n", | |
" 1.13128455, 1.11471601, 1.09833317, 1.08214518, 1.06616048,\n", | |
" 1.05038668, 1.03483057, 1.01949808, 1.00439426, 0.98952328,\n", | |
" 0.97488844, 0.96049216, 0.94633605, 0.93242092, 0.91874681]),\n", | |
" 'aR': array([ 0.23326001, 0.23893565, 0.242011 , 0.24527006, 0.24873595,\n", | |
" 0.25243597, 0.2564023 , 0.26067257, 0.26529 , 0.27030226,\n", | |
" 0.2757577 , 0.28169657, 0.28813505, 0.29504352, 0.30233011,\n", | |
" 0.30984873, 0.31743701, 0.32495998, 0.33233126, 0.33950941,\n", | |
" 0.3464837 , 0.35326068, 0.35985515, 0.36628486, 0.37256781,\n", | |
" 0.37872101, 0.38475996, 0.39069851, 0.39654896, 0.40232217,\n", | |
" 0.40802775, 0.41367417, 0.41926896, 0.42481877, 0.43307202,\n", | |
" 0.4412548 , 0.45342872, 0.46551842, 0.47755698, 0.48957105,\n", | |
" 0.50158217, 0.51360774, 0.52566179, 0.53775545, 0.54989744,\n", | |
" 0.56209435, 0.57435091, 0.58667023, 0.59905396, 0.61150252,\n", | |
" 0.62401517, 0.63659024, 0.64922519, 0.6619168 , 0.67466128,\n", | |
" 0.68745436, 0.70029143, 0.71316764, 0.72607799, 0.73901741,\n", | |
" 0.75198084, 0.76496331, 0.77795997, 0.79096617, 0.80397745,\n", | |
" 0.81698961, 0.8299987 , 0.84300105, 0.8514763 , 0.86446024,\n", | |
" 0.87742904, 0.89038006, 0.90331091, 0.91621944, 0.92910375,\n", | |
" 0.94196215, 0.95479318, 0.96759555, 0.98036816, 0.99311008,\n", | |
" 1.00582051, 1.01849879, 1.0311444 , 1.0437569 , 1.05633597,\n", | |
" 1.06888137, 1.08139291, 1.09387051, 1.1063141 , 1.11872369,\n", | |
" 1.13109931, 1.14344104, 1.15574897, 1.16802322, 1.1802639 ,\n", | |
" 1.19247116, 1.21071967, 1.22889367, 1.24699349, 1.26501932,\n", | |
" 1.28297118, 1.30084884, 1.31865171, 1.34521341, 1.37159823,\n", | |
" 1.39779514, 1.42378511, 1.4495346 , 1.47498095, 1.49999243,\n", | |
" 1.52422159, 1.54610195, 1.55182912, 1.54493203, 1.53933476,\n", | |
" 1.53333292, 1.52711618, 1.52076797, 1.51433097, 1.50782945,\n", | |
" 1.50127832, 1.49468733, 1.48806313, 1.48141041, 1.4747326 ,\n", | |
" 1.46803222, 1.46131121, 1.45457104, 1.44442726, 1.43424575,\n", | |
" 1.42402848, 1.4137768 , 1.40349161, 1.38800217, 1.37243944,\n", | |
" 1.35680336, 1.34109314, 1.32530745, 1.30944451, 1.29350213,\n", | |
" 1.27747777, 1.25328109, 1.22888226, 1.20426851, 1.17942527,\n", | |
" 1.15433609, 1.12898239, 1.10334321, 1.07739491, 1.05111075,\n", | |
" 1.02446037, 0.99740932, 0.96991825, 0.94194219, 0.91342961,\n", | |
" 0.88432129, 0.85454929, 0.82403578, 0.79269234, 0.76042 ,\n", | |
" 0.72711141, 0.69265693, 0.65695837, 0.61995538, 0.58166958,\n", | |
" 0.54226379, 0.50209426, 0.46171508, 0.42183318, 0.38333446,\n", | |
" 0.34749295, 0.31592372, 0.29429454, 0.27202382, 0.25388287,\n", | |
" 0.23886873, 0.22620818, 0.21535872, 0.2059483 , 0.19772281,\n", | |
" 0.19051003, 0.1841962 , 0.17871025, 0.17401227, 0.17008306,\n", | |
" 0.16691362, 0.16449434, 0.16280609, 0.16181584, 0.16147794,\n", | |
" 0.16147723, 0.16176666, 0.16259997, 0.16392943, 0.16571593,\n", | |
" 0.16793058, 0.17055521, 0.17358249, 0.17701614, 0.18087171,\n", | |
" 0.18517799, 0.18997989, 0.19534309, 0.20136197, 0.20817308,\n", | |
" 0.21597919, 0.22509468, 0.2360386 , 0.24974352, 0.26804071,\n", | |
" 0.29411067, 0.32644535, 0.3418868 , 0.35641032, 0.37013687,\n", | |
" 0.38323864, 0.3958643 , 0.4081301 , 0.42012528, 0.43191869,\n", | |
" 0.44356413, 0.45510415, 0.46657287, 0.47799787, 0.48940163,\n", | |
" 0.5008025 , 0.51221551, 0.52365287, 0.53512444, 0.54663803,\n", | |
" 0.55819969, 0.56981392, 0.58148383, 0.59321131, 0.60499717,\n", | |
" 0.61684124, 0.62874252, 0.64069927, 0.6527091 , 0.66476909,\n", | |
" 0.67687588, 0.68902577, 0.70121478, 0.71343872, 0.72569333,\n", | |
" 0.73797427, 0.75027722, 0.76259789, 0.77493215, 0.78727595]),\n", | |
" 'tot': array([ 2.20000005, 2.21349663, 2.22037655, 2.22734897, 2.23441774,\n", | |
" 2.24158606, 2.2488557 , 2.25622545, 2.26368866, 2.27122892,\n", | |
" 2.27881339, 2.28638314, 2.29384258, 2.30105483, 2.30785548,\n", | |
" 2.31409115, 2.31966462, 2.32455469, 2.32880198, 2.33248011,\n", | |
" 2.3356718 , 2.33845551, 2.34090015, 2.34306406, 2.34499587,\n", | |
" 2.346736 , 2.34831803, 2.3497701 , 2.35111588, 2.35237546,\n", | |
" 2.35356603, 2.35470244, 2.35579755, 2.35686267, 2.35842555,\n", | |
" 2.3599721 , 2.36231418, 2.36474314, 2.36731516, 2.37007681,\n", | |
" 2.37306729, 2.37631999, 2.37986352, 2.38372244, 2.38791783,\n", | |
" 2.39246762, 2.39738692, 2.40268817, 2.40838135, 2.41447408,\n", | |
" 2.42097177, 2.42787768, 2.43519312, 2.44291749, 2.45104845,\n", | |
" 2.45958206, 2.46851291, 2.47783427, 2.48753827, 2.49761604,\n", | |
" 2.50805786, 2.51885331, 2.52999146, 2.54146093, 2.55325008,\n", | |
" 2.56534711, 2.57774014, 2.59041732, 2.59883325, 2.6119543 ,\n", | |
" 2.62532876, 2.63894548, 2.6527936 , 2.66686259, 2.68114228,\n", | |
" 2.69562285, 2.71029486, 2.72514927, 2.74017739, 2.75537094,\n", | |
" 2.77072199, 2.78622298, 2.80186669, 2.81764627, 2.83355516,\n", | |
" 2.84958713, 2.86573624, 2.88199685, 2.89836356, 2.91483124,\n", | |
" 2.931395 , 2.94805016, 2.96479226, 2.98161703, 2.99852037,\n", | |
" 3.01549835, 3.04109708, 3.06684308, 3.09272473, 3.11873084,\n", | |
" 3.14485055, 3.17107321, 3.19738812, 3.23700962, 3.27677508,\n", | |
" 3.31663985, 3.35654831, 3.39642325, 3.43614199, 3.47547179,\n", | |
" 3.51383355, 3.54868909, 3.55784484, 3.54682042, 3.53788786,\n", | |
" 3.52832392, 3.51843325, 3.50835013, 3.49814341, 3.48785237,\n", | |
" 3.47750134, 3.46710631, 3.4566783 , 3.4462252 , 3.43575288,\n", | |
" 3.42526576, 3.41476731, 3.40426028, 3.38848835, 3.37270796,\n", | |
" 3.35692364, 3.34113901, 3.32535701, 3.30169411, 3.27804936,\n", | |
" 3.25442837, 3.23083598, 3.20727651, 3.18375398, 3.16027218,\n", | |
" 3.13683484, 3.10177026, 3.06682684, 3.03201805, 2.99735838,\n", | |
" 2.96286374, 2.92855183, 2.89444259, 2.86055872, 2.8269263 ,\n", | |
" 2.79357555, 2.76054182, 2.72786682, 2.6956002 , 2.66380159,\n", | |
" 2.63254332, 2.60191397, 2.57202303, 2.543007 , 2.51503737,\n", | |
" 2.4883303 , 2.46315749, 2.43985511, 2.41882258, 2.40049288,\n", | |
" 2.38524196, 2.37320034, 2.36396461, 2.35629178, 2.34795483,\n", | |
" 2.33610522, 2.31860696, 2.30031026, 2.27369037, 2.24428666,\n", | |
" 2.21334358, 2.18168627, 2.14988629, 2.11838594, 2.08757457,\n", | |
" 2.05783533, 2.02957415, 2.00323507, 1.97929997, 1.95826768,\n", | |
" 1.94060902, 1.92670355, 1.91677745, 1.91086917, 1.90883843,\n", | |
" 1.90883418, 1.91057407, 1.91555295, 1.92340268, 1.93377161,\n", | |
" 1.94634353, 1.96084486, 1.97704502, 1.99475352, 2.01381598,\n", | |
" 2.03411038, 2.05554421, 2.07805298, 2.10160056, 2.12618211,\n", | |
" 2.15183088, 2.178631 , 2.20673904, 2.23640776, 2.2678968 ,\n", | |
" 2.30012612, 2.32545177, 2.333608 , 2.33965353, 2.34426826,\n", | |
" 2.34793019, 2.35096226, 2.35358697, 2.35596306, 2.35820787,\n", | |
" 2.36041112, 2.36264339, 2.36496164, 2.36741283, 2.37003634,\n", | |
" 2.37286562, 2.37592938, 2.37925242, 2.38285622, 2.38675932,\n", | |
" 2.39097769, 2.39552494, 2.40041248, 2.40564965, 2.41124387,\n", | |
" 2.41720067, 2.42352384, 2.43021549, 2.43727615, 2.44470484,\n", | |
" 2.45249922, 2.46065564, 2.46916931, 2.47803437, 2.48724404,\n", | |
" 2.49679073, 2.50666618, 2.51686152, 2.52736747, 2.53817435])}" | |
] | |
} | |
], | |
"prompt_number": 34 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"The object `pb_obj.branches[0]` holds the coordinates for the first branch in `b.lpa` in an accessible format -- perfect for plotting.\n", | |
"\n", | |
"All we need now are stability properties and bifurcation points on this branch!" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"pb_obj.branches[0].labels" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"output_type": "pyout", | |
"prompt_number": 35, | |
"text": [ | |
" 0: {EP: {keys=TY number,LAB}},\n", | |
" 68: {BP: {keys=TY number,LAB}}, {No Label: {keys=stab}},\n", | |
" 112: {LP: {keys=TY number,LAB}}, {No Label: {keys=stab}},\n", | |
" 172: {BP: {keys=TY number,LAB}}, {No Label: {keys=stab}},\n", | |
" 190: {LP: {keys=TY number,LAB}}, {No Label: {keys=stab}},\n", | |
" 249: {EP: {keys=TY number,LAB}}, {No Label: {keys=stab}}" | |
] | |
} | |
], | |
"prompt_number": 35 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"pb_obj.branches[0]['tot'][172]" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"output_type": "pyout", | |
"prompt_number": 39, | |
"text": [ | |
"2.3003102592000002" | |
] | |
} | |
], | |
"prompt_number": 39 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**I noticed that branch numbering (as in `pb_obj.branches[0]` being the first, zero-indexed, branch) is not consistent between invocations of this notebook. This inconsistency may either be generated by AUTO (the numerical methods may traverse branches differently between incovations) or `parseB`.**" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"This branch point `BP` (in this case, a transcritical bifurcation point) is one of four bifurcation points described in our [publication](http://link.springer.com/article/10.1007%2Fs11538-012-9766-5/fulltext.html) -- note that the `tot` parameter used in this notebook is defined an order of magnitude smaller than the same parameter (`tot` or `T` as we called it) in this publication.\n", | |
"\n", | |
"Hence, in this publcation we reported `T = 23.0` as bifurcation point whereas here we observe `tot = 2.3` -- these bifurcation points are equivalent." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We now have the coordinates of all branches in `b.lpa` and special points (bifurcation points) along these branches.\n", | |
"\n", | |
"What we still want is the stability of these branches. Inspecting our current directory, we notice a file `d.lpa` (this file may be called `fort.9` in the older naming scheme) which contains the eigenvalues at some points along these branches.\n", | |
"\n", | |
"A Python module `parseD.py` exists in `auto/07p/python` so let's see what this offers." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"import parseD as pd" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 40 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"pd_obj = pd.parseD()\n", | |
"pd_obj.read(open('d.lpa', 'r'))" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 41 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"The object `pd_obj` appears to be a list of dictionaries and while the overall parsing of `d.lpa` does not appear to be implemented to perfection (yet) we are given access to the eigenvalues and branch number (let's hope that branch numbers are consistent throughout!)." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"pd_obj[0]" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"output_type": "pyout", | |
"prompt_number": 42, | |
"text": [ | |
"{'Branch number': 1,\n", | |
" 'Eigenvalues': [[-0.293329, 0.0], [-0.431279, 0.0]],\n", | |
" 'Label': 1,\n", | |
" 'Multipliers': [],\n", | |
" 'Point number': -1,\n", | |
" 'Text': ' 1 1 Hopf Function: 0.00000E+00\\n\\n 1 1 Eigenvalues : Stable: 2\\n 1 1 Eigenvalue 1: -2.93329E-01 0.00000E+00\\n 1 1 Eigenvalue 2: -4.31279E-01 0.00000E+00\\n\\n BR PT TY LAB tot L2-NORM aL aR \\n 1 -1 EP 1 2.20000E+00 1.50299E+00 1.48478E+00 2.33260E-01\\n===============================================\\n'}" | |
] | |
} | |
], | |
"prompt_number": 42 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"for i in range(60,100):\n", | |
" print 'Branch number',pd_obj[i]['Branch number'],'eigenvalues',pd_obj[i]['Eigenvalues']" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"pd_obj[71]" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"output_type": "pyout", | |
"prompt_number": 43, | |
"text": [ | |
"{'Branch number': 1,\n", | |
" 'Eigenvalues': [[4.0176e-08, 0.0], [-0.487294, 0.0]],\n", | |
" 'Label': 2,\n", | |
" 'Multipliers': [],\n", | |
" 'Point number': 69,\n", | |
" 'Text': '\\n BR PT IT PAR L2-NORM\\n 1 69 0 2.59883E+00 1.20417E+00\\n 1 69 1 2.59883E+00 1.20417E+00\\n\\n 1 69 BP Function: 1.99983E-08\\n ==> Location of special point : Convergence. Step size = 2.56769E-08\\n 1 69 Hopf Function: 0.00000E+00\\n\\n 1 69 Eigenvalues : Stable: 1\\n 1 69 Eigenvalue 1: 4.01760E-08 0.00000E+00\\n 1 69 Eigenvalue 2: -4.87294E-01 0.00000E+00\\n 1 69 Fold Function: 6.93390E-01\\n\\n BR PT TY LAB tot L2-NORM aL aR \\n 1 -69 BP 2 2.59883E+00 1.20417E+00 8.51476E-01 8.51476E-01\\n===============================================\\n'}" | |
] | |
} | |
], | |
"prompt_number": 43 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"I'll need to explore how the diagnostics output in `d.lpa` and the branches in `b.lpa` can be combined into a single bifurcation plot complete with stability indicators (usually dashed v. solid lines)." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"import parseS as ps" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 44 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"ps_obj = ps.parseS()" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 45 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"ps_obj.read(open('s.lpa', 'r'))" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 46 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"ps_obj[0]" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"output_type": "pyout", | |
"prompt_number": 47, | |
"text": [ | |
"<_=AUTOSolution instance at 0x04365850>" | |
] | |
} | |
], | |
"prompt_number": 47 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"ps_obj[0].__str__()" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"output_type": "pyout", | |
"prompt_number": 49, | |
"text": [ | |
"' BR PT TY LAB ISW NTST NCOL NDIM IPS IPRIV\\n 1 1 EP 1 1 1 0 2 1 0\\nPointset s.lpa (parameterized)\\nIndependent variable:\\nt: [ 0.]\\nCoordinates:\\nU(1): [ 1.48477995]\\nU(2): [ 0.23326001]\\nLabels by index: Empty\\nActive ICP: [5]\\nrldot: [0.66656068541000002]\\nudotps: Pointset s.lpa (non-parameterized)\\nCoordinates:\\nUDOT(1): [ 0.69502508]\\nUDOT(2): [ 0.2695125]\\nLabels by index: Empty\\nPAR(1:5): 6.7000001669E-02 1.0000000000E+00 1.0000000000E+00 1.0000000000E+00 2.2000000477E+00\\nPAR(6:10): 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00\\nPAR(11:15): 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00\\nPAR(16:20): 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00\\nPAR(21:25): 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00\\nPAR(26:30): 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00\\nPAR(31:35): 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00\\nPAR(36:36): 0.0000000000E+00'" | |
] | |
} | |
], | |
"prompt_number": 49 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"ps_obj[0].data" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"output_type": "pyout", | |
"prompt_number": 48, | |
"text": [ | |
"{'BR': 1,\n", | |
" 'IPRIV': 0,\n", | |
" 'IPS': 1,\n", | |
" 'ISW': 1,\n", | |
" 'LAB': 1,\n", | |
" 'NCOL': 0,\n", | |
" 'NDIM': 2,\n", | |
" 'NPARI': 0,\n", | |
" 'NTST': 1,\n", | |
" 'PT': 1,\n", | |
" 'TY number': 9}" | |
] | |
} | |
], | |
"prompt_number": 48 | |
} | |
], | |
"metadata": {} | |
} | |
] | |
} |
Hello ! Thanks for the wonderful tip. I try no to work out how to run AUTO from within a Python script. I haven't done it before and it gave me an error on the !echo
. I tried this:
import os
import sys
auto_directory = os.system("echo $AUTO_DIR")
print auto_directory
#auto_directory = !echo $AUTO_DIR
if auto_directory == ['']:
home = os.system("echo $HOME")
auto_directory = home[0]+'/auto/07p/'
sys.path.append(auto_directory+'/python')
else:
sys.path.append(auto_directory[0] + '/python')
import AUTOCommands as ac
import AUTOclui as acl
import interactiveBindings as ib
import runAUTO as ra
But apparently os.system("echo $HOME")
does not give me the HOME directory. Do you know what should I do?
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Dear Dr.Waltherg,
Greetings!
I'm working in AUTO-07p, doing continuation and bifurcation analysis.I've a dynamical system of dimension 8 (8 first order ODEs) and 1 continuation parameter. I successfully performed continuation analysis of stationary points along with stability, but in the bifurcation diagram I could see results only for six states as a function of parameter instead of 8. However, when I try to access the data using the command as shown in the attached image (highlighted), I could see information about all the eight states U(1) ..U(8). I'm not able to understand where is it storing the data and how to access the same. Could you please help me resolve this issue.
If needed i can send .f90, c.*, fort.7,fort.8 and fort.9 to your email. Thanks.
Regards,
Kumara