2021年9月27日月曜日

numpy.reshape()

numpy で3次元配列を2次元配列にした場合の動作確認。

arr=np.array([[[1,2],[3,4],[5,6]],
              [[10,20],[30,40],[50,60]],
              [[100,200],[300,400],[500,600]],
              [[1000,2000],[3000,4000],[5000,6000]]])
              
print(arr.shape)
(4, 3, 2)

print(arr.reshape([4,-1]))
[[   1    2    3    4    5    6]
 [  10   20   30   40   50   60]
 [ 100  200  300  400  500  600]
 [1000 2000 3000 4000 5000 6000]]

転置すると、i,j,k が k,j,i になります。簡単。

 

2021年9月25日土曜日

GemPy

今日は Geoenvironmental Sciences に関する webinar を見ました。

1,2回目はライブで見ていたのですが、十分に理解できるわけもなく、3回目は Youtube にしました。
個人的には久しぶりとなる、地質に関する話でした。休日の穏やかな時間で見ていたこともあり、リラックスして聞けました。仕事では地質にかかわるヒトたちが CIM によるモデリングに迫られつつも見ぬふりをしていますが、ぜひ動画(で紹介されているようなツール)を見てほしいですね。

紹介されていたツールは GemPy。
https://www.gempy.org/
補間の計算には Theano が利用されています。PyMC3と組み合わせることで、確率論的手法(モンテカルロシミュレーション、ベイズ推論など)をサポートしていることが特徴とのことでした(そういえばPyMC3は動かなかったですね)。https://phreeqc.blogspot.com/2020/11/mcmc.html
textベースの入力ですので EVS と同様です。地質の3次元可視化という点では GEORAMA の方が操作性は良いと思われます。が、PyMC3が動けば強力な統合ツールになりそうです。地質って、不確実性もセットで表示すべきですからね。

webinar で、変化の速さを感じたのがココ↓。
https://youtu.be/dfKPxjSge90?t=2430
出典はわかりませんが、概ね理解できますし、利用してきたライブラリ等です。偶然、個人で選択していたツールが他者からも評価・整理されていると、安心します。なんとか、変化にはついていけていたと。一方で、ギリギリだったと複雑な思いも。

今日は webinar を見ただけですが、文献も出ています。
https://gmd.copernicus.org/articles/12/1/2019/
一度、読んでみましょう。

 

2021年9月23日木曜日

σレベル

σレベルが出てきました。

(x-平均)/標準偏差

あれ?標準化ですよね。
調べてみると、標準得点の z score と呼ばれるそうで、偏差値の仲間でした。統計と機械学習で呼び方というか、使われ方が違うのかな?

確率年よりも平易で処理が楽そう、というのが第一印象。
Today's Earth のリスク値としても利用されているようです。

有名なのでしょうね。避けずに学んでおけばよかった。


2021年9月22日水曜日

スペクトルの平滑化

連休中に、スペクトルの平滑化プログラムを書いておこうと思いつきました。

大崎本にサブルーチンが載っていますので、それを利用すれば完成するでしょうと高を括っていました。

が、本を持ち帰っていませんでした。

どうしましょうか、と検索してみると、大崎総合研究所から6月にソースコードが公開されていました。(正誤表もあります。)
http://www.ohsaki.co.jp/activity/download/index.html

昔の有名な図書ですので、プロは既にアレンジしたコードをお持ちです。が、私のようなアマにはありがたい。感謝です。

サブルーチンをダウンロードして、プログラムに組み込み、動かしてみました。が、正しく動きません。どこだ?と探しているうちに、連休が終わりました。

そういえば以前、倍精度に変更したサブルーチンをプロからいただいていました(今回も、連休中に頂きました)。それに組み替えると、改善。さらに、引数を変数に変えると正しく動きました。後者はともかく、前者はあるあるでしたね。感謝。

昨日、お礼がてら雑談していると、周波数によってバンド幅を変える方法もあると教えていただきました。バンド幅を決めて平滑化すると、高周波側と低周波側で見え方が変わってきます。それが改善されるのでしょう。良いですね。

といっても、それを使うのに妥当なスペクトルか判断できない知識レベルですので、今回は通常の平滑化で完成。バグ取りに数日かかりましたが、喰わせるデータや単位のチェックもあわせてできたので良しとしましょう。


2021年9月20日月曜日

天然ダムの側岸侵食

https://doi.org/10.1016/j.enggeo.2021.106322
Large-scale field model tests of landslide dam breaching

天然ダムの越流決壊を実験で確認した文献でした。

そういえば、決壊した後の形状はよく見ますが、越流初期からのプログレッシブな形状を追って見たことがありません。再現計算では流量と最終形状で評価しますし、そもそも映像がないので確認できないというのが実情でしょう。

この文献を読んでいて気づいたのが、側壁の侵食形状。水位から上で側岸崩落が発生しています。途中はそうなのかもしれませんね。

側方侵食速度、崩落角度も合わせこみパラメータの一つです。このような実験が増えることで、また一つ、この分野の経験式の積み上げが増えていくのでしょう。

2021年9月16日木曜日

