<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-5116833147554663168</atom:id><lastBuildDate>Wed, 12 Aug 2026 17:22:31 +0000</lastBuildDate><category>tips</category><category>python</category><category>postgres</category><category>sphinx</category><category>ubuntu</category><category>latex</category><category>equipment</category><category>machine learning</category><category>R</category><category>hadoop</category><category>numpy</category><category>shell</category><category>android</category><category>math</category><category>emacs</category><category>geometry</category><category>ipython</category><category>java</category><category>8^)</category><category>blogger</category><category>firefox</category><category>gis</category><category>scipy</category><category>spatial</category><category>sqlitedb</category><category>statistics</category><category>test</category><title>yablog</title><description>tips collection</description><link>http://yaboolog.blogspot.com/</link><managingEditor>noreply@blogger.com (Anonymous)</managingEditor><generator>Blogger</generator><openSearch:totalResults>89</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5116833147554663168.post-7578800529320176934</guid><pubDate>Sun, 04 Nov 2012 11:58:00 +0000</pubDate><atom:updated>2012-11-04T20:58:11.965+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ipython</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">tips</category><title>python tips: set up IPython Notebook on Ubuntu12.04LTS</title><description>set up pythonbrew, which makes it easier to maintain multiple python binaries.

&lt;pre class=&quot;code&quot;&gt;
# install curl for downloading pythonbrew package
$ sudo apt-get install curl

# install packages for compiling python2.7.3 with pythonbrew
$ sudo apt-get install build-essential, libbz2-dev, libsqlite3-dev, zlib1g-dev, \
                       libxml2-dev, libxslt1-dev, libreadline5, libreadline-dev, \
                       libgdbm-dev, libgdb-dev, libxml2, libssl-dev, tk-dev, \
                       libgdbm-dev, libexpat1-dev, libncursesw5-dev

# install pythonbrew
$ curl -kLO https://github.com/utahta/pythonbrew/raw/master/pythonbrew-install
$ chmod +x pythonbrew-install
$ ./pythonbrew-install

# edit .bashrc then, 
$ source ${HOME}/.pythonbrew/etc/bashrc

# setup python-2.7.3 with pythonbrew
$ pythonbrew install 2.7.3

# change default python binary
$ pybrew switch 2.7.3
&lt;/pre&gt;

set up virtualenv, which provides virtual pythons&#39; executable environment

&lt;pre class=&quot;code&quot;&gt;
# install virtualenv
$ pip virtualenv virtualenvwrapper
$ echo &quot;VIRTUALENVWRAPPER_PYTHON=${HOME}/.pythonbrew/pythons/Python-2.7.3/bin/python&quot; &gt;&gt; ~/.bashrc
$ source ${HOME}/.pythonbrew/pythons/Python-2.7.3/bin/virtualenvwrapper.sh
&lt;/pre&gt;

set up ipython notebook.

&lt;pre class=&quot;code&quot;&gt;
# get package for pyqt compile
$ sudo apt-get install libqtcore4
$ sudo apt-get install libqt4-dev

# download SIP package from http://www.riverbankcomputing.co.uk/software/sip/download
# install SIP following README
 
# download PyQt package from http://www.riverbankcomputing.co.uk/software/pyqt/download 
# install SIP following README

# install numpy and scipy
$ sudo apt-get install liblapck3gf liblapack-dev libblas3gf libblas-dev gfortran
$ pip install numpy
$ pip install scipy

# install matplotlib
$ sudo apt-get install libpng12-dev libjpeg8-dev libfreetype6-dev
$ pip install matplotlib

# install pyzmq
$ pip install pyzmq

# install tornado
$ pip install tornado

# install pygments
$ pip install pygmenta

# install pandas
$ pip install pandas

# install sympy
$ pip install sympy

# install nose
$ pip install nose

# install ipython
$ pip install ipython
$ easy_install ipython[test]
$ easy_install ipython[zmq,qtconsole,notebook,test]
$ iptest

