ラベル Jupyter の投稿を表示しています。 すべての投稿を表示
ラベル Jupyter の投稿を表示しています。 すべての投稿を表示

2023年5月23日火曜日

JuliaのPyCallとSymPy

Maxima-Jupyterからの続き

Mathematicaの代替となるフリーの数式処理言語として,Maximaが候補にはなったが,やはり何となく使いにくい。Jupyter上のmaximaで終端記号のコロンを忘れるだけで毎回大量のエラーメッセージが出るのにも閉口する。

とすれば,Juliaで数式処理ということになる。標準的な手法としては,Pythonの数式処理モジュールであるSymPyを使えばよいが,先日からPython 呼び出しのPyCallとSymPyがエラーになっている。実害がなかったので放置していたけれど,再度見直してみた。

これまでは,googleで問題解決を図っていたが,必要な情報にたどり着くまではいくつものサイトを渡り歩く必要があった。そこに登場したChatGPTはかなりよい仕事をしてくれるので助かる。問題は,PyCallにあったので,エラーコードを与えて尋ねてみた。
Q:User
Juliaで,PyCallとSymPy がうまく動きません。
例えば,
(中略)
Error building `PyCall`: 
どうしたらいいでしょう。

A:ChatGPT
問題は、おそらく libpython が見つからないために発生しているようです。以下の手順で問題を解決してみてください。

Julia REPLを終了して、再度起動してください。

次に、次のコマンドを実行して、PyCallを再構築し、環境変数を設定してください。
julia
Copy code
ENV["PYTHON"] = "/Users/koshi/.julia/conda/3/bin/python"
import Pkg
Pkg.build("PyCall")

もしまだ問題が解決しない場合、次の手順を試してください。
(中略)
もしまだ問題が解決しない場合、PYCALL_DEBUG_BUILD 環境変数を設定して、デバッグ情報を取得してみてください。
(中略)

これで、エラーが発生している理由に関する追加情報が得られるはずです。その情報を使用して、問題を特定し、解決策を見つけることができます。

SymPyの問題が解決しない場合、まずPyCallが正常に機能していることを確認してください。その後、SymPyの再構築を試みてください。

これらの手順のいずれかが、PyCallとSymPyの問題を解決するはずです。それでも問題が解決しない場合は、エラーメッセージとともに質問してください。

で最初のPYTHON環境変数を /opt/homebrew/bin/python3.11 に置き換えて(だったかな?) なんとかクリアすることができた。

2023年5月22日月曜日

Maxima-Jupyter

一月ほど前にyujitachさんが,MathematicaでHopfバンドルの図示をしていて,MathematicaからオープンソースのJupyter Notebook版にできないかと呼びかけていた。

オープンソースというかフリーの数式処理アプリというとMaximaになる。JupyterでMaximaが動くのかと調べてみると,弘前大学の葛西真寿さんによる,Maxima-Jupyterによる数式処理というサイトがあった。

早速,インストールを試みるが途中で挫折。いろいろ調べて,なんとか動くところまできたが,どうも動作がおかしい。原因は,maxima側ではなくて,jupyter側にあった。jupyter labが4回ほどの入力でおかしくなってしまう。GPT-4に尋ねてみると,ブラウザを変えてみたらとのアドバイス。SafariからChromeに変えるとどうにか動いた。なお,Jupyter notebookならSafariでもうまく動作するのである。

Maxima-Jupyterのインストールに関しては,さきほどのページにあるmacOS に Maxima-Jupyter をインストールするによった。maximaを実行した段階でzmq.hが見当たらないとのエラーになり,これを解消するために,Maximaで綴る数学の旅の2022-01-20の記事が役に立った。 
% brew install sbcl gpg zmq gnuplot
% brew edit maxima
% brew install maxima -s

[quicklispをインストール(sbcl起動時の自動読み込みまで設定)]
quicklisp.lispをダウンロード。
% curl -O https://beta.quicklisp.org/quicklisp.lisp
% curl -O https://beta.quicklisp.org/quicklisp.lisp.asc
% gpg --verify quicklisp.lisp.asc quicklisp.lisp

