en_US English ja 日本語 zh_CN 中文

フィンランドで滞在許可証の更新 〰2021年

前回少し長めの滞在許可証をもらっていたので、久しぶりの滞在許可証の更新手続き。

さほど代わり映えしないなと書類などを準備してたんだけど、コロナの影響なのか申請システムに変更点が一つ。
EnterFinlandで電子申請をする際、オンラインバンクなどのセキュリティー認証システムが使える人は、移民局のオフィスでの面接がスキップできる可能性があるのだそう。
滞在許可証用の写真を写真屋で撮ってデジタルデータで送らないといけない、などの縛りはあるけれど、条件を満たす人にとっては面接スキップできるってのは結構大きなメリットなのではなかろうか。

私達の家族の場合は、嫁Xがオンライン認証を持っていなかったので前回までと更新手続きやら必要書類やらは変わらず。
むしろ面接の際に、直近6ヶ月の給与明細やら銀行口座の取引履歴などの追加書類を提出するように要請された。

オンラインシステムを簡略化してる分面接の方を丁寧にやってる、とかなのかな? まあ、たまたま、抽出検査に引っかかったのかもしれないけれど。

ついでに滞在許可証の更新許可までの時間も前回の時より少し長めにかかった。まあ最終的に貰えるならば時間がかかったとしても問題はないのだけど。

下リンクは前回までの滞在許可証を更新したときの手続き。

フィンランドで滞在許可証を更新するプロセス

フィンランドの滞在許可証の更新・2回目

D

en_US English ja 日本語 zh_CN 中文

MacOSをCatalinaにアップデートしたら日本語変換がおかしくなった

仕様なのかそうでないのかは知らないけれど、MacOSのアップグレードをしたらmac標準の日本語入力システム(ひらがな)が大変おかしなことになった。特に小文字系やらアルファベットに対してやたらと長文の変換をさせてこようとしたり、かな入力のときのアルファベットがなぜか違うアルファベットになったりーーちょっと鬱陶しいのレベルを超えて、タイプミスやら誤字脱字が頻出するようになってしまう。
もともと、最近のMacの日本語入力は評判良くなかったわけだけど、これではちょっと使い物にならない……ということで代替手段を探すことに。

適当にWebサーチして見つかったのはGoogle日本語入力。フリーの日本語入力だしMacで使えるし、まあGoogleだしってことで迷わずインストール。変換システムがMacネイティブとは少し異なるので慣れるまでに少し時間がかかりそうだけど、使い勝手に問題はなさそう。

ctr+shift+J,K,Lなどでアルファベットと日本語入力を切り替えられるのはMacネイティブの時と変わらず。ストレスフリー。というわけで暫くは日本語入力はGoogle日本語入力で行く予定。

D

 

en_US English ja 日本語 zh_CN 中文

Mac OS をcatalinaにアップデートしたらpyopenclにエラーが出るのでその対策

MacOSをアップデートしたらpythonプログラム走らせるのにエラーが出る様になった話。簡単に対応はできるけど、いつも忘れるので一応投稿しておく。

エラーは以下の様な感じ。

pyopencl._cl.RuntimeError: clBuildProgram failed: BUILD_PROGRAM_FAILURE

対策は

export PYOPENCL_NO_CACHE=1

をプログラム使う前にexportするだけ。

.bash_profile 

に書きこんどきゃいいのかな。あれ、macてzshに変わったんだっけ。.zshrcを編集しなきゃなのかと思ったら、bash_profileしか見つからない。んー、どうなってるんだろ。

D

en_US English ja 日本語 zh_CN 中文

電源ヒューズが切れた! in フィンランド!

二日酔いの朝に寝ぼけながら着替えていたら、ぶら下がりタイプの照明に腕を激突。明かりがブツっと音を立てて消えたので、これは照明のケーブルをやっちゃたかなあ、とだるめの二日酔いと合わせて憂鬱な気分になる。

しばらくそのまま朝のあれこれ準備してたんだけど、気付いたらWi-Fiが落ちていたり、他の電気製品が使えなくなっていたりーーこれは、照明が壊れたんじゃなくて、ブレーカーが落ちたのか、と思い当たる。

