PsychoPy: 色彩輝度計 PR-655が動作しない

2023/6/15修正

 PsychoPyで輝度や色を正確に呈示するにはキャリブレーションが必要です(モニターセンター)。輝度だけなら普通の輝度計、色彩輝度計で大丈夫ですが、色度を調整するには分光輝度計が必要です。PhotoResearch社のPR-655は世界的に広まったPR-650の後継機種で、すでに発売後かなりたっています。PsychoPyはPR-650, 655の両方をサポートしているのですが、PsychoPy3になってからPR-655を認識してくれなくなりました。MacもWindowsも同様です。古いPsychoPyで測定して結果を移行することも可能ですが面倒ですね。【2022版まで】

  PR-650/655の制御は、psychopy/hardware/pr.py で行われます。(Macの場合、/Applications/PsychoPy.app/Contents/Resources/lib/python3.8/psychopy/hardware/pr.py など)【2022版まで】

正常動作していた PsychoPy2のpr.pyを見ると、# for PR655 have to send individual chars ! :-/ と書かれています(sendMessage メソッドの定義)。PR655クラスはPR650クラスを継承していますが、以前は独立していたsendMessageメソッドが共用にされ、一文字ずつではなく文字列ごと送る形になってしまっています。そのため、PR-655が命令に応答せず、PsychoPy3がPR-655を見つけられないという結果になっています。 【2022版まで】

 そのため、解決するにはpr.pyのPR655クラスにsendMessageメソッドを新たに定義し、一文字ずつ送ればいいと思われます。実際、PsychoPy 1.90.3からsendMessageメソッドをコピペしてやるとうまく動きました。(ただし、最近はPY3の定義がなくなったので if PY3: の行は消してインデントを修正しておきます。) ペーストする位置は、class(PR655)の中のdef startRemotyeMode(self): の直前です(バージョンによるかもしれないですが355行あたり)。【2022版まで】

 

ここで公開はできませんが、ぜひ試してみて下さい。 

テスト用コード

  テストのためにいちいちモニターセンターを使うのは面倒なので、テスト用のスクリプトを使います。まずはこれと修正版のpr.pyを同じフォルダに置いて、PR-655を繋いでから実行してみて下さい。デバイス名は状況によって異なるかもしれません。Macならls /dev でそれらしいのが見えますが、WindowsではCOM3とかCOM4になりそう。(hardware/__init.py内にあるgetSerialPorts()のコードが参考になります)【2022版まで】

	
	from pr import PR655
	# Port name may vary across systems
	myPR655 = PR655('com3')
	# myPR655 = PR655('/dev/cu.usbmodem14301')
	myPR655.measure()
	myPR655.endRemoteMode()
	print('Lum=',myPR655.lastLum)
	print('[x,y]=',myPR655.lastXY)
	 

 これが動いたら、もとのフォルダに戻して、モニターセンター経由で使ってみます。

 【2023版】輝度計の扱いが一新され、PhotoResearch対応はプラグインになりました。輝度計を選ぶところでget moreを選ぶと、プラグイン選択画面に移行します。そこでInstallボタンを押せば良いのですが、かなり時間がかかり、途中でエラーが出たりしました。何度かPsychoPyの再起動とインストールを繰り返しているうちにうまくいったようで、以降、PR655がすんなり認識されてキャリブレーションできています。

 なお、上記の方法で得たガンマ測定の結果をそのまま使うと、ガンマ補正でエラーになり落ちてしまいます。2003.1以降で再測定した方がいいでしょう。


Top

PsychoPy Main

Ashida Lab