% sbcl
* (load "quicklisp.lisp")
* (quicklisp-quickstart:install)
* (ql:system-apropos "vecto")
* (ql:quickload "vecto")
* (ql:add-to-init-file)
* (quit)

[maxima-jupyterをインストール]
そのgithubレポジトリをクローンし展開したディレクトリに移動
% cd ~/Library
% git clone https://github.com/robert-dodier/maxima-jupyter.git

% cd maxima-jupyter
% export C_INCLUDE_PATH="/opt/homebrew/include/"
% maxima
(%i1) load("load-maxima-jupyter.lisp");
(%i2) jupyter_install();
(%i3) quit();

[jupyterを起動]
% jupyter lab

これで,Maxima-Jupyterは動いたが,Jupyter labのところで引っかかったわけだ。

2021年12月1日水曜日

Julia 1.7.0

11月30日にJulia 1.7.0がリリースされた。普段は,しばらく様子を見てからインストールするのだけれど,macOS Apple Siliconにネイティブ対応したようなので,早速試してみる。

メジャーバージョンアップの際には,いつも困ってしまうのだが,今回もすんなりとはいかなかった。とりあえず手順を書いてみるが,何度もやり直しているので,ヒステリシスがあるかもしれない。

 (1) julia 1.7.0 packege ダウンロード&インストール
 (2) .zshrcのパス変更 % cat .zshrc
export PATH=/Applications/Julia-1.7.app/Contents/Resources/julia/bin
 (3) ln -s /Applications/Julia-1.7.app/Contents/Resources/julia/bin/julia julia
 (4) julia -> using Pkg -> Pkg.add(“IJulia”) -> Pkg.build(“IJulia”)
 (5) brew install jupyter
 (6) jupyter kernetspec list -> jupyter kernetspec uninstall julia1.6.0
 (7) jupyter notebook -> OK
 (8) pip3 uninstall jupyterlab -> pip3 install jupyterlab
 (9) jupyter lab build -> OK


とりあえず,jupyter notebook も jupyter lab も動いたが,パッケージの整合性などからか,これまでのコードがすべてそのまま動くというわけにはいかなかった。ボチボチ様子見よう。

P. S. とりあえず,Plots 周りの不整合はなんとかなった。たいした処理をしていなくても,ときどきカーネルが死んでしまうのが問題だ。

2021年5月22日土曜日

ラベル付き散布図

Rをjupyterでからの続き 

ラベル付き散布図と格闘している。

(1) Excel が一番簡単そうで,調べるとすぐに事例が見つかった。しかし,これはWindows版の場合であり,残念ながらMac版(Microsoft Office 2019 Home & Student)にはその機能がなかった。

(2) Rは統計グラフがお手の物のはずなので多分あるだろう。そこでRをjupyter上に持ってきた。これも簡単に事例が見つかった。見本通りにやってみると,

#今回使うライブラリ
library(maptools)
#データの準備
CC <- c("CAN","DNK","FIN","FRA","DEU","ITA","JPN","KOR","NLD","POL","SWE","GBR","USA")
PAR <- c(13.7,15.7,16.6,16.6,20.2,20.1,22.1,10.3,14.9,13.5,17.6,15.6,12.8)
SE <- c(3.8,7.4,8.6,11.5,8.5,12.2,9.3,1.9,5.4,8.9,9.4,6.2,5.5)
sample <- data.frame(PAR, SE)
rownames(sample) <- CC
以下のerrorが出て(これは例題に対しては実害はなかったが)日本語も化けてしまう。

Checking rgeos availability: FALSE
Note: when rgeos is not available, polygon geometry computations in maptools
depend on gpclib, which has a restricted licence. It is disabled by default;
to enable gpclib, type gpclibPermit()

ただ,日本語文字化けを避けるには(エラーは残るものの),次のようにすればよかった。
par(family= "HiraKakuProN-W3")
plot(sample$PAR, sample$SE, xlab="65歳以上人口比率(%)", ylab="対GDP比高齢者向け社会支出(%)")
pointLabel(x=sample$PAR, y=sample$SE, labels=rownames(sample))
図 R on jupyter のラベル付き散布図の例

