HHKBに慣れてしまうとノートPCを使ったときにCaps Lockを間違えてしまうので。
- 公式
- 参考サイト
5分でcapslockキーをctrlキーに変更する(windows10) | ジョイタスネット
アップデートされてないしレジストリいじるから危ないけど。
HHKBに慣れてしまうとノートPCを使ったときにCaps Lockを間違えてしまうので。
5分でcapslockキーをctrlキーに変更する(windows10) | ジョイタスネット
アップデートされてないしレジストリいじるから危ないけど。
- 過去記事よりサンプル
ミャンマー某河川の河口部:ETOPO1 + geoviews - 趣味で計算流砂水理 Computational Sediment Hydraulics for Fun Learning
単純な折れ線グラフをHoloviewsで書いてみます。比較のため、matplotlib版も書いておきます。 コードはjupyter上で書いています。なお、グラフはGitHubからGitHub Pagesを表示してiframeで取り込んでいます。
import holoviews as hv hv.extension('bokeh') g = hv.Curve([1,2,4],label='line1').options(width=400,height=300) * hv.Curve([1,4,8],label='line2') g
%matplotlib inline import matplotlib.pyplot as plt fig, ax = plt.subplots(figsize=(4.0, 3.0)) ax.plot([1,2,4],label='line1') ax.plot([1,4,8],label='line2') ax.legend()
個人的には静的なグラフなんていらないと思いますが、 いざ論文とかにまとめようと思うと静的なベクターのグラフを必要だったりします。(近い将来には変わると思いますが)
前述のとおり、Holoviewsはmatplotlibのラッパーでもあるのでバックエンドを切り替えるだけで簡単に静的なベクターのグラフを作ることができます。
import holoviews as hv hv.extension('matplotlib') g = hv.Curve([1,2,4],label='line1').options(aspect=1.333, fig_size=150) * hv.Curve([1,4,8],label='line2') hv.save(g,'holoviews.svg') g
縦横比の設定方法が、bokehとmatplotlibで異なるのでちょっと面倒ですが、if文とか書いておけば良いと思います。
以前の計算(多列砂州河道の再現計算(失敗例) - 趣味で計算流砂水理)をやり直してみました。
ましになりましたが、もう少しですね。
5000hrで計算機が落ちてしまいました。ちなみに計算時間は1ヶ月くらいです。
河道内に繁茂する木とか草についての話題です。河道内植生とか呼ばれており、河川分野では一つの研究テーマだったりします。
まず、大きな出水のあった2019年の荒川の熊谷周辺の経年変化をplanetでレンダリングしてみます。
画像を右クリックで再生を選択
大きいものはこちら
4月、6月、9月を比較すると砂州上に草本類が繁茂していく様子がよくわかります。繁茂するしないの差は(小規模な)出水で冠水するかどうかなので、植生の繁茂状況から出水時の流路が推定できます。
次に洪水後(11月)と比較すると、出水規模が大きすぎるため流路変動が生じていますが、大部分で植生が流出していることがわかります。季節変化もあるので画像のみで流出箇所を判断できませんが、水理解析を行えばわかるはずです。
洪水後
ほんとに偶然ですが、砂州上の細い水路は工事用の仮設水路ですね。護岸等の工事でよくやります。洪水後(11月)の写真をみると完全に水路が消えているのが面白いです。
これまでのplanetの関連記事です。
computational-sediment-hyd.hatenablog.jp
computational-sediment-hyd.hatenablog.jp
ようやく新たなプロジェクトが始動しました。 テーマは「趣味で調布市の水防計画を立案する」です。 要はコンサルがやるようなことを趣味でやってみようということです。 なぜ調布市かは深い理由はないです。ちょっと思い入れがあるだけです。
まずは水害履歴マップを作ってみました。
webアプリはこちら(フリーのサーバのため少し起動に時間がかかります。chrome, firefoxが推奨です。)
webアプリの詳細は別記事に書きます。
水防計画は現状分析→課題抽出→対策検討のように進めます。まずは現状分析ですがその手法はいろいろあります。その一つとして水害履歴の分析を行います。
イベントごとの浸水家屋数をみると、1976/9/9:64軒,2005/9/4:141軒,2019/10/12:152軒が上位3イベントとなっている。1976年は少し古いので、2005年、2019年の出水についてもう少し詳しく分析してみましょう。
2005年のイベントは東京都西部で局所的な豪雨により浸水被害が発生しました。
一方、2019年は台風による多摩川上流部の大雨により多摩川の増水により浸水被害が発生しました。
両者を比較すると浸水家屋数は同程度にも関わらず、浸水箇所が大きく異なることがわかります。 前者は都市河川等小規模支川の川沿いで被害が発生しています。一方,後者は多摩川沿いのみで被害が発生しています。 多分この2つが浸水形態として想定されるのかなと思います。
ということで、次回はこの2つのイベントの物理現象をもう少し詳しく分析していきましょう。
過去記事1(衛生画像planetで複列砂州の変化をレンダリングしてみた - 趣味で計算流砂水理 )、過去記事2(衛星画像planetで遊んでみる:天竜川河口付近 - 趣味で計算流砂水理) と同じ複列、多列砂州河道ですが、過去記事は河床材料が礫で今回のものは砂です。 ちょっと見にくいですが、随分雰囲気が違うと思います。
画像を右クリックで再生を選択
大きいものはこちら
これは斐伊川ですね。砂河川の多列砂州河道は我が国にはほとんどないのでレアです。実際にみると本当に美しいです(ググるといろんな写真が見れます)。 ストリートビューはこんな感じです。
過去に流れだけのテスト計算をやっていました。(オープンデータによる河川流解析:平面二次元流解析 - 趣味で計算流砂水理) 河床変動計算もやってみようかな。
これまでに例を示した砂州ですが、川幅スケールの地形変化ということで中規模河床形態と呼ばれます。 これは、土木学会水理委員会移動床流れの抵抗と河床形状研究小委員会:移動床流れにおける河床形態と粗度(土木学会論文報告集210(1973)65–91) で定義されて以来、国内では標準になっています。海外では普通にSand barと呼ばれることが多い気がします。
砂州の高さは河床材料の粒径によって決定します。そのため、礫河床では砂州高が高く、砂河川では砂州高が低くなります。
砂州の列数は川幅に依存します。そのため、川幅を大きくすればほとんど河川で砂州が形成されます。例外は背水影響を受ける区間です。 日本に多列砂州河川が少ない要因は、人為的に川幅を決めているためです。 つまり、諸外国と比較して相対的に川幅が小さいということです。 私の強い思いでもありますが、今後の川づくりの基本方針として川幅(堤防間)を大きくすること検討すべきです。 これにより治水能力の向上だけでなく、砂州の持つ生物多様性や美しい景観も形成されます。
河道計画に長く携わってきた方は、この方法が唯一のサステイナブルな川づくりであることは理解しているのですが、河川沿いに家屋が密集しているなどの制約により実現できないのが現状です。
これまでのplanetの関連記事です。
computational-sediment-hyd.hatenablog.jp
⇒2023-12-30時点ではできそうです。後日記事を書きます。
最近勉強も兼ねてGoogle Colaboratoryを使っていました。結論としては凄いの一言でローカルのjupyterはいらないんじゃないかと思うくらいです。
標準状態で!pip listによりパッケージを確認すると次のとおりで372個のパッケージが入ってます(2020年5月7日時点)。 多分皆様が使うパッケージはほとんど入ってる思います。
Package Version ------------------------ --------------- absl-py 0.9.0 alabaster 0.7.12 albumentations 0.1.12 altair 4.1.0 asgiref 3.2.7 astor 0.8.1 astropy 4.0.1.post1 astunparse 1.6.3 atari-py 0.2.6 atomicwrites 1.4.0 attrs 19.3.0 audioread 2.1.8 autograd 1.3 Babel 2.8.0 backcall 0.1.0 beautifulsoup4 4.6.3 bleach 3.1.5 blis 0.4.1 bokeh 1.4.0 boto 2.49.0 boto3 1.13.1 botocore 1.16.1 Bottleneck 1.3.2 branca 0.4.0 bs4 0.0.1 CacheControl 0.12.6 cachetools 3.1.1 catalogue 1.0.0 certifi 2020.4.5.1 cffi 1.14.0 chainer 6.5.0 chardet 3.0.4 click 7.1.2 cloudpickle 1.3.0 cmake 3.12.0 cmdstanpy 0.4.0 colorlover 0.3.0 community 1.0.0b1 contextlib2 0.5.5 convertdate 2.2.0 coverage 3.7.1 coveralls 0.5 crcmod 1.7 cufflinks 0.17.3 cvxopt 1.2.5 cvxpy 1.0.31 cycler 0.10.0 cymem 2.0.3 Cython 0.29.17 daft 0.0.4 dask 2.12.0 dataclasses 0.7 datascience 0.10.6 decorator 4.4.2 defusedxml 0.6.0 descartes 1.1.0 dill 0.3.1.1 distributed 1.25.3 Django 3.0.5 dlib 19.18.0 docopt 0.6.2 docutils 0.15.2 dopamine-rl 1.0.5 earthengine-api 0.1.220 easydict 1.9 ecos 2.0.7.post1 editdistance 0.5.3 en-core-web-sm 2.2.5 entrypoints 0.3 ephem 3.7.7.1 et-xmlfile 1.0.1 fa2 0.3.5 fancyimpute 0.4.3 fastai 1.0.61 fastdtw 0.3.4 fastprogress 0.2.3 fastrlock 0.4 fbprophet 0.6 feather-format 0.4.1 featuretools 0.4.1 filelock 3.0.12 firebase-admin 4.1.0 fix-yahoo-finance 0.0.22 Flask 1.1.2 folium 0.8.3 fsspec 0.7.3 future 0.16.0 gast 0.3.3 GDAL 2.2.2 gdown 3.6.4 gensim 3.6.0 geographiclib 1.50 geopy 1.17.0 gin-config 0.3.0 glob2 0.7 google 2.0.3 google-api-core 1.16.0 google-api-python-client 1.7.12 google-auth 1.7.2 google-auth-httplib2 0.0.3 google-auth-oauthlib 0.4.1 google-cloud-bigquery 1.21.0 google-cloud-core 1.0.3 google-cloud-datastore 1.8.0 google-cloud-firestore 1.6.2 google-cloud-language 1.2.0 google-cloud-storage 1.18.1 google-cloud-translate 1.5.0 google-colab 1.0.0 google-pasta 0.2.0 google-resumable-media 0.4.1 googleapis-common-protos 1.51.0 googledrivedownloader 0.4 graphviz 0.10.1 grpcio 1.28.1 gspread 3.0.1 gspread-dataframe 3.0.6 gym 0.17.1 h5py 2.10.0 HeapDict 1.0.1 holidays 0.9.12 html5lib 1.0.1 httpimport 0.5.18 httplib2 0.17.3 httplib2shim 0.0.3 humanize 0.5.1 hyperopt 0.1.2 ideep4py 2.0.0.post3 idna 2.9 image 1.5.31 imageio 2.4.1 imagesize 1.2.0 imbalanced-learn 0.4.3 imblearn 0.0 imgaug 0.2.9 importlib-metadata 1.6.0 imutils 0.5.3 inflect 2.1.0 intel-openmp 2020.0.133 intervaltree 2.1.0 ipykernel 4.10.1 ipython 5.5.0 ipython-genutils 0.2.0 ipython-sql 0.3.9 ipywidgets 7.5.1 itsdangerous 1.1.0 jax 0.1.64 jaxlib 0.1.45 jdcal 1.4.1 jedi 0.17.0 jieba 0.42.1 Jinja2 2.11.2 jmespath 0.9.5 joblib 0.14.1 jpeg4py 0.1.4 jsonschema 2.6.0 jupyter 1.0.0 jupyter-client 5.3.4 jupyter-console 5.2.0 jupyter-core 4.6.3 kaggle 1.5.6 kapre 0.1.3.1 Keras 2.3.1 Keras-Applications 1.0.8 Keras-Preprocessing 1.1.0 keras-vis 0.4.1 kiwisolver 1.2.0 knnimpute 0.1.0 librosa 0.6.3 lightgbm 2.2.3 llvmlite 0.31.0 lmdb 0.98 lucid 0.3.8 LunarCalendar 0.0.9 lxml 4.2.6 Markdown 3.2.1 MarkupSafe 1.1.1 matplotlib 3.2.1 matplotlib-venn 0.11.5 missingno 0.4.2 mistune 0.8.4 mizani 0.6.0 mkl 2019.0 mlxtend 0.14.0 more-itertools 8.2.0 moviepy 0.2.3.5 mpmath 1.1.0 msgpack 1.0.0 multiprocess 0.70.9 multitasking 0.0.9 murmurhash 1.0.2 music21 5.5.0 natsort 5.5.0 nbconvert 5.6.1 nbformat 5.0.6 networkx 2.4 nibabel 3.0.2 nltk 3.2.5 notebook 5.2.2 np-utils 0.5.12.1 numba 0.48.0 numexpr 2.7.1 numpy 1.18.3 nvidia-ml-py3 7.352.0 oauth2client 4.1.3 oauthlib 3.1.0 okgrade 0.4.3 opencv-contrib-python 4.1.2.30 opencv-python 4.1.2.30 openpyxl 2.5.9 opt-einsum 3.2.1 osqp 0.6.1 packaging 20.3 palettable 3.3.0 pandas 1.0.3 pandas-datareader 0.8.1 pandas-gbq 0.11.0 pandas-profiling 1.4.1 pandocfilters 1.4.2 parso 0.7.0 pathlib 1.0.1 patsy 0.5.1 pexpect 4.8.0 pickleshare 0.7.5 Pillow 7.0.0 pip 19.3.1 pip-tools 4.5.1 plac 1.1.3 plotly 4.4.1 plotnine 0.6.0 pluggy 0.7.1 portpicker 1.3.1 prefetch-generator 1.0.1 preshed 3.0.2 prettytable 0.7.2 progressbar2 3.38.0 prometheus-client 0.7.1 promise 2.3 prompt-toolkit 1.0.18 protobuf 3.10.0 psutil 5.4.8 psycopg2 2.7.6.1 ptvsd 5.0.0a12 ptyprocess 0.6.0 py 1.8.1 pyarrow 0.14.1 pyasn1 0.4.8 pyasn1-modules 0.2.8 pycocotools 2.0.0 pycparser 2.20 pydata-google-auth 1.1.0 pydot 1.3.0 pydot-ng 2.0.0 pydotplus 2.0.2 PyDrive 1.3.1 pyemd 0.5.1 pyglet 1.5.0 Pygments 2.1.3 pygobject 3.26.1 pymc3 3.7 PyMeeus 0.3.7 pymongo 3.10.1 pymystem3 0.2.0 PyOpenGL 3.1.5 pyparsing 2.4.7 pyrsistent 0.16.0 pysndfile 1.3.8 PySocks 1.7.1 pystan 2.19.1.1 pytest 3.6.4 python-apt 1.6.5+ubuntu0.2 python-chess 0.23.11 python-dateutil 2.8.1 python-louvain 0.14 python-slugify 4.0.0 python-utils 2.4.0 pytz 2018.9 PyWavelets 1.1.1 PyYAML 3.13 pyzmq 19.0.0 qtconsole 4.7.3 QtPy 1.9.0 regex 2019.12.20 requests 2.23.0 requests-oauthlib 1.3.0 resampy 0.2.2 retrying 1.3.3 rpy2 3.2.7 rsa 4.0 s3fs 0.4.2 s3transfer 0.3.3 scikit-image 0.16.2 scikit-learn 0.22.2.post1 scipy 1.4.1 screen-resolution-extra 0.0.0 scs 2.1.2 seaborn 0.10.1 Send2Trash 1.5.0 setuptools 46.1.3 setuptools-git 1.2 Shapely 1.7.0 simplegeneric 0.8.1 six 1.12.0 sklearn 0.0 sklearn-pandas 1.8.0 smart-open 2.0.0 snowballstemmer 2.0.0 sortedcontainers 2.1.0 spacy 2.2.4 Sphinx 1.8.5 sphinxcontrib-websupport 1.2.2 SQLAlchemy 1.3.16 sqlparse 0.3.1 srsly 1.0.2 statsmodels 0.10.2 sympy 1.1.1 tables 3.4.4 tabulate 0.8.7 tbb 2020.0.133 tblib 1.6.0 tensorboard 2.2.1 tensorboard-plugin-wit 1.6.0.post3 tensorboardcolab 0.0.22 tensorflow 2.2.0rc4 tensorflow-addons 0.8.3 tensorflow-datasets 2.1.0 tensorflow-estimator 2.2.0 tensorflow-gcs-config 2.1.8 tensorflow-hub 0.8.0 tensorflow-metadata 0.21.2 tensorflow-privacy 0.2.2 tensorflow-probability 0.10.0rc0 termcolor 1.1.0 terminado 0.8.3 testpath 0.4.4 text-unidecode 1.3 textblob 0.15.3 textgenrnn 1.4.1 Theano 1.0.4 thinc 7.4.0 toolz 0.10.0 torch 1.5.0+cu101 torchsummary 1.5.1 torchtext 0.3.1 torchvision 0.6.0+cu101 tornado 4.5.3 tqdm 4.38.0 traitlets 4.3.3 tweepy 3.6.0 typeguard 2.7.1 typing 3.6.6 typing-extensions 3.6.6 tzlocal 1.5.1 umap-learn 0.4.2 uritemplate 3.0.1 urllib3 1.24.3 vega-datasets 0.8.0 wasabi 0.6.0 wcwidth 0.1.9 webencodings 0.5.1 Werkzeug 1.0.1 wheel 0.34.2 widgetsnbextension 3.5.1 wordcloud 1.5.0 wrapt 1.12.1 xarray 0.15.1 xgboost 0.90 xkit 0.0.0 xlrd 1.1.0 xlwt 1.3.0 yellowbrick 0.9.1 zict 2.0.0 zipp 3.1.0
ファイル操作は、googleドライブ上で可能であり、画面右端「ファイル」タブを選択し、「ドライブをマウント」をクリックすることでファイル操作が可能となります。
※以前は次のコマンドを打つ必要があったようです。今でもこの方法も使えます。
from google.colab import drive drive.mount('/content/drive')
本当に凄いけどやりたいなと思うことができなかったのでまとめておきます。
google colabではpipでのパッケージ管理を基本としています。でも、condaがないと上手く入らないパッケージも多くあります。 なので、以下の方法でcondaを入れます(minicondaは参考サイトを参照)。
!wget -c https://repo.continuum.io/archive/Anaconda3-5.2.0-Linux-x86_64.sh !chmod +x Anaconda3-5.2.0-Linux-x86_64.sh !bash ./Anaconda3-5.2.0-Linux-x86_64.sh -b -f -p /usr/local import sys sys.path.append('/usr/local/lib/python3.6/site-packages/')
※google colabがpython3.6のため、python3.6で構築された最新(最終)バージョンのAnaconda3-5.2.0、Miniconda3-4.5.4を指定する。
ところが、pipとcondaを併用した管理は非常に厄介です(「pip conda」でググってみて下さい)。 condaの公式にも書いてますがとにかく慎重に管理する必要がありそうです。
実際にgoogle colab上でcondaで作ってみましたが依存パッケージが多いものは上手くいきませんでした。 condaが使えないと使えるパッケージが限られるのでこの辺はマイナスかなと考えます。
PyViz-HoloVizとは、このブログではお馴染みのjupyter上で動くインタラクティブなグラフを作成するためのパッケージ群です。holoviews、geoviews、hvplot...etc
バックエンドはbokehであり、上記の標準パッケージに含まれるため、動くかと思いましたが駄目でした。
開発者も結構頑張っているようですが、githubのissue(Colab rendering requires reloading extension in each cell · Issue #3551 · holoviz/holoviews · GitHub)に書いてあるとおり、APIがipywidgetをサポートしておらず、Colabはクローズドソースなので難しいようです。
python xarray - Install GeoViews on a Google Colaboratory Notebook - Stack Overflowを参考に簡単なプログラムをテストしてみました。
!apt-get install libgeos++ libproj-dev !pip install panel==0.7.0 geoviews==1.6.6 import geoviews as gv import geoviews.feature as gf # gv.extension('bokeh') # NG gv.extension('matplotlib') # OK g = gf.ocean g
インタラクティブなbokehは動きませんが静的なmatplotlibは動きました。
ちなみにbokeh単体は動きました。(参考push_notebook does not work in Google Colaboratory · Issue #9302 · bokeh/bokeh · GitHub)
ローカルのjupyterで作るとこんな感じになります。
やっぱりインタラクティブなグラフがいいですよねということでデメリットの一つと考えます。