うちのマンションではブレーカーなどが入ってるブレーカーボックス(?)、は入り口近くについている。前のマンションでも大体同じ場所についてたから、大体そうなのかな。

写真の一番下のやつが大元のブレーカーで、これが切れてるだけっていうならスイッチを入れ直せばいいだけなんだけど、今回はブレーカーは落ちてない。

家の全部の電気が使えなくなったわけではなく、一部の電源が落ちてるだけだったので、どれかのヒューズだけが壊れたってので間違いはないのだろうけど……意外とどのヒューズがどの部屋と繋がってるのかはわかりにくい。あ、ちなみにヒューズは上の写真の円形の目玉おやじ見たいのをくるくる回すと中から取り出せる。

それで適当にネット検索したらヒューズが落ちた場合真ん中の円形のが飛び出してくるのだそう。なんとなくそれっぽいヒューズを1個取り出してみる。

あっ! これかっっ!!

ってことで、このヒューズを交換したら無事におうちに電源が戻りましたよって言うお話でした。

ちなみにブレーカーボックスの中に変えのヒューズはすでに準備されていた。前の住人が準備したのか、マンションの管理人が準備してたのかは謎。

D

en_US English ja 日本語 zh_CN 中文

python3のmatplotlibでグラフを出力する時のグラフサイズの調整

普段プログラム中でmatplotlibを使うときは、随所でplt.plot()でプロットしてplt.show()で確認しつつplt.savefig(bbox_inches=’tight’)で保存してって感じで使っていることが多い。

それはそれでいいのだけど、いくつかの同じタイプの絵をまとめて他の人に見せようと思ったら微妙に軸の長さがずれている。なんでかなってみてたら、X軸のラベルのサイズで全体のスケールが変わっていた模様。これをどうしたら直せるのかと、bbox_inchesとtight_layoutのオプションをいじりながら遊んでみたのが今回の投稿。

……ってなことをやろうと思って書いてたんだけど、書き終わってみたらbbox_inchesを普通に使うんで問題なかった。悲しい。なんで最初の絵ずれてたんだろ、多分変なことしてたんだと思う。

rcParamsでまずは全体のプロットの外観調整

plt.rcParams['font.family']='Arial'
plt.rcParams['font.size']= 14
plt.rcParams['axes.linewidth']=2.5
plt.rcParams['xtick.major.width']=2.5
plt.rcParams['xtick.labelsize']=14
plt.rcParams['ytick.major.width']=2.5
plt.rcParams['ytick.labelsize']=14
plt.rcParams['figure.figsize']=(4,4)

rcParamsを使うのがいいのかは知らないけど、大体のセッティングを最初にできるので大概のプログラムでは突っ込んでいる。figsizeが基本的に絵のサイズ。

plotはまあなんでもいいのだけど、一応以下のようなプロット。一応subplotsを使う設定で。

#Xラベルの長さを変える
Title = ['aaa','bbb','ccc','ddd','eee','fff']
#Title2 = ['aaaaaa','bbbbbb','cccccc','dddddd','eeeeee','ffffff']
data1=np.array([165,201,224,158,178,207])
Err1=np.array([1,4,1,2,4,10])
data2=np.array([380,420,418,435,412,409])
Err2=np.array([10,19,12,20,18,34])
fig, ax1 = plt.subplots()
ax1.set_ylabel('y1',fontname='Arial')
ax1.errorbar(Title,data1,yerr=Err1,capsize=10,marker='o',ms=11,color='orange',fillstyle='none',linestyle = 'None')
ax2=ax1.twinx()
ax2.set_ylabel('y2',fontname='Arial')
ax2.errorbar(Title,data2,yerr=Err2,capsize=10,marker='D',ms=11,color='b',fillstyle='none',linestyle = 'None')

このプロット用の描画設定。

ax1.tick_params(axis ='x', which ='both', top='off',bottom='off', pad=10)
ax1.set_ylim(150,250)
ax1.set_yticks([150,200,250])
ax1.tick_params('x',labelrotation=90)
ax2.set_ylim(250,650)
ax2.set_yticks([200,400,600,800])

絵のセーブのオプションでサイズの最終調整。

bbox_inchesの場合。

fig.savefig('FIGURE/test1.png',bbox_inches='tight')

bbox_inchesでpad_inchesも0にして。