(3) juliaではラベル付き散布図の例が探せなかったが,labelled scatter をキーワードとするといとも簡単に解が見つかってしまった。こちらは日本語もすんなり通ってくれる。

2021年5月21日金曜日

Rをjupyterで

 ラベル付き散布図を描きたいのだ。なかなかうまく探しきれず,Rが一番手っ取り早そうなので,Rをjupyterから使えるようにすることを試みた。

とりあえず,brewでRをインストールすると最新のarm版だった。

brew install R
R —version
R version 4.1.0 (2021-05-18)
次にコマンドラインでRを起動し,R環境の中で3つのコマンドを実行する[1]。
>install.package(“devtools”) … CRAN ダウンロードは Japan/Tokyo 47 から

1つ目のコマンド(上記)で次のエラーが出てしまった。

>1: install.packages("devtools") で:
> installation of package ‘gert’ had non-zero exit status
>2: install.packages("devtools") で:
> installation of package ‘usethis’ had non-zero exit status
>3: install.packages("devtools") で:
> installation of package ‘devtools’ had non-zero exit status
>> Configuration failed to find libgit2 library. Try installing:
> * brew: libgit2 (MacOS)

そこで,brewでlibgit2をインストールしてから再挑戦する。
brew install libgit2
R
> install.packages("devtools")
> devtools::install_github("IRkernel/IRkernel")
> IRkernel::installspec()
jupyter lab … これで OK!
これでうまくいった。

写真:jupyterlabの起動画面

2019年6月3日月曜日

ウルフラムとペレス

辰己さんが,Jupyterの発音は,ジュパイターではなく,ジュピターじゃないのとFacebookでつぶやいていた。これに対して中野さんは,普通はジュピターでしょと。あれ・・・,pythonオリジンだからジュパイターだと思い込んでいた私はどうしよう・・・

ということでさっそくYouTubeに尋ねてみると,いきなりIPythonJupyterの開発者のフェルナンド・ペレス2017年のJupyterConの講演にぶちあたった。はい,正解はジュピターでした。Project Jupyterにもちゃんと Jupyter=/ˈdʒuːpɪtər/ と書いてある。

ところで,そのペレスは,Pythonの対話型環境であるIPythonを,Wolfram Notebookにインスパイアーされて開発したとある。つまり,ノートブック型インターフェースの始まりは,スティーブン・ウルフラムによるMathematicaであった。その後,IPythonからスピンオフしたプロジェクトがJupyterを創り出す。Jupyterの意義は単に特定の言語の対話型環境をつくることではなく,「Project Jupyterは,オープンソースソフトウェア,オープンスタンダード,そして何十ものプログラミング言語にわたるインタラクティブコンピューティングのためのサービスを開発するために存在します」であった。Jupyter+Julia+α連合軍をみて,Wolfram言語も開放政策に舵をきったのではないか。

スティーブン・ウルフラム(1959-)はイギリス生まれで,17歳でオックスフォードに入学し,ゲルマンに誘われて18歳でカリフォルニア工科大学に入り,1979年に20歳でPh. D.をとる。専門分野は素粒子物理学の理論であったが,1981年にはMathematicaの前身のSMP(Symbolic Manupilation Program)を商業化し,複雑系の物理学の研究(Celuller Automata)を進めた。

一方,フェルナンド・ペレスはコロンビア生まれで,コロンビアのアンティオキア大学で物理学を学び,コロラド大学で素粒子物理学(格子QCD理論)のPh. Dをとる。それ以前には,フラクタル,半古典カオスなども研究しているようだ。2008年にはカリフォルニア大学バークレー校に移り,ソフトウェア開発に主軸を置くことになる。

なんだかよく似たところがある2人である。

2019年5月26日日曜日

Wolfram Engine

MathematicaWolfram|Alphaでおなじみのウルフラム(昔はウルフラム・リサーチだった)が,それらのコアになる計算エンジンをWolfram Engineという名前で,開発者向けに無償で開放した。すごい。pythonやC++で開発するアプリにライブラリとして組込むことができ,Wolfram Knowledgebaseへのアクセスができるとのこと。

