Change History 2023#

Author

Yasuhiro Inamura

Last Update

May 01, 2024

4.0.231224 or later#

Dec 24 2023

[bugfix:Utsusemi-SAS:devI0Lam] The issue that mask does not work in I0Lambda correction(2). (DATA_RDCT-259 空蟬4:大観I0Lambda補正でマスクが効かない)

Dec 23 2023

[bugfix:Utsusemi-SAS:devI0Lam] The issue that mask does not work in I0Lambda correction. (DATA_RDCT-259 空蟬4:大観I0Lambda補正でマスクが効かない)

Dec 19 2023

[update:Utsusemi:4.0] Add new WiringInfo and mask file for new detectors in BL14

Dec 19 2023

[update:Utsusemi:4.0] Add new WiringInfo, DetectorInfo and mask file for new detectores in BL14

Dec 11 2023

[bugfix:Utsusemi:4.0] The issue that PowderSQE uses wrong type (CT9) of proton current instead of CT8Neutron.

PowderSQEが内部でGetDataOfMonochroEi3を呼び出す際に、isCT8nの引数を省略していた結果、BaseCommandsInEla::GetDataOfMonochroEi3のデフォルト値”isCT8n=False”が使用されていた。 PowderSQE内では、明示的に”isCT8n=True”を与えるようにした

GetDataOfMonochroEi3(runNo, Ei, deltaE, Erange, TimeSlice, MaskFile, NormFactor, isCT8n=True, TimeDepBack=TimeDepBack)
Dec 4 2023

[bugfix:Utsusemi:4.0] The issue that the sample rotation message in M2Plot+ plot of sliced data from VisualContM are not suitable.

DATA_RDCT-258 空蝉4:VisualContMからの2Dプロットのコメントに問題

VisualContMでの試料情報のうち回転に関する情報が、データスライスしてM2Plot+の2Dプロットしたときに、プロット上のコメント文に正しく反映されない問題に対応した。

Nov 20 2023

[update:uGao:master] Remove the scroll bars in the plane slice panels.

DATA_RDCT-249 夕顔:SliceViewer3Dの高度化

使用頻度がほとんどなかった各軸のスライスパネル(Slice Plane Group)に付属していたスクロールバーを無くした。

  • Ax1-Ax2スライスにおけるzscroll bar、Ax2-Ax3スライスにおけるxscroll bar、Ax3-Ax1スライスにおけるyscroll barを削除

  • updateScrollbarRange関数自体のコメントアウトと、それを呼び出している部分をコメントアウト

見た目もスッキリ。 これらのGUIをなくす副産物として、macOSで崩れていたレイアウトが崩れなくなった。

Nov 3 2023

[update:Utsusemi:4.0] Update compiling scripts on macOS with AppleSilicon

  • zlibを使用できるようにするため、00build_dep.shにzlibをインストールするように追記し、Makefile.py3.macを書き換えた

  • コンパイル時に使用する環境変数UTSUSEMI_REVがgit logの最新更新日付となるように03compile_utsusemi.shを書き換えた

Oct 4 2023

[update:Utsusemi:4.0] Add new functions into UtsusemiD4Matrix2 to export and import the data set of a angle as ElementContainerMatrix

DATA_RDCT-230 空蝉4:D4Mat2Slicer要望・バグ2023

d4m, d4mzファイルからある角度のデータをElementContainerMatrixとして取り出し、戻す(強度を入れ替える)ための関数を作成した。

  • ExportDataAsEcm

    • 空のElementContainerMatrixとインデックスを与えることで、特定の角度のデータを取り出す

    • ElementContainerMatrixには一つの-Arrayがあり、その中に全ピクセルのElementContainerが含まれる

  • ReplaceIntensityWithEcm

    • 強度を変更したElementContainerMatrixとインデックスを与えることで、特定の角度の強度・エラーデータを入れ替える

  • PutNumOfAngles

    • 角度の総数を返す

    • インデックスはこの範囲内にある必要あり

    • なお角度はPutLabelsOfImportedEcmで取り出す(strのvector)ことができる

サンプルコード

UD = mu.UtsusemiD4Matrix2()
UD.LoadData(loadfile)

labels_v = UD.PutLabelsOfImportedEcm()

for i in range(labels_v.size()):
    print("{} : {}".format(i, labels_v[i]))
    ECM = Manyo.ElementContainerMatrix()
    if UD.ExportDataAsEcm(ECM, i):
        ECM.MulMySelf(0.001)
        UD.ReplaceIntensityWithEcm(ECM, i)
    del ECM

UD.SaveData(outfile, True)

del UD
Sep 26 2023

[bugfix:Utsusemi:4.0] Fixed typo of UTSUSEMI_KEY_ENERGYTRANSFER

Sep 22 2023

[update:Utsusemi:4.0] Add the function to D4Mat2Slicer to export (dump) all S(Q1, Q2, Q3, hw) data into a text file.

DATA_RDCT-230 空蝉4:D4Mat2Slicer要望・バグ2023

D4Mat2SlicerにS(Q1, Q2, Q3, hw)の全データ点(スライス前)をテキストファイルにダンプする機能を追加した。

GUIの最下層にあるコンボボックス”Data Conversion”に”DumpAsText”という項目を追加し、書き出すようにした。 ただし、Projection以降のデータのみ。

出力フォーマットはカンマ区切り。値は以下の通り。

ax1, ax2, ax3, ax4(hw), Intensity, Error
Sep 8 2023

[bugfix:Utsusemi:4.0] Fixed the typo, wrong variable names, wrong module names and moved import to the top of code, which are detected by the VS code.

VS codeで見つけたいくつかのバグを修正した。

  • モジュール名の統一(Manyoモジュールは”Manyo”など)

  • 使用する変数名のTypo

  • importをコード先頭に(PEP8)

  • 一部の不要なコードのコメントアウト

Sep 8 2023

[bugfix:Utsusemi:4.0] Fixed typos, wrong variable names and move import to the top of the code. These are detected by VScode.

4.0.230907 or later#

Sep 7 2023

[bugfix:Utsusemi:4.0] The issue that a part of the data reduction information in the saved d4m/d4mz file and sometimes core dump happens on loading saved d4m/d4mz.

DATA_RDCT-230 空蝉4:D4Mat2Slicer要望・バグ2023

問題1:連続回転測定の処理でExecute実行すると以下のWarning (UtsusemiWarning) が出現

  • これは保存時にプルダウンの情報が保存されていなかったためなので、UtsusemiD4Matrix2::SetD4MatDataReductionInfoでその情報を与え

るようにした
  • 同時にSetD4MatDataReductionContinuousAddRunNoの実行場所もおかしい(最後のRunNoしか反映されない)ので修正した

問題2:保存済みのd4m/d4mzを読み込む際にコアダンプが発生する

  • これはd4mファイルに保存されるコンテナのヘッダ情報(Manyo::HeaderBase)を読み込む時にコアダンプが発生する

  • ヘッダ情報はDumpToString()でテキスト化して保存し、InputString()で読み込んでいるが、Stringのヘッダ情報においてコンテンツが空だと読み込み時に正しく処理できずコアダンプとなる

  • 今回は”D4MAT2DRSCRIPT”がキーとなる、データリダクションの外部スクリプトの指定が空だったことが原因

  • そこで、UtsusemiD4Matrix2::SetD4MatSetDataReductionOptionsで引数のstringを与える際に、空の場合はヘッダ情報を作成しないように

した
  • 将来的には空のヘッダ情報があったときに、何か特別な文字列を使うなどして空でも問題ないようにすべきか(万葉ライブラリ)

Sep 4 2023

[update:manyo:0.3.4] Improve the DoubleBinArrange to ignore small differences on comparing between double values.

DATA_RDCT-254 空蝉4:SaveDataToDAVEgrpでの出力にバグ?

ElementContainer::Averagingでは内部でDoubleBinArrangeを呼び出す。 Binningの切り直し(いわゆるRebin)を行う際、ほぼ同じbinでrebinningした際に、bin値が浮動小数なために算出方法の違い(誤差)の影響を受け、同じ値を意図しているにも関わらず、オリジナルのbinと与えたbinの間に非常に小さな差分が生じ、その微小な差分を用いてRebinのエラー計算が行われる。実際には両者の割合(CPercent)によってエラー値を分配する。 その結果、微小な面積の寄与が生じるbinの位置では強度は等しいがエラー値が非常に大きくなる現象が生じる。

よって、微小なbinの差を無視するように内部で調整し、微小な差の場合は同一と見なすようなコードを加えた。

  • 一つ一つのDouble値はDBL_EPSILONの値のエラーを持つと考え、rebin時のbinの数だけそのエラーが積算される(DBL_EPSILON * SourceBinNumber)

  • エラーの計算にはoribinal binと与えたbinの大きさの割合(CPercent = WidthMin / OrigWidthMin)が使用されるので、この演算における上記エラーの寄与を算出(_eps)

  • 割合が1 +- _epsもしくは、0 +- _epsの場合はそれぞれ1, 0とするようにコードを作成

Sep 1 2023

[bugfix:Utsusemi:4.0] The issue that a part of the data reduction information in the saved d4m/d4mz file of D4Mat2Slicer is lost.

DATA_RDCT-230 空蝉4:D4Mat2Slicer要望・バグ2023

d4m(非圧縮)で保存したデータを読み込んで d4mz(圧縮)で保存すると、Data Reduction情報の一部(RunListやマスク、検出機補正など)が再現されない問題に対処した。

調査の結果、d4m, d4mzに関わらず、データを読み込んで直後に保存すると、保存したファイルから一部のData Reduction情報が欠けるということであった。

結局、D4Mat2Slicer::OnSaveDataの実行時に、UtsusemiD4Matrix2のインスタンス経由でDataReduction情報を適切に与えるメソッドを実行するだけ。

  • コメントアウトされていたSetD4MatDataReductionStepByStep系列を復帰

  • StepByStepモード時にSetD4MatDataReductionOptionsを実行するようにした

  • Continuousモード時に以下のメソッドを実行するようにした

    • SetD4MatDataReductionContinuousClearRunNo

    • SetD4MatDataReductionContinuousAddRunNo

    • SetD4MatDataReductionContinuousSetDeviceEncode

    • SetD4MatDataReductionContinuousSetAnglePerEncode(DeviceEncodeと排他処理)

    • SetD4MatDataReductionOptions

Aug 30 2023

[bugfix:manyo:0.3.4] The issue that MlfDetectorEfficiencyCorrection::MakeApproximateData does not make the data file with the correct format

MlfDetectorEfficiencyCorrectionで補正値の近似的なマトリックスデータ作成機能において、EfとThetaの領域保存などの情報を、正しく読み込めないフォーマットで保存するようになっていたのを修正した。

Aug 30 2023

[bugfix:Utsusemi:4.0] The issue that None value returns from Cmm::IntegPixels function

Aug 30 2023

[update:Utsusemi:4.0] Update the data files for the detector efficiency correction at AMR(2)

検出器効率補正に必要な、検出器のガス構成を以下のものとしてパラメータをより正しいと思われるものにした。 前回のファイル作成に使用したコードに問題があり、それを修正して新たに作り直したもの。

Aug 29 2023

[update:Utsusemi:4.0] Update the data files for the detector efficiency correction at AMR

検出器効率補正に必要な、検出器のガス構成を以下のものとしてパラメータをより正しいと思われるものにした。

P_3He = 9.6 [atm]
P_CF4 = 0.32 [atm]

3Heが1molあると考えるとCF4はガス分圧から0.03333333mol存在する。

3He = 3.0160293191 [g]
C = 12.011 [g/mol] * 0.03333333 [mol] = 0.400366666 [g]
F4 = 18.998403 [g/mol] * 4 * 0.03333333 [mol] = 2.5331203975 [g]

結果のweight_ratio
3He = 0.5069368877807513
C = 0.06729398505911152
F = 0.42576912716013715
Aug 25 2023

[update:Utsusemi:4.0] Update D4Mat2Slicer to use uGao::SliceViewer3D, and small bugfix

以前可能だったようにD4Mat2Slicerから3軸(x, y, z)を指定して、SliceViewer3D(”3D Slice”ボタン)で表示できるようにした。

ただし、環境によってはできない(SliceViewer3Dが起動しない)場合もあるので、D4Mat2Slicer起動時にチェック(import uGao.SliceViewer3D)を行い、エラーがなければ”3D Slice”ボタンでSliceViewer3Dが起動し、使用できない場合はmdbファイルを作成して保存するようにした。

あと、”Slicing”での”Plot Axis”での指定で”z-axis”を選択してXtalParamやd4mファイルを保存して読み込んだ時にエラーが出るのを修正した(軸に”z”が含まれると対応できなかった)。

Aug 25 2023

[update:Utsusemi:4.0] Improve the way to use MlfArraySlicer::CutAlongY in SaveDataToDAVEgrp

Aug 22 2023

[update:Utsusemi:4.0] Revise some python codes to apply to PEP8(3)

PEP8に従うようにpython-utsusemi/scripts/以下のコードを修正した。

$ pycodestyle --ignore=E501,E722
$ autopep8 --ignore=E501
Aug 22 2023

[update:Utsusemi:4.0] Revise some python codes to apply to PEP8(2)

PEP8に従うようにpython-utsusemi/ana/Reduction/以下のコードを修正した。

$ pycodestyle --ignore=E501,E722
$ autopep8 --ignore=E501
Aug 22 2023

[update:Utsusemi:4.0] Revise some python codes to apply to PEP8

PEP8に従うようにpython-utsusemi/vis/以下のコードを修正した。