トリチウムの利用

地下水の年代測定において、トリチウムの有用性が低下してから、ずいぶん経過しました。
https://phreeqc.blogspot.com/2017/04/blog-post_10.html

その間、他の同位体を利用していたため、動向のチェックを怠っていました。
久しぶりに実務で利用された方のグラフを見ると、壊変前の値でプロットされておらず、壊変後の値でプロットされえていました。ま、そういう方法もあるよね、と思いつつスルーしていました。が、先日、文献を読んでいて同様のグラフを見かけました。

https://doi.org/10.1016/j.apgeochem.2021.105070
Insight into watershed hydrodynamics using silica, sulfate, and tritium: Source aquifers and water age in a mountain river

出典はUSGS
https://doi.org/10.3133/sir20195090
Tritium as an indicator of modern, mixed, and premodern groundwater age
Scientific Investigations Report 2019-5090

年代を決定できなくても、mixed か premodern かがわかるだけでも価値があります。今後はこのような使い方が主流になるのでしょう。

2021年9月12日日曜日

Rayleigh damping

レイリー減衰でα、βを決定する考え方は、道路橋示方書に書かれています。

考慮すべき固有モードに対して安全側になるよう周波数、減衰比(減衰定数)を定めるような流れです。単純な構造、均一の部材であれば動解まで必要ないのですが、多様な形状・材料で橋が構成されているため、計算が必要になると理解しています。

これ、指定する周波数によっては、α、βの値が大きく変化します。結果にどの程度影響するのでしょう?SoilPlus で単純なモデルを作って計算してみました。

 
同じ減衰比0.01でも、狙う周波数帯によって、時刻歴が大きく異なります。今回のモデルでは質量比例減衰より、剛性比例減衰が効いています。 
 
 
 
周波数領域では、剛性比例のβが大きくなると、滑らかな形状になっています。値が大きくなると高周波側、低周波側の両方で効いています。
質量比例のαが加わると、低周波領域で振幅がやや低下しています。あまりに小さいと(注目する周波数帯が低いと)ほとんど効かないようですが。
 
思った以上に時刻歴波形に影響が出ていますし、思った以上に周波数領域で影響が出ていません。周波数領域で減衰力を変えて減算しているわけではないですからね。
 
もう少しケースを増やしてみないと感度解析にはなりませんが、参考にはなります。覚えておきましょう。
 

2021年9月8日水曜日

ArcGIS のライセンス統合

ESRI Japan さんの旧サポートサイトが12月でクローズする模様。

新しいサポートサイト MyESRI へ乗り換えないといけないのですが、紆余曲折を経て、ESRIの営業さんにお願いすることになりました。

その過程で、ライセンスの統合を進めました。驚くことに、2本目以降の年間保守料が半額近くまで下がりました。本体は微々たるものの、エクステンションの値下げ幅が大きい。もっと早く気付けばよかった。

世間のレベル

Python、なにそれ?とは異なる方との協働の話。

自己紹介もそこそこに協働することになった社外の方。メインの仕事とは外れる部分で、Python スクリプトをやり取りしたり、Fortran ソース、バッチファイル をいただいたり。
事前に確認したわけではありませんが、ある程度の言語スキル保有が前提でのお仕事でした。

先日のように社内の方をお世話するよりも、効率的かつストレスフリーでした。考えさせられます。

 

2021年9月6日月曜日

Python exe 変換 その2

数百の xml から 数項目の情報を抜き出して表にしたい、そんなプログラムを作ってくれるプログラマーがいないか?と他部署の先輩が探されていました。

それなら、先日の CIM スクリプトをダウングレードするだけだなあと思い、手を上げました。

30分ほどで出来上がったのですが、問題はPython(を使えない先輩とその部下)。

なので、重いし遅いのですが、実行ファイルに変換することにしました。
https://phreeqc.blogspot.com/2017/12/python-exe.html

そのまま変換すると 300MB の exe が出来上がりました。
これはダメ、軽くならないかと調べてみると、ありました。

【悲報】PyInstallerさん、300MBのexeファイルを吐き出すようになる
https://lets-hack.tech/programming/languages/python/pyinstaller-issue/

  • コマンドを出した環境のPathにあるモジュールは根こそぎバンドルしに行くという仕様が原因。
  • Pandas を入れる際はpip。 conda だとMKL も入ってしまう。

なるほど、全部入りでしたか。それなら仮想環境を毎回作るしかなさそうです(面倒ですが)。

手順
Jupyter の file - save as で .py 保存。

仮想環境確認
conda info -e

仮想環境作成
conda create -n pyinstaller
conda activate pyinstaller

インストール
conda install pyinstaller

今回利用するライブラリのインストール
pip install ●●

コンパイル
pyinstaller 〇〇.py --onefile --clean


変換された exe は 30MB。確かに軽くなりましたが、それでも重い。しかも遅い。

やはり、皆さんに覚えてもらうしかないでしょう。いえ、Python でなくてもよいのですが、何かしら一つくらい言語を習得しておかないと困ると思うのですが。手を貸すからダメなのかな。うーん。