各プラットフォーム用に3GB程度のアプリケーションをダウンロードし,Wolfram IDを取得すれば使用ライセンスが得られる。Mathematicaをコマンドラインから利用できるだけでなく,jupyter notebookから使える。これらのノートブック・インターフェースも元々は,Mathematica Notebook に習ったものではないかと思う。

さて,twitterで教えてもらったjupyterを使えるようにする手順は次の通り。まずWolfram Engineをインストール,ライセンスを取得しコマンドラインで起動することを確認する。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
git clone github.com/WolframResearch/WolframLanguageForJupyter.git
cd WolframLanguageForJupyter
./configure-jupyter.wls add
jupyter notebook
 または
jupyter lab
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

黒木さんの「Free Wolfram EngineをJupyterで使う方法」が例題紹介も含めて詳しい。


2019年3月25日月曜日

JupyterLab

JupyterLabのすすめ」という記事があったので,JupyterLabをさっそくインストールしてみた。

退職後の4月から非常勤講師としてこれまでと同じような授業を担当する。とりあえず,現在使用しているコンピュータ(MacProやMacBookProなど)を明け渡さなければならないので,MacBookAirに新しい環境を構築して移動作業をしている。その結果,現在の自分の環境は,次のようになっている。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
※mbaの設定
(1) homebrewの導入
    xcode-select —install (コマンドライン開発ツールの導入)
    sudo xcodebuild -license
    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
(2) homebrewの練習と基本環境の設定
    brew update
    brew upgrade
    brew doctor
    brew install wget
    brew install nkf
    brew cask reinstall xquartz
    brew install lynx
    brew install w3m
    brew install xxxx (xxxxをインストール)以下適当に繰り返した。
(3) python3環境(jupyterを含む)の設定
    brew install python3
    python3 -V
     Python 3.7.2
    pip3 -V
     pip 19.0.2 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)
    python -V
     Python 2.7.10
    ・これで,python3がインストールできた。
    which python
     /usr/bin/python
    which python3
     /usr/local/bin/python3
    ・pip3のアップデート方法
    pip3 install --upgrade setuptools
     Requirement already up-to-date:...
    pip3 install --upgrade pip
     Collecting pip
    ...
     Successfully installed pip-19.0.3
    ・環境設定してその中で作業
    python3 -m venv env
    . env/bin/activate
    (env) … python -V
     Python 3.7.2
    (env) … pip -V
     pip 18.1 from /Users/admin/env/lib/python3.7/site-packages/pip (python 3.7)
    (env) ... pip install --upgrade pip
    (env) ... pip install --upgrade setuptools
    (env) ... pip install numpy
    (env) ... pip install scipy
    (env) ... pip install scikit-learn
    (env) ... pip install matplotlib
    (env) ... pip install Pillow
    (env) ... pip install sympy
    (env) ... pip install jupyter
    (env) ... deactivate
(4) julia環境の設定
    https://julialang.org/downloads/
    からダウンロードすればコマンドラインで実行可能に
    echo 'export PATH=$PATH:/Applications/
Julia-1.1.app/Contents/Resources/julia/bin' >> ~/.bashrc
    source ~/.bashrc
    julia
    julia> using Pkg
    julia> Pkg.add(“IJulia”)
    export PATH=$PATH:/Users/admin/env/bin
    jupyter notebook
    これで,jupyter が起動して,julia 1.1 が使えるようになった。
    versioninfo()
    using Pkg
    Pkg.update()
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

(5) jupyterlabの導入と起動は簡単であった。
    pip3 install jupyterlab
    jupyter lab
(付)JupyterLab環境での設定
Settings -> Advanced Settings Editor -> Notebook
codeCellConfigのlineNumbersをTrueにする。
Settings -> Advanced Settings Editor -> Extension Manager -> "enabled": trueにする。

Mathematicaノートブックを長らく使ってきたので,Jupyter Notebook(この記事もWikipedia中文はあるが日本語はない・・・)はすんなりと馴染むことができた。JupyterLabはJupyter Notebookの後継で,今後はこれに移行するのだそうだ。まだ違いがよくわからないが,Jupyter Notebook のことだってそれほどわかっていたわけではない。ぼちぼちやっていくことにしよう。