$ pycodestyle --ignore=E601,E722 python-utsusemi/vis/*.py
Aug 17 2023

[update:uGao:master] Add functions to choose parameter files by the given run number, and to load the Manyo Data Binary format file.

DATA_RDCT-248 EmakiDetectorViewerのPython3/PySide2化

  • 空蟬環境で”Open”ボタンを押すと挙動が変わり、RunNo入力するだけで適切なDetectorInfoやWiringInfoが選択される機能を復活

    • 空蟬4への移行に伴い、いくつかの環境変数の役割が変更になったため動作しなかったが、対応させた

  • “load data”時にSerialized dataだけではなく、ManyoDataBinaryも読み込めるようにした

  • PySide2でHigh resolution表示のための設定を追加した

Aug 10 2023

[update:uGao:master] Add the function to read text file.

DATA_RDCT-249 夕顔:SliceViewer3Dで汎用的なテキストファイルの読み込みを可能に

テキストファイルのデータを読み込んで表示などを行えるようにした。

フォーマット例

# BINS = 0.05, 0.05, 0.2
-1.72, -0.16, 0, 520.384, 112.688
-1.72, -0.12, 0, 512.619, 73.0792
-1.72, -0.12, 0.4, 342.704, 57.1156
-1.72, -0.12, 0.8, 273.46, 87.3586
...
  • 行の先頭の”#”はコメントアウト行、もしくはヘッダ情報を示す

    • ヘッダ情報のキー(“BINS”)があり、かつ”=”があれば各軸のbinとする

  • データは離散データ

    • データ軸は軸は特に整列していなくてもよいし、メッシュに区切ってなくても良い

  • データの記述はカンマ区切りで、<X>, <Y>, <Z>, <Intensity>, <Error>で表現する

主な仕様

テキストデータを各軸と強度、エラーでベクターに変換し、それぞれ”Vx”, “Vy”, “Vz”, “Intensity”, “Error”をキーとしてElementContainerに収める。 これをElementContainerArray, ElementContainerMatrixに収める。 なお、ElementContainerMatrixのヘッダに”SLICE3DBINS”として、テキストファイルのヘッダ情報のBINSを収めておく。 このElementContainerMatrixをそのままSliceViewer3Dの読み込みデータとして使用する。

Aug 9 2023

[bugfix:Utsusemi-SAS:4.0] The issue that ElementContainer treated by the SaveIqToText function occurs the error on plotting in MPlot with log axis.

DATA_RDCT-250 空蟬4:BL15でSaveIqToTextした際のMPlotエラー

以下のようなSaveXXX関数の内部で、与えられたデータ(ElementContainer)に対して、SetKeys(“Q”, “Intensity”, “Error”)を設定されていた。

  • Save1dDataToText

  • Save1dDataToSrlz

  • SaveIqToText

本来は”Lambda”に戻すべきなのに戻していなかったためにMPlot側でエラーとなった。それを修正した。

あと、ついでに、import Manyo as mm を import Manyo に置き換えた。

Aug 9 2023

[update:uGao:master] Add new function to slicing in order to append the sliced plot without elimination of the previous ones.

DATA_RDCT-249 夕顔:SliceViewer3Dの高度化

スライスした時に以前のスライスをそのまま残すような機能を追加。 これにより、同じ軸上に垂直なスライス面を複数表示できるようになった。

この機能を使用するために、各軸それぞれにチェックボックスと過去のスライス履歴の消去のボタンを加えている。

Aug 9 2023

[update:uGao:main] Restructure the code of ViewMainData::getDataInformation in SliceViewer to use the method of ElementContainer.(2)

DATA_RDCT-249 夕顔:SliceViewer3Dで汎用的なテキストファイルの読み込みを可能に

SliceViwer3D/View/ViewMainData.pyにおいて、ViewMainData::getDataInformation関数内でElementContainerのメソッドを複雑に利用してわかりにくい部分を単純にした。 また強度の範囲を求めるところで、ECAやECのマスクを反映するようにした。

Aug 9 2023

[update:uGao:master] Restructure the code of ViewMainData::getDataInformation in SliceViewer to use the method of ElementContainer.

DATA_RDCT-249 夕顔:SliceViewer3Dで汎用的なテキストファイルの読み込みを可能に

SliceViwer3D/View/ViewMainData.pyにおいて、ViewMainData::getDataInformation関数内でElementContainerのメソッドを複雑に利用してわかりにくい部分を単純にした。

Aug 9 2023

[update:uGao:master] Chenge the global variables which are not called from other methods to local ones in the method of ViewMainData::getDataInformation in SliceViewer3D.

SliceViwer3D/View/ViewMainData.pyにおいて、ViewMainData::getDataInformation関数ローカルでしか使用しない変数がグローバルに定義されているので修正。

Aug 9 2023

[bugfix:uGao:det_view] Revert ETS_TOOLKIT setting

[DATA_RDCT-248]traitsuiのバージョンが新しくてもETS_TOOLKITの指定として、 “qt”ではエラーが起こるので”qt4”に戻した。

Aug 9 2023

[update:uGao:det_view] Change ETS_TOOLKIT setting and version information

[DATA_RDCT-248] VTKのためのETS_TOOLKIT指定をqtに変更。 バージョン情報を変更。

Aug 3 2023

[update:uGao:slice_viewer] Revise README.md in SliceViewer3D folder

Aug 2 2023

[update:uGao:slice_viewer] Update README.md in SliceViewer3D folder

Aug 2 2023

[update:uGao:slice-viewer] Remove useless spaces at the end of lines.

Aug 2 2023

[update:uGao:slice_viewer2] Add SliceViewer3D/README.md about the environment SliceViewer works.

DATA_RDCT-110 夕顔SliceViewer3DのPySide2化

Ubuntu22.04とUbuntu20.04での動作環境の確認を行い、その環境について記述した。

Aug 1 2023

[bugfix:uGao:slice_viewer2] Fixed a small bug.

DATA_RDCT-110 夕顔SliceViewer3DのPySide2化

  • Focal point(視点中心)の座標入力時にエラーが出るのを修正

Aug 1 2023

[bugfix:uGao:slice_viewer2] Fixed many small bugs.

DATA_RDCT-110 夕顔SliceViewer3DのPySide2化

  • ツールバーの”Increase Horizontal Size”のTypoを修正

  • ツールバーの”Increase Horizontal Size”, “Increase Vertical Size”ボタンでエラーが出るのを修正

  • データファイル読み込みダイアログでBinary Fileで、mdbファイルを選択可能にした

  • 小数点以下の数値に対し大量の桁が入力欄に入るのを修正: str(x) -> “{:g}”.format(x)

  • IntensityのLog-Scaleの文字が欠けているのを修正

  • Log-Scaleで強度の最小値が0.0以下の時にエラーが出るので1e-7を与えて回避するようにした

  • データファイルを読み込んだ時の強度の最大値・最小値が正しく反映されるようにした

Aug 1 2023

[update:uGao:slice_viewer2] Update SliceViewer3D codes to work on Ubuntu 22 with PySide6 and pyqtgraph

DATA_RDCT-110 夕顔SliceViewer3DのPySide2化

Ubuntu 22.04 + PySide6(pip) + pyqtgraph(pip)の環境で動作するように改変した。

>>> pyqtgraph.__version__
'0.13.3'
>>> PySide6.__version__
'6.5.2'

確認した起動方法

$ cd uGao
$ python3 SliceViewer3D.py
$ python3
>>> import uGao.SliceViewer3D as SV
>>> p = SV.SliceViewer()
モジュール名の変更

PySide2及びPySide6では、QtGuiにあった多くのクラスがQtWidgetsに移動しているので、それに合わせて修正をした。 基本的にはQtGui.QPushButtonなどをQtWidgets.QPushButtonと置換するだけである。 なお、変更したリストは以下の通り。

QtGui -> QtWidgets
QApplication, QMainWindow, QVector3D, QFrame, QSpacerItem, QWidget, QHBoxLayout,
QScrollBar, QLabel, QGroupBox, QLineEdit, QPushButton, QStyle, QVBoxLayout, QTextEdit,
QGridLayout, QSizePolicy, QCheckBox, QRadioButton, QButtonGroup, QStatusBar,
QFileDialog, QMessageBox

変更不要だったのは以下の通り。

QtGui.QPalette, QtGui.QIcon, QtGui.QPixmap
モジュールのimport

QtCore, QtGui, QtWidgetsモジュールの読み込みも、pyqtgraph.Qtからではなく、PySide2, PySide6から得るようにした。

アイコンのパス

uiファイルに記載のあるアイコンのパスでは、特定の場所から起動しないとうまく見つからないので、アイコンの設定だけ別途行うようにした。

App実行

PySide2とPySide6でapp.exec_()か、app.exec()かで異なるのに対応。

Jul 31 2023

[update:uGao:det_view] To use boostXmlParser

[DATA_RDCT-248] XMLパーサーをMiniXmlParserからboostXmlParserにするための変更を適用

Jul 31 2023

[update:uGao:det_view] To use QApplication.screen instead of qApp.desktop

[DATA_RDCT-248] qApp.desktopからscreenへの変更対応の追加

Jul 31 2023

[update:uGao:det_view] To use QApplication and QApplication.screen instead of qApp and qApp.desktop

[DATA_RDCT-248] PySide2 5.15.0からQtWidgets.qAppがなくなったことへの対応

4.0.230719 or later#

Jul 19 2023

[bugfix:uGao:master] Fixed the issue that some functions of M2Plot+ do not work correctly with a log-scale axis mode.

DATA_RDCT-244 夕顔:M2PlotPlusにおける軸がLogスケールの場合の挙動

M2Plot+で軸がLogスケールだった時に以下の問題があるのを修正した。

  • マウス位置の表示(X, Y, Intensity)が正しくない

  • クリックしたマウス位置を利用している自動スライスプロット(X-Inteinsty, Y-Intensity)も正しくない

  • 強度や軸のログスケールが自動スライスプロットに反映されていない

## 原因と対応 マウスeventの位置情報が、軸がリニアスケールならeventの値をそのまま利用できるが、ログスケールでもリニアの値が戻ってくるため変換する必要がある。

  • 変換するための関数(D2Chart::CalcLogScaleValueFromEvent)を追加

  • 変換する関数をD2Chart::PutMousePointInfoで使用(マウス位置情報表示)

  • M2Plot+の自動スライス用関数にもこの関数を導入、ついでに自動スライスプロットのLogスケール対応。

Jul 14 2023

[update:Utsusemi:4.0] Improve parameters to calculate the detector efficiency for AMR.

Jul 14 2023

[bugfix:Utsusemi:4.0] The issue that that PowderSQE occurs the error(3).

先日BaseCommandsInElaに追加したPowderSQEでエラーを出す問題。

まだ四季の環境にのみ存在するファサード RadialCollimatorCorrec を利用していたのでエラー。 このファサードをBaseCommandsInElaに RadialCollimatorCorrecSIK で再登録し、それに合わせて SIK/facade/Cmm.pyも修正した。

Jul 14 2023

[bugfix:Utsusemi:4.0] The issue that PowderSQE occurs the error(2).

先日BaseCommandsInElaに追加したPowderSQEでエラーを出す問題。 内部でCmm.pyをimportするコードが残っており、エラーとなるのを修正した。

Jul 14 2023

[bugfix:Utsusemi:4.0] The issue that PowderSQE occurs the error.

先日BaseCommandsInElaに追加したPowderSQEでエラーを出す問題。 内部でDR.pyをimportするコードが残っており、エラーとなるのを修正した。

Jul 12 2023

[update:Utsusemi:4.0] Add Install.py to build and install Utsusemi software.

空蟬のインストールを簡便化するスクリプトを作成した。

manyo/do_make_Utsusemi.pyをベースに、debパッケージ用に作成していたMakefileを活用する形。

  • C++のビルドとインストール

  • Pythonコードのインストール(コピー)

  • 夕顔はいれず

$ python3 Install.py --prefix=/opt/mlfsoft/ install

4.0.230711 or later#

Jul 11 2023

[bugfix:Utsusemi:4.0] The issue that the projection treatment of VisualCont occurs the error.

DATA_RDCT-241 空蝉4:VisualContがProjection実行でエラー

以前にVisualContやD4Mat2Slicerなどで格子定数を収めるElementContainerのヘッダのキーを”SimpleLatticeConsts”から”SampleLatticeConsts”に修正したが、その影響によりVisualContのProjection処理でエラーを吐くようになっていたのを修正した。

VisualContQ.py, D4Mat2Slicer.py

内部で使用する”SimpleLatticeConsts”リテラルを全て UTSUSEMI_KEY_HEAD_SAMPLE_LATTICECONSTSを使用するように変更した。 また同様に”SampleUvec”や”SampleVvec”などのリテラルも変更した。

D4Matrix2

ElementContainerのヘッダから講師定数を取り出すときに”SampleLatticeConsts”がなく”SimpleLatticeConsts”が存在した場合の処理を加えた。

Jul 10 2023

[bugfix:Utsusemi:4.0] The issue that the compile fails on CentOS 7

Jul 10 2023

[bugfix:Utsusemi-SAS:4.0] The issue that the compile fails on CentOS 7

Jul 5 2023

[update:manyo:0.3.4] Add the header contents of the original ElementContainerMatrix to the result of AverageElementContainerMatrix

ElementContainerMatrixのデータをSumやAverageしてElementContainerを作成する関数で、ElementContainerのヘッダに-Matrixのヘッダ内容を付与するようにした。

SASのRPMTのGetMonHistSASの結果はAverageElementContainerMatrixの戻り値を利用しているが、この戻り値に実験そのものの情報(ECMのヘッダに色々含まれている)を含ませておけば、他の関数で利用できる。

Jul 3 2023

[bugfix:Utsusemi-SAS:4.0] The issue that import Manyo.SAS error occurs on the Utsusemi installed by debian package.

DATA_RDCT-239 空蝉4:Debianパッケージ mlf-utsusemi-sasでimport Manyo.SASがエラー

Makefile.objに含まれていないクラスに対してエラーが起きているようだ。Makefile.objを更新することで解決になるかどうかを試す。

4.0.230615 or later#

Jun 15 2023

[bugfix:Utsusemi:4.0] Fixed the typo of th definition in the XtalPram.xml

Jun 15 2023

[updaate:Utsusemi:4.0] Add the new facade PowderSQE produced by DR. R.Kajimoto

梶本氏提供による、非弾性散乱のPowder試料のデータ処理をヒストグラム化から各種補正を行う統合的なコマンドである。

def PowderSQE(runNo="0", Ei=0.0, deltaE=0.0, Erange="0.0 0.0", deltaQ=0.1, Qrange="-1.0 -1.0", TimeSlice="-1.0 -1.0",
              MaskFile="default", NormFactor=1000000.0, TimeDepBack="TOF:None",
              Vpath="/home/sikuser/user/template/vanadium_correction/", Vfile="None", VintegRange="All", VpixelRange="2:97"):
    Load EventData and convert to powder-averaged S(Q,E) with the vanadium correction. This includes:
    - GetDataOfMonoChroEi3(): convert to histogram
    - LadDataFromDump(): load vanadium data
    - RadialCollimatorCorrect(): correct intensity unevenness due to the radial collimator
    - ToPowder(): powder average
    """
    @param runNo    (string) Run Number(s) "<run1>[,<run2>,...]"(delimitor is comma or space)
    @param Ei       (double) Incident Energy [meV]
    @param deltaE   (double) Delta Energy Transfer [meV]
    @param Erange   (string) min and max of Energy Transfer [meV] "<min>,<max>"(delimitor is comma or space)
    @param deltaQ   (double) binning of Q
    @param Qrange   (string) min and max of Q "<min>,<max>"(delimitor is comma ro space)
    @param TimeSlice(string) start time and end time [seconds] "<min>,<max>"(delimitor is comma or space)
    @param MaskFile (string) file name for masking
    @param NormFactor (double) normalize factor data*factor/beamCurrent. if 0, do nothing.
    @param TimeDepBack (string) Subtruct time-independent-background "TOF:34000-36000" or "DARK:20717"
    @param Vpath    (string) path containing the vanaidum Manyo Binay (mdb) file
    @param Vfile    (string) name of vanadium Manyo Binay (mdb) file. If None, the vanadium correction is skipped
    @param VintegRange (string) Integrate range "All" or "<start>:<end>"
    @param VpixelRange (string) Pixel range to be used "All" or "<start>:<end>"
    @retval ECM     (ElementCotainerMatix)
    """
Jun 12 2023

[updaate:Utsusemi:4.0] Add the comment blocks to codes as method documentations and remove useless space charactor at the end of a line

DATA_RDCT-140 空蟬4.2:リファレンスマニュアル作成

いくつかのクラスのヘッダファイルに、メソッドのコメントを付与する作業を継続。クラス名のアルファベット順にコードを確認し、必要なコメントを作成した。

  • UtsusemiEventDataConverterNeunetWithPHDep.hhまで確認終了

  • 行末の余分なスペースもついでに削除

Jun 12 2023

[updaate:Utsusemi:4.0] Add the comment blocks to codes as method documentations and fixed small bugs.

DATA_RDCT-140 空蟬4.2:リファレンスマニュアル作成

いくつかのクラスのヘッダファイルに、メソッドのコメントを付与する作業を継続。クラス名のアルファベット順にコードを確認し、必要なコメントを作成した。

  • UtsusemiD4Matrix.cc UtsusemiD4Matrix2.ccでは一部戻り値がメソッドのコメントと不整合があったので修正

  • UtsusemiD4Matrix2.ccに一部の変数の初期化がされていなかったのを修正

Jun 12 2023

[updaate:Utsusemi:4.0] Add new method to calculate the power of the intensity on CalcContainers.

DATA_RDCT-238 万葉ライブラリ:ElementContainerに強度のべき乗処理追加

クラスUtsusemiCalcContainerに、べき乗も同時に計算するためのメソッドを追加した。

ElementContainerMatrix, ElementContainerArray同士の計算で使用可能である。

bool CalcContainers( ElementContainerMatrix* ret_ecm,
                     Double coef1, ElementContainerMatrix* ecm1, Double pow1, string ope,
                     Double coef2, ElementContainerMatrix* ecm2, Double pow2 );
    //!< Calculates faster between two ElementContainerMatrixs
    /*!< Formura : coef1*ecm1^(pow1) ["+","-","*","/"] coef2*ecm2^(pow2)
     *
     *   @param ret_ecm (ElementContainerMatrix) Empty ElementContainerMatrix which calculated result is set.
     *   @param coef1 (Double) coefficient for ecm1
     *   @param ecm1  (ElementContainerMatrix*) first ElementContainerMatrix
     *   @param pow1  (Double) power value for ecm1
     *   @param ope   (string) operator between ec1 and ec2 must be "+","-","*" or "/".
     *   @param coef2 (Double) coefficient for ecm2
     *   @param ecm2  (ElementContainerMatrix*) second ElementContainerMatrix
     *   @param pow2  (Double) power value for ecm2
     *   @retval true  succeeded
     *   @retval false failed

また、ファザード関数のCmm::CalcContainersに、 pow1 および pow2 の引数を増やし、

(coef1) * DAT1 ^(pow1)  operator (coef2) * DAT2 ^(pow2)

を計算できるようにした。

Jun 12 2023

[update:manyo:0.3.4] Add the function to calculate the power of the intensity of containers in ElementConainerArray and -Matrix

DATA_RDCT-238 万葉ライブラリ:ElementContainerに強度のべき乗処理追加

ElementContainerArrayおよび -Matrix に、 .Pow(double).PowMySelf(double) を追加し、内部のコンテナの強度のべき乗を計算できるようにした(当然エラーも計算)。

Jun 12 2023

[update:manyo:0.3.4] Add the function to calculate the power of the intensity of ElementConainer

DATA_RDCT-238 万葉ライブラリ:ElementContainerに強度のべき乗処理追加

ElementContainerに、 .Pow(double).PowMySelf(double) を追加し、強度のべき乗を計算できるようにした(当然エラーも計算)。

Jun 9 2023

[update:Utsusemi:4.0] Changes the default of the checkbox of save data with compress to ON.

Jun 8 2023

[update:Utsusemi:4.0] Changes the LLD values of all PSD in all WiringInfo files in AMR(BL14) from 560 to 900.

4.0.230606 or later#

Jun 6 2023

[updaate:Utsusemi:4.0] Add the comment blocks to codes as method documentations and remove useless space charactor at the end of a line

DATA_RDCT-140 空蟬4.2:リファレンスマニュアル作成

いくつかのクラスのヘッダファイルに、メソッドのコメントを付与する作業をした。とりあえず、クラス名のアルファベット順にコードを確認し、必要なコメントを作成した。

  • UtsusemiD4Matrix2.hhまで確認終了

  • 行末の余分なスペースもついでに削除

Jun 5 2023

[bugfix:Utsusemi:4.0] The issue that NxspeFileIO can not read the saved nxspe file correctly (Almost of data points are masked.)

NxspeFileIOを使ってnxspeファイルを読み込んだときに、ほぼ全ての数値にマスクがかかってしまう問題に対処。

読み込む際に数値が有限かどうかで処理を isfinite() を使用して分けていたが、trueとfalseの定義を逆に捉えていたため、ほぼ全ての数値がMASKVALUEとなっていた。 これを修正した。

Jun 5 2023

[update:Utsusemi:4.0] Unified the parameter formats for the time independent background correction between GetDataOfMonochroEi3 and GetNeunetHist

DATA_RDCT-235 空蝉4:時間非依存のバックグラウンド処理のパラメータ指定方法の統一

時間非依存のバックグラウンド処理の方法として、

  • GetDataOfMonochroEi3の引数TimeDepに”TOF:”で始まる値を与える

  • GetNeunetHistの引数BGInfoに”TIMEDEP:”で始まる値を与える

と、まちまちであったために一部で混乱を生じる。

GetNeunetHistのBGInfoは、さまざまなバックグラウンドの指定を想定しており、MonochroEi3のTimeDepとは包含関係が異なるため本来統一はしない方が良い。 しかし、現状BGInfoで想定される”TOF:”で始まるパラメータは特に想定していないため、”TOF”を時間非依存バックグラウンドのキーとして用いるのは悪くない。

逆に、GetDataOfMonochroEi3のTimeDepにも、TIMEDEPを用いることを可能として統一を図る。 また本来 “Time independent background” なので、TIMEINDEPも使用可能とする。

今回の結果、どちらの関数の引数も下記のフォーマットで統一的に与えることが可能となった。

  • “TOF:<tof1>-<tof2>”

  • “TIMEDEP:<tof1>-<tof2>”

  • “TIMEINDEP:<tof1>-<tof2>”

Jun 5 2023

[bugfix:Utsusemi:4.0] The issue that “Data Reduction Script” parameter on D4Mat2Slicer changes to “default” after loading the d4m data file.

DATA_RDCT-230 空蝉4:D4Mat2Slicer要望・バグ2023

D4Mat2Slicerで、d4mデータファイルを読み込むとデータリダクションのパラメータ(”Data Reduction Script”)が”Default”に戻る問題に対処した。

これはd4mデータファイルを保存時にすでにscriptの情報が記録されていなかったためである。 そこで以下のような修正を行なった。

  • UtsusemiD4Matrix2::SetD4MatDataReductionOptionsに新しい引数”script”を加えて内部のXMLファイルに情報を追記できるようにした

  • DataReductionパネルで”Set Parameters”を押した時に、Mask file, normFactor, TimeIndepBak, DetEffiなどと同時に、Scriptの情報を保存(設定)させるようにした

Jun 1 2023

[bugfix:Utsusemi:4.0] The issue of the invalid type of the argument of UtsusemiD4Matrix2::SetD4MatDataReductionContinuosSetAnglePerEncode

  • 連続回転測定のTrigNETイベントのカウンター値を実際の角度へ変換するパラメータを入力する関数の引数の型が間違っているのを修正

  • このパラメータのデフォルト値の指定が間違っているのを修正

  • いくつかのTypoの修正

May 31 2023

[update:Utsusemi-SAS:4.0] Add the description of RPMTSetMaskBy2Theta class in the code.

May 31 2023

[bugfix:Utsusemi-SAS:4.0] The issue that the histogram creation of RPMT with multi-runNos occurs the error.

DATA_RDCT-233 BL15:RPMT解析で複数のRunNoを与えるとエラー

RPMT解析で、複数のRunNoを与えるとエラーとなったのを修正した。

RPMTのヒストグラム化データ(ElementContainerMatrix)のヘッダに測定時刻情報を入れようとした時、RunNoが一つだけの場合しか対応できないコードだったため、エラーとなった。 複数のRunNoの時にも対応できるように修正した。

May 31 2023

[update:Utsusemi-SAS:4.0] Add new enable value d to the argument AxType of GetMonHistSAS

May 29 2023

[updaate:Utsusemi:4.0] Imporove the UtsusemiFilterTrignet::DumpTrigEventFile to write the time stamp (date and time) in the output file.

TrigNETのイベントデータを可視化するための、UtsusemiFilterTrignet::DumpTrigEventFileに対し、これまで出力ファイルに測定開始からの経過秒数しか書き出されなかったが、同時に絶対時刻も記載するように改変した。 この機能は、三つ目の引数isDecoratedがTrueの時に発現するようにした。

UtsusemiFilterTrignet::DumpTrigEventFile(string trig_file, string out_file, bool isDecorated)

なお、bool isDecorated = trueをデフォルトとした。

4.0.230526 or later#

May 26 2023

[update:Utsusemi:4.0] Update Doxyfile and DoxySwig file

May 26 2023

[updaate:Utsusemi:4.0] Add the comment blocks to codes as method documentations and remove useless space charactor at the end of a line

DATA_RDCT-140 空蟬4.2:リファレンスマニュアル作成

いくつかのクラスのヘッダファイルに、メソッドのコメントを付与する作業をした。

とりあえず、クラス名のアルファベット順にコードを確認し、必要なコメントを作成した。

  • C -> S (CaseInfoReaderBase -> ShamotoDymPDF) まで確認終了

  • ShamotoDymPDFに関しては一部のメソッドの引数部分を追加したり、Typoを修正

  • 以前に先行して進めていた UtsusemiHeader.hhも修正

  • 行末の余分なスペースもついでに削除

May 23 2023

[bugfix:uGao:master] The issue that the MPlot occurs the error when the old MPlot setting file ( made by python2 ) is loaded.

Python2時代に作成されたMPlotの設定ファイルをPython3のMPlotで読もうとするとエラーとなるため、対処した。

設定ファイルはPickleでdumpされているので、Pyshon2でpickle.dumpされたファイルはPython3では読み込めないため。

今回の修正により、pickle.loadしてエラーがある(例えばpickleではないフォーマットとか)場合は、デフォルト設定ファイルを作成し直す(上書きする)ようにした。

May 22 2023

[bugfix:uGao:master] The issue that the socket connection timed out error occurs again on macOS with arm64.

macOS上のAnaのVisualizeからMPlotやM2Plot+などを起動すると、下記の表記が現れプロットに失敗するのに対処した。

Error: timed out

この現象は、macOS上でCUIでMPlot, M2Plot+を起動する(ComQt::NewCommを使用する)と発生することがわかった。過去(230113)に発生しないと判断して機能を省くコミットを行っていたが、同じ問題は発生するようだ。

前回は、timeoutの時間を伸ばすことで対処してみたが、やはりダメだった。

よって、230113で行っていたコミットを元に戻すことにした。

May 22 2023

[bugfix:uGao:master] The issue that the socket connection timed out error occurs again on macOS with arm64.

macOS上のAnaのVisualizeからMPlotやM2Plot+などを起動すると、下記の表記が現れプロットに失敗するのに対処した。

Error: timed out

この現象は、macOS上でCUIでMPlot, M2Plot+を起動する(ComQt::NewCommを使用する)と発生することがわかった。過去(230113)に発生しないと判断して機能を省くコミットを行っていたが、同じ問題は発生するようだ。

今回は、timeoutの時間を伸ばすことで対処してみた。

#sock.settimeout(13.0)
sock.settimeout(30.0)
May 19 2023

[updaate:Utsusemi:4.0] Define new tag in CaseInfo to ignore the kicker in the range used for the conditions.

DATA_RDCT-227 空蝉4:TrigNETの仮想的時間原点方式におけるCase分類の範囲内のKicker無視

仮想的な時間原点を示すキッカーが、Case分類に使用するCounter範囲内に記録されていた場合に無視する、という設定を制御するCaseInfoのタグを定義し扱えるようにした。

新たに規定したタグと場所は以下の通り。

ignoreKickerInCondRange

<caseInfo>
  <Counters>
    <Counter>
      <ignoreKickerInCondRange>N</ignoreKickerInCondRange>
    </Counter>
  </Counters>
</caseInfo>

デフォルト(CaseInfoに無記載)の場合は、Yを意味するので、Counter範囲内のKickerは無視される。

May 18 2023

[updaate:Utsusemi:4.0] Add functions of D4Mat2Slicer to change the face color of the buttons to red while loading/saving the binary data on D4Mat2Slicer, to change the status of Load/Save buttons by the data reduction process.

May 18 2023

[bugfix:Utsusemi:4.0] The issue that some data reduction parameters change to default values after loading of the d4m, d4mz file

DATA_RDCT-228 空蝉4:D4Mat2Slicerのバグ

以下の問題に対応した。

圧縮データ読み込み時のDataReductionパラメータ異常

・その3
3-1. Executeでデータを生成
3-2. D4mat2 File ... でCompにチェックを付けてSave
3-3. 保存したd4mファイルを読み込む
3-4. SettingでDataReductionファイルを開くと、Other paramsのNormFactor、TimeIndepBackがデフォルト値に戻ってしまい、DetEffiが空欄になる
    (当然、XtalParamファイルを保存すると、これらの値もこうなっている)
(これも、3-2でCompにチェックを付けるのが必須の条件かどうかは分かりません))

原因調査

保存済みデータ内のXtalParamの時点で既にtimeIndepBackやdetectorEffiInfoの値がデフォルトになっていることがわかった。 よって問題は保存時にある。この現象はContinuousでもStep-by-Stepでも発生している。

timeIndepBackやdetectorEffiInfoの値は、”Execute”ボタンでData Reduction処理を進めた時に使用されるが、この情報がUtsusemiD4Matrix2クラス内のXtalParam情報に伝わっていなかった。

対策

DataReductionパネルで、”Set Parameters”ボタンを押したときに、UtsusemiD4Matrix2クラスにこのパネルにある情報を伝えるようにした。 これはtimeIndepBackやdetectroEffiInfoだけではなく、mode(Continuous rotation or Step-by-Step)の設定やGonioAtZero, Run-Angle List, DataReductionOptionなども同様で、”Set Parameters”ボタンを押すことで反映させるようにした。

May 18 2023

[bugfix:uGao:master] The issue that slice along X of the inelastic powder data causes core dump when the given lower value of Y range is below minimum of Y axis of the data.

DATA_RDCT-229 夕顔:M2Plot+でのX方向スライスでデータ下限以下の範囲指定で落ちる

Slice along Xで、Y範囲の指定において、データの下限以下の値を指定するとコアダンプする問題に対処した。内部のY軸のindexに対する問題。

May 17 2023

[bugfix:Utsusemi:4.0] The issue of the core dump of D4Mat2Slicer occurs on executing the projection and slice just after save of the compressed data.

DATA_RDCT-228 空蝉4:D4Mat2Slicerのバグ

以下の問題に対応した。

圧縮保存後の挙動の不備

・その2
2-1. Executeでデータを生成
2-2. D4mat2 File ... でCompにチェックを付けてSave
2-3. Projectionすると一瞬で終わる(プログレスバーが表示されず、ターミナルに出力されるCost of timeの値も0.003とかの非常に小さな値になる)
2-4. Sliceすると落ちる、または、M2Plotは表示されるが、真っ白
(こういう手順を践んだときに気がついただけで、2-1や2-2が必須の条件かどうかは分かりません)

問題点は、 D4MatOne::_compress1 関数内で、圧縮後に D4MatOne::_Allocate(0) が呼ばれていたことだった。 これはD4MatOneの内部の各種ベクトル(Energy, Intensityなど)を初期化するものであり、この _Allocate(0) が実行されることですべてのベクトルがEmptyとなってしまっていた。

なぜこの関数が呼び出されていたのかは不明、多分ミスだと思われる。

不安定要素の低減

内部で圧縮や展開時にテンポラリに使用する配列( _compbuf1 )をnewで作成して使用しているが、一部正しく削除できていないように見えたり、生成・消滅がわかりにくいので修正してみた。これで不安定要素がなくなるとも思えないが。

  • デストラクタでのdelete追加

  • deleteした時にはNULLを代入

  • newとdeleteを、同一関数内で処理するように書き換え

Projection時のエラーメッセージ

Projection時に問題が起きてFalseを返す際にエラーメッセージを表示するようにした。

May 17 2023

[ubdate:Utsusemi:4.0] Remove the preprocessor in UtsusemiD4Matrix2 code to ignore the function to treat the compressed data for Windows.

DATA_RDCT-218 空蟬4:Windows版D4Mat2Slicerにおけるデータ圧縮保存実装

UtsusemiD4Matrix2 のコードにて、圧縮データを作成・保存、読み込みの機能が発現しないようにしていた下記のプリプロセッサを省き、Windowsでも圧縮したd4mファイルを読み込み、保存できるようにした。

#ifdef _MSC_VER
May 17 2023

[update:Utsusemi:4.0] Change the extention of file name saved by D4Mat2Slicer with compression to “d4mz”

DATA_RDCT-230 空蝉4:D4Mat2Slicer要望2023

  • 圧縮保存時のファイル名の拡張子を d4mz にした。

  • 読み込み時には拡張子が d4m でも d4mz でも読み込めるようにした。

May 16 2023

[update:Utsusemi:4.0] Add the function to ignore the kicker signals in the range of the conditions to UtsusemiTrignetCounter.

DATA_RDCT-227 空蝉4:TrigNETの仮想的時間原点方式におけるCase分類の範囲内のKicker無視

仮想的な時間原点を示すKickerが、Case分類に使用する範囲内に記録されていた場合、無視するように改変した。

May 16 2023

[bugfix:Utsusemi:4.0] The issue that the partial imoprt of XtalParam info causes the change of Rotation info.

DATA_RDCT-226 空蝉4:D4Mat2SlicerでXtalParamを部分的に読み込むとRotation情報がおかしくなる

XtalParam.xmlを読み込んだ際、自動的にRotation情報がクリア( _rotateSteps.clear() )されるために、Rotation情報が消えることになる。このクリアコマンドをコメントアウトし、読み込んだXtalParamx.xmlにRotation情報が含まれている時のみクリアするようにした。

May 15 2023

[bugfix:Utsusemi:4.0] The issue that the work of normFactor on D4Mat2Slicer is not correct when normFactor value is ninus.

DATA_RDCT-225 空蝉4:D4Mat2SlicerでnormFactorに負の値を入れた場合の補正がおかしい

空蝉DataReductionの関数の引数で与えられるNormFactorは、本来の規格化をそのまま行うと強度が小さくなりすぎたりするため強度を割り戻すために使用される。 一方、指定した値で規格化したい場合には負の値を与えることでその絶対値で強度を割ることが可能である。

この機能が、D4Mat2SlicerのDataReductionパネルGUIでは挙動が異なる(負の値にしても効かない)ため、それを修正した。 これにより、D4Mat2SlicerのNormFactorに対する仕様も統一された。

May 8 2023

[bugfix:Utsusemi:4.0] The issue that the works are not correct when the number of “Start Angle” is different from that of “RunNo” on D4Mat2Slicer with the continuous rotation mode.

D4Mat2SlicerのDataReductionパネルで連続回転測定モードでは、複数のRunNoを与えることが可能であるが、同時にStart AngleにRunNo毎の値を入力する必要がある。仮に両者の数が異なると、数が少ない方に合わされ、余った情報は無視される。DataReductionパネルの”Set Parameters”ボタンを押した際に、両者の数が異なる場合にWarningダイアログを出し、パラメータを設定しないようにした。

May 8 2023

[update:Utsusemi:4.0] Add UtsusemiShell on App mode.

DATA_RDCT-222 空蟬4:Linux版アプリモード改良

Appモード時の環境をターミナル上で設定するのに、これまで

$ source /opt/mlfsoft/python-utsusemi/utsusemi/bin/_loadenv

と打つことにしていたが、その設定をアプリ化した。内部ではシンプルに、環境を設定して$SHELLを実行するだけである。 これで環境変数が引き継がれることがわかったので作成した。

#!/bin/bash

_DIR_="$(cd "$(dirname "${BASH_SOURCE:-$0}")"; pwd)"
source "${_DIR_}/_loadenv"

if [ $? -eq 0 ]; then
    $SHELL
else
    echo ;
fi
May 8 2023

[bugfix:Utsusemi:4.0] The issue that EnvironSetting in App mode occurs error on PySide6.5.0

DATA_RDCT-221 空蟬4:PySide6のバージョン6.5.0でエラー

AppモードのEnvironSetting (DlgSetUtsusemiEnv.py) で一部エラーが出るのを修正した。

May 2 2023

[update:Utsusemi:4.0] Update the Doxyfile used by latest version of sphinx and the DoxySwit40.i

May 2 2023

[bugfix:Utsusemi:4.0] The issue that some docstrings of UtsusemiHeader are not conveted correctly on Doxygen + Sphinx + breathe

UtsusemiHeaderのdocstringsの表記にミスがあり、正しく変換できなかったので修正した(ついでに不要な行末スペースが省かれた)。

Apr 30 2023

[update:Utsusemi:4.0] Improve App mode in Linux version

DATA_RDCT-222 空蟬4:Linux版アプリモード改良

  • アプリモードでターミナルからコマンド実行した際に環境変数UTSUSEMI_WORK_DIRをunsetするようにした

  • アイコンから呼び出すスクリプト(UTSUSEMI_WORK_DIR有効)を python-utsusemi/bin/_appsに作成した

  • Linux上(Gnome Desktop)にアイコンを作成するCreateGnomeDesktopAppsを改良
    • 実行パスをbin/_apps以下のスクリプトを指すようにした

Apr 30 2023

[bugfix:Utsusemi:4.0] The issue that EnvironSetting app causes TypeError launched on PySide6.5.0

DATA_RDCT-221 空蟬4:PySide6のバージョン6.5.0でエラー

空蟬のアプリモードにおける環境設定アプリが、PySide6.5.0で夕顔同様のエラーを出すため、修正した。

Apr 28 2023

[update:uGao:pyside650] Update some GUI codes to remove DeprecationWarming with PySide6

PySide6を使用していると起動時に以下のメッセージが出るので、それに対処した。

DeprecationWarning: Enum value 'QT::ApplicationAttribute.AA_EnableHighDpiScaling' is marked as deprecated

これは、Qt for Pythonのページに記述があったものである。

https://doc.qt.io/qtforpython/porting_from2.html

The High DPI scaling attributes Qt.AA_EnableHighDpiScaling, Qt.AA_DisableHighDpiScaling and Qt.AA_UseHighDpiPixmaps are deprecated. High DPI is by default enabled in Qt 6 and cannot be turned off.
Apr 28 2023

[bugfix:uGao:pysidt650] The issue that uGao software causes TypeError launched on PySide6.5.0

DATA_RDCT-221 空蟬4:PySide6のバージョン6.5.0でエラー

File "/opt/mlfsoft/python-utsusemi/uGao/M2PlotPlus.py", line 661, in __init__
super(M2PlotPlus, self).__init__(parent)
TypeError: object.__init__() takes exactly one argument (the instance to initialize)

この部分であるが、結局のところ、多重継承による初期化の失敗ということのようだ。

class M2PlotPlus(QtWidgets.QMainWindow, Ui_MainWindow):

上記のような多重継承の場合、__init__(parent)を行うとQMainWindowは引数(parent)を受け付けるが、Ui_MainWindowが受け付けないためにエラーとなったと考えられる。 実際、Ui_MainWindowに def __init__(self, parent):のメソッドを追加するとエラーがなくなったので、そう判断した。 ただ初期化の失敗というのは本来Python側の仕様変更によるものと思われるが、直前のバージョンPySide6.4.3では動作して、6.5.0では動作しない、というモジュール側の仕様変更?によるものである点が理解しにくい。

解決法としては、多重継承をやめることにし、Ui_MainWindowはself.uiに持つことにする。 ただ、この手法だと、GUIパーツのオブジェクトへのアクセスが、self.ui.XXXとなるので、コードの全体的な書き換えが発生する。そこで

self.XXX = self.findChild(QtWidgets.Q----, 'XXX')

と、起動時にGUIオブジェクトを取り出しておくことにする。

Apr 26 2023

[update:manyo:0.3.4] Update help for manyo library commands

Apr 26 2023

[bugfix:manyo:0.3.4] The issue that some scripts to create manuals do not run on python3

DATA_RDCT-140 空蟬4.2:リファレンスマニュアル作成

マニュアル作成用スクリプトがPython3で動作しない問題に対処した。

Apr 24 2023

[bugfix:Installer:None] The issue that GUI applications cause the error on macOS

新しいPySide6(バージョン 6.5.0)を用いると軒並みGUIアプリでエラーが発生する。以下のような初期化時に、Argumentの問題でエラーとなる。

super(XXXX, self).__init__(parent)

macOS版ではpipで最新版PySide6は6.5.0が入るが、これが鬼門らしい。Windows版は6.4.2なので問題ないようだ。Ubuntuでもpipだと6.5.0が最近入るようになり、また別のエラーが出るようになった。pipのインストールでバージョンを “PySide6<6.5.0” と指定することで回避できた。

4.0.230418 or later#

Apr 18 2023

[update:Utsusemi:4.0] Update WiringInfo of SIK environment (ABC parameters)

BL01(SIK)のPSD位置較正情報を更新した。

Apr 14 2023

[bugfix:Utsusemi:4.0] The issue of the error on lounching DlgSetUtsusemiEnv.py

アプリケーションモードの環境設定GUIであるDlgSetUtsusemiEnv.pyの起動時に、以前

  • Windows 10 + Python 3.9.13 + pip + PySide6 (6.5.0)

の環境でにエラーが出ていた。同様のエラーがmacosの環境でも出ることがわかった。

  • macos + Python 3.11.2 + pip + PySide6 (6.5.0)

よって、OSによって動作を変えていた部分を無くしてみて、Linuxでの挙動も問題なかったので、全てのOSによるコードを統一した。

あと、system.platform == “linux2”の”linux2”が無効だったので、正しい”linux”に変えた。

Apr 12 2023

[update:Utsusemi:4.0] Add the function to set automatically the angle-per-encoder value suitable for BL (SIK and AMR) into D4Mat2Utils::MakeCaseInfoFile

4.0.230411 or later#

Apr 11 2023

[update:Utsusemi:4.0] Update Makefile.py3.vc for including zlib.

Apr 11 2023

[update:Utsusemi:4.0] Update D4Mat2Slicer code to save runlist information of Step-by-step mode into XtalParam info in the binary d4m data file

Apr 11 2023

[update:Utsusemi:4.0] Update D4Matrix2 class for Windows.

DATA_RDCT-218 空蟬4:Windows版D4Mat2Slicerにおけるデータ圧縮保存実装

作業

  • Windowsの時に圧縮の機能をコンパイルしないように指定したプリプロセッサ機能を除去した

#ifdef _MSC_VER
  • 圧縮・展開時のエラーを拾うようにした

  • 実際に使用して問題が起きたので、次項の修正を行なった

問題

Linux, macosとWindowsの間で圧縮データのフォーマットが互換性がない。

原因

sizeof(long unsigned int)がlinux,macosとWindowsで異なるのが原因。そのため、compressedされた領域のサイズの読み込み、書き込みに齟齬が生じた。

両者の違いは以下の通りで、unsigned longの違いが今回の原因となる。

type }Linux

win

long unsigned int}8

4

unsigned long

8

4

unsigned char

1

1

float

4

4

UInt4

4

4

UInt8

8

8

long long

8

8

方針

  • long unsigned int → unsigned longで統一

    • Windowsのzlib::compressがunsigned longのみを受け付けるので、それに従う(zlibもWindowsでコンパイルしているので、4bytes)

  • バイナリデータファイルデータファイルへの書き込み、読み込み時はUTSUSEMID4MATRIX2_CMP_COMBUFSIZE=8で統一

Apr 10 2023

[bugfix:Utsusemi:4.0] The issue that the error happens on histogram creation when the data in the time slice region is empty.

DATA_RDCT-219 空蝉4:キッカーが来ていない時間帯をTimeSliceすると落ちる

このエラーは、EDBファイルが空だった場合に発生するものと同じである。 ただ、ファイルが空の時の挙動は変えたくない(エラーを出す)。

ここで、以下のように条件を分けて処理するようにした。

  • EDBファイルがEmptyの時、エラー発生(これまで通り)

  • EDBファイルがEmptyでないが、キッカー数は0(Time Sliceしたがデータがない)、エラー回避

  • 新しく追加した環境変数UTSUSEMI_IGNORE_EMPTYFILE=Yのとき、エラー回避

    • UTSUSEMI_IGNORE_EMPTYFILEがない場合はNと同じ(エラー発生)

    • UtsusemiEnvGetIgnoreEmptyFile()

Apr 7 2023

[bugfix:Utsusemi:4.0] The issue that DlgSetUtsusemiEnv.py causes the error in Windows 10 + python.org 3.9.13 + pip

Windows 10 (intel) + Python3.9.13 (python.org) + pip + PySide6 6.5.0 の環境で、DlgSetUtsusemiENv.pyを起動すると、下記のエラーが発生した。 理由が判然としないがエラーとならないように手当だけした。

Traceback (most recent call last):
  File "C:\Program Files\Utsusemi\python-utsusemi\utsusemi\ana\DlgSetUtsusemiEnv.py", line 325, in <module>
    win = Main(None)
  File "C:\Program Files\Utsusemi\python-utsusemi\utsusemi\ana\DlgSetUtsusemiEnv.py", line 167, in __init__
    super(Main, self).__init__(None)
TypeError: object.__init__() takes exactly one argument (the instance to initialize)
Apr 6 2023

[update:Utsusemi:4.0] Add MPlot app in utsusemi/bin

Apr 6 2023

[update:Utsusemi:4.0] Update DlgSetUtsusemiEnv.py by VIC

4.0.230403 or later#

Apr 3 2023

[bugfix:Utsusemi:4.0] The issue that GUI of D4Mat2Slicer shows old data reduction info though other run list is added ( only after execution of data reduction ).

DATA_RDCT-200 空蟬:D4Mat2SlicerのRun情報の更新が遅い問題

D4Mat2SlicerにおけるStep-by-Step回転測定の処理で、一度与えたRunListでData Reductionを行なったのちに、別のRunListを追加(Add RunListボタン)しても、メインパネルの測定概要の表示が変更されない問題に対処。

内部では追加されたRunは正しく処理されているものの、GUI上の文字が変化しないため、例えばスライスまでいった時に使用される測定概要が古いままだったりする。

測定概要の文字列作成の場所を変更すると同時に、一度Data Reductionした後でもGUIを更新するようにした。

Mar 30 2023

[update:Utsusemi:4.0] Add compile option to avoid compile of the code using zlib on Windows.

Windows版ではまだzlibに対応していない(D4Mat2関連)ので、Windowsでのコンパイルでzlib関連の関数などをコンパイルしないようにした。 これは一時的な処理と考えており、将来的にはWindowsでもフルサポートしたい。

Mar 30 2023

[update:Utsusemi:4.0] Update some GUI codes to remove DeprecationWarming with PySide6

PySide6を使用していると起動時に以下のメッセージが出るので、それに対処した。

DeprecationWarning: Enum value 'QT::ApplicationAttribute.AA_EnableHighDpiScaling' is marked as deprecated

これは、Qt for Pythonのページに記述があったものである。

https://doc.qt.io/qtforpython/porting_from2.html

The High DPI scaling attributes Qt.AA_EnableHighDpiScaling, Qt.AA_DisableHighDpiScaling and Qt.AA_UseHighDpiPixmaps are deprecated. High DPI is by default enabled in Qt 6 and cannot be turned off.
Mar 30 2023

[update:Utsusemi-DNA:4.0] Use UtsusemiEnvGetUserDir() to set paths instead of os.environ[“HOME”] or /home/dnaadmin/

DNA/ana/Reduction/以下のコードで、ファイルのパスを指定する際に

  • /home/dnaadmin と決め打ちしている

  • 環境変数”HOME”と決めうちしている(Windowsでは正しく動作しない)

といった部分を環境変数”UTSUSEMI_USR_DIR”で指定する場所に置き換えた。

  • python-utsusemi-DNA/ana/Reduction

    • BaseCommandsDNA.py

    • EfficiencyCorrection.py

    • ElasticScanBaseMulth.py

    • EventDataToEcm.py

    • Histogram.py

    • LS340ASMWLogReader.py

    • PeakFit.py

    • PeakIntegral.py

    • TempMonitor.py

  • python-utsusemi-DNA/facade

    • DR.py

    • ElasticScan.py

Mar 30 2023

[update:Utsusemi-DNA:4.0] Add some scripts to build on macOS with applesilicon.

  • Add Makefile.mac and patch file (+ patched file : compiler.h) to compile liblevmar on macOS with applesilicon.

    • reffer to lib-levmar/macos/00README.md

  • Add Makefile.mac and depend.mac into manyo-LevmarTools and manyo to compile on macos big sur or later

Mar 29 2023

[update:Utsusemi:4.0] Improve DlgSetUTsusemiEnv.py

フォルダ選択がキャンセルされた場合が考慮されていなかったため、getExistingDirectoryの戻り値による判定と分岐を追加 (VIC)

Mar 29 2023

[bugfix:Utsusemi-DNA:4.0] Improve return value treatment in AdvQECalculation::CalcQE

C++関数からの戻り値をElementContainerArray, -Matrixにすると、コアダンプが起きたり、メモリリークが発生することがあるようなので、その対処を行なった。

AdvQECalculation::CalcQEは戻り値としてElementContainerArrayを返すが、macos上でこのコマンドを実行すると以下のような警告が出る。

swig/python detected a memory leak of type 'ElementContainerArray *', no destructor found.

そこで、試験的に戻り値としてのElementContainerArrayをポインタ渡しで行うようにした。

Mar 27 2023

[update:Utsusemi:4.0] Add the function to fill the conversion parameter between encoder counts and angle with BL defaults when it is empty in loaded XtalParam info.

DATA_RDCT-217 空蟬4:D4Mat2のエンコーダ値と角度の変換係数の変更可能に

昔作成されたXtalParamファイルや、d4mファイルに含まれるXtalParam情報に、エンコーダ変換係数などが記載されていない。 XtalParamファイルやd4mファイルを読み込んだ時に、エンコーダ変換係数が含まれていなかった場合、装置コードを利用してデフォルトの”BL01-TL”か”BL14-TL”で設定するようにした。

Mar 23 2023

[update:Utsusemi:4.0] Add the checkbox to save data with compression in D4Mat2Slicer

DATA_RDCT-195 空蟬4: D4Mat2のファイルを圧縮できるか

D4Mat2Slicerのバイナリデータ保存(.d4m)時に、圧縮で保存するかどうかを選択できるようにチェックボックスをつけた。このチェックボックスは保存時のみ適応される。読み込み時は自動判別される。

Mar 22 2023

[update:utsusemi:4.0] D4Mat2 data (d4m) does not include Projectin and Slicing info in XtalParam before doing projection and slice.

DATA_RDCT-203 空蝉4:D4Mat2スクリプトのSaveDataがおかしい

D4Mat2Slicerで、ProjectionやSliceを行う前にSave Data (d4m) 機能で保存したときに、Projection情報とSlicing情報が保存されず、初期値となる挙動を修正した。

  • D4Mat2SlicerのSave Data時に保存されていなかったProjection情報とスライス情報を保管するようにした

    • GetparamsForSliceでProjection情報が足りていない(タイトルや単位)のでそれらを返すようにした

    • それぞれの情報は以下のように保存

      • Sample情報 : SetD4MatSampleInfo

      • Projection情報 : SetD4MatProjectionAxesInfo

      • DataReduction情報 : SetD4MatDataReductionInfo

      • Slice情報 : 存在しないので作成(SetD4MatSliceAxis)

  • UtsusemiD4Matrix2::SetD4MatSliceAxisを追加し、Save Data時にスライス情報を保管するようにした

Mar 20 2023

[update:Utsusemi:4.0] Add new function to change the conversion parameter between the count of the encoder signals and actual angle value.

DATA_RDCT-217 空蟬4:D4Mat2のエンコーダ値と角度の変換係数の変更可能に

機能追加

D4Mat2のTrigNETに記録されたカウント数(エンコーダのカウント)を角度に変更する換算係数をBLで選択できるようにし、CaseInfoに反映するようにした。

  • BL01-TL, BL14-TLのデフォルト値を内部で持たせ、GUI上で選択して変えられるようにした

  • デフォルト値以外の値も入力できるようにした

  • XtalParamに対して書き込み・読み込みができるようにした

バグ修正

  • XtalParamで、visualContParams/d4mat2slicer/params/runNoタグが空っぽの場合にエラーが出るのに対処

Mar 20 2023

[update:Utsusemi:4.0] Add TrigNET information into the WiringInfo at BL14

Mar 3 2023

[bugfix:Utsusemi:4.0] The issue about compile error on Windows

Mar 3 2023

[update:Utsusemi:4.0] Update Makefile.py3.vc for latest Windows compiling.

Windowsバイナリ版の作成で見つかった不具合を修正した

「令和4年度中性子産卵データ処理用ソフトウェアバイナリパッケージ作成システム高度化」案件対応

  • Makefile.py3.vc

    • Mini-XMLに関する記述の削除

    • ライブラリパスとライブラリ名の変更

    • コンパイルオプションへHAVE_SNPRINTF追加

    • swigの-py3オプションの削除

  • python-utsusemi/ana/DlgSetUtsusemiEnv.py

    • BL選択肢のOS依存性に対応

Mar 3 2023

[update:manyo:0.3.4] Update Makefile.py3.vc for latest Windows compiling.

Windowsバイナリ版の作成で見つかった不具合を修正した

「令和4年度中性子産卵データ処理用ソフトウェアバイナリパッケージ作成システム高度化」案件対応

  • Makefile.py3.vc

    • Mini-XMLに関する記述の削除

    • ライブラリパスとライブラリ名の変更

    • コンパイルオプションへHAVE_SNPRINTF追加

    • add_dll_directory処理の追加

    • swigの-py3オプションの削除

  • SerialPythonServerClient.cc

    • timespec構造体の定義の削除

Mar 3 2023

[bugfix:Utsusemi-SAS:4.0] The issue about compile error on Windows

Mar 3 2023

[update:Utsusemi-SAS:4.0] Update Makefile.py3.vc for latest Windows compiling.

Windowsバイナリ版の作成で見つかった不具合を修正した

「令和4年度中性子産卵データ処理用ソフトウェアバイナリパッケージ作成システム高度化」案件対応

  • Makefile.py3.vc

    • Mini-XMLに関する記述の削除

    • ライブラリパスとライブラリ名の変更

    • コンパイルオプションへHAVE_SNPRINTF追加

    • swigの-py3オプションの削除

Mar 2 2023

[update:Utsusemi:4.0] Add D4Matrix2::SaveXtalParam, add header information to the sliced eca to set default axes on M2Plot+

DATA_RDCT-203 空蝉4:D4Mat2スクリプトのSaveDataがおかしい

  • XtalParamを保存する関数 D4Matrix2::SaveXtalParam(string filepath)を追加

  • M2Plot+でプロットする際のデフォルトの2軸を指定するヘッダ情報をスライス後のECAに加えた

Feb 28 2023

[update:Utsusemi:4.0] Improved and fixed small bug.

DATA_RDCT-203 空蝉4:D4Mat2スクリプトのSaveDataがおかしい

小さなバグ修正と、デバッグモードでd4mを読み込むと保存されていたXtalParamを出力するように変更した。 またImportEcmStepByStepの呼び出しで第4引数(bool)を明確に指定した。

Feb 28 2023

[update:Utsusemi:4.0] Add new functions to add information to construct XtalParam on Step-by-Step mode of D4Matrix2

DATA_RDCT-203 空蝉4:D4Mat2スクリプトのSaveDataがおかしい

概要

スクリプトによるStepByStep測定の処理を行いd4mファイルを保存したときに、StepByStep関連の情報が記録されていないので、スクリプトからそれらを与えられるようにした。

RunNoごとの情報入力

新しいImportEcmStepByStepを用意し、Runごとの情報(runNo, norm, normFactor)の入力を行う。 通常StepByStepにおけるRunごとの情報はXtalParam.xmlの/d4mat2slicer/runlist/runに書き込まれるが、そのフォーマットに収まるように文字列を作成してTreatD4Matrix2XmlParamsに収める(SetD4MatDataReductionStepByStepAddRunAngles)機能も持つ。

  • Int4 ImportEcmStepByStep(ElementContainerMatrix* ecm, double ang, double norm, double normFactor)

  • void SetD4MatDataReductionStepByStepAddRunAngles(string runNos, double ang, double norm, double normFactor )

    • ImportEcmStepByStep(ElementContainerMatrix, double, double, double)から呼び出される

## Data Reduction
import Manyo
import Manyo.Utsusemi as mu

UD = mu.UtsusemiD4Matrix2()               # D4matSlicer2のコマンドを実行するための用意
UD.ClearAll()                             # データのクリア(念のため)
# UD.LoadData(outFile)                    # 以前のデータに追記する場合に読み込み

UD.SetD4MatMode(1) # 1 means Step-by-Step mode
UD.SetD4MatSampleInfo( LatticeConst, Uvector, Vvector, RotateSteps ) # 試料情報の入力
UD.SetD4MatDataReductionStepByStepGonioAtZero(gonioValueAtZero)
UD.SetD4MatDataReductionInfo(DataReductParams)# For records
UD.SetD4MatDataReductionOptions(maskfile, normFactor, time_indep_bg, detect_effi)

for angle_key in AngleList:
    angle  = float( angle_key )
    runNos = condsDict[ angle_key ][0]
    norm   = condsDict[ angle_key ][1]
    print("==============[ %s:%8.3f,%10.5f ]" % (runNos,angle,norm))
    DAT = DR.GetDataOfMonochroEi3( runNos, Ei, HW_bin, "%g %g"%(HW_min,HW_max), MaskFile=maskfile, NormFactor=norm )
    #UD.ImportEcmStepByStep( DAT, angle, angle_key ) # 非弾性処理済みデータを回転角度とともに入力
    UD.ImportEcmStepByStep( DAT, angle, norm, normFactor ) # 新しく追加した関数(内部でRunListを生成)
    del DAT                               # 入力済みのデータは削除して良い(推奨)

Projection情報入力

スクリプト上でProjectionに必要な情報を追加する関数を加えた。

  • bool SetD4MatProjectionAxesInfo( vector<Double> PA, vector<string> titles, vector<string> units )

  • bool SetD4MatProjectionAxesInfo( PyObject* PA, PyObject* titles, PyObject* units )

ProjAxes = [ 1.0, 0.0, 0.0, 0.0,
             0.0, 1.0, 1.0, 0.0,
             0.0,-1.0, 1.0, 0.0,
             0.0, 0.0, 0.0, 1.0 ]
AxTitles = ["Q1", "Q2", "Q3", "hw"]
AxUnits = ["rlu", "rlu", "rlu", "energy"]
...
### Projection
if UD.SetD4MatProjectionAxesInfo(ProjAxes, AxTitles, AxUnits):
    UD.Projection( ProjAxes )

そのほか

  • SetD4MatMode(UInt4 mode)で_TP->modeにも反映するようにした

  • TreatD4Matrix2XmlParams::Clear

    • “/visualContParams/d4mat2slicer/mode”が存在することを確認してから削除するようにした

Feb 28 2023

[bugfix:Utsusemi:4.0] The issue that DlgSetUtsusemiEnv treat incorrect Utsusemi evironment variables inside and save wrong variables as configure file.

DlgSetUtsusemiEnv.pyの内部で誤った環境変数(UTSUSEMI_DEBUGMODE)を扱い、かつコンフィグファイルとして保存するバグを修正した。

  • 誤:UTSUSEMI_DEBUG_MODE

  • 正:UTSUSEMI_DEBUGMODE

Feb 27 2023

[update:Utsusemi-SAS:4.0] Improve the method to ConvertToQspace::SetIncidentBeamRPMT to enable to use default position

DATA_RDCT-213 BL15:RPMT+レンズ(波長制限)によるビームセンター移動にConvertToQspaceを対応させる

先に追加されたConvertToQspace::SetIncidentBeamRPMTに与える引数の仕様変更を行った。

  • 与えるDETもしくはPIXの値を負にすると、その負の値を与えた軸ではデフォルトの位置を利用して計算する

それに合わせ、docstringsも変更した。

Feb 27 2023

[update:Utsusemi-SAS:4.0] Add new method to ConvertToQspace::SetIncidentBeamRPMT to give beam center position on RPMT by DET and PIX

DATA_RDCT-213 BL15:RPMT+レンズ(波長制限)によるビームセンター移動にConvertToQspaceを対応させる

上流光学系に中性子レンズを用いると、特定の波長領域が集光しそれ以外が拡散する方向になる。 このレンズ使用時には、不使用時に比べビームセンターがずれる。

このデータ処理として、以下を要望されたので、それに対応した。

  • RPMT測定時のビームセンターのずれをDETとPIXで指定

  • 波長領域は狭いので重力による落下は考えない

  • 試料位置とビームセンターを結ぶラインを入射方向(ki)とする

変更点

  • ConvertToQspace::SetIncidentBeamRPMTを追加

    • 与えられたデータのRunNoからDetectorInfoを探し、RPMTの中心Det, Pix値を得る

    • 引数のDET, PIXから中心位置からのずれを算出[mm]

    • 入射ベクトルとして与える(SetIncidentBeamVector)

  • QSpaceBaseCommands.pyにConvertQSpaceRPMTCenterShiftを追加

  • QSpace.pyにファサード関数ConvertQSpaceRPMTCenterShiftを追加

Feb 25 2023

[update:Utsusemi-SAS:4.0] Convert python code of SetRPMTMask2thetaByGrav to RPMTSetMaskBy2theta class in C++.

RPMTのデータに対しPolar Angleで指定した領域にマスクをかける機能に、中性子の波長による重力落下の影響を考慮するように改良した関数(Cmm.SetRPMTMask2thetaByGrav)を作成していたが、これは全部Pythonで実装されていたため、処理に非常に時間がかかっていた。

それを全てC++に移植した。 - RPMTSetMaskBy2theta

またそれを呼び出すように Cmm.SetRPMTMask2thetaByGravも書き換えた。

Feb 25 2023

[update:Utsusemi-SAS:4.0] Update environ_ana.xml to use new RPMT between 205596 and 206271.

Feb 25 2023

[bugfix:Utsusemi-SAS:4.0] The issue that the Q calculation in ConvertQspaceWithGrav is not correct.

DATA_RDCT-212 BL15:ConvertQspaceWithGでRPMTデータのQ計算にミス

問題と修正

manyo/ConvertToQspace.cc

重力落下のパラメータを利用して中心位置をずらす効果を、本来Pixelの位置と波長+中心位置のずれから運動量遷移を計算するのに使うはずが、入射ビームの方向ベクトルの変更に使用していた。 この結果、RPMTの上と下とでQの計算結果に偏りが発生することになった。

重力落下の効果は「運動量遷移の計算に使用する座標系を重力方向に、波長依存性を持って平行移動する」ことであるので、そのように修正した。

python-utsusemi-SAS/ana/Reduction/QSpaceBaseCommands.pyの中で使用されるConvertQSpaceWithGravity関数に問題があった。

ConvertToQspace::SetIncidentBeamWithGravityRPMTDetectInfoを使用する際に与える runNoとmodeNoの与え方が間違っていた。

  • runNoが”SAS000000”として処理されていた

  • 一つしかRunNoが含まれていないという想定のみ

  • modeNo = 3と指定されていた(古いREADOUT系のRPMT時代のもの)

結果として、runNoがかなり小さく、かつ古いRPMT時代のDetectorInfoが使用されており、重力落下パラメータ = 0で処理されていた。 どちらも正しく処理するように修正した。

Feb 22 2023

[update:Utsusemi:4.0] Add functions in UtsusemiD4Matrix2 to treat Xtalparam on step-by-step mode.

DATA_RDCT-203 空蝉4:D4Mat2スクリプトのSaveDataがおかしい

いくつかの機能を追加した。

  • UtsusemiD4Matrix2のTreatD4Matrix2XmlParamsにStep-by-Stepモードの機能を追加

    • SetD4MatMode(UInt4), SetD4MatContinuousMode()の追加(モード切り替え用)

    • Step-by-StepモードでXtalParam.xmlを保存するとRun List情報を保存する際に<runList>タグが入れ子になる問題にも対応

  • 読み込んだXMLの消去機能追加

    • D4Mat2情報のみ削除することがデフォルトだが、全消去も可能

    • PutXmlString時にはClear()する(一応追加、古い<runList>が残るため)

  • PutD4MatDataRedParamsに引数bool fromDataを追加

    • _D4matGroupのヘッダを使用するのか、_HHを使用するのか

    • 基本D4Matrix2::MakeXmlStringFromHeaderでのみ使用される

    • その際D4mat->_HHは空っぽの場合があるため、_HHから呼び出す

_HHの取り扱いの案として、D4Matrix2::_HHは無くす代わりにD4Matrix2::_D4mat->_HHをダイレクトに使用する方が良い気がするが要検討。

Feb 22 2023

[bugfix:Utsusemi:4.0] The issue that D4Mat2Slicer inserts extra tags <runList> into output XtalParam.xml on Step-by-Step mode.

DATA_RDCT-203 空蝉4:D4Mat2スクリプトのSaveDataがおかしい

Step-by-StepモードでXtalParam.xmlを保存すると、Run List情報を保存する際に、<runList>タグが入れ子になる問題を修正した。 読み込み時は入れ子でも読み込めるようにし、書き出し時は入れ子にならないようにして、互換性を保っている。

Feb 21 2023

[bugfix:Utsusemi:4.0] The issue that step values at Slice on D4Mat2Slicer make the process freezed

DATA_RDCT-203 空蝉4:D4Mat2スクリプトのSaveDataがおかしい

D4Mat2SlicerでStepが0のままSliceしてしまうと、処理が固まってしまう問題に対処した。

MlfHeader::CalcRangeAsBinCenterZeroを利用しているが、この引数としてStep=0を入れると処理が進まなくなる。 この関数を呼び出す前にStep=0かどうかを確認するようにした。

この確認はスライス時に判明するので、新たに戻り値boolを持つスライス関数Slice2d(ElementContainerArray*, vector<Double>,…)を定義し、D4Mat2Slicerで使用することにした。 またD4Mat2Slicer上でSlice2d()がFalseだった場合にメッセージを表示するようにした。

今後は極力ElementContainer系の値渡し(引数)・値での戻り値を減らす必要がある(macOSで落ちる)ので、それに対応した形でもある。

Feb 21 2023

[update:Utsusemi:4.0] Add new functions to store and to update XML about sample and data reduction information in D4Matrix2

DATA_RDCT-203 空蝉4:D4Mat2スクリプトのSaveDataがおかしい

事象と原因

スクリプトで保存したd4mファイルを読み込んでも、試料情報などがデフォルトに戻っているというものである。 この試料情報などの情報が、D4Matrix2(C++ class)内で何箇所かに分散していることが原因ともなっている

  • D4Matrix2::_HH (HeaderBase)

  • D4Matrix2::_XP (UtsusemiSqeCalcXtalParams)

さらに、GUI上でデータを読み込んだ時にXtalParamの情報によって反映される。 特にXMLファイルを作成する部分はD4Matrix2内部にはなく、Pythonコード(D4Mat2Slicer)にて実装されているために、スクリプトで保存した場合、D4Matrix2内部のXtalParam情報が適切に書き換えられていなかったため、保存されたd4mファイルにも設定を反映したXMLの情報が保存されていなかった。 その結果、本件の問題が起きている。

対応

D4Mat2Slicer内部では、d4m保存時に以下のようにXMLを更新している。

  • D4Mat2Slicer::OnSaveXtalParam(内部の情報をXMLテキスト化)の出力をD4Matrix2::SetXtalParamにて反映

  • OnSaveXtalParamは、UtsusemiSqeCalcXtalParams + TreatXmlParams(python) の組み合わせでその時点での全情報でXMLを更新

同様の枠組みをD4Matrix2にも実装することにし、D4Matrix2内部でXML情報を読み込み、情報の反映、出力を行える機能を加える。 - TreatD4Matrix2XmlParams

  • 各種情報の保管

  • XML文字列のimportと保管情報からXML文字列の作成

この機能を必要な箇所にて使用することで、スクリプトからの保存時にもXML情報が更新されるようになった。

  • スクリプトからD4Matrix2に対して各種情報を入力した際に、_HHへの登録(更新)にとどめず、新しく作成した TreatD4Matrix2XmlParams の情報も更新する

  • d4m保存時にD4MatGroupクラスのXML情報を更新し保存する

また各種情報の保存先は過去の資産を基本生かして以下のようになっている。

  • 試料情報: SetD4MatSampleInfo -> _HHへ(変わらず)

  • データリダクション情報:原初の8つ -> _HHへ(変わらず)

  • データリダクションのオプション情報 -> _HH および TreatD4Matrix2XmlParamsへ(追加)

  • 連続回転測定用のRunNoと測定開始時角度 -> TreatD4Matrix2XmlParamsへ(追加)

  • 連続回転測定用のDIO情報 -> TreatD4Matrix2XmlParamsへ(追加)

  • ステップ測定用のGonio@zero情報 -> TreatD4Matrix2XmlParamsへ(追加)

データ保存、リセット時などでは以下のコードにより、必ずXML情報を更新するようにした。

delete _D4mat->_HH;
_D4mat->_HH = new HeaderBase( *_HH );
_D4mat->XtalParam = MakeXmlStringFromHeader( _HH );

なお、MakeXmlStringFromHeaderには、上記のTreatD4Matrix2XmlParamsの情報も追記する。

将来

Pythonで実装されている同様の機能をD4Matrix2のそれで置き換えてゆくことを念頭におく。

Feb 21 2023

[update:Utsusemi:4.0] Fixed Typo in D4Mat2SlicerQ, but not influenced on works

Feb 20 2023

[update:Utsusemi-SAS:4.0] Improved data treatments for histogram data with x-axis of d-value instead of lambda.

DATA_RDCT-199 空蟬4:BL15のリートベルト解析に向けた処理

BWのデータをリートベルト解析にかけるられるようにしたいという要望が出た。 リートベルト解析に欠ける場合、Time-focusingしたTOFのデータが必要とのことだったが 現状のBL15用空蟬では露わに使用できない。 またリートベルト解析にかける場合、横軸d値でも良いとのこと。

方針

通常の処理では、ヒストグラム化は基本λ横軸で、補正処理もLambdaで行なっているが、ヒストグラム化の時点でd値にして それ以降は、ElementContainer内に並行して持っている”lamb”ベクトルを利用した補正作業とする。

作業

通常λで処理するスクリプトをベースとして、GetHistogramSASのXrangeをdと変えただけの処理を行い、問題点を探った。

結果、いくつかエラーが起きたので順次修正した。

  • “lamb”ベクトルを作成するCreateLambVector

    • 横軸がdだった時の処理がなかったので機能追加

    • CreateLambVectorで、TOFをLambdaに変換することこにバグがあったので修正(単位)

      • 横軸dで処理すると、同時にTOFベクトルができるのでこれを利用する

  • I0LambdaCorrection, TransmittanceCorrection

    • 内部で処理後のベクトルで置き換える際に横軸を”Lambda”と決め打ちしていたのを修正

Feb 20 2023

[bugfix:Utsusemi-SAS:4.0] The issue that the error occurs on NormByBeamCurrent with RPMT data was used as a monitor (GetMonHist)

DATA_RDCT-211 BL15:GetMonHistでRPMTデータをモニターとして扱う際にNormByBeamCurrentでエラー

GetMonHistのMonNo引数に10を与えるとRPMTデータをモニターとして扱うが、その時の戻り値ECに測定に関するヘッダ情報がないため、NormByBeamCurrentでエラーとなっていた。それを修正した。

Feb 19 2023

[update:Utsusemi-SAS:4.0] Add new facade function to make pixels masked on RPMT by given 2 theta with the effect of center positions dropping by a gravity

DATA_RDCT-208 BL15:Cmm.SetRPMTMaskBy2Thetaで中心の重力落下効果を考慮

ビームセンターから与えた2thetaの内側(もしくは外側)をマスクする機能において、RPMT超小角でのビームセンターが重力により落下する(λ依存性をもつ)効果を故苦慮すると、それぞれのPixel単位でλ方向に対してもマスクをかける(マスク位置のλ依存性)が必要となる。

その機能を作成し実装した。

  • Cmm.SetRPMT2thetaMask

内部では以下のような処理を行う。

  • RunNoによりDetectorInfoを探し

  • そこからビームセンター落下パラメータb を取り出し(落下距離 = b * λ * λ)

  • ピクセルの位置と落下したビームセンターの距離を算出し

  • 2Thetaによる半径と比較してマスクをかける

Feb 17 2023

[update:Utsusemi-SAS:4.0] Add new measurement period information into RPMT data header.

DATA_RDCT-209 BL15:RPMTのデータでNormByBeamCurrentを使用したい

RPMT(K)のシステムでは絶対時刻情報は正しくない(経過時刻は正しい)。

そこで、RPMTのヒストグラム化の時にのみデータのヘッダ情報を修正する機能をつけた。

  • モニターデータ(SASxxxxxx_10_254_000.edb)をT0TreatToolsで読み込む

  • データのヘッダ情報(UTSUSEMI_KEY_HEAD_MEASPERIOD)を置き換える

Feb 16 2023

[update:Utsusemi-SAS:4.0] Add new facade function about ConvertQSpaceWithGravity to treat new type of RPMT data treatments

DATA_RDCT-205 BL15: 新しいRPMT処理で、ConvertQSpaceWithGravityを実装する

新しいRPMTの処理(自由度を上げる)機能によって追加されたDetectorInfo内のパラメータを使用し、ConvertQSpaceWithGravityでQの計算を行えるようにファサードを作成した。

Feb 16 2023

[bugfix:Utsusemi-SAS:4.0] The issue that QLamda limitation function in SectorAverage does not work correctly

BL15: SectorAverageでQLamの設定が効かない

SectorAverage機能でQ-Lambdaの制限を与える機能で仕様がわかりにくい問題に対処した。

Q-Lambdaの指定した範囲内のデータだけを利用する機能であるが、今回発生した疑問は与えるパラメータファイルとして

## lambda[A],Qmin[1/A],Qmax[1/A]
0.70000, 0.55, 2.2
0.80000, 0.55, 2.2
...
4.00000, 0.55, 2.2
4.10000, 0.00, 0.0
4.20000, 0.00, 0.0
...

を与えると、おかしなQにデータが生じることがわかった。 QminとQmaxが0.0なのは、そのLambdaは使用しないということを意図している。

実際のコードではこのQmin - Qmax 及びLambdaで囲まれた領域にデータがあれば利用する判定を行う関数があり その中でパラメータファイルにないLambdaの値を与えると、その値を挟む2点のLambdaのQminとQmaxを利用して内挿したQminとQmaxを計算し、与えたLambda値に対するQの範囲としている。

上記のパラメータの場合、Lambda 4.0と4.1の間にQmin, Qmaxのとも 0.55->0.0 2.2->0.0という変化に対する内挿を計算した結果、おかしなQの位置にデータが生じることになった模様。

仕様としてはQmin, Qmax共に0.0があった場合には内挿計算はしない、ということにして実装し問題を避けた。

Feb 16 2023

[bugfix:manyo:0.3.4] The issue that MLF/database folder is not installed on macOS.

Feb 16 2023

[bugfix:Utsusemi-DNA:4.0] Fixed for the compile errors of non-void function does not return a value

Feb 10 2023

[bugfix:Utsusemi-DNA:4.0devMacOS] The issues that AdvILambdaCorrectionDNA and AdvSolidAngleCorrectionDNA occurs core dump on Ubuntu in Docker on AppleSilicon macOS.

DATA_RDCT-201 空蟬4:AppleSilicon版Debianパッケージ作成+動作検証

macOS (AppleSilicon)上のUbuntu on Docker Desktop環境にてDNA環境を構築したところ、データ処理中にLinux on Docker では発生しなかったコアダンプが発生した。

問題となっていた箇所は、以下の処理の部分である。

  • AdvILambdaCorrectionDNA::ILCorrection

  • AdvSolidAngleCorrectionDNA::SACorrection

どちらもPythonからElementContainerMatrixを値で受け取り、関数内部で新たなElementContainerMatrixを作成、それを戻り値(実体)として戻すものである。 調査すると、Pythonへ戻ってくる時にコアダンプ(ILCorrection)したり、渡したElementContainerMatrixへアクセスしてコアダンプ(SACorrection)ようだった。 おそらく、ElementContainerMatrixを値として引数や戻り値とする、おそらく内部でSWIG経由でコピーが行われる場合にコアダンプが発生しているようだ。

空蟬本体では速度の点からElementContainerMatrixを引数にする場合は基本ポインタ渡しとしている。それと同様に、上記の二つの関数もポインタ渡しに変更することでコアダンプしなくなった。

これはどこまで波及するのかわからないが、今後もコピーを伴うような受け渡しを使わない方針とする必要がある。

Feb 9 2023

[update:Utsusemi-SAS:4.0] Remove useless visualization modules (VisualContM).

Feb 9 2023

[update:Utsusemi-SAS:4.0] Add new DetectorInfo_newRPMT_230209.xml made by CreateRPMTDetectorInfoFromData

Feb 9 2023

[update:Utsusemi-SAS:4.0] Update environ_ana.xml and DetectorInfo_newRPMT_origin.xml

Feb 9 2023

[update:Utsusemi-SAS:4.0] Add new DetectorInfo_N2MON**.xml

Feb 7 2023

[update:Utsusemi:4.0] Add new MaskInfo on SIK

Feb 3 2023

[update:Utsusemi-SAS:4.0] Add the new functions to do QzProjection with only given banks.

DATA_RDCT-183 BL15:QzProjectionでBank指定がしたい

QzProjectionを行う際に、指定したBankのみで処理を行なって結果を返すようにした。

Jan 30 2023

[bugfix:Utsusemi:4.0devD4mat2] fixed small bug on compiling.

Jan 30 2023

[update:Utsusemi:4.0devD4mat2] Improve compress and uncompress code in UtsusemiD4Matrix

compressやuncompress部分を別の関数としてまとめ、圧縮されたデータを保管する _compbuf1をメンバ化した。 圧縮されたデータをメンバ変数としてもつことで、使用するときだけ展開するという使い方ができるようになる。

  • _compbuf1をメンバ化(サイズは _compbuf1_size)

  • _compress1(UInt4 bins_size, UInt4 NumOfPixels)を追加

    • Energy, Intensity,…,EFsをbufに線形化し、compressする機能を集約

    • 圧縮の保存先は_compbuf1と_compbuf1_size

  • _uncompress1((UInt4 bins_size, UInt4 NumOfPixels)を追加

  • _compbuf1と_compbuf1_sizeからEnergy, Intensity,…,EFsを再構築する機能を集約

  • _Allocateの引数をbins_sizeのみにする(NumOfPixelsはすでにpublicメンバ変数だったので)

Jan 28 2023

[update:Utsusemi:4.0devD4mat2] Add new function to save d4m file with data compression on D4Mat2

DATA_RDCT-195 空蟬4: D4Mat2のファイルを圧縮できるか

D4mat2の保存ファイル(d4mファイル)は容量がどうしても大きくなる。 zipでd4mファイルを圧縮するとかなり小さくなるので、保存時にzlibを利用してcompressし、読み込み時にuncompressする機能を作成した。

この結果、保存されるd4mファイルサイズはおおよそ10分の1以下となった。 一方で読み込み時の速度は3.5倍ほどかかるようになった。

4.0.230126 or later#

Jan 26 2023

[update:manyo:0.3.4] Update ReadNeXusFile code to remove warning messages on comile.

コンパイル時に下記のような警告(Deprecated)が出るので、対処した。

In file included from NeXusFileIO.hh:8,
                 from NeXusFileIO.cc:5:
ReadNeXusFile.hh: In member function ‘T ReadNeXusFile::GetAttribute2(const string&)’:
ReadNeXusFile.hh:518:31: warning: ‘NXstatus nxigetnextattr_(NXhandle, char*, int*, int*)’ is deprecated [-Wdeprecated-declarations]
  518 |         status = NXgetnextattr( handle, AttrName, &Length, &Type );
      |                               ^
In file included from HeaderBase.hh:18,
                 from ReadNeXusFile.hh:10,
                 from NeXusFileIO.hh:8,
                 from NeXusFileIO.cc:5:
/usr/include/nexus/napi.h:635:19: note: declared here
  635 | extern  NXstatus  NXgetnextattr(NXhandle handle, NXname pName, int *iLength, int *iType) NEXUS_DEPRECATED_FUNCTION;
      |                   ^~~~~~~~~~~~~
In file included from NeXusFileIO.hh:8,
                 from NeXusFileIO.cc:5:
Jan 24 2023

[bugfix:Utsusemi:4.0] The issue that the conversion error occurs on LoadDataFromSPE

DATA_RDCT-194 空蝉4:SPEファイル読み込み時にエラー

BL12で作成されたSPEファイル(SPE, PHX, PARファイル)を読み込むときにエラーが発生する。

原因

最初期のPARファイルとSPEファイルはFortranでの読み書きを想定されており、ファイル内のフォーマットとして数値間に区切りはなく1数値を10文字と定義されているものだった。 SPEファイルを読み書きするTreatSPE.pyでは、10文字に数値が入るように調整されていた。

しかしながらBL12のSPEファイルは10文字のフォーマットであるが、PARファイルはその10文字フォーマットではなく、単純なスペース区切りであった。そのため処理時にエラーが発生した。

対応

TreatSPE::LoadSPE()において、以下のように改変した。

  • PARファイルを読み込む際にまず10文字フォーマットで処理をし、エラーが出たらスペース区切りで処理する

Jan 23 2023

[update:Utsusemi:4.0] Change definition of UTSUSEMI_WORK_DIR variable

UTSUSEMI_WORK_DIRの挙動を再定義する

主な使い道としては、起動直後の空蟬上でos.path.getcwd() が適切な場所を示さない(Windows版とかmacOS版とか、Debian版のApplicationとか)時に、Current Directoryの代わりに使用するパスを定義しておく。

  • Working Directoryの初期値を指定する

  • ターミナルのシェルなどから起動した場合はunset UTSUSEMI_WORK_DIR、つまり未定義としておいて、代わりに os.path.getcwd()の結果を利用する(これまで通り)

  • UtsusemiEnvGetWorkDir()の挙動で、UTSUSEMI_WORK_DIRが未定義の場合は”” (empty string)を返す仕様に戻す

この枠組みを全てに当てはめると、従来のターミナルからの起動時の挙動がこれまでと異なる(起動時の場所とは異なるUTSUSEMI_WORK_DIRになる)ことになるため、混乱が生じ不適切である。 これまでどおりターミナルから使用する場合は、UTSUSEMI_WORK_DIRを未定義もしくはemptyにしておくことにする。

Jan 17 2023

[update:manyo:0.3.4] Improve comment descriptions to output on warning or error status.

いくつかのエラー時やWarning時の出力の記述を改良した。

  • HeaderBase::Addでキーが既存の場合の出力をわかりやすくした

  • T0TreatToolBaseで環境変数MLF_ENV_T0PIDCHECK_IGNOREDの設定表示を分かりやすくした

  • 同時に上記表示をMlfEnvGetIsQuiet()(”MLF_LOG_QUIET”の設定)で切り替えるようにした

Jan 17 2023

[bugfix:manyo:0.3.4] The issue that compile warning occurs.

AcquireNeutronSourceInfomationBaseのコンパイル時にWarningが出るのを修正した。

Jan 17 2023

[bugfix:manyo:0.3.4] The issue of the failure to get beam current as CT9

DATA_RDCT-193 空蟬4:isCT8n=False時のBeamCurrentの情報がエラー

CT9用として定義されていたcgi(CTdataRead6.2.pl)にアクセスできなくなっているのが原因。 CT8neutron用として定義されているcgi(CTdataRead6.6cp.pl)の結果にはCT9の情報も含まれているので、これを取り出せるようにした。

Jan 16 2023

[update:Utsusemi:4.0] Improve definition of default WORK_DIR path in python-utsusemi/bin/_loadenv at the binary mode

Jan 16 2023

[update:Utsusemi:4.0] Add Ana command in python-utsusemi/bin

4.0.230116 or later#

Jan 16 2023

[update:Utsusemi:4.0] Improve definition of default WORK_DIR path in python-utsusemi/bin/_loadenv at the binary mode

Jan 16 2023

[update:Utsusemi:4.0] Add Ana command in python-utsusemi/bin

Jan 15 2023

[bugfix:manyo:0.3.4] The issue that old command (python-config) is used on depend.mac

Jan 15 2023

[update:manyo:0.3.4] Fixed some codes which cause warning on compile ( to use snprintf instead of springf, etc)

コンパイル時にいくつかWarningを出すコードを修正した

  • sprintfをsnprintfへ

  • 一度に複数のインスランスをdeleteしていたのを分割

  • if - else の関係が分かりにくい部分を明確化

Jan 14 2023

[update:uGao:master] Rewrite QtCom.py and uGaoUtil.py to be applied to PEP8

Jan 14 2023

[update:uGao:master] Move color map data from uGaoUtil to uGaoColorMap

Jan 13 2023

[update:uGao:master] Rewrite hard-to-see codes for the list of color map data

Jan 13 2023

[update:uGao:master] Improve the action to open MPlot and M2PlotPlusCui on macos

MPlotの起動時やM2PlotPlusCui実行時にプロセス間通信のためCommQt::NewCommが実行されるが、旧MacOSでは起動時間が長くなるようにしてあった。 当時不具合により「Macでは一度接続に失敗するとリトライによる再接続ができなかったため」との記述がある。 そのコードでは余計に9秒の時間がかけられていた。

AppleSiliconのmacOS Montereyで試験したところ、特にこの9秒がなくとも動作するようになっていたので、

  • macosであること

  • AppleSiliconであること

を条件にこの9秒の待ち時間を無くした。

Jan 12 2023

[update:Utsusemi-SAS:4.0] remove useless codes

Jan 12 2023

[update:Utsusemi-SAS:4.0devRPMT2] Improve the plot style of the CreateRPMTDetectorInfoFromData results

Jan 11 2023

[update:Utsusemi-SAS:4.0devRPMT2] Add original DetectorInfo_newRPMT.xml for CreateRPMTDetectorInfoFromData

DATA_RDCT-184 BL15:RPMT処理の範囲の自由度を上げる

RPMTの全体領域と可視化領域が同じ中央点をもち、かつ傾きのない条件のDetectorInfoを雛形として python-utsusemi-SAS/ana/Reductionに配置する。これはCreateRPMTDetectorInfoFromDataから呼ばれて使用されるので移動はできない。

Jan 11 2023

[update:Utsusemi-SAS:4.0devRPMT2] Improve messages indications on RPMTDataConverter

  • いくつかのメッセージをDEBUGMODE=yの時だけ表示するようにした

  • いくつかのメッセージをUtsusemiMessageなどを使用するようにした

Jan 11 2023

[update:Utsusemi-SAS:4.0devRPMT2] Add new function to arrange RPMT DetectorInfo.xml for RPMT conditions

DATA_RDCT-184 BL15:RPMT処理の範囲の自由度を上げる

  • SASDetectorInfoEditorRPMTにincidentGravityParamを設定を追加し、保存時の桁数を10桁にした

  • RPMTの補正を修正するためのDetectorInfoを自動的に作成する手段を一つの関数として実装した

CreateRPMTDetectorInfoFromData(runNo, lamStep, deltaLam, factor, withPlot)

流れは以下の通り。

  1. 全体領域と可視化領域とが同じ中央点を持ち、かつ傾きがないDetectorInfo(DetectorInfo_newRPMT_origin.xml)を利用してヒストグラム化する

  2. 1.のデータでは(おそらく)ビームセンターは可視化領域の中心には存在しないため、Pixel単位でのずれ幅(XchShiftとYchShift)を決定する

  • ビームセンターは強度(1.0 < λ < 3.0)の最大値の点近傍にあると仮定して、強度最大点を捜索+2Dのガウス関数でフィッテイングし中央点を算出

  • 可視化領域の中央点との差をPixel単位で算出する

  1. 2.で求めたXchShiftとYchShiftの情報を埋め込んだDetectorInfo(temp_DetectorInfo_newRPMT.xml)を作成し、これを利用して再度ヒストグラム化する。結果ビームセンターが可視化領域中央近傍にある状態。

  2. 3.のデータにから各波長ごとの強度を取り出し、それぞれ2Dガウス関数でフィッティングし精密なビームセンターの波長依存性を出す

  3. 4.のビームセンターの波長依存性(重力落下)からRPMTの傾きと、λ→0極限の真のビームセンターを算出

  4. 5.で求めた傾きと真のビームセンターを利用し、DetectorInfoの<position>情報を修正し、出力ファイルに保存

Jan 10 2023

[bugfix:Utsusemi:4.0] The issue that D4MatrixCalc causes core dump on executing.

DATA_RDCT-191 空蝉4 : D4MatrixCalc()がCore Dumpする

UtsusemiD4Matrix::ax_unitsが正しく4つ存在しないために発生した。

  • UtsusemiD4Matrixで、ax_unitsの初期化がされていなかったのを修正した

  • D4MatrixCalcで、ax_unitsに代入するようにした

Jan 10 2023

[bugifix:Utsusemi:4.0] The issue that do_make_Utsusemi.py causes the error

Jan 9 2023

[update:Utsusemi-SAS:4.0devRPMT2] Update SASDetectorInfoEditorRPMT class to use latest Utsusemi class as a base

DATA_RDCT-184 BL15:RPMT処理の範囲の自由度を上げる

  • SASDetectorInfoEditorRPMTクラスのベースをUtsusemiDetectorInfoEditorNeunetに変更

    • SAS.i、TemplateDef.iの変更

    • UtsusemiDetectorInfoEditorTemplateへのコードの対応作業(主にメソッド呼び出し方法)

    • コンストラクタのベースクラスの初期化を追加

  • SASDetectorInfoEditorRPMTにおける修正と追加

    • <sas><rpmt><PHeightXrange>の綴り間違いを修正

    • XchShiftやYchShiftのTypeの変更、及びそれらを取り出したり変更するメソッドを追加

Jan 9 2023

[update:Utsusemi:4.0] Improve description of __version__

Jan 9 2023

[update:Utsusemi:4.0] Add new constructor with arguments to UtsusemiDetectorinfoEditorXXX class series.

UtsusemiDetectorInfoEditorTemplateに引数付きコンストラクタ(string dfile, bool workAsReader)を加えた。 同時にUtsusemiDetectorInfoEditorBaseや-Neunetでも、これを使用するコンストラクタ(ベースクラスを初期化)を加えた。

Jan 8 2023

[update:Utsusemi:4.0] Small change swig’s option in Makefile.py3.mac

Jan 8 2023

[update:Utsusemi:4.0] Changes UtsusemiDetectorInfoEditorBase to use UtsusemiDetectorInfoEditorTemplate

  • UtsusemiDetectorInfoEditorBaseをUtsusemiDetectorInfoEditorTemplateを利用する形に書き換えた

    • 不要なincludeなどを消去し、UtsusemiDetectorInfoEditorNeunetと共にコードを揃えた

  • UtsusemiGetNeunetHistogramのベースをUtsusemiGetHistogramTemplate<UtsusemiWiringInfoEditorNeunet,UtsusemiDetectorInfoEditorNeunet>に置き換えた

  • UtsusemiGetHistogramTemplateから呼び出されるDetectorInfo関連の関数をUtsusemiDetectorInfoEditorTemplateに実装した

  • TemplateDef.iに新しいUtsusemiDetectorInfoEditorBase用の設定を加えた

  • TemplateDef.iのUtusemiGetNeunetHistogram用の設定を書き換えた

  • Utsusemi.iでコンパイル時のWarningにより、%include UtsusemiDetectorInfoEditorBase.hhの順序をTemplateDef.iの後ろにした

Jan 7 2023

[update:Utsusemi-SAS:4.0devRPMT2] Add new functions to obtain gravity dropping parameter on RPMT

DATA_RDCT-184 BL15:RPMT処理の範囲の自由度を上げる

RPMT測定のビームセンターが波長によって落下する。その波長依存性を利用し、波長->0の極限の点を真のビームセンターとする。 その処理をHistBaseCommands::RPMTGetBeamCenterDropPosiに追加した。

  • 2Dフィッティングした各波長のビームセンター位置に対して線形フィッティングを行う

  • この線形フィッティング結果(落下線)からRPMT自体の傾きを算出する

  • 各波長のビームセンター位置を落下線上に射影する(最近接点)

  • 各点から落下距離を算出し、それに対し、A - B * (Lambda)^2 の式でフィッティングする

  • Aに当たる落下線上の点を算出し、真のビームセンターとする

落下パラメータBはDetectorInfoに書き出す予定なので、その枠組みを作成した(SetIncidentBeamWithGravityRPMTDetectInfo)

  • DetectorInfoの読み込み・書き込み

  • 各種値の取り出し

PutIncidentGravityParam() # B値取り出し
Double PutL2() # L2(TypicalL2)取り出し
Double PutPixelSizeX() # RPMTのX軸Pixelサイズ取り出し(0.205)
Double PutPixelSizeY() # RPMTのY軸Pixelサイズ取り出し(0.207)

落下パラメータを利用してConvertToQspaceを実行する必要があるので、対応した

  • ConvertToQspace::SetIncidentBeamWithGravityRPMTDetectInfoを追加した

    • DetectorInfoに書き込まれている落下パラメータBとTypicalL2を読み込む

  • ConvertToQspace::Executeで、落下パラメータAが0でもIncident vectorを計算するようにした

Jan 7 2023

[update:Utsusemi:4.0] Add new class UtsusemiDetectorInfoEditorNeunet

DetectorInfoEditorNeunetにSetRunNoなどの機能(UtsusemiDetectorInfoEditorBaseにある)を加えるために、新たにUtsusemiDetectorInfoEditorNeunetクラスを作成した。

ただし、UtsusemiDetectorInfoEditorBaseと共通化するための布石として、 - UtsusemiDetectorInfoEditorTemplate.hh を用意し利用している。

次のステップはUtsusemiDetectorInfoEditorBaseも置き換えること。

Jan 3 2023

[bugfix:Utsusemi-SAS:4.0] The issue about ModuleNotFoundError on import Manyo.SAS

Jan 3 2023

[update:Utsusemi-SAS:4.0devRPMT] unify the code indent in RPMTDataConverter (replace a tab charactor with 8 spaces, trim spaces)

Jan 3 2023

[update:Utsusemi-SAS:4.0devRPMT] RTMPDataConverter uses SASDetectorInfoEdirotRPMT instead of BoostXmlParser

DATA_RDCT-184 BL15:RPMT処理の範囲の自由度を上げる

RPMTDataConverterでのDetectorInfoを扱うのにBoostXmlParserを利用していたが、SASDetectorInfoEditorRPMTを利用するようにした。 また、RPMTDataConverter::Execute実行時にLLD_X, HLD_Xなどの値が0の場合はDetectorInfoの値を利用するようにした。

  • SASDetectorInfoEdirotRPMTにsas/rpmtのパラメータを取り出すメソッドを追加

  • RPMTDataConverter::SetParamsFromAnaEnvを書き換え

  • LLD_Xなどの値もDetectorInfoから取り出しストックするようにし、またそれを利用するように変更

  • RPMTDataConverter::ExecuteのLLD関連パラメータのデフォルトを0に

  • HistBaseCommandsのいくつかのメソッドで上記仕様に対応させた

  • Bank=”RPMT”のみを使用すると、DetectorInfo内の情報をそのまま利用する

  • Bank=”RPMT,<LLD_X>,<HLD_X>,<LLD_Y>,<HLD_Y>,<LmtCoi>”だと指定した値を利用する

Jan 3 2023

[update:Utsusemi:4.0] replace a tab charactor with 8 spaces, trim spaces (2)

Jan 3 2023

[update:Utsusemi:4.0] replace a tab charactor with 8 spaces, trim spaces

Dec 31 2022

[bugfix:Utsusemi:4.0] The issue that depend.mac occurs error

Dec 31 2022

[bugfix:Utsusemi:4.0] The issue that the warning messages ‘sprintf is deprecated’ are shown on compiling with clang++ on macOS

macOS上でコンパイル(clang++) した際に出されるWarningに対応した。

なお、Warningは以下の通り。

warning: 'sprintf' is deprecated: This function is provided for compatibility reasons only.  Due to security concerns inherent in the design of sprintf(3), it is highly recommended that you use snprintf(3) instead.
Jan 1 2023

[update:Utsusemi-SAS:4.0devRPMT] Add new functions to do fitting on 2D map of RPMT data

DATA_RDCT-184 BL15:RPMT処理の範囲の自由度を上げる

  • RPMTの2Dデータに対して2Dフィティング(Gauss関数)を行えるようにした(結果はBeam Center位置のLambda依存性)

Get beam center positions at each lambda range
RPMTGetBeamCenterDropPosi(DAT=None, lamStep="1.0,2.0,3.0,4.0,5.0,6.0,7.0", deltaLam=0.5, init_par="1.0e14, 5.0, 5.0, 150.0, 150.0", factor=1e-10, withPlot=False)

@param DAT (ElementContainerMatrix)
@param lamStep (string) list of the center lambda
@param deltaLam (float) width of lambra range for each the center lambda
@param init_par (string) Initial values for fitting "<A>, <w_X>, <w_Y>, <c_X>, <c_Y>"
@param factor (float) Intensity = factor*Intensity
@param withPlot (bool) Plot results or not
@retval EC ElementContainer for X-Y positions of beam center
  • RPMTDataConverterに指定したDetectorInfoを渡せるようにした(GetHistogramBaseSASの引数paramFilesを用いて)

Jan 1 2023

[update:Utsusemi-SAS:4.0devRPMT] Enables RPMTDataConverter to treat data conversion with given DetectorInfo

DATA_RDCT-184 BL15:RPMT処理の範囲の自由度を上げる

RPMTDataConverterクラスで、任意のDetectorInfoを与えて処理させることを可能とした。

Jan 1 2023

[update:Utsusemi-SAS:4.0devRPMT] Add new class SASDetectorInfoEditorRPMT to treat RPMT information and read/write sas/rpmt block in DetectorInfo

DATA_RDCT-184 BL15:RPMT処理の範囲の自由度を上げる

RPMT本体の設置誤差による誤差(中心ずれと回転)を修正するための枠組みを作成した。

DetectorInfoに存在する以下のブロックに対し、読み取り、書き込みができるクラスを作成した。

<detectorInfo>
    <instrumentInfo>
        <sas>
            <rpmt>
                <numOfLines>1024</numOfLines>
                <binWidth>2</binWidth>
                <sizeXch>304</sizeXch>
                <sizeYch>304</sizeYch>
                <XchShift>16</XchShift>
                <YchShift>35</YchShift>
                <PHeighXRange>128,1024</PHeighXRange>
                <PHeighYRange>128,1024</PHeighYRange>
            </rpmt>
        </sas>
    </instrumentInfo>
</detectorInfo>

またこのクラスではDetectorInfoを読み込んだのち、以下の情報を与えることで、そのpositionの情報を平行移動+回転させてPixelの位置情報の補正を行う。

  • ビームセンターの位置(Pixelによる指定、実数)

  • 回転角度

サンプルコード

mu_x = 150.95064536755632
mu_y = 150.67972084344447
angl = -2.7
t=ms.SASDetectorInfoEditorRPMT()
if t.Read(dfile):
   if t.SetBeamCenterPixel(mu_x, mu_y):
      if t.SetRotateAngle(angl):
         if t.Write(dfile2):
            DAT=Hist3.GetHistogramSAS( runNo="206316", Xrange="0.7 15.5 0.1 dL", Bank="RPMT", TimeSlice="-1 -1", frameBoundary="0.0", isTimeFoc=False, SolAngCor=True, paramFiles="- "+dfile2 )

次の作業はこのクラスを用いてRPMTDataConverterも修正する。