# install packages for ipython extension
$ sudo apt-get install r-base-core ruby
$ pip install rpy2
$ pip install rtools
&lt;/pre&gt;</description><link>http://yaboolog.blogspot.com/2012/11/python-tips-set-up-ipython-notebook-on.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5116833147554663168.post-1406461809415031812</guid><pubDate>Tue, 30 Oct 2012 06:14:00 +0000</pubDate><atom:updated>2012-10-30T15:14:21.015+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ipython</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">test</category><category domain="http://www.blogger.com/atom/ns#">tips</category><title>This is just a test of nbconvert.py</title><description>&lt;div class=&quot;cell border-box-sizing code_cell vbox&quot;&gt;
&lt;div class=&quot;input hbox&quot;&gt;
&lt;div class=&quot;prompt input_prompt&quot;&gt;In [1]:&lt;/div&gt;
&lt;div class=&quot;input_area box-flex1&quot;&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span class=&quot;o&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;pylab&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;inline&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;linspace&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;pi&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;vbox output_wrapper&quot;&gt;
&lt;div class=&quot;output vbox&quot;&gt;
&lt;div class=&quot;hbox output_area&quot;&gt;
&lt;div class=&quot;prompt output_prompt&quot;&gt;&lt;/div&gt;
&lt;div class=&quot;output_subarea output_stream output_stdout&quot;&gt;
&lt;pre&gt;
Welcome to pylab, a matplotlib-based Python environment [backend: module://IPython.zmq.pylab.backend_inline].
For more information, type &amp;apos;help(pylab)&amp;apos;.
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;cell border-box-sizing code_cell vbox&quot;&gt;
&lt;div class=&quot;input hbox&quot;&gt;
&lt;div class=&quot;prompt input_prompt&quot;&gt;In [2]:&lt;/div&gt;
&lt;div class=&quot;input_area box-flex1&quot;&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span class=&quot;n&quot;&gt;plot&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;sin&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;label&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;r&amp;#39;$\sin(x)$&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;plot&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;cos&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&amp;#39;ro&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;label&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;r&amp;#39;$\cos(x)$&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;r&amp;#39;Two familiar function&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;vbox output_wrapper&quot;&gt;
&lt;div class=&quot;output vbox&quot;&gt;
&lt;div class=&quot;hbox output_area&quot;&gt;
&lt;div class=&quot;prompt output_prompt&quot;&gt;Out [2]:&lt;/div&gt;
&lt;div class=&quot;output_subarea output_pyout&quot;&gt;
&lt;pre&gt;&amp;lt;matplotlib.text.Text at 0x105507cd0&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;hbox output_area&quot;&gt;
&lt;div class=&quot;prompt output_prompt&quot;&gt;&lt;/div&gt;
&lt;div class=&quot;output_subarea output_display_data&quot;&gt;
&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXoAAAEICAYAAABRSj9aAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz
AAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xd8FFUX8PHfEkB66DVoIAlSBESaLSQCIUhTpAjSpAlI
RBB99QlGggIBGyCggCIKKMXHV0GagJKAKOQVEOm9hKoYghQpCfP+cSFPQoq7m929M7vn+/nkA0lm
d05mZ09u7px7xmYYhoEQQgivlU93AEIIIdxLEr0QQng5SfRCCOHlJNELIYSXk0QvhBBeThK9EEJ4
OUn0wpT69u1L6dKlefDBB13+3MWLF+fo0aMAPPvss8TExACwYcMGatas6dJ9ufPnyE2bNm2YN2+e
R/cpzCu/7gCENRQrVgybzQbA5cuXKVSoEH5+fthsNmbOnEn37t1dtq8NGzawdu1aTp06RaFChVz2
vLddvHgx/f82my395woNDWXv3r0u24+7f47bYmNjOXToUKbEvmLFCrftT1iPJHphl0uXLqX/v1q1
asyePZvmzZu7ZV/Hjh0jMDDQrckxI1esGUxLS8PPzy/T1zz9cwiRE5m6EU67evUqhQsXJjk5GYBx
48ZRoECB9F8KMTExjBgxAoALFy7Qu3dvypcvT2BgIOPGjcs2wc6ePZuBAwfyyy+/ULx4ccaMGUNK
Sgrt2rWjfPnylC5dmvbt23Py5Mn0x4SHhxMTE8MjjzxC8eLF6dChA+fOnaNHjx74+/vTpEkTjh07
lr59vnz5OHz4cJZ9x8fHU7Vq1fTPJ0yYQHBwMCVKlKBOnTp8++236d/77LPPeOSRR3jppZcoW7Ys
Y8aMyfXniI2N5bPPPiM0NDTTdhljefbZZxk6dCjt2rWjRIkSPPjgg5ni3LVrFxEREZQpU4aKFSsS
FxfH999/T1xcHIsWLaJ48eI0aNAg/ZjMnj0bUL/Ixo4dS2BgIBUqVKBPnz78/fffABw9epR8+fIx
d+5c7rnnHsqVK8f48eOzf8GFZUmiF04rVKgQTZo0IT4+HoCEhAQCAwP56aef0j8PDw8H4IUXXuDi
xYscOXKEhIQE5s6dy5w5c7I8Z//+/ZkxYwYPPfQQFy9eZPTo0dy8eZP+/ftz/Phxjh8/TuHChYmK
isr0uEWLFjF//nxOnjzJoUOHeOihh+jfvz/JycnUqlUrSyK2R3BwMD/99BN///03o0ePpmfPnpw9
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
NpuN5557jmG3ujWa3dWrVwkLC+PatWtcv36dJ554gri4ON1hOSwtLY1GjRoREBDAd1ZoMp9BYGAg
JUqUwM/PjwIFCpCYmKg7JIekpKQwYMAAdu3ahc1m49NPP+XBBx/UHZZd9u3bR7du3dI/P3z4MG+9
9VbO71/H62xcJzU11QgKCjKOHDliXL9+3ahfv76xe/dunSE5ZP369cbWrVuN++67T3coTjl9+rSx
bds2wzAM4+LFi0aNGjUsdfwvX75sGIZh3Lhxw2jatKmxYcMGzRE57r333jOeeeYZo3379rpDcVhg
YKDx119/6Q7Dab179zZmz55tGIY6h1JSUjRH5Jy0tDSjYsWKxvHjx3PcRmtTM6vX2YeGhlKqVCnd
YTitYsWK3H///QAUK1aMWrVq5VhjbkZFbi18un79OmlpaZQuXVpzRI45ceIEK1asYMCAAZatPLNq
3BcuXGDDhg3069cPUNPM/v7+mqNyztq1awkKCqJq1ao5bqM10Z88eTJTcAEBAZw8eVJjRL7r6NGj
bNu2jaZNm+oOxW43b97k/vvvp0KFCjz22GPUrl1bd0gOGTFiBO+88w758lmziazNZqNly5Y0atSI
jz/+WHc4Djly5AjlypWjb9++PPDAAwwcOJArV67oDsspCxcu5Jlnnsl1G61nmL119sK9Ll26ROfO
nZkyZQrFnFkfr0m+fPn47bffOHHiBOvXr7dU35Jly5ZRvnx5GjRoYNlR8caNG9m2bRsrV65k+vTp
bNiwQXdIdktNTWXr1q08//zzbN26laJFizJhwgTdYTns+vXrfPfdd3Tp0iXX7bQmeqmz1+/GjRt0
6tSJnj178uSTT+oOxyn+/v60bduWX3/9VXcodvv5559ZunQp1apVo3v37vz444/07t1bd1gOqVSp
EgDlypWjY8eOlroYGxAQQEBAAI0bNwagc+fOuTZnNKuVK1fSsGFDypUrl+t2WhO91NnrZRgG/fv3
p3bt2gwfPlx3OA45d+4cKSkpAPzzzz+sWbOGBg0aaI7KfuPHjycpKYkjR46wcOFCmjdvzty5c3WH
ZbcrV65w8eJFAC5fvszq1aupW7eu5qjsV7FiRapWrcr+/fsBNc9dp04dzVE5bsGCBXS3o32o1tsE
ZKyzT0tLo3///paqs+/evTsJCQn89ddfVK1alTfffJO+ffvqDstuGzduZP78+dSrVy89ScbFxdG6
dWvNkf2706dP06dPH27evMnNmzfp1asXLVq00B2W06w2jXn27Fk6duwIqGmQHj160KpVK81ROWbq
1Kn06NGD69evExQUxJw5c3SH5JDLly+zdu1au66PaK+jF0II4V7WvNwvhBDCbpLohRDCy0miF0II
LyeJXgghvJwkeiGE8HKS6IUQwsv9f+XUuS6DnVqmAAAAAElFTkSuQmCC
&quot;&gt;&lt;/img&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;cell border-box-sizing code_cell vbox&quot;&gt;
&lt;div class=&quot;input hbox&quot;&gt;
&lt;div class=&quot;prompt input_prompt&quot;&gt;In [3]:&lt;/div&gt;
&lt;div class=&quot;input_area box-flex1&quot;&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span class=&quot;o&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;load_ext&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;sympyprinting&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;vbox output_wrapper&quot;&gt;
&lt;div class=&quot;output vbox&quot;&gt;
&lt;div class=&quot;hbox output_area&quot;&gt;
&lt;div class=&quot;prompt output_prompt&quot;&gt;&lt;/div&gt;
&lt;div class=&quot;output_subarea output_stream output_stderr&quot;&gt;
&lt;pre&gt;/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/nose/plugins/manager.py:418: UserWarning: Module dateutil was already imported from /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/dateutil/__init__.pyc, but /Users/yaboo/src/matplotlib/lib is being added to sys.path
  import pkg_resources
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/nose/plugins/manager.py:418: UserWarning: Module six was already imported from /Users/yaboo/src/matplotlib/lib/six.pyc, but /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages is being added to sys.path
  import pkg_resources
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/IPython/extensions/sympyprinting.py:119: UserWarning: The sympyprinting extension in IPython is deprecated, use sympy.interactive.ipythonprinting
  warnings.warn(&amp;quot;The sympyprinting extension in IPython is deprecated, &amp;quot;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;cell border-box-sizing code_cell vbox&quot;&gt;
&lt;div class=&quot;input hbox&quot;&gt;
&lt;div class=&quot;prompt input_prompt&quot;&gt;In [4]:&lt;/div&gt;
&lt;div class=&quot;input_area box-flex1&quot;&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;sympy&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;sym&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;sympy&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;z&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;sym&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;symbols&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;x y z&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;cell border-box-sizing code_cell vbox&quot;&gt;
&lt;div class=&quot;input hbox&quot;&gt;
&lt;div class=&quot;prompt input_prompt&quot;&gt;In [5]:&lt;/div&gt;
&lt;div class=&quot;input_area box-flex1&quot;&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span class=&quot;n&quot;&gt;Rational&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;pi&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;exp&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;I&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;**&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;vbox output_wrapper&quot;&gt;
&lt;div class=&quot;output vbox&quot;&gt;
&lt;div class=&quot;hbox output_area&quot;&gt;
&lt;div class=&quot;prompt output_prompt&quot;&gt;Out [5]:&lt;/div&gt;
&lt;div class=&quot;output_subarea output_pyout&quot;&gt;
$$\frac{3}{2} \pi + \frac{e^{\mathbf{\imath} x}}{x^{2} + y}$$
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;cell border-box-sizing code_cell vbox&quot;&gt;
&lt;div class=&quot;input hbox&quot;&gt;
&lt;div class=&quot;prompt input_prompt&quot;&gt;In [6]:&lt;/div&gt;
&lt;div class=&quot;input_area box-flex1&quot;&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span class=&quot;n&quot;&gt;eq&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;((&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;**&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;eq&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;vbox output_wrapper&quot;&gt;
&lt;div class=&quot;output vbox&quot;&gt;
&lt;div class=&quot;hbox output_area&quot;&gt;
&lt;div class=&quot;prompt output_prompt&quot;&gt;Out [6]:&lt;/div&gt;
&lt;div class=&quot;output_subarea output_pyout&quot;&gt;
$$\left(x + 1\right) \left(x + y\right)^{2}$$
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;cell border-box-sizing code_cell vbox&quot;&gt;
&lt;div class=&quot;input hbox&quot;&gt;
&lt;div class=&quot;prompt input_prompt&quot;&gt;In [7]:&lt;/div&gt;
&lt;div class=&quot;input_area box-flex1&quot;&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span class=&quot;n&quot;&gt;expand&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;eq&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;vbox output_wrapper&quot;&gt;
&lt;div class=&quot;output vbox&quot;&gt;
&lt;div class=&quot;hbox output_area&quot;&gt;
&lt;div class=&quot;prompt output_prompt&quot;&gt;Out [7]:&lt;/div&gt;
&lt;div class=&quot;output_subarea output_pyout&quot;&gt;
$$x^{3} + 2 x^{2} y + x^{2} + x y^{2} + 2 x y + y^{2}$$
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;cell border-box-sizing code_cell vbox&quot;&gt;
&lt;div class=&quot;input hbox&quot;&gt;
&lt;div class=&quot;prompt input_prompt&quot;&gt;In [8]:&lt;/div&gt;
&lt;div class=&quot;input_area box-flex1&quot;&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span class=&quot;n&quot;&gt;diff&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;cos&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;**&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;**&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;vbox output_wrapper&quot;&gt;
&lt;div class=&quot;output vbox&quot;&gt;
&lt;div class=&quot;hbox output_area&quot;&gt;
&lt;div class=&quot;prompt output_prompt&quot;&gt;Out [8]:&lt;/div&gt;
&lt;div class=&quot;output_subarea output_pyout&quot;&gt;
$$- 4 \frac{x \sin{\left (x^{2} \right )} \cos{\left (x^{2} \right )}}{x + 1} - \frac{\cos^{2}{\left (x^{2} \right )}}{\left(x + 1\right)^{2}}$$
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;text_cell_render border-box-sizing rendered_html&quot;&gt;
&lt;p&gt;You can &lt;i&gt;italicize&lt;/i&gt;, &lt;b&gt;boldface&lt;/b&gt;&lt;br&gt;
&lt;li&gt;build&lt;/li&gt;
&lt;li&gt;list&lt;/li&gt;
and embed code meant for illustration instead of execution in Python:&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;
def f(x):
    &quot;&quot;&quot;a docstring&quot;&quot;&quot;
    return x**2
&lt;/pre&gt;

&lt;p&gt;or other languages:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;cell border-box-sizing code_cell vbox&quot;&gt;
&lt;div class=&quot;input hbox&quot;&gt;
&lt;div class=&quot;prompt input_prompt&quot;&gt;In [9]:&lt;/div&gt;
&lt;div class=&quot;input_area box-flex1&quot;&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;IPython.display&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Image&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;Image&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;filename&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;u&amp;#39;/Users/yaboo/Downloads/hoge.jpeg&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;vbox output_wrapper&quot;&gt;
&lt;div class=&quot;output vbox&quot;&gt;
&lt;div class=&quot;hbox output_area&quot;&gt;
&lt;div class=&quot;prompt output_prompt&quot;&gt;Out [9]:&lt;/div&gt;
&lt;div class=&quot;output_subarea output_pyout&quot;&gt;
&lt;img src=&quot;data:image/jpeg;base64,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
AAAAADYEAAAqLQAAAAAAAAAAAAAAAAAAkAMAAFYBAAB2AQAAjAAAABoCAADKAAAApAAAAD4AAAD7
DwAA+w8AAAEAAAABAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANMGAADaCwAAAAAAAP//
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAVAAAADQAAAPujFdtgAAIACQABAEAOsApkAGQAEgAAAAAAAAAAAAAA
AAAAAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAEAAAACAAIA
AgACAAAAAAAAAAAAAAAAAAAAAAAAAIoAAQAAAAQACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKABAAAAABAACAAB
AAEAgALgAQAAAAAAAAAAAAAIAIABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAACAAAAAAAAAAKAAAA//8AAAAAk/+WminVRrV32VGV5sE8jQgAAAAAAP//AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKo3ACQBAACAvykA2wAAAEAOAABADgAABAABAAIA
BAAAAFI5OAACAAcABAAAADAxMDABEAMAAQAAAEAOAAACEAMAAQAAALAKAAAAAAAABgADAQMAAQAA
AAYAAAAaAQUAAQAAAEoNAAAbAQUAAQAAAFINAAAoAQMAAQAAAAIAAAABAgQAAQAAAFoNAAACAgQA
AQAAAFUbAAAAAAAAtAAAAAEAAAC0AAAAAQAAAP/Y/+AAEEpGSUYAAQEAAAEAAQAA/9sAQwAIBgYH
BgUIBwcHCQkICgwUDQwLCwwZEhMPFB0aHx4dGhwcICQuJyAiLCMcHCg3KSwwMTQ0NB8nOT04Mjwu
MzQy/9sAQwEJCQkMCwwYDQ0YMiEcITIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy
MjIyMjIyMjIyMjIyMjIy/8AAEQgAxACTAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAAB
AgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNC
scEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0
dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY
2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//E
ALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoW
JDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWG
h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp
6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A0MUYp+KMV7x4gzFGKfijFAEeKMVJijFAiPFJipMUYoAj
xSYqTFJigCPFGKfijFMCPFJipCKTFICPFJipCKTFMCIioNQhL6TIImKtH+9kc45AycDsOcc1bxUN
zbi5tpIGYqsi7SR2rCvT54NLc3w9X2c79DHOqyW58qW3kd16shXH4c0VUvNGnju5Es7to7cHCKJj
+J/E5P40VyKvKx1yoRuztsUmKkxRivRPOI8UYqTFJigBmKMU/FJigQzFGKfikxQAzFJipMUmKAI8
VLBbmcuSwVUXczEZ4puKDLOkUsUBUGVGUljgKMHn69h9azquUYNx3NaKi6iU9jK0/VIdSluDCSI4
n2AMuCT3rXjgi+zyT3EoiiUHDHucE1xumW8tre2skb4tpCwjz8w+98w3HryOoxXSXiRXdkULKyn/
AFZ3Y+b1HvXNTqznRbT1R1Towp10pK6Yyyuory2WSOVJOxKkdR147VYxXL6db6hDqVwAsEc5QE7E
Utgt3HGf/wBQrqUVggDsGbHJAxn8K3w9RzgmzDEU1CbUdhuKTFSYpMVsYFSS88pymy4bHdYyR+dF
bSW2niNfOvCshUEqFzjPNFefKvRUmr/gehHD1nFO34jV5FLinBccUuK9A4BmKTFPxRigQzFJin4o
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
&quot;&gt;&lt;/img&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;cell border-box-sizing code_cell vbox&quot;&gt;
&lt;div class=&quot;input hbox&quot;&gt;
&lt;div class=&quot;prompt input_prompt&quot;&gt;In [10]:&lt;/div&gt;
&lt;div class=&quot;input_area box-flex1&quot;&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;IPython.display&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;YouTubeVideo&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;YouTubeVideo&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;#39;iwVvqwLDsJo&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;vbox output_wrapper&quot;&gt;
&lt;div class=&quot;output vbox&quot;&gt;
&lt;div class=&quot;hbox output_area&quot;&gt;
&lt;div class=&quot;prompt output_prompt&quot;&gt;Out [10]:&lt;/div&gt;
&lt;div class=&quot;output_subarea output_pyout output_html rendered_html&quot;&gt;

            &lt;iframe
                width=&quot;400&quot;
                height=&quot;300&quot;
                src=&quot;http://www.youtube.com/embed/iwVvqwLDsJo&quot;
                frameborder=&quot;0&quot;
                allowfullscreen
            &gt;&lt;/iframe&gt;
        
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;cell border-box-sizing code_cell vbox&quot;&gt;
&lt;div class=&quot;input hbox&quot;&gt;
&lt;div class=&quot;prompt input_prompt&quot;&gt;In [11]:&lt;/div&gt;
&lt;div class=&quot;input_area box-flex1&quot;&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span class=&quot;o&quot;&gt;%%&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;ruby&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&amp;quot;Hello from Ruby #{RUBY_VERSION}&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;vbox output_wrapper&quot;&gt;
&lt;div class=&quot;output vbox&quot;&gt;
&lt;div class=&quot;hbox output_area&quot;&gt;
&lt;div class=&quot;prompt output_prompt&quot;&gt;&lt;/div&gt;
&lt;div class=&quot;output_subarea output_stream output_stdout&quot;&gt;
&lt;pre&gt;Hello from Ruby 1.8.7
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;cell border-box-sizing code_cell vbox&quot;&gt;
&lt;div class=&quot;input hbox&quot;&gt;
&lt;div class=&quot;prompt input_prompt&quot;&gt;In [12]:&lt;/div&gt;
&lt;div class=&quot;input_area box-flex1&quot;&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span class=&quot;o&quot;&gt;%%&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;bash&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&amp;quot;hello from $BASH&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;vbox output_wrapper&quot;&gt;
&lt;div class=&quot;output vbox&quot;&gt;
&lt;div class=&quot;hbox output_area&quot;&gt;
&lt;div class=&quot;prompt output_prompt&quot;&gt;&lt;/div&gt;
&lt;div class=&quot;output_subarea output_stream output_stdout&quot;&gt;
&lt;pre&gt;hello from /bin/bash
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;cell border-box-sizing code_cell vbox&quot;&gt;
&lt;div class=&quot;input hbox&quot;&gt;
&lt;div class=&quot;prompt input_prompt&quot;&gt;In [13]:&lt;/div&gt;
&lt;div class=&quot;input_area box-flex1&quot;&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span class=&quot;o&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;load_ext&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;rmagic&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;np&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;array&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;Y&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;np&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;array&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;cell border-box-sizing code_cell vbox&quot;&gt;
&lt;div class=&quot;input hbox&quot;&gt;
&lt;div class=&quot;prompt input_prompt&quot;&gt;In [14]:&lt;/div&gt;
&lt;div class=&quot;input_area box-flex1&quot;&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span class=&quot;o&quot;&gt;%%&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;R&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Y&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;o&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;XYcoef&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;XYlm&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;lm&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Y&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;~&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;XYcoef&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;coef&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;XYlm&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;summary&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;XYlm&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;par&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;mfrow&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;plot&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;XYlm&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;vbox output_wrapper&quot;&gt;
&lt;div class=&quot;output vbox&quot;&gt;
&lt;div class=&quot;hbox output_area&quot;&gt;
&lt;div class=&quot;prompt output_prompt&quot;&gt;&lt;/div&gt;
&lt;div class=&quot;output_subarea output_display_data&quot;&gt;
&lt;pre&gt;
Call:
lm(formula = Y ~ X)

Residuals:
   1    2    3    4    5 
-0.2  0.9 -1.0  0.1  0.2 

Coefficients:
            Estimate Std. Error t value Pr(&amp;gt;|t|)  
(Intercept)   3.2000     0.6164   5.191   0.0139 *
X             0.9000     0.2517   3.576   0.0374 *
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 0.7958 on 3 degrees of freedom
Multiple R-squared:  0.81, Adjusted R-squared: 0.7467 
F-statistic: 12.79 on 1 and 3 DF,  p-value: 0.03739 

&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;hbox output_area&quot;&gt;
&lt;div class=&quot;prompt output_prompt&quot;&gt;&lt;/div&gt;
&lt;div class=&quot;output_subarea output_display_data&quot;&gt;
&lt;img src=&quot;data:image/png;base64,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
PQXdv39/xowZQ/fu3Sn9772kQUFBbN26lePHj5szFPEMpV0b9PMXQf+UyTFUvT6l3OSo4SnXiUWO
4OfnR79+/ShdujTr1q2jc+fO2NjY0LhxY959912twxNCPMesR8B16tTBx8eHwoULc/nyZX777Tfs
7e05fvy4FIvXkFKlMgDqX1dT/v12NzjYo3vBwCyRPRUrVow7d+4AcODAATp16gTAlStXKFOmjJah
CSHSYfZR0CVLlmT48OHm7la8wp+lXAgYORpfp+LMCXtIoa+3ah2SyKBOnTqxaNEifvrpJxISEmjW
rBnHjh1jwoQJLF68WOvwhBDPyRa1oJcvX46qqkyePFnrUPKks2fPsvLns6xTFepZWLPy3l26hoZS
y8lJ69BEBhQsWJALFy5w5coVatSogaVlyu795Zdf4unpqXF0QojnZYsE/DoThV+7do2DBw+mWf77
77/j4uJiirByrZ9//pmvv/4avV7PwoUL8fb25r1Fiyg45f8oGBiE55KFHDp0iFq1amkdqsig/Pnz
U7duXcPj1q1baxiNEOJlskUCtre3f+U2T29jeF716tVxdnY2RVi51l9//cXSpUv59NNPOX36NAUK
FODhw4dYnkoZCBf7zTckJydrHKUQQuRu2SIBvw5nZ+d0E+2DBw9QVVWDiHKuwYMHs3fvXrZs2cKJ
EydwcnJi9OjRxMXF8ejRI9atW8eBAwe0DlMIIXI1sybgpUuX4uvrm+66fv360bdvX3OGk6d17doV
a2tr1qxZw4wZM9izZw/e3t6oqsqOHTsoUqSI1iEKIUSuZtYEPGDAALy9vZk8eTK1a9dOte5p3Vph
eiNHjmTWrFmEhYXh6uoKgJOTU7qlAoUQQpiGWRNwiRIl2LZtGx988AH9+vUzZ9fiGXPmzGHz5s2U
LVuWbt26aR2OyKGSk5N58uQJtra2WociRI5k9ukIq1atyu7du83drXhGiRIlmDp1Kr169TLcqiLE
q6xevZpTp04BsH79etzd3alRowYDBw7kyZMnRusnPj6eXbt28fXXXxMeHg5AcHAw48ePZ+TIkQQG
BhqtLyG0pOl8wDNmzGDbtm1ahiCEeE3BwcFERUURGxvLhg0buHTpEgEBAZQrV461a9capY/k5GRq
167NxYsXuXv3LsWLF+fatWtcvnyZKVOmMGDAALZv326UvoTQmqYJWAiR88TExFCrVi0KFCiATqej
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
MoH/A9fSI5x3vxUMAAAAAElFTkSuQmCC
&quot;&gt;&lt;/img&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;cell border-box-sizing code_cell vbox&quot;&gt;
&lt;div class=&quot;input hbox&quot;&gt;
&lt;div class=&quot;prompt input_prompt&quot;&gt;In [42]:&lt;/div&gt;
&lt;div class=&quot;input_area box-flex1&quot;&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span class=&quot;n&quot;&gt;XYcoef&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;vbox output_wrapper&quot;&gt;
&lt;div class=&quot;output vbox&quot;&gt;
&lt;div class=&quot;hbox output_area&quot;&gt;
&lt;div class=&quot;prompt output_prompt&quot;&gt;Out [42]:&lt;/div&gt;
&lt;div class=&quot;output_subarea output_pyout&quot;&gt;
&lt;pre&gt;[ 3.2  0.9]&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;cell border-box-sizing code_cell vbox&quot;&gt;
&lt;div class=&quot;input hbox&quot;&gt;
&lt;div class=&quot;prompt input_prompt&quot;&gt;In [16]:&lt;/div&gt;
&lt;div class=&quot;input_area box-flex1&quot;&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span class=&quot;n&quot;&gt;load_ext&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;cythonmagic&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;cell border-box-sizing code_cell vbox&quot;&gt;
&lt;div class=&quot;input hbox&quot;&gt;
&lt;div class=&quot;prompt input_prompt&quot;&gt;In [17]:&lt;/div&gt;
&lt;div class=&quot;input_area box-flex1&quot;&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span class=&quot;o&quot;&gt;%%&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;cython&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;lm&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;libc.math&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;cimport&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;sin&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&amp;#39;sin(1)=&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;sin&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;vbox output_wrapper&quot;&gt;
&lt;div class=&quot;output vbox&quot;&gt;
&lt;div class=&quot;hbox output_area&quot;&gt;
&lt;div class=&quot;prompt output_prompt&quot;&gt;&lt;/div&gt;
&lt;div class=&quot;output_subarea output_stream output_stdout&quot;&gt;
&lt;pre&gt;sin(1)= 0.841470984808
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</description><link>http://yaboolog.blogspot.com/2012/10/this-is-just-test-of-nbconvertpy.html</link><author>noreply@blogger.com (Anonymous)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/iwVvqwLDsJo/default.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5116833147554663168.post-6564643079582993835</guid><pubDate>Thu, 25 Oct 2012 15:36:00 +0000</pubDate><atom:updated>2012-10-26T00:36:00.453+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">R</category><category domain="http://www.blogger.com/atom/ns#">tips</category><title>R tips: read and visualize shapefile with R</title><description>Below sample code shows how to read shapefiles with R and plot them.

&lt;pre class=&quot;code&quot;&gt;
library(maptools)

# downloaded via http://www.globalmap.org/download/data/shp/1_1/shape_jp_1_1.zip
boundp &lt;- readShapePoly(&quot;shape_jp_1_1/bnda_1_1.shp&quot;)
transl &lt;- readShapeLines(&quot;shape_jp_1_1/transl_1_1.shp&quot;)

# Plot shapefile
plot(boundp)
plot(transl)

# plot shapefile within specified boundary
plot(boundp, xlim=c(135, 136), ylim=c(34,35))
lines(transl, xlim=c(135, 136), ylim=c(34,35), col=&#39;red&#39;)

# plot polygons which name equals &#39;OSAKA&#39;
boundp_hyogo &lt;- shp[(shp$nam == &#39;HYOGO&#39;),]
x_range &lt;- bbox(shp_tokyo)[1,]
y_range &lt;- bbox(shp_tokyo)[2,]
plot(boundp_hyogo, xlim=x_range, ylim=y_range)
lines(transl, xlim=x_range, ylim=y_range, col=&#39;green&#39;)
&lt;/pre&gt;

</description><link>http://yaboolog.blogspot.com/2012/10/r-tips-read-and-visualize-shapefile.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5116833147554663168.post-1118972045851175801</guid><pubDate>Wed, 22 Aug 2012 17:02:00 +0000</pubDate><atom:updated>2012-08-23T02:02:55.361+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">R</category><category domain="http://www.blogger.com/atom/ns#">tips</category><title>R tips: operating probability density function in R</title><description>There are several probability density functions (PDFs) defined in R. You can find defined PDFs with &quot;library(help=&#39;stats&#39;)&quot; in R-console. Now, let&#39;s plot Gaussian distribution N(0,1) with *norm function.


&lt;br /&gt;
&lt;pre class=&quot;code&quot;&gt;# Probability density function
&amp;gt; curve(dnorm(x, mean=0, sd=1, log=FALSE), -3, 3, n=1001, col = &quot;blue&quot;)           
&lt;/pre&gt;

&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFL3v7DMI1x1Vaewl6xul81aYb963n0oI0E7piMP4ucBsNFMBMK6xPFXlzVYuL0kTmMV6yFqSn9Zq3l9mK95d6iBjUQAYaXBakHmf6NKil6QuR2_ktEQ220iY0AruqsZ8JPKZuC5vfevY/s1600/curve1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; width=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFL3v7DMI1x1Vaewl6xul81aYb963n0oI0E7piMP4ucBsNFMBMK6xPFXlzVYuL0kTmMV6yFqSn9Zq3l9mK95d6iBjUQAYaXBakHmf6NKil6QuR2_ktEQ220iY0AruqsZ8JPKZuC5vfevY/s200/curve1.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;pre class=&quot;code&quot;&gt;# Cumulative probability density function
&amp;gt; curve(pnorm(x, mean=0, sd=1, log=FALSE), -3, 3, n=1001, col = &quot;blue&quot;)           
&lt;/pre&gt;

&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaxTzN8fcYSyZnI4m0qlHMs9rItgzO4aAUwYy2NmY53NuBeLFFWXDQUFIxfJvNKmEzP8FLfn8cKLFoj7Vm09UCUwZ-vDnxYALobnngp51HlKxQMFj9hECm6HbaPW-4HRHqNLyQJBVLGv0/s1600/out1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; width=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaxTzN8fcYSyZnI4m0qlHMs9rItgzO4aAUwYy2NmY53NuBeLFFWXDQUFIxfJvNKmEzP8FLfn8cKLFoj7Vm09UCUwZ-vDnxYALobnngp51HlKxQMFj9hECm6HbaPW-4HRHqNLyQJBVLGv0/s200/out1.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;


&lt;pre class=&quot;code&quot;&gt;# Probabilistic generative model
&gt; rnorm(n=100, mean=0, sd=1) 
  [1]  0.76291389  0.32249468  1.43329768  0.39455640 -0.96082434 -0.03498441
  [7] -0.98776053 -0.69866914  1.31514002 -1.42647303 -0.46658770 -1.32506735
 [13] -1.52074716  0.45169290 -1.11993007 -0.27547321  0.86232800 -2.36687435
 [19] -1.34228574 -0.72800613 -0.41979553 -2.24104445  1.86935264 -0.88038071
 [25] -0.71816560 -0.53788946  0.50974550 -1.23530999  0.77035374  0.06483997
 [31] -0.62251296  1.60636131  0.36695288  0.76654543  0.86672801 -0.75831284
 [37] -1.48413034 -0.37661399  1.34613939 -1.20912506 -0.22231654  2.66835415
 [43]  0.49528498  0.26435606 -0.74862141 -0.41349885 -0.94850251  0.83038086
 [49]  0.29994578 -0.15778865 -1.16049616  2.24109521  0.86357121  1.28825845
 [55]  0.50549591  0.08668917 -0.34392882  2.08620620 -0.02514741 -0.38974372
 [61] -0.07943300  1.01109304  1.26749487  1.65848787  1.40626520  0.13476383
 [67] -0.81541581 -0.23397894 -1.54089193  2.69271063  1.02584790  0.34583390
 [73]  0.35808556 -2.23486925 -0.97331144 -0.75742258 -1.49065873 -0.24702416
 [79]  1.46008300  0.26804260  1.25457656  0.55169794 -0.34509144 -1.24602872
 [85]  0.65070530 -0.69068100  0.98802706 -1.76179226 -0.30577751  0.30197949
 [91] -0.18236187 -0.86313716  1.36986087 -1.23400546 -0.78780711 -2.14942716
 [97]  1.17743473 -0.95787888 -0.27079632  1.79351280
          
&lt;/pre&gt;
</description><link>http://yaboolog.blogspot.com/2012/08/r-tips-operating-probability-density.html</link><author>noreply@blogger.com (Anonymous)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFL3v7DMI1x1Vaewl6xul81aYb963n0oI0E7piMP4ucBsNFMBMK6xPFXlzVYuL0kTmMV6yFqSn9Zq3l9mK95d6iBjUQAYaXBakHmf6NKil6QuR2_ktEQ220iY0AruqsZ8JPKZuC5vfevY/s72-c/curve1.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5116833147554663168.post-8384084691558652881</guid><pubDate>Tue, 21 Aug 2012 17:11:00 +0000</pubDate><atom:updated>2012-08-22T02:19:20.838+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">geometry</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">tips</category><title>geometry and python tips: automatic generation of Japanese standardized regional meshes </title><description>Huge number of geometric object takes time to load (Especially, loading standardized regional meshes are time consuming). Therefore, I implemented standardized regional mesh generator which generates meshes according to input boundary box.

&lt;pre class=&quot;brush:python&quot;&gt;
#!/usr/bin/env python
#coding: utf-8

import sys
import datetime

from rtree import index
from rtree.index import Rtree
from shapely.geometry import Polygon

class SrmGenerator():
    def get_mesh1st_to_polygon(self, bbox):
        return dict([(mesh1st, Polygon(self._get_rect(*bbox)))
                     for mesh1st, bbox in self.generate_mesh1st_to_bbox(bbox).items()])

    def generate_mesh1st_to_bbox(self, bbox):
        d_mesh1st_to_bbox = self._get_d_mesh1st_to_bbox()
        rindex = self._create_rtree_index(d_mesh1st_to_bbox)
        return dict([(mesh1st, d_mesh1st_to_bbox[mesh1st])
                     for mesh1st in list(rindex.intersection(bbox))])

    def get_mesh2nd_to_polygon(self, bbox):
        return dict([(mesh2nd, Polygon(self._get_rect(*bbox)))
                     for mesh2nd, bbox in self.generate_mesh2nd_to_bbox(bbox).items()])

    def generate_mesh2nd_to_bbox(self, bbox):
        d_mesh1st_to_bbox = self.generate_mesh1st_to_bbox(bbox)
        d_mesh2nd_to_bbox = self._get_d_mesh2nd_to_bbox(d_mesh1st_to_bbox)
        rindex = self._create_rtree_index(d_mesh2nd_to_bbox)
        return dict([(mesh2nd, d_mesh2nd_to_bbox[mesh2nd])
                     for mesh2nd in list(rindex.intersection(bbox))])

    def get_mesh3rd_to_polygon(self, bbox):
        return dict([(mesh3rd, Polygon(self._get_rect(*bbox)))
                     for mesh3rd, bbox in self.generate_mesh3rd_to_bbox(bbox).items()])

    def generate_mesh3rd_to_bbox(self, bbox):
        d_mesh2nd_to_bbox = self.generate_mesh2nd_to_bbox(bbox)
        d_mesh3rd_to_bbox = self._get_d_mesh3rd_to_bbox(d_mesh2nd_to_bbox)
        rindex = self._create_rtree_index(d_mesh3rd_to_bbox)
        return dict([(mesh3rd, d_mesh3rd_to_bbox[mesh3rd])
                     for mesh3rd in list(rindex.intersection(bbox))])

    def get_mesh4th_to_polygon(self, bbox):
        return dict([(mesh4th, Polygon(self._get_rect(*bbox)))
                     for mesh4th, bbox in self.generate_mesh4th_to_bbox(bbox).items()])

    def generate_mesh4th_to_bbox(self, bbox):
        d_mesh3rd_to_bbox = self.generate_mesh3rd_to_bbox(bbox)
        d_mesh4th_to_bbox = self._get_d_mesh4th_to_bbox(d_mesh3rd_to_bbox)
        rindex = self._create_rtree_index(d_mesh4th_to_bbox)
        return dict([(mesh4th, d_mesh4th_to_bbox[mesh4th])
                     for mesh4th in list(rindex.intersection(bbox))])

    def _create_rtree_index(self, d_meshid_to_bbox):
        p = index.Property()
        rindex = index.Index(properties=p)
        [rindex.add(meshid, bbox) for meshid, bbox in d_meshid_to_bbox.items()]
        return rindex

    def _get_d_mesh1st_to_bbox(self):
        l_x = [str(x).zfill(2) for x in range(20, 50)]
        l_y = [str(y).zfill(2) for y in range(30, 70)]
        return  dict([self._generate_mesh1st_bbox_pair(x, y)
                      for x, y in self._get_combinations(l_x, l_y)])
        
    def _generate_mesh1st_bbox_pair(self, x, y):
        id_mesh1st = int(&quot;{0}{1}&quot;.format(y, x))
        left = float(&quot;1{0}&quot;.format(x))
        bottom = float(y) / 1.5
        right = float(&quot;1{0}&quot;.format(str(int(x) + 1)))
        top = float(int(y) + 1) / 1.5
        return (id_mesh1st, (left, bottom, right, top))

    def _get_d_mesh2nd_to_bbox(self, d_mesh1st_to_bbox, num_split=8):
        fn = self._get_meshid_for_2nd_3rd
        return self._get_d_meshid_to_bbox(d_mesh1st_to_bbox, num_split, fn)

    def _get_d_mesh3rd_to_bbox(self, d_mesh2nd_to_bbox, num_split=10):
        fn = self._get_meshid_for_2nd_3rd
        return self._get_d_meshid_to_bbox(d_mesh2nd_to_bbox, num_split, fn)

    def _get_d_mesh4th_to_bbox(self, d_mesh3rd_to_bbox, num_split=2):
        fn = self._get_meshid_for_4th
        return self._get_d_meshid_to_bbox(d_mesh3rd_to_bbox, num_split, fn)

    def _get_d_meshid_to_bbox(self, d_meshcode_to_bbox, num_split, fn):
        D = {}
        for meshcode, bbox in d_meshcode_to_bbox.items():
            left, bottom, right, top = bbox
            x_delta = (right - left) / num_split
            y_delta = (top - bottom) / num_split
            x_coord = [left] + [left+x_delta*i for i in range(1, num_split)] + [right]
            y_coord = [bottom] + [bottom+y_delta*i for i in range(1, num_split)] + [top]
            for i, j in self._get_combinations(range(len(y_coord)-1), range(len(x_coord)-1)):
                new_meshcode = fn(meshcode, i, j)
                bbox = (x_coord[j], y_coord[i], x_coord[j+1], y_coord[i+1])
                D.update({new_meshcode: bbox})
        return D

    def _get_meshid_for_2nd_3rd(self, meshcode, i, j):
        return int(str(meshcode) + str(i) + str(j))

    def _get_meshid_for_4th(self, meshcode, i, j):
        return int(str(meshcode) + self._get_mesh4th_last_code(i, j))

    def _get_mesh4th_last_code(self, y, x):
        if (y == 0 and x == 0):
            return &#39;1&#39;
        elif (y == 0 and x == 1):
            return &#39;2&#39;
        elif (y == 1 and x == 0):
            return &#39;3&#39;
        elif (y == 1 and x == 1):
            return &#39;4&#39;
        else:
            print &quot;unexpected error in _get_mesh4th_last_code&quot;
            sys.exit(0)

    def _get_combinations(self, L1, L2):
        ret = []
        for e1 in L1 :
            for e2 in L2:
                ret.append([e1, e2])
        return ret

    def _get_rect(self, left, bottom, right, top):
        return ((left, bottom),
                (left, top),
                (right, top),
                (right, bottom),
                (left, bottom))
                
if __name__ == &quot;__main__&quot;:
    L = 130.0
    R = 140.0
    B = 34.0
    T = 34.2
    bbox = (L, B, R, T)

    from datetime import datetime
    s = datetime.now()
    print len(SrmGenerator().get_mesh4th_to_polygon(bbox))
    e = datetime.now()
    print(e-s)
&lt;/pre&gt;

&lt;pre class=&quot;code&quot;&gt;
$ python generate_area_srg.py
80100
0:00:07.602852
&lt;/pre&gt;</description><link>http://yaboolog.blogspot.com/2012/08/geometry-and-python-tips-automatic.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5116833147554663168.post-2774919705188904674</guid><pubDate>Tue, 21 Aug 2012 15:19:00 +0000</pubDate><atom:updated>2012-08-22T00:21:16.052+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">geometry</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">tips</category><title>geometry and python tips: How to load shapefile correctly using python?</title><description>&lt;a href=&quot;http://toblerity.github.com/shapely/manual.html&quot;&gt;Shapely&lt;/a&gt; provides an easy way to operate geometrical objects. However, shapely does not have good functionality for loading ESRI shapefile directly and formatting topologically complex geometry for making shapely&#39;s method arguments is tired work. Below code will solve this issue: combination of shapely.wkb.loads and osgeo library. To write this code, I referred &lt;a href=&quot;http://invisibleroads.com/tutorials/gdal-shapefile-geometries-fields-save-load.html&quot;&gt;here&lt;/a&gt;.

&lt;pre class=&quot;brush:python&quot;&gt;
#!/usr/bin/env python
#coding: utf-8

import sys
import cPickle as pickle
import collections

from osgeo import ogr
from shapely.wkb import loads

def main():
    path_to_shp = argvs[1]
    path_to_out = argvs[2]

    d_fid2pol = get_d_fid2pol(path_to_shp)
    dump_object_to_file(d_fid2pol, path_to_out)

def get_d_fid2pol(path_to_shp):
    &quot;&quot;&quot;
    :param path_to_shp: path to *.shp
    :type path_to_shp: string

    :returns: {fid: MultiPolygon(), ...}
    :rtype: dictionary
    &quot;&quot;&quot;
    data = ogr.Open(path_to_shp)
    elements = data.GetLayer()
    return dict([get_fid_and_poly(element) for element in elements])

def get_fid_and_poly(element):
    &quot;&quot;&quot;
    :param element: element of shapefile
    :type element: object

    :returns: {fid: MultiPolygon()}
    :rtype: element of dictionary
    &quot;&quot;&quot;
    fid = element.GetField(0)
    poly = loads(element.GetGeometryRef().ExportToWkb())
    return (fid, poly)
    
def dump_object_to_file(obj, path_to_out):
    with open(path_to_out, &#39;wb&#39;) as F:
        pickle.dump(obj, F, -1)

if __name__ == &quot;__main__&quot;:
    main()
&lt;/pre&gt;</description><link>http://yaboolog.blogspot.com/2012/08/geometry-and-python-tips-how-to-load.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5116833147554663168.post-6005350443987136565</guid><pubDate>Mon, 20 Aug 2012 15:54:00 +0000</pubDate><atom:updated>2012-08-21T01:00:40.174+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">machine learning</category><category domain="http://www.blogger.com/atom/ns#">R</category><category domain="http://www.blogger.com/atom/ns#">tips</category><title>R tips: first contact with linear pattern recognition in R.</title><description>This is just test code for linear pattern recognition. Below code is introduced in 
http://www.slideshare.net/sleipnir002/05-12739580.

&lt;pre class=code&gt;
&gt; index &lt;- sample(nrow(data), nrow(data)*0.2) #sample data
&gt; index
 [1]  83  47 146  59 111  94 121  14  15 122  33  22  87  78  66 133  18  79  19
[20]   9  88  32 116  60   7 104  67  20  86   1
&gt; data[index,]
    Sepal.Length Sepal.Width Petal.Length Petal.Width    Species Species2
83           5.8         2.7          3.9         1.2 versicolor   vervir
47           5.1         3.8          1.6         0.2     setosa   setosa
146          6.7         3.0          5.2         2.3  virginica   vervir
59           6.6         2.9          4.6         1.3 versicolor   vervir
111          6.5         3.2          5.1         2.0  virginica   vervir
94           5.0         2.3          3.3         1.0 versicolor   vervir
121          6.9         3.2          5.7         2.3  virginica   vervir
14           4.3         3.0          1.1         0.1     setosa   setosa
15           5.8         4.0          1.2         0.2     setosa   setosa
122          5.6         2.8          4.9         2.0  virginica   vervir
33           5.2         4.1          1.5         0.1     setosa   setosa
22           5.1         3.7          1.5         0.4     setosa   setosa
87           6.7         3.1          4.7         1.5 versicolor   vervir
78           6.7         3.0          5.0         1.7 versicolor   vervir
66           6.7         3.1          4.4         1.4 versicolor   vervir
133          6.4         2.8          5.6         2.2  virginica   vervir
18           5.1         3.5          1.4         0.3     setosa   setosa
79           6.0         2.9          4.5         1.5 versicolor   vervir
19           5.7         3.8          1.7         0.3     setosa   setosa
9            4.4         2.9          1.4         0.2     setosa   setosa
88           6.3         2.3          4.4         1.3 versicolor   vervir
32           5.4         3.4          1.5         0.4     setosa   setosa
116          6.4         3.2          5.3         2.3  virginica   vervir
60           5.2         2.7          3.9         1.4 versicolor   vervir
7            4.6         3.4          1.4         0.3     setosa   setosa
104          6.3         2.9          5.6         1.8  virginica   vervir
67           5.6         3.0          4.5         1.5 versicolor   vervir
20           5.1         3.8          1.5         0.3     setosa   setosa
86           6.0         3.4          4.5         1.6 versicolor   vervir
1            5.1         3.5          1.4         0.2     setosa   setosa
&gt; res &lt;- glm(Species~.,iris[index,], family=binomial) #linear regression
 警告メッセージ： 
 glm.fit: 数値的に 0 か 1 である確率が生じました  
&gt; res$coefficient
 (Intercept) Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
    6.587948    -7.617771   -13.925058    36.005598   -31.809827 
&gt; logLik(res) #log-scale likelyhood
&#39;log Lik.&#39; -1.785923e-10 (df=5)
&gt; predict(res,iris,type=&quot;response&quot;) # predictions from fitting functions
           1            2            3            4            5            6 
2.220446e-16 4.328295e-13 2.220446e-16 3.870520e-11 2.220446e-16 2.220446e-16 
           7            8            9           10           11           12 
2.220446e-16 2.220446e-16 7.856922e-11 9.478634e-11 2.220446e-16 4.737275e-12 
          13           14           15           16           17           18 
2.231699e-11 2.220446e-16 2.220446e-16 2.220446e-16 2.220446e-16 2.220446e-16 
          19           20           21           22           23           24 
2.220446e-16 2.220446e-16 1.795636e-12 2.220446e-16 2.220446e-16 2.220446e-16 
          25           26           27           28           29           30 
2.326153e-07 2.709491e-10 2.220446e-16 2.220446e-16 2.220446e-16 1.643915e-10 
          31           32           33           34           35           36 
3.088882e-10 2.220446e-16 2.220446e-16 2.220446e-16 3.937881e-12 2.220446e-16 
          37           38           39           40           41           42 
2.220446e-16 2.220446e-16 5.330791e-13 2.220446e-16 2.220446e-16 1.769196e-10 
          43           44           45           46           47           48 
2.220446e-16 2.220446e-16 1.556449e-13 2.220446e-16 2.220446e-16 2.626083e-13 
          49           50           51           52           53           54 
2.220446e-16 2.220446e-16 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 
          55           56           57           58           59           60 
1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 
          61           62           63           64           65           66 
1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 9.999926e-01 1.000000e+00 
          67           68           69           70           71           72 
1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 
          73           74           75           76           77           78 
1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 
          79           80           81           82           83           84 
1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 
          85           86           87           88           89           90 
1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 
          91           92           93           94           95           96 
1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 
          97           98           99          100          101          102 
1.000000e+00 1.000000e+00 9.974026e-01 1.000000e+00 1.000000e+00 1.000000e+00 
         103          104          105          106          107          108 
1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 
         109          110          111          112          113          114 
1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 
         115          116          117          118          119          120 
1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 
         121          122          123          124          125          126 
1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 
         127          128          129          130          131          132 
1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 
         133          134          135          136          137          138 
1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 
         139          140          141          142          143          144 
1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 
         145          146          147          148          149          150 
1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 
&gt; levels(data$Species2)
[1] &quot;setosa&quot; &quot;vervir&quot;
&gt; yhat &lt;- levels(data$Species2)[(predict(res,iris,type=&quot;response&quot;)&gt;0.5)+1]
&gt; yhat
  [1] &quot;setosa&quot; &quot;setosa&quot; &quot;setosa&quot; &quot;setosa&quot; &quot;setosa&quot; &quot;setosa&quot; &quot;setosa&quot; &quot;setosa&quot;
  [9] &quot;setosa&quot; &quot;setosa&quot; &quot;setosa&quot; &quot;setosa&quot; &quot;setosa&quot; &quot;setosa&quot; &quot;setosa&quot; &quot;setosa&quot;
 [17] &quot;setosa&quot; &quot;setosa&quot; &quot;setosa&quot; &quot;setosa&quot; &quot;setosa&quot; &quot;setosa&quot; &quot;setosa&quot; &quot;setosa&quot;
 [25] &quot;setosa&quot; &quot;setosa&quot; &quot;setosa&quot; &quot;setosa&quot; &quot;setosa&quot; &quot;setosa&quot; &quot;setosa&quot; &quot;setosa&quot;
 [33] &quot;setosa&quot; &quot;setosa&quot; &quot;setosa&quot; &quot;setosa&quot; &quot;setosa&quot; &quot;setosa&quot; &quot;setosa&quot; &quot;setosa&quot;
 [41] &quot;setosa&quot; &quot;setosa&quot; &quot;setosa&quot; &quot;setosa&quot; &quot;setosa&quot; &quot;setosa&quot; &quot;setosa&quot; &quot;setosa&quot;
 [49] &quot;setosa&quot; &quot;setosa&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot;
 [57] &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot;
 [65] &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot;
 [73] &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot;
 [81] &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot;
 [89] &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot;
 [97] &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot;
[105] &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot;
[113] &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot;
[121] &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot;
[129] &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot;
[137] &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot;
[145] &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot; &quot;vervir&quot;
&gt; mean(yhat[index] != data$Species2[index]) #training error
[1] 0
&gt; mean(yhat[-index] != data$Species2[-index]) #estimation error
[1] 0
&gt; table(true=data$Species2,prediction=yhat) #show result
        prediction
true     setosa vervir
  setosa     50      0
  vervir      0    100
&lt;/pre&gt;
</description><link>http://yaboolog.blogspot.com/2012/08/r-tips-first-contact-with-linear.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5116833147554663168.post-685606314693348241</guid><pubDate>Mon, 20 Aug 2012 15:20:00 +0000</pubDate><atom:updated>2012-08-21T00:20:59.168+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">R</category><category domain="http://www.blogger.com/atom/ns#">tips</category><title>R tips: inserting factor value into data frame</title><description>Here is sample R script for inserting factor value into data frame.

&lt;pre class=&quot;code&quot;&gt;
&gt; data &lt;- data.frame(iris)
&gt; cind &lt;- length(data) + 1
&gt; data[data$Species == &#39;setosa&#39;, cind] &lt;- c(&#39;setosa&#39;)
&gt; data[data$Species != &#39;setosa&#39;, cind] &lt;- c(&#39;vervir&#39;)
&gt; data[,cind] &lt;- as.factor(data[,cind])
&gt; names(data)
[1] &quot;Sepal.Length&quot; &quot;Sepal.Width&quot;  &quot;Petal.Length&quot; &quot;Petal.Width&quot;  &quot;Species&quot;     
[6] &quot;V6&quot;          
&gt; names(data)[6]
[1] &quot;V6&quot;
&gt; names(data)[6] &lt;- c(&#39;Species2&#39;)
&lt;/pre&gt;</description><link>http://yaboolog.blogspot.com/2012/08/r-tips-character-vs-factor.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5116833147554663168.post-7661506087018265986</guid><pubDate>Wed, 15 Aug 2012 01:44:00 +0000</pubDate><atom:updated>2012-08-22T00:20:54.471+09:00</atom:updated><title>geometry tips: generates identifier of standard grid cell which covers Japan region from latitude and longitude.</title><description>In geometric operation with python, sometimes we map point (which is latitude and longitude pair) to 
 corresponding standard grid cell. Here is sample code for mapping point to identifier of the cell.

&lt;pre class=&quot;brush:python&quot;&gt;
#!/usr/bin/env python
#coding: utf-8

def get_meshcode_from_latlon(lat, lon):
    lat, lon = lat * 3600, lon * 3600

    l_code = []

    l_code += str(int(lat/2400+100))[1:3]
    l_code += str(int(lon/3600+100))[1:3]
    t_lat, t_lon = int(lat%2400), int(lon%3600)

    l_code += str(t_lat/300)
    l_code += str(t_lon/450)
    t_lat, t_lon = t_lat % 300, t_lon % 450

    l_code += str(t_lat/30)
    l_code += str(t_lon/45)
    t_lat, t_lon = t_lat % 30, t_lon % 45

    if (t_lat &lt; 15):
        if (t_lon &lt; 23):
            l_code += &#39;1&#39;
        else:
            l_code += &#39;2&#39;
    else:
        if (t_lat &lt; 23):
            l_code += &#39;3&#39;
        else:
            l_code += &#39;4&#39;

    return (&#39;&#39;).join(l_code)

if __name__ == &quot;__main__&quot;:
    lat = 34.12345
    lon = 139.12345
    print get_meshcode_from_latlon(lat, lon)

    lat = 30.12345
    lon = 130.12345
    print get_meshcode_from_latlon(lat, lon)
&lt;/pre&gt;</description><link>http://yaboolog.blogspot.com/2012/08/geometry-tips-generates-identifier-of.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5116833147554663168.post-5457460934508765680</guid><pubDate>Thu, 26 Jul 2012 16:41:00 +0000</pubDate><atom:updated>2012-07-27T01:42:51.388+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">tips</category><title>python tips: usage of scipy.spatial.KDTree</title><description>kd-tree is a well-known algorithm for searching spatially distributed points.
Below code shows how to use kd-tree implemented in scipy.spatial.

&lt;pre class=&quot;brush:python&quot;&gt;
#!/usr/bin/env python                                                                                                                                                                                          
#coding:utf-8                                                                                                                                                                                                  
                                                                                                                                                                                                               
import numpy as np                                                                                                                                                                                             
import scipy.spatial as ss                                                                                                                                                                                     
from itertools import combinations
from itertools import permutations

def main():
    x, y = np.mgrid[0:100, 0:100]
    points = zip(x.ravel(), y.ravel())
    tree = ss.KDTree(points)
    # get index of each point which distance from (x=0, y=0) is under 1
    a = tree.query_ball_point([0, 0], 1)
    print [points[i] for i in a]

if __name__ == &quot;__main__&quot;:
    main()
&lt;/pre&gt;

output of above code is like:
&lt;pre class=&quot;code&quot;&gt;
~$ python above_code.py 
[(0, 0), (0, 1), (1, 0)]
&lt;/pre&gt;</description><link>http://yaboolog.blogspot.com/2012/07/python-tips-usage-of-scipyspatialkdtree.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5116833147554663168.post-986950842280083822</guid><pubDate>Tue, 24 Jul 2012 14:57:00 +0000</pubDate><atom:updated>2012-07-24T23:57:46.952+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">tips</category><title>python tips: usage of nkf.python2</title><description>NKF.python2 enables us to convert Japanese text encoding without specifying input text coding. This article explains how to install and use NKF.python2.

First, install NKF.python2 on your linux system:
&lt;pre class=&quot;code&quot;&gt;
# download nkf using git
$ git clone git://git.sourceforge.jp/gitroot/nkf/nkf.git
Cloning into &#39;nkf&#39;...
remote: Counting objects: 1378, done.
remote: Compressing objects: 100% (432/432), done.
remote: Total 1378 (delta 945), reused 1378 (delta 945)
Receiving objects: 100% (1378/1378), 503.08 KiB, done.
Resolving deltas: 100% (945/945), done.

$ cd nkf
$ sudo make install #if you want
$ cd NKF.python2
$ python setup.py build
$ python setup.py install 
&lt;/pre&gt;

Second, check NKF.python2 is installed correctly:
&lt;pre class=&quot;code&quot;&gt;
$ python
Python 2.7.3 (default, Apr 20 2012, 22:39:59) 
[GCC 4.6.3] on linux2
Type &quot;help&quot;, &quot;copyright&quot;, &quot;credits&quot; or &quot;license&quot; for more information.
&gt;&gt;&gt; import nkf
&gt;&gt;&gt; 
&lt;/pre&gt;

Finally, test NKF.python2 (path_to_file points japanese enceded text file):
&lt;pre class=&quot;code&quot;&gt;
with open(path_to_file, &#39;r&#39;) as F:
    data = [nkf(&quot;-w -Lu -d&quot;, row) for row in F]
&lt;/pre&gt;

Above code converts encoding of each row to utf-8 *without* specifying types of encoding of input file. This feature is very useful if you do not know which encode is used for input file or you need to read several input files which have different encoding each simultaneously.</description><link>http://yaboolog.blogspot.com/2012/07/python-tips-usage-of-nkfpython2.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5116833147554663168.post-356185946833925716</guid><pubDate>Mon, 23 Jul 2012 07:38:00 +0000</pubDate><atom:updated>2012-07-23T16:39:16.036+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">numpy</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">tips</category><title>python tips: calculate distance between N points and M points using numpy array</title><description>This is memory consuming way of calculate distance between N points and M points.
Let l_lat and l_lon are vectors for N points and v_lat and v_lon are for M points.
Using numpy array, distance calculation can be written as follows.

&lt;pre class=&quot;brush:python&quot;&gt;
#!/usr/bin/env python                                                                                                                                                                                        
#coding:utf-8                                                                                                                                                                                                

import numpy

M = 3
N = 5

# points1                                                                                                                                                                                                    
l_lat = numpy.arange(N)
l_lon = numpy.arange(N)
m_l_lat = numpy.tile(l_lat, (M, 1))
m_l_lon = numpy.tile(l_lon, (M, 1))

# points2                                                                                                                                                                                                    
v_lat = numpy.arange(M)
v_lon = numpy.arange(M)
m_v_lat_t = numpy.tile(v_lat, (N, 1)).T
m_v_lon_t = numpy.tile(v_lon, (N, 1)).T

distance = numpy.sqrt((m_v_lat_t - m_l_lat) ** 2 + (m_v_lon_t - m_l_lat) ** 2)
print distance
&lt;/pre&gt;

Although code generates lat and lon with numpy.arange(), in real case you should
fill each vector with appropriate lat and lon values.
Below is an output of previous code.

&lt;pre class=&quot;code&quot;&gt;
~$ python test_calc_distance.py 
[[ 0.          1.41421356  2.82842712  4.24264069  5.65685425]
 [ 1.41421356  0.          1.41421356  2.82842712  4.24264069]
 [ 2.82842712  1.41421356  0.          1.41421356  2.82842712]]
&lt;/pre&gt;</description><link>http://yaboolog.blogspot.com/2012/07/python-tips-calculate-distance-between.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5116833147554663168.post-1759740861659823909</guid><pubDate>Thu, 31 May 2012 12:56:00 +0000</pubDate><atom:updated>2012-06-02T16:10:17.027+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">scipy</category><category domain="http://www.blogger.com/atom/ns#">tips</category><title>python tips: effective sparse matrix operation ?</title><description>&lt;pre class=&quot;brush:python&quot;&gt;
#!/usr/bin/env python
#coding:utf-8
 
import numpy as np
import scipy as sp
from scipy.sparse import *
from numpy.random import *
from collections import OrderedDict
from datetime import datetime
 
# performance logger
import cProfile as profile
import pstats
 
from itertools import groupby
from operator import itemgetter

def gen_mat(M, N, R, format=&quot;csc&quot;):
    &quot;&quot;&quot;generating lil_matrix with random valuables&quot;&quot;&quot;
    mat = sp.sparse.rand(M, N, R, format=format, dtype=np.dtype(&#39;float64&#39;))
    mat = mat * 250
    print(&quot;{0}x{1} matrix (sparsity:{2}, # of data:{3}) is generated...&quot;.format(M, N, R, mat.nnz))
    return mat
 
def join_columns1(spamat, target_col):
    &quot;&quot;&quot;join columns using getcol() which requires object copying&quot;&quot;&quot;
    return reduce(lambda x,y: x+y, [spamat[:,index] for index in target_col])

def join_columns2(lilmat, target_col):
    &quot;&quot;&quot;join columns using lil_matrix&#39;s getrowview() which does not require object copying &quot;&quot;&quot;
    lilt = lilmat.T
    return reduce(lambda x,y: x+y, (lilt.getrowview(index) for index in target_col))

def join_columns3(coomat, N):
    &quot;&quot;&quot;join columns using coo indices, numpy&#39;s fancy index and pydict&quot;&quot;&quot;
    dic = {}

    def dic_update(key, val):
        if (dic.has_key(key)):
            dic[key] += val
        else:
            dic[key] = val

    mask = (coomat.col % 26 == 0)
    row = coomat.row[mask]
    data = coomat.data[mask]
    n = len(row)

    [dic_update(row[index], data[index]) for index in range(n)]
    return dic

def get_elapsed_time(func, listargs):
    &quot;&quot;&quot;wrapper for calculating consuming time of function&quot;&quot;&quot;
    s = datetime.now()
    ret = func(*listargs)
    e = datetime.now()
    print(&quot;{0}\t{1}&quot;.format((e-s), func.__name__))
    return ret
     
def bench(M, N, R, L):
    column_indexes = frozenset([i for i in range(0, N, 26)])

    print(&quot;# lil_matrix&quot;)
    lilmat = gen_mat(M, N, R, format=&quot;lil&quot;)
    # get_elapsed_time(join_columns1, (lilmat, column_indexes)) # very slow!
    get_elapsed_time(join_columns2, (lilmat, column_indexes)) # bit slow

    print(&quot;# csc_matrix&quot;)
    cscmat = lilmat.tocsc()
    get_elapsed_time(join_columns1, (cscmat, column_indexes)) # bit fast

    print(&quot;# csr_matrix&quot;)
    csrmat = cscmat.tocsr()
    get_elapsed_time(join_columns1, (cscmat, column_indexes)) # bit fast

    print(&quot;# coo_matrix&quot;)
    coomat = cscmat.tocoo()
    get_elapsed_time(join_columns1, (cscmat, column_indexes)) # bit fast
    get_elapsed_time(join_columns3, (coomat, N))              # very fast

def main():
    M = 1400000      # n_row
    N = 50000        # n_col
    R = 0.0005       # sparsity
    L = int(N * 0.2) # column_indexes
 
    print(&quot;-------------------------------------&quot;)
    print(&quot;M:{0}, N:{1}, R:{2}, L:{3}&quot;.format(M, N, R, L))
    print(&quot;-------------------------------------&quot;)
    bench(M, N, R, L)
     
if __name__ == &quot;__main__&quot;:
   main()
&lt;/pre&gt;


&lt;pre class=&quot;code&quot;&gt;
-------------------------------------
M:1400, N:5000, R:0.001, L:1000
-------------------------------------
1400x5000 matrix (sparsity:0.001, # of data:7000) is generated...
# lil_matrix
0:00:01.576205 join_columns1
0:00:00.044499 join_columns2
# csc_matrix
0:00:00.047233 join_columns1
# csr_matrix
0:00:00.047329 join_columns1
# coo_matrix
0:00:00.047277 join_columns1
0:00:00.000282 join_columns3

-------------------------------------
M:140000, N:50000, R:0.001, L:10000
-------------------------------------
140000x50000 matrix (sparsity:0.001, # of data:7000000) is generated...
# lil_matrix
0:00:03.003079 join_columns2
# csc_matrix
0:00:02.640237 join_columns1
# csr_matrix
0:00:02.640100 join_columns1
# coo_matrix
0:00:02.647828 join_columns1
0:00:00.300576 join_columns3
&lt;/pre&gt;</description><link>http://yaboolog.blogspot.com/2012/05/python-tips-tips-for-sparse-matrix.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5116833147554663168.post-6534214956944000941</guid><pubDate>Wed, 30 May 2012 16:44:00 +0000</pubDate><atom:updated>2012-08-22T00:21:06.372+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">math</category><category domain="http://www.blogger.com/atom/ns#">numpy</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">statistics</category><title>statistics tips: my covariance matrix implementation on python</title><description>&lt;pre class=&quot;brush:python&quot;&gt;
#!/usr/bin/env python                                                                                                                
#coding: utf-8                                                                                                                       
                                                                                                                                     
import numpy as np                                                                                                                   
from numpy.random import *                                                                                                           
                                                                                                                                     
def get_covariance_matrix(A):                                                                                                        
    N, M = A.shape                                                                                                                   
    ret = np.reshape(np.zeros(N*M), (N,M))                                                                                           
                                                                                                                                     
    for n in range(0, N):                                                                                                            
        for m in range(0, M):                                                                                                        
            ret[n][m] = calc_covariance(A, n, m)                                                                                     
                                                                                                                                     
    return ret                                                                                                                       
                                                                                                                                     
def calc_covariance(A, n, m):                                                                                                        
    nominator = np.sum((A[n] - np.average(A[n])) * (A[m] - np.average(A[m])))                                                        
    denominator = A.shape[0] - 1                                                                                                     
    return nominator/denominator                                                                                                     
                                                                                                                                     
def test():                                                                                                                          
    D = 4                                                                                                                            
    A = np.reshape([randint(100) for i in range(D**2)], (D, D))                                                                      
                                                                                                                                     
    print(&quot;# numpy.cov() output:&quot;)                                                                                                   
    print(np.cov(A))                                                                                                                 
                                                                                                                                     
    print(&quot;# my covariance matrix:&quot;)                                                                                                 
    print(get_covariance_matrix(A))                                                                                                  
                                                                                                                                     
    print(&quot;# my precision matrix:&quot;)                                                                                                  
    print(get_covariance_matrix(A) ** -1)  
                                                                                                                                     
if __name__ == &quot;__main__&quot;:                                                                                                           
    test()                             
&lt;/pre&gt;

&lt;pre class=&quot;code&quot;&gt;
yaboo@overtones:~$ python kyoubunsan.py
# numpy.cov() output:
[[  226.91666667   -26.83333333   -39.33333333   499.75      ]
 [  -26.83333333   328.33333333   629.          -257.83333333]
 [  -39.33333333   629.          1432.66666667  -882.        ]
 [  499.75        -257.83333333  -882.          1976.25      ]]                                                                      
# my covariance matrix:
[[  226.91666667   -26.83333333   -39.33333333   499.75      ]
 [  -26.83333333   328.33333333   629.          -257.83333333]
 [  -39.33333333   629.          1432.66666667  -882.        ]
 [  499.75        -257.83333333  -882.          1976.25      ]]
# my precision matrix:                                                                                                               
[[ 0.0044069  -0.03726708 -0.02542373  0.002001  ]
 [-0.03726708  0.00304569  0.00158983 -0.00387847]
 [-0.02542373  0.00158983  0.000698   -0.00113379]
 [ 0.002001   -0.00387847 -0.00113379  0.00050601]]
&lt;/pre&gt;</description><link>http://yaboolog.blogspot.com/2012/05/statistics-tips-my-covariance-matrix.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>5</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5116833147554663168.post-3977273630299052440</guid><pubDate>Tue, 22 May 2012 11:33:00 +0000</pubDate><atom:updated>2012-08-22T00:21:49.386+09:00</atom:updated><title>algorithm tips: Sparse Matrix Multiplication Package (SMMP)</title><description>UNDERWRITING...

Matrix operation is very useful for improving computing speed of our codes.
For this operation, python has very popular packages such as numpy and scipy.

In this article, I show sample code to calculate dot product using sparse matrix and vector with numpy and scipy.

&lt;br /&gt;
&lt;pre class=&quot;brush:python&quot;&gt;import scipy
import numpy
from scipy.sparse import *
from numpy.random import *

vec = create_vec(N)
mat = create_mat(N,M)
ans = mat.dot(vec)
&lt;/pre&gt;
In above code, mat.dot(vec) calculates dot product. This method implements sparse matrix multiplication pacakage called SMMP which computational complexity is
: &lt;b&gt;O(n_row*K^2 + max(n_row,n_col))&lt;/b&gt;&amp;nbsp; where n_row is # of matrix rows, n_col is # of matrix columns, K is the maximum index for nonzero value in a row of A and column of B.</description><link>http://yaboolog.blogspot.com/2012/05/algorithm-tips-sparse-matrix.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5116833147554663168.post-2816036817328707120</guid><pubDate>Tue, 22 May 2012 10:28:00 +0000</pubDate><atom:updated>2012-05-23T00:01:57.517+09:00</atom:updated><title>python tips: unpickling object is very slow because of garbage collection</title><description>In python, unpickling gigantic object from file is very much time consuming because of python&#39;s garbage collection.
Python&#39;s garbage collection starts when cPickle loads gigantic object contains a lot of container object and number 
of container objects in the object exceed threshold of collect() method, python&#39;s garbage collection starts. 
&lt;br /&gt;
Now, assume you have 2GB pickle object which contains huge dictionary object in your file system and your python code load it. 
I compare loading time with/without garbage collection in python 2.7.2 on Ubuntu12.04.
&lt;br /&gt;
&lt;pre class=&quot;brush:python&quot;&gt;#!/usr/local/bin/python                                                         
#coding: utf-8                                                                  
                                                                                
import cPickle as pickle                                                        
from datetime import datetime                                                   
import gc
                                                                                
F = file(&#39;gigantic_data.pickle&#39;, &#39;rb&#39;)                                          
s = datetime.now()                                                              
myobj = pickle.load(F)                                                          
e = datetime.now()                                                              
F.close()
                                                                                
print(&quot;load_pickle takes is {0}&quot;.(e-s))

# disabling cyclic garbage collection
gc.disable()

F = file(&#39;gigantic_data.pickle&#39;, &#39;rb&#39;)                                          
s = datetime.now()                                                              
myobj = pickle.load(F)                                                          
e = datetime.now()                                                              
F.close()

print(&quot;load_pickle takes is {0}&quot;.(e-s))
&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;gt; /usr/local/bin/python above_script.py
load_pickle takes 0:15:16.530199
load_pickle takes 0:00:14.195409
&lt;/pre&gt;</description><link>http://yaboolog.blogspot.com/2012/05/python-tips-garbage-collection.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5116833147554663168.post-5368520848931698781</guid><pubDate>Fri, 18 May 2012 11:23:00 +0000</pubDate><atom:updated>2012-05-18T20:50:24.454+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">tips</category><title>python tips: multiprocessing and shared memory</title><description>With multiprocessing package, it is extremely easy to make programs which share tasks with multiple workers(processes).
This post is memo for how to share object which initialized by parent process with child process.&lt;br /&gt;
&lt;br /&gt;
General way for sharing object between parent process and child processes is using Queue or Pipe. However, it&#39;s the easiest way for me to use global valuable. Below code is just a example of how to share object between processes using global valuable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:python&quot;&gt;#!/usr/bin/env python
# coding:utf-8

import os
import multiprocessing

x = 10
y = 20
z = []
a = None
b = [1,2,3]
c = None

c = 3

def main():
    a = 1
    print(&quot;###############################&quot;)
    print(&quot;x:: {0}&quot;.format(print_value(x)))
    print(&quot;y:: {0}&quot;.format(print_value(y)))
    print(&quot;z:: {0}&quot;.format(print_value(z)))
    print(&quot;a:: {0}&quot;.format(print_value(a)))
    print(&quot;b:: {0}&quot;.format(print_value(b)))
    print(&quot;c:: {0}&quot;.format(print_value(c)))
    print(&quot;###############################&quot;)
    pool = multiprocessing.Pool(3)
    pool.map(func, [1,2,3], chunksize=1)
    

def print_value(val):
    return &quot;{0}, id:{1}&quot;.format(val, id(val))
    
def func(val):
    print(&quot;pid: {0}, process_number: {1}&quot;.format(os.getpid(), val))
    print(&quot;x:: {0}&quot;.format(print_value(x)))
    print(&quot;y:: {0}&quot;.format(print_value(y)))
    print(&quot;z:: {0}&quot;.format(print_value(z)))    
    print(&quot;a:: {0}&quot;.format(print_value(a)))
    print(&quot;b:: {0}&quot;.format(print_value(b)))
    print(&quot;c:: {0}&quot;.format(print_value(c)))    

if __name__ == &quot;__main__&quot;:
    main()

&lt;/pre&gt;

Here is output from above code.
&#39;id&#39; means memory-address pointed by valuable. 

&lt;pre class=&quot;code&quot;&gt;yaboo@ubuntu:~$ python shared_memory.py 
###############################
x:: 10, id:24606432
y:: 20, id:24606192
z:: [], id:139931380327848
a:: 1, id:24606648
b:: [1, 2, 3], id:139931380327920
c:: 4, id:24606576
###############################
pid: 3747, process_number: 1
x:: 10, id:24606432
pid: 3748, process_number: 2
y:: 20, id:24606192
x:: 10, id:24606432
z:: [], id:139931380327848
pid: 3749, process_number: 3
y:: 20, id:24606192
a:: None, id:9071744
x:: 10, id:24606432
z:: [], id:139931380327848
y:: 20, id:24606192
b:: [1, 2, 3], id:139931380327920
a:: None, id:9071744
c:: 3, id:24606600
z:: [], id:139931380327848
a:: None, id:9071744
b:: [1, 2, 3], id:139931380327920
b:: [1, 2, 3], id:139931380327920
c:: 3, id:24606600
c:: 3, id:24606600
yaboo@ubuntu:~$ 
&lt;/pre&gt;</description><link>http://yaboolog.blogspot.com/2012/05/python-tips-multiprocessing-and-shared.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5116833147554663168.post-170435112940660014</guid><pubDate>Tue, 01 May 2012 01:54:00 +0000</pubDate><atom:updated>2012-05-01T10:54:43.388+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">tips</category><category domain="http://www.blogger.com/atom/ns#">ubuntu</category><title>tips: port-forwarding with ssh</title><description>These are memos for usage of port forwarding with ssh command.

First of all, you need to enable ssh port forwarding with below command.
&lt;pre class=&quot;code&quot;&gt;
ssh -f -N -L [#port]:[dest_hostname]:22 [user_name_for_proxy_host]@[proxy_hostname]
&lt;/pre&gt;

If you want to transfer some files use below commands.
&lt;pre class=&quot;code&quot;&gt;
scp -P [#port] [user_name_for_dest_host]@localhost:[filename] ./[filename]
scp -P [#port]  ./[filename] [user_name_for_dest_host]@localhost:[filename]
&lt;/pre&gt;

If you want to login with ssh, use below commands.
&lt;pre class=&quot;code&quot;&gt;
ssh -p [#port] [user_name_for_dest_host]@localhost
&lt;/pre&gt;</description><link>http://yaboolog.blogspot.com/2012/05/tips-port-forwarding-with-ssh.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5116833147554663168.post-2841183189160126344</guid><pubDate>Wed, 25 Jan 2012 14:31:00 +0000</pubDate><atom:updated>2012-01-25T23:32:12.479+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">numpy</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">tips</category><title>python tips: array computation with numpy II</title><description>As previous post shows, for-loop calculation in array computations needs more processing time than vectorized calculation.
There are some techniques for fasten calculation over arrays. Sample code shown below is one of them.

&lt;pre class=&quot;code&quot;&gt;
&gt;&gt;&gt; from numpy import *
&gt;&gt;&gt; 
&gt;&gt;&gt; A = array([[1,2,3], [4,5,6], [7,8,9]])
&gt;&gt;&gt; 
&gt;&gt;&gt; def somefunc(x):
...     x1 = x
...     x2 = x - 3
...     return where(x &lt; 7, x1, x2)
... 
&gt;&gt;&gt; somefunc(A)
array([[1, 2, 3],
       [4, 5, 6],
       [4, 5, 6]])
&gt;&gt;&gt; 
&lt;/pre&gt;</description><link>http://yaboolog.blogspot.com/2012/01/python-tips-array-computation.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5116833147554663168.post-956857265691326302</guid><pubDate>Wed, 25 Jan 2012 13:55:00 +0000</pubDate><atom:updated>2012-01-25T22:56:58.418+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">numpy</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">tips</category><title>python tips: array computation with numpy</title><description>I compared performance of array computations.
Listed below are results and codes of some experiments which introduced in the book named &#39;Python Scripting for Computational Science (3rd edition)&#39;.

&lt;pre class=&quot;code&quot;&gt;
&gt;&gt;&gt; from numpy import *
&gt;&gt;&gt; import time
&gt;&gt;&gt; 
&gt;&gt;&gt; a = linspace(0, 1, 1E+07)
&gt;&gt;&gt; t0 = time.clock()
&gt;&gt;&gt; b = 3*a - 1
&gt;&gt;&gt; 
&gt;&gt;&gt; t1 = time.clock()
&gt;&gt;&gt; 
&gt;&gt;&gt; for i in xrange(a.size):
...     b[i] = 3*a[i] -1
... 
&gt;&gt;&gt; t2 = time.clock()
&gt;&gt;&gt; 
&gt;&gt;&gt; print &#39;3*a-1: %g sec, loop: %g sec&#39; %(t1-t0, t2-t1)
3*a-1: 0.05 sec, loop: 15.46 sec
&lt;/pre&gt;</description><link>http://yaboolog.blogspot.com/2012/01/python-tips-array-computation-with.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total><georss:featurename>日本, 神奈川県横浜市栄区長尾台町１６９</georss:featurename><georss:point>35.3606011 139.5282883</georss:point><georss:box>35.359791599999994 139.5270543 35.3614106 139.52952230000002</georss:box></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5116833147554663168.post-9024333042693635433</guid><pubDate>Tue, 24 Jan 2012 17:20:00 +0000</pubDate><atom:updated>2012-01-25T02:24:28.107+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">spatial</category><category domain="http://www.blogger.com/atom/ns#">tips</category><title>python tips: create shapefile with python</title><description>&lt;br /&gt;
Long time has been passed since last post.&lt;br /&gt;
&lt;br /&gt;
Here, I want to show the way to create Shapefile, which is standard data format for geometry data, using python.&lt;br /&gt;
&lt;br /&gt;
Among several python tools such as geoscript, pyshp and pyproj which support operations of Shapefiles, I introduce how to use pyshp.&lt;br /&gt;
&lt;br /&gt;
Pyshp is open source, provides shapefile library written all in pure python and distributed under MIT lisence.&lt;br /&gt;
&lt;br /&gt;
You can download it as shapfile.py from &amp;nbsp;&lt;a href=&quot;http://code.google.com/p/pyshp/&quot;&gt;the official web site&lt;/a&gt;&amp;nbsp;or just install via easy_install command:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;code&quot;&gt;# easy_install pyshp
&lt;/pre&gt;
&lt;br /&gt;
However most of available operations of pyshp are introduced in the web site, I write some code using pyshp here just for my memo.&lt;br /&gt;
&lt;br /&gt;
If you want to know more, I recommend looking over the web site and make some sample code according to tutorials.

&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:python&quot;&gt;#!/usr/bin/env python

import shapefile

def create_square(x=0., y=0., i=1.):
    return [[[x, y], [x+i, y], [x+i, y+i], [x, y+i], [x, y]]]

def define_geometry(w):
    # 1st record&#39;s geometry
    w.poly(parts=create_square(0, 0, 1))
    # 2nd record&#39;s geometry
    w.poly(parts=create_square(1, 1, 1))
    # 3rd record&#39;s geometry
    w.poly(parts=create_square(0.5, 0.5, 1))
    return w

def define_fields(w):
    w.field(&#39;FLD_1st&#39;)
    w.field(&#39;FLD_2nd&#39;, &#39;N&#39;, &#39;10&#39;)
    return w

def fill_attributes(w):
    w.record(&#39;hoge&#39;, &#39;hogehogeho&#39;)
    w.record(&#39;mage&#39;, &#39;mage1&#39;)
    w.record(&#39;moge&#39;, &#39;mogemoge&#39;)
    return w

def create_proj_file(filename):
    # this function creates .proj file which defines projection.
    prj = open(&quot;%s.prj&quot; % filename, &quot;w&quot;)
    epsg = &#39;GEOGCS[&quot;WGS 84&quot;,DATUM[&quot;WGS_1984&quot;,SPHEROID[&quot;WGS 84&quot;,6378137,298.257223563]],PRIMEM[&quot;Greenwich&quot;,0],UNIT[&quot;degree&quot;,0.0174532925199433]]&#39;
    prj.write(epsg)
    prj.close()

def main():
    filename = &#39;test&#39;
    w = shapefile.Writer(shapefile.POLYGON)
    w = define_geometry(w)
    w = define_fields(w)
    w = fill_attributes(w)
    w.save(&#39;./&#39; + filename)
    create_proj_file(filename)

if __name__ == &quot;__main__&quot;:
    main()                                                                                             
&lt;/pre&gt;</description><link>http://yaboolog.blogspot.com/2012/01/long-time-has-been-passed-since-last.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5116833147554663168.post-8173018381045047529</guid><pubDate>Sun, 11 Sep 2011 04:51:00 +0000</pubDate><atom:updated>2012-01-25T02:25:23.141+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">latex</category><category domain="http://www.blogger.com/atom/ns#">sphinx</category><category domain="http://www.blogger.com/atom/ns#">tips</category><title>sphinx tips: add subsubsection into pdf compiled by make all-pdf-ja</title><description>When sphinx compiles latex files, it chooses cls file which written in conf.py.

&lt;pre class=&quot;code&quot;&gt;
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title, author, documentclass [howto/manual]).
latex_documents =
   (&#39;index&#39;, &#39;sample_document.tex&#39;, u&#39;This is sample&#39;,
     u&#39;Author Name&#39;, &#39;manual&#39;),
]
&lt;/pre&gt;

If &#39;manual&#39; is specified in conf.py, sphinx read sphinxmanual.cls when it compiles latex file.
So, if you want to enable subsubsection, you should edit sphinxmanual.cls or other specified cls file.
In my environment, original sphinxmanual.cls is located in /usr/local/lib/python2.6/dist-packages/Sphinx-1.0.7-py2.6.egg/sphinx/texinputs/sphinxmanual.cls. And you can enable subsubsection with editing this cls file like below.

&lt;pre class=&quot;code&quot;&gt;
before:
\setcounter{secnumdepth}{2}

after:
\setcounter{secnumdepth}{3}
&lt;/pre&gt;

enjoy.</description><link>http://yaboolog.blogspot.com/2011/09/sphinx-tips-add-subsubsection-into-pdf.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5116833147554663168.post-2370682541514729251</guid><pubDate>Fri, 02 Sep 2011 08:21:00 +0000</pubDate><atom:updated>2011-09-03T00:25:26.100+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">latex</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">sphinx</category><title>sphinx tips: generate center-aligned table in pdf document</title><description>When we type &#39;make latex&#39; command in sphinx root directory, sphinx generates set of latex files from rst files based on &#39;/usr/share/pyshared/sphinx/writers/latex.py&#39; which defines rules for generating latex files. If you do not like default behavior of latex generator, you can change it by modifying the code.&lt;br /&gt;
&lt;br /&gt;
Sometimes I was annoyed by left-aligned table which is automatically created by using csv-table directive when creating a&amp;nbsp;pdf document. So, I changed some part of latex.py. Below is difference between original latex.py and bit-of modified latex.py which can generate center-aligned table by using csv-table.&lt;br /&gt;
&lt;br /&gt;
( ... just added &#39;\begin{center}&#39; and &#39;\end{center}&#39; command )&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;code&quot;&gt;617c617
&amp;lt;             self.body.append(&#39;\n\\begin{threeparttable}\n&#39;
---
&amp;gt;             self.body.append(&#39;\n\\begin{center}\n\\begin{threeparttable}\n&#39;
664c664
&amp;lt;             self.body.append(&#39;\\end{threeparttable}\n\n&#39;)
---
&amp;gt;             self.body.append(&#39;\\end{threeparttable}\n\\end{center}\n\n&#39;)
&lt;/pre&gt;
</description><link>http://yaboolog.blogspot.com/2011/09/test.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5116833147554663168.post-5099557525948449777</guid><pubDate>Sun, 21 Aug 2011 03:01:00 +0000</pubDate><atom:updated>2011-08-21T12:02:21.129+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">postgres</category><category domain="http://www.blogger.com/atom/ns#">tips</category><title>postgres tips: enable plpgsql for implementing stored procedure</title><description>This entry is just a memo for me 8^)&lt;br /&gt;
If we want to implement stored procedure to any database, it is necessary to type below command.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;code&quot;&gt;createlang -d dbname plpgsql
&lt;/pre&gt;</description><link>http://yaboolog.blogspot.com/2011/08/postgres-tips-enable-plpgsql-for.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5116833147554663168.post-7377508593120521605</guid><pubDate>Tue, 16 Aug 2011 10:25:00 +0000</pubDate><atom:updated>2011-08-16T19:41:13.539+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">machine learning</category><category domain="http://www.blogger.com/atom/ns#">python</category><title>python tips: draw beta distribution with matplotlib</title><description>&lt;img align=&quot;middle&quot; border=&quot;0&quot; src=&quot;http://chart.googleapis.com/chart?cht=tx&amp;amp;chl=%20Beta%28%5Cmu%20%7C%20a%2C%20b%29%20%3D%20%5Cfrac%7B%5CGamma%28a%2Bb%29%7D%7B%5CGamma%28a%29%5CGamma%28b%29%7D%5Cmu%5E%7Ba-1%7D%281-%5Cmu%29%5E%7Bb-1%7D%20&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:python&quot;&gt;import numpy as np
import numpy as np
import pylab as pl
import scipy.special as ss

def beta(a, b, mew):
    e1 = ss.gamma(a + b)
    e2 = ss.gamma(a)
    e3 = ss.gamma(b)
    e4 = mew ** (a - 1)
    e5 = (1 - mew) ** (b - 1)
    return (e1/(e2*e3)) * e4 * e5

def plot_beta(a, b):
    Ly = []
    Lx = []
    mews = np.mgrid[0:1:100j]
    for mew in mews:
        Lx.append(mew)
        Ly.append(beta(a, b, mew))
    pl.plot(Lx, Ly, label=&quot;a=%f, b=%f&quot; %(a,b))

def main():
    plot_beta(0.1, 0.1)
    plot_beta(1, 1)
    plot_beta(2, 3)
    plot_beta(8, 4)
    pl.xlim(0.0, 1.0)
    pl.ylim(0.0, 3.0)
    pl.legend()
    pl.show()

if __name__ == &quot;__main__&quot;:
    main()
&lt;/pre&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcmXWSjd5sL8JpSZhspkeBtKHHN75s9NJwYQ7dY04WACukBS_WSM9zNJPGPgHJViggJjcyakG3Tcjabl7GWKhHEF7-hOfFy_KiXVBYTUf2p1xccpJ2z_DpCyYtJsHzKuzrkI_DAMFRNSc/s1600/test.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;301&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcmXWSjd5sL8JpSZhspkeBtKHHN75s9NJwYQ7dY04WACukBS_WSM9zNJPGPgHJViggJjcyakG3Tcjabl7GWKhHEF7-hOfFy_KiXVBYTUf2p1xccpJ2z_DpCyYtJsHzKuzrkI_DAMFRNSc/s400/test.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;</description><link>http://yaboolog.blogspot.com/2011/08/python-tips-draw-beta-distribution-with.html</link><author>noreply@blogger.com (Anonymous)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcmXWSjd5sL8JpSZhspkeBtKHHN75s9NJwYQ7dY04WACukBS_WSM9zNJPGPgHJViggJjcyakG3Tcjabl7GWKhHEF7-hOfFy_KiXVBYTUf2p1xccpJ2z_DpCyYtJsHzKuzrkI_DAMFRNSc/s72-c/test.png" height="72" width="72"/><thr:total>4</thr:total></item></channel></rss>