fig.savefig('FIGURE/test2.png',bbox_inches='tight',pad_inches=0)

tight_layoutを使って。

fig.tight_layout()
fig.savefig('FIGURE/test3.png')

ちなみにpyplotからplt.savefigにしても違いはない。

1個目。

test1

2個目。

test2

3個目

test3

 

というわけでbbox_inchesを使っておけば問題ない。

むしろtight_layourt()の方がラベルサイズとか揃ってないプロットにはよくなさげ。画像の全体サイズを合わせたいならこっちだけど。

下のように軸の高さ・幅を抜いて割らないとってなぜか最初に思ってたんだけど、別にそんなことはなかった。

width = ax1.figure.subplotpars.right-ax1.figure.subplotpars.left
height = ax1.figure.subplotpars.top-ax1.figure.subplotpars.bottom
ax1.figure.set_size_inches(4/width,4/height)

まあ、あとで何かに使えるかもしれないし、一応載せておく。任意の長さに軸サイズを調整したいって時なんかに使えるのかな。

うん、久しぶりにちょっと意味不明な投稿だ。

関連記事

1. pythonのまとめ

D

en_US English ja 日本語 zh_CN 中文

python3でnanが入ってるデータを取り使う場合

生データにnanが入ってるってことはそれなりによくある。

nan入っててもそのまま処理してくれたり、nan_policyとかを手動でセットすればオーケって場合は楽なんだけど、そうでない場合もあって結構めんどくさいことも。

それでどうするかっていうと、まあ状況によってnanを0にしたり、infにしたり、周りの値の平均値にしたり、含む行を削除しちゃったり、などなど。

numpyのndarrayにnanがいる場合

データは2列複数行のndarray。

isnan()でnanの場所を探して書き換える。

data[i][np.isnan(data[i])]=0
data[i][np.isnan(data[i])]=np.inf

など。

同じくisnan()で探して含む行を削除する

こうやってanyを使って抽出するってのが一番シンプル? 文字数も少ないし。

data[i]=data[i][~np.isnan(data[i]).any(axis=1)]

deleteを使って書くならこんな感じかな? データによって少し変える必要があるかもしれないが。私のは2列目にnanが入ってるのでこう書いた。

 data[i] = np.delete(data[i],np.where(np.isnan(data[i][:,1])),axis=0)

今の所はこのくらい。

pandasとか他の形式で扱うことがあったら追記する。

関連記事

1. pythonのまとめ

D

en_US English ja 日本語 zh_CN 中文

python3を使ってx軸が角度の2列xyデータで、角度をずらして取り扱う

ちょっと、いやかなりタイトルが微妙。

やりたかったことは、xyデータのx軸が0−360度のデータなんだけど、元々のデータセットだとピークが見にくいので90度ずらしたいというだけ。つまりは下図。わかりやすい日本語タイトルが思いつく人間になりたい。

プロット

データ。

1 100
2 200
3 400
4 1000
… …
360 80

てな感じの360行。

スクリプト。

filenames = tkfd.askopenfilenames(filetypes= [("all files","*"),('text','*.txt'),('text','*.dat')], initialdir='./DATA')
for i in range(len(filenames)):
  data[i] =np.loadtxt(filenames[i],comments='#',skiprows=1)
  basename[i] = os.path.basename(filenames[i]+str(i)+'.txt')
#データの並び替え。ここでは90度ずらしてるけど何度でもいい。角度を変えたらあとのfor文の長さも修正する。
  data[i][:,:]=np.vstack((data[i][90:360,:],data[i][0:90,:]))
#X軸の修正。ベターな書き方ありそう。
  for j in range(90):
    data[i][269+j,0] = 360+j
  plt.plot(data[i][:,0],data[i][:,1],'x',ms=10)
  plt.savefig('./FIGURE/HERMANS/'+'Dataprocess'+str(i)+'.png',bbox_inches='tight')

という感じ。

関連記事

1. pythonのまとめ

D

en_US English ja 日本語 zh_CN 中文

python3のmatplotlibで散布図作製

plotでプロットするだけ。特に注意事項もないので、スクリプトだけ。

#描画設定
plt.rcParams['font.family']='Arial'
plt.rcParams['font.size']= 14
plt.rcParams['axes.linewidth']=2.5
plt.rcParams['xtick.major.width']=2.5
plt.rcParams['xtick.labelsize']=14
plt.rcParams['ytick.major.width']=2.5
plt.rcParams['ytick.labelsize']=14
plt.rcParams['figure.figsize']=(4,4)
#x、y軸の値。今回は文字列に対してプロット
Title = ['x1','x2','x3','x4','x5','x6']
y1 = np.array([-0.31,0.63,0.80,0.38,-0.72,-0.69])
y2 = np.array([0.87,0.51,0.38,0.54,0.83,0.11])
y3 = np.array([0.10,0.18,-0.19,0.15,-0.16,-0.14])
#今回はsubplotで
fig, ax1 = plt.subplots()
#plotでプロット
ax1.set_ylabel('explanation of y-axis',fontname='Arial')
ax1.plot(Title,y1,marker='v',ms=11,color='orange',fillstyle='none',linestyle = 'None')
ax1.plot(Title,y2,marker='D',ms=9,color='g',fillstyle='none',linestyle = 'None')
ax1.plot(Title,y3,marker='x',ms=9,color='m',linestyle = 'None')
#軸などの微調整
ax1.tick_params(axis ='x', which ='both', top='off',bottom='off', pad=10)
plt.xticks(rotation =70)
plt.yticks([-1.0,-0.5,0,0.5,1.0])
plt.ylim(-1,1)
fig.tight_layout()
fig.savefig('FIGURE/test.png')
plt.savefig('FIGURE/'+'orig.png', bbox_inches='tight')
plt.show()
plt.clf()

という感じで、プロットはこんな感じ。

散布図

おしまい。

関連記事

1. pythonのまとめ

D

en_US English ja 日本語 zh_CN 中文

python3を使って二つの複数列テキストデータを一つにまとめる

DATA1

x y z
0 100 0.5
1 158 0.3
2 204 0.6
3 255 0.4

DATA2

x y z
1.5 178 0.1
2.5 222 0.0
3.5 301 0.1
4.0 347 0.7

こんな感じの複数列データの二つのファイルをx軸に合わせて一つのファイルに合成(マージ)って、一部界隈ではやる必要があることがある。普通はx軸がこんなシンプルじゃないし、各データの信頼性やらデータポイントの数なんかを考慮しながら混ぜる必要があったりするんだけど、今回の投稿はただ単純にくっつけるだけのもの。

importはtkinter, numpyそれからmatplotlibくらい。

tkinterで2列テキストデータをnumpyのarrayに読み込み

argvでもいいし、なんだっていいけど私はtkinterを使ってる。一応ここでは二つのデータファイルだけ読み込んで混ぜる設定。たくさん一気に混ぜたいなら、全部読み込んで混ぜるデータを間違えないように気をつけて書けばいいだけ。

tk = Tk()
tk.withdraw()
print ('select a data files')
filenames = tkfd.askopenfilenames(filetypes= [('text','*.dat'),('all','*.*')], initialdir='./DATA')
tkms.showinfo('file paths are',filenames)
tk.destroy()
data = [0]*len(filenames)
Y_RAW = [0]*len(filenames)
for i in range(len(filenames)):
  data[i] = np.loadtxt(filenames[i],comments = '*',encoding='Shift-JIS',skiprows=36)

内部リンク: pythonのtkinterを使ってユーザー入力を取得する方法

concatenateでテキストデータの重ね合わせ

numpyのconcatenateを使って各列のデータをくっつける。スケールをつける必要があるなら、どっちかのデータを単純にかけるなり、合成範囲での強度平均で割ったりすればいい。端にエラーデータを含む場合なんかは、data[1][3:-3,1]なんて感じで削る。

Mergey = np.concatenate((data[0][:,1],data[1][:,1]),axis=0)
Mergex = np.concatenate((data[0][:,0],data[1][:,0]),axis=0)
Mergez = np.concatenate((data[0][:,2],data[1][:,2]),axis=0)

swapaxesを使って元のデータ形式に戻す。こんなことしないでも直接混ぜれるかもしれないけど、書いてた時には他の方法だとうまくいかなかったんだよね。

Merge = np.swapaxes(np.vstack((Mergex,Mergey,Mergez)),0,1)

2021・1月13日追記:よくよく考えないでも、この例だったらvstackで直接混ぜれるよなっていう。なにかしらconcatenate使った理由はあったと思ったんだけど、もともとのスクリプトが見つからなかったから謎。

 Merge =np.vstack((data[0],data[1]))

X軸の並びに揃えたいなんて場合はargsortでも使って……

Merge = Merge[Merge[:,0].argsort(),:]

plotするなら……

plt.plot(Merge[:,0],Merge[:,1],ls='--')
plt.show()

saveするなら……

np.savetxt('TEXT/'+'Merged.txt',Merge)

と言う感じで混ぜれる。

 

関連記事

1. pythonのまとめ

D

en_US English ja 日本語 zh_CN 中文

2020年の終わりに1年を振り返って

世界中がコロナ禍に陥った2020年。

ご多分に漏れずコロナのことしか覚えてないし、ほとんど何もしていない1年だった。もちろんそうなってしまったのはしょうがないかなって気もするんだけど、こういう普段通りじゃない1年を上手に過ごせる人ってのはきっといい一生を送れる人なのだろうなって、なんかそんな気がする。

特に書くこともないんだけど、一応絞り出して2020年の私的5大ニュースを備忘のために書いておこう。

1 在宅ワーク(Work from home!!)

日本の人も世界中の人もしているように、ほぼ全ての仕事が在宅ワークになった。もともとコンピュータワークがほとんどの解析系だったこともあり、仕事としてはほとんど問題なかった。
ただ、私は注意欠陥系の気質なので集中力が職場よりも長持ちしないってことで、個人的にはオフィスワークでも職場に通う方が仕事は捗っていたかなって印象。

実験以外のほとんどの全てがオンラインで済ませられるってのはなかなかに面白い発見だった。オンラインセミナーはもちろん、gathertownとかいうのを使って、オンラインのポスターセッションをしたのは今年のハイライトの一つだったかと思う。

2 嫁Xの就活

嫁さんの話だけど、コロナ禍を精力的に乗り切った一人。オンラインも対人も上手にやりくりして、インタビューをいくつかこなした。結果二つのオファーの中から、望みの研究所に就職を決めた。研究活動再開、おめでとう!

3 息子のL君の成長

いつの間にやら中国語ぺらぺらになって、フィンランド語もほぼ理解している。私が無口なもんだから日本語はイマイチだけど、少しずつ成長中ではあるかな。

立体パズルが上手だったり、意外と絵心があったりして、顔は私に似てるんだけど、能力は嫁に似てるのかなあ、なんて思ったりする2020年だった。

3 任天堂スイッチ購入

引きこもり生活ってことで嫁とゲームを購入。あつ森、ディアブロ3、ダークソウルリマスタード、リングフィットアドベンチャー辺りでかなりの時間を楽しんだ。

息子のL君がすでにゲームにハマりつつあるーーバランスゲーム『のアートオブバランス』に中毒気味。4歳前くらいの子供でもかなり上手にできるので、3歳くらいの子供なら余裕でいけると思う。

4 新しいX線装置のトレーニング

2019年に結構力を入れた新しいX線装置の購入。

内部リンク: 科学装置購入の事前情報収集のための企業訪問

コロナのせいで延期に延期されたんだけど、ようやく大学にインストールされた。大きな装置なので購入企業から五人に装置トレーニングがパッケージに含まれていて、そのトレーニングを受けてきた。

詳細は省くけど、新しいX線装置はとてもいい。コマンドマクロこそちょっとオールドファッションなSPECで書かないといけないけど、シンクロトロンや中性子を使い慣れてば問題ない。サンプルをセットしたらデータ取得はほとんどオート。データ処理はほとんどデータを取る時に済ませることができるし、バックグラウンド処理、解析のソフトも優秀。

このくらいの装置が大学でphdやってた時とかにあったらよかったなあってすごく思うけど、当時では無い物ねだり。まあ時代の発展ってのはそういうものなんでしょうねえ。

 

……という感じで、大きな出来事の少ない落ち着いた2020年でした。2021年は人生の大きな決断をする年になりそうだけど、まあもうちょっと自分の人生を楽しめるような雰囲気になるといいかなって思っていたりします。

それではみなさま良いお年をお迎えください。

Wish happy New Year for all of you!

D