============================ Utsusemi4 Change History ============================ :Author: Yasuhiro Inamura :Last Update: |today| .. toctree:: :maxdepth: 1 :caption: Old history Utsusemi4ChangeHistory2021 Utsusemi4ChangeHistory2020 Utsusemi4ChangeHistory2019 Utsusemi4ChangeHistory2018 .. contents:: contents :depth: 2 4.0.220520 or later ====================== May 20 2022 [bugfix:Utsusemi:4.0] The about that data reduction for continuous rotation mode on D4Mat2Slicer DATA_RDCT-150 空蟬4:D4Mat2Slicerの連続回転測定用オンラインモードの問題 **現象** 連続回転測定のデータ処理でオンラインモードでの処理で、with Projection チェックボックスをオンにして自動的にProjectionを行なった場合、データが正しくない問題に対処。 チェックボックスをオフにして手動でProjectionを行った場合は正しい。 **問題点と対応** Projection処理を行うルーチンを同じにしても問題は解決しない。結果的に試料の各軸の回転角度を正しく読み込めていないことが判明。その原因は with Projectionをオンにした場合、試料情報のパネルが全て disabled 状態になるが、各軸の回転角度を読み込むコードの中で、 disabled 状態なら読み込まないという設定にしていた。この禁止設定をなくすことで対応した。 オンラインモードでのコード処理なので、ほぼ他の処理には影響はないはず。 May 20 2022 [update:Utsusemi:4.0] Gives default data dir path (UtsusemiEnvGetDataDir) to UtsusemiEventDataMonitor::_PathToDataRoot May 19 2022 [update:Utsusemi:4.0] Update MakeRunList to treat LakeShore336 information MakeRunListでLakeShore336 (LS336) の情報が取得できるようにした。 MakeRunListのdevTempのパラメータとして、LS336のデバイス名と見たいセンサー二つをカンマ区切りで以下のように指定する。 :: ,, 例えば、デバイス名が *SELakeShore336* , 対象となるセンサーが *KelvinA* 及び *KelvinC* だとすると下記のようになる。 :: SELakeShore336,A,C センサーの指定は KelvinA => A , KelvinB => B という感じで、D5まで受け付ける。 May 17 2022 [bugfix:Utsusemi:4.0] The issue that normalization by kickers on D4Mat2Slicer fails on using external script DATA_RDCT-155 空蟬4:D4Mat2Slicerで強度がおかしくなる ここまで行ってきた修正に対し、外部スクリプトを使用した際のチェックを行ったところ、若干勘違いをしている部分があったので、修正した。 これに関連して、PutNumOfT0ListInCasesの戻り値であるが、コードを見ると、ret[caseId]++ の表記があり、すなわち戻り値のvectorのインデックスは CaseID である、つまり CaseID=0 も含める必要がある。 一方、NumOfCasesは、CaseId=0は含まないとみなしているので、retがオーバーフロー ( retのサイズが NumOfCasesだったため) することになる。 具体的には NumOfCases=10だった場合、とりうるCaseIdは無視される0も含めて :: [0,1,2,3,4,5,6,7,8,9,10] となるため、PutNumOfT0ListInCasesの戻り値のベクターサイズも (NumOfCases + 1)である。 May 17 2022 [bugfix:Utsusemi:4.0] The issue that normalization by kickers on D4Mat2Slicer fails. DATA_RDCT-155 空蟬4:D4Mat2Slicerで強度がおかしくなる **現象** 二つのRunを重ね合わせた時、境目近傍の一部の強度がおかしい。おそらくキッカーのノーマライズに失敗している。 **対応** D4Matrix2::ImportEcmsContRotのキッカーでのノーマライズを与えているが、その指定方法が間違っていた(本来CaseId[ind]であるはずが、ind であった)ので修正することでおかしな強度は消えた。 May 16 2022 [bugfix:Utsusemi:4.0] The issue that normalization by kickers on D4Mat2Slicer fails at some caseInfo patterns with user external scripts on data reduction DATA_RDCT-155 空蟬4:D4Mat2Slicerで強度がおかしくなる データリダクション外部スクリプトを使用したときに、相変わらずノーマライズに失敗する。 外部スクリプトを使用する直前に、マージしたキッカー数を使用してECMのヘッダのキッカー情報を置き換えることでうまくいく。 May 16 2022 [bugfix:Utsusemi:4.0] fixed small problems on D4Mat2Slicer - D4Mat2SlicerQのGUI上のパラメータを反映するメソッドUpdateXtalParamFromGUI()を実行した際に、DataReductionパネルのReductionボタンを押すのと同じ挙動を行うが、その際に一部上書きされるパラメータ self.doneOnLineModeFirstPrmSet があったので、実行前の設定に戻すように処理を加えた - SPEファイル保存時のファイル名で、ピリオドが複数ファイル名に入ると問題が発生する(外部のコードで読み込むときなど)時があるので、最後の角度の小数点のピリオドを "_" に変更した。 May 16 2022 [bugfix:Utsusemi:4.0] The issue that normalization by kickers on D4Mat2Slicer fails at some caseInfo patterns DATA_RDCT-155 空蟬4:D4Mat2Slicerで強度がおかしくなる **調査** 調査の結果、規格化に失敗するパターンがあることがわかった。 - CaseInfoで指定したCaseの範囲を逸脱したCaseIdが出現した場合に規格化が行われない この差が生じる原因は以下。 内部でCaseId毎のキッカー数を取り出すPutNumOfT0ListInCases()を実行すると、逸脱したCaseIdが出現した場合その時の値も戻り値に加えようとして、出力の配列を拡張し逸脱したCaseIdのキッカー数を加えるために、PutNumOfCasesの値と誤差が出てしまう。 この差があるために規格化が行われない。 **結論** - CaseInfoで指定されたCaseInfoの範囲を逸脱した分は、PutNumOfT0ListInCasesには含めないこととする - D4Ma2SlicerQの中でCase毎のキッカー数を収める配列が、なぜかPutNumOfToListInCases()-1のサイズになっていたのを同じサイズにした May 13 2022 [bugfix:Utsusemi:4.0] Small typo on sub sindow of D4MatSlicer. May 12 2022 [update:Utsusemi:4.0] Remove print commands for PySide version Merge: b10f2c6 02eeecb May 12 2022 Merge branch '4.0' of https://happymlf.backlog.jp/git/DATA_RDCT/Utsusemi into 4.0 May 12 2022 [update:Utsusemi:4.0] Update LICENCE.txt 4.0.220512 or later ====================== May 12 2022 [update:Utsusemi:4.0] Remove print commands for PySide version May 12 2022 [update:Utsusemi:4.0] Update LICENCE.txt May 12 2022 [update:uGao:master] Remove print commands for PySide version May 12 2022 [bugfix:uGao:master] The issue that FastPlot causes error on showing SetAxisTickStyleDialog. May 12 2022 [bugfix:uGao:master] The issue the function to turn on/off for Ticks mark on axes by checkboxes on FastPlot when matplotlib version is 3.0.0 or later DATA_RDCT-147 夕顔:u2dplotのTickのオン・オフが効かない(matplotlib 3.x以降) 調査の結果、matplotlib 3.5.1ではTrue/Falseしか受け付けなかったが、matplotlib 3.1.2 でも同様にTrue/Falseしか受け付けないことがわかった。 いずれにせよ、"on"/"off"を使うか、True/Falseを使うかの両者を分けるバージョンとしては "3.0.0" とした。 結局のところ、内部でのパラメータはTrue/Falseでもち、3.0.0以下のバージョンでの"on"/"off"切り替えはプロット直前に判定するシンプルな形にした。 - ほぼu2dplot.pyと同様の変更 - 不要なmatplotlibのバージョンによる分岐を無くした May 11 2022 [bugfix:uGao:master] The issue the function to turn on/off for Ticks mark on axes by checkboxes on u2dplot when matplotlib version is 3.0.0 or later DATA_RDCT-147 夕顔:u2dplotのTickのオン・オフが効かない(matplotlib 3.x以降) 調査の結果、matplotlib 3.5.1ではTrue/Falseしか受け付けなかったが、matplotlib 3.1.2 でも同様にTrue/Falseしか受け付けないことがわかった。 いずれにせよ、"on"/"off"を使うか、True/Falseを使うかの両者を分けるバージョンとしては "3.0.0" とした。 結局のところ、内部でのパラメータはTrue/Falseでもち、3.0.0以下のバージョンでの"on"/"off"切り替えはプロット直前に判定するシンプルな形にした。 - U2Params内部で持つ"TopSide","BottomSide","LeftSide","RightSide"パラメータはTrue/Falseで持たせる - 新しく保存するときはTrue/Falseで、保存した設定ファイルから読み込む時に"on"/"off"だったら、True/Falseに変換する May 11 2022 [bugfix:Utsusemi-SAS:4.0] The issue that compile error occurs in LambdaDependCorrection and TreatWhklWithUB on macOS May 7 2022 [update:Utsusemi:4.0] improve codes and output format on the conversion functions between U-V vectors and UB matrix in UtsusemiSqeCalc2 DATA_RDCT-131 空蟬4: VisualContQのUBマトリックス対応 いくつかのコードの整理と出力される値の調整を行なった。 - UtsusemiSqeCalc2::_CalcInverseMatrix - gsl_linalg_LU_invertを使用するように変更 - UtsusemiSqeCalc2::ConvToUBMatrix, ConvToUVvector - 戻り値が極端に小さい値(DBL_EPSILON以下)の場合に0.0とする機能を追加 - 上記の機能を発現させるフラグ(bool flagRound)を加えた - UtsusemiSqeCalc2::ConvToUVvector - Uベクトル, Vベクトルの値が極端に小さい値(DBL_EPSILON以下)の場合に0.0とする機能を追加 - Uベクトル, Vベクトルの値のうち、最大値が1.0となるようにした - 上記の機能を発現させるフラグ(bool flagRound)を加えた May 7 2022 [update:Utsusemi:4.0] improve and bugfix for the conversion functions between U-V vectors and UB matrix in UtsusemiSqeCalc2 DATA_RDCT-131 空蟬4: VisualContQのUBマトリックス対応 いくつかのバグ修正とコードの整理を行なった。 - UtsusemiSqeCalc2::ConvToUBMatrix - 余分な逆行列演算を行なっていたのを修正 - UtsusemiSqeCalc2::ConvToUVvector - newで作成したクラス(SqeCalcXtalParam)をdeleteしていなかった問題に対処 - 行列演算の部分を極力gsl_matrixやその関数を使用するように変更 May 6 2022 [update:Utsusemi:4.0] Add new conversion functions between U-V vectors and UB matrix in UtsusemiSqeCalc2 DATA_RDCT-131 空蟬4: VisualContQのUBマトリックス対応 UtsusemiSqeCalc2に、格子定数やU,VベクトルからUB行列を計算したり、その逆を行う関数を追加した(入力はPythonのリスト)。 vector UtsusemiSqeCalc2::ConvToUBMatrix( PyObject* LC, PyObject* UV, PyObject* VV ) vector UtsusemiSqeCalc2::ConvToUVvector( PyObject* LC, PyObject* UB ) **サンプルコード** .. code-block:: python import Manyo.Utsusemi as mu LC = [4.8,8.4,2.9,90.0,90.0,90.0] UV=[0.0,1.0,0.0] VV=[0.0,0.0,1.0] tt=mu.UtsusemiSqeCalc2() UB=tt.ConvToUBMatrix( LC, UV, VV ) print( " {},{},{}".format(UB[0],UB[1],UB[2])) print( "UB = {},{},{}".format(UB[3],UB[4],UB[5])) print( " {},{},{}".format(UB[6],UB[7],UB[8])) UB_list= [UB[0],UB[1],UB[2],UB[3],UB[4],UB[5],UB[6],UB[7],UB[8]] uvv=tt.ConvToUVvector( LC, UB_list ) print( "UVect = {},{},{}".format( uvv[0],uvv[1],uvv[2] )) print( "VVect = {},{},{}".format( uvv[3],uvv[4],uvv[5] )) Apr 26 2022 [update:Utsusemi-SAS:4.0] update some files about debug mode ane MakeFile.obj Apr 26 2022 [update:Utsusemi-SAS:0.3.7] Add new class LambdaDependCorrection to correct data by the lambda dependency on the intensity DATA_RDCT-124 BL15 波長依存性の関数作成 lambda依存性のある強度補正を行う。 基本的にはテキストファイルにlambdaとfactorを以下のように羅列し、これを読み込ませる必要がある。 テキストファイルの離散データを利用し、線形補完でFactorを計算する。 :: # Lambda, Factor 0.7, 1.0 0.8, 1.2 ... なお、このFactorでデータの強度を割ることになる。また、Bank単位での指定も可能である。 このfacadeは以下の通りである。 :: import Corr Corr.LambdaDependCorrect(dat1,P1="SM,SC:dep_lambda1.txt") ここで与えるパラメータは :: ":" となる。 は、複数のバンクをカンマ区切りで与えることも可能である。 また"ALL"を与えると全てのバンクに適応される。 は、フルパスを与える必要がある。 Apr 24 2022 [bugfix:uGao:master] The issue thatn small intensity range is treated correctly on ParamDialog of u2dplot DATA_RDCT-149 夕顔: 強度の欄に小さな値が入らない問題 ParamDialogの強度範囲の表記が"%.3f"だったので、0.001の桁より小さい数値が無視された。"%g"にすることで修正。 Apr 24 2022 [bugfix:Utsusemi-SAS:0.3.7] The issue the warning on compiling RPMTDataCoverter RPMTDataConverterコンパイル時に下記のようなWarningが出る問題に対処。 :: RPMTDataConverter.cc: In member function ‘bool RPMTDataConverter::Execute(std::vector >, std::string, UInt4, UInt4, UInt4, UInt4)’: RPMTDataConverter.cc:159:60: warning: ‘__builtin___sprintf_chk’ may write a terminating nul past the end of the destination [-Wformat-overflow=] 159 | sprintf( outfile_name_c, "SAS%06d_%02d_%03d_000.edb", runNo, _DaqId, i+1 ); | ^ In file included from /usr/include/stdio.h:867, from /usr/include/python3.8/Python.h:25, from /opt/mlfsoft/manyo/include/Header.hh:29, from RPMTDataConverter.hh:4, from RPMTDataConverter.cc:1: /usr/include/x86_64-linux-gnu/bits/stdio2.h:36:34: note: ‘__builtin___sprintf_chk’ output between 25 and 45 bytes into a destination of size 30 36 | return __builtin___sprintf_chk (__s, __USE_FORTIFY_LEVEL - 1, | ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 37 | __bos (__s), __fmt, __va_arg_pack ()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 問題のsprintf直前に :: char outfile_name_c[30]; があるが、"SAS%06d_%02d_%03d_000.edb"が30でかつ、char文字列は最後にendを示す文字が必要なので、1つ足りない。そこで、char列の数を31にしたら、直った。 Apr 22 2022 [update:Utsusemi:4.0] Add new method to give ElementContainerArray as sliced data on ShamotDymPDF class DATA_RDCT-152 空蟬4:DyPDFをテキスト入力 M2Plot+でのテキスト出力フォーマットのテキストファイルをDymPDFで使用するためのスクリプトを作成する目的で、テキストファイルをElementContainerArray (ECA) に変換し、そのECAをスライス済みデータとしてDymPDMに与えるメソッドを追加した。 これによりどのようなテキストファイルでもECAに変換すればDymPDFを使えるようになる。 :: tt=mu.ShamotoDymPDF() tt.SetSlicedData(ECA) なお、M2Plot+テキスト出力フォーマットをECAに入れるためのサンプルスクリプトは以下。 .. code-block:: python import Manyo import Manyo.Utsusemi as mu fname="Map_LSMO_03K_24meV.txt" f=open(fname,"r") pre_hw = None conveted = [] sqe_q=[] sqe_i=[] sqe_e=[] ECA = Manyo.ElementContainerArray() while(True): l=f.readline() if l=="": break if l.find("#")==0: continue v=l.split(",") if pre_hw == None: pre_hw=float(v[1]) if pre_hw==float(v[1]): sqe_q.append(float(v[0])) sqe_i.append(float(v[2])) sqe_e.append(float(v[3])) else: # make file for a slice EC = Manyo.ElementContainer() EC.PutHeaderPointer().Add(mu.UTSUSEMI_KEY_HW, pre_hw) EC.Add(mu.UTSUSEMI_KEY_MOMENTTRANSFER, sqe_q, mu.UTSUSEMI_KEY_MOMENTTRANSFER_UNIT) EC.Add(mu.UTSUSEMI_KEY_INTENSITY, sqe_i, mu.UTSUSEMI_KEY_ARB_UNIT) EC.Add(mu.UTSUSEMI_KEY_ERROR, sqe_e, mu.UTSUSEMI_KEY_ARB_UNIT) EC.SetKeys(mu.UTSUSEMI_KEY_MOMENTTRANSFER, mu.UTSUSEMI_KEY_INTENSITY, mu.UTSUSEMI_KEY_ERROR) ECA.Add(EC) pre_hw=float(v[1]) sqe_q=[float(v[0])] sqe_i=[float(v[2])] sqe_e=[float(v[3])] Apr 21 2022 [bugfix:Utsusemi:4.0] The issus that DetectMap shows error message on slicing along PIXEL and PSD DATA_RDCT-153 空蟬4:DetectMapで選択領域ありスライスでエラー **原因** - データを1Dプロットする際にプロッタのタイトルに使用するヘッダ情報(dictionary)で、存在しないキー("PixelPosition"など)を取り出そうとしてエラー **対応** - ヘッダ内のキーを確認してから取り出すようにした - along PSD or PIXELの時は、ヘッダに"Label"というキーのみ(おそらくMPlot上の"Label"として)登録されていたので、より細かい情報を"SubTitle"と言うキーで収めて、それをプロット時にタイトルに埋め込むようにした。 Apr 20 2022 [update:Utsusemi:4.0] Add DyPDF function DATA_RDCT-77 空蟬4 Dynamical PDF 計算コード移植 飯田氏より依頼された下記に対応。 Magnetic Form Factorがないバージョンを作成してほしい(Facade名: DyPDF) 対応:ShamotoDymPDFの強度計算部分を修正した Apr 18 2022 [bugfix:Utsusemi:4.0] The issue that arguments of NormFactor and detectorEffi are not used on data reduction in D4Mat2 continuous mode with on-line analysis. DATA_RDCT-82 D4Mat2Slicer関連の要望 連続回転測定の処理でNormByKickersに対してNormFactorやdetectEffiが効かない問題に対処した。 - UtsusemiReductionCommon::NormByKickers に double normFactor を入力し作用させるように改変した - UtsusemiD4Matrix2::ImportEcmsContRotPseudoOnLine に与える引数を ImoprtEcmsContRot とほぼ同じにした( normFactor, detEffi, reductCase の追加) - 上記に関連するPythonコードの修正 Apr 18 2022 [bugfix:Utsusemi:4.0] The issue that D4Mat2 continuous mode with on-line analysis causes error. DATA_RDCT-82 D4Mat2Slicer関連の要望 オンラインモードで、[with Projection]にチェックが入っていない時に、[Projection]ボタンを押すと、オフラインモードの処理が行われる問題に対処した。 新しくオンライン用のProjection処理 **OnProjForOnLine** 関数を加え、self.IsOnLineMode=Trueの時に実行するようにした。 Apr 18 2022 [bugfix:Utsusemi:4.0] The issue that the experimental information is not shown on 2D-plotter of M2Plot+ produced by D4Mat2Slicer on continuous rotation mode. Apr 15 2022 [bugfix:Utsusemi:4.0] The issue that D4Mat2 continuous mode with on-line analysis causes error. DATA_RDCT-82 D4Mat2Slicer関連の要望 D4Mat2Slicerで、連続回転測定でのオンライン処理モードで、エラーが発生する問題に対処。 また同様にエラーが発生すると思われる箇所も修正した。 (以前に複数のRunNoを扱えるようにしたことの余波) 4.0.220408 or later ====================== Apr 8 2022 [update:Utsusemi:4.0] Add warning message for obsolete method UtsusemiD4Matrix2::ProjectionStepByStep. Apr 8 2022 [bugfix:Utsusemi:4.0] fixed do_make_Utsusemi.py to enable to distinguish OS version (RedHat series) correctly. Apr 7 2022 [bugfix:Utsusemi:4.0] The issus about showing a memory leak message Python3錠で、Manyo.Utsusemi.UtsusemiSqeXtalParamsのインスタンスに対してPython3の補完機能(TAB)を用いると、下記のメッセージが表示される :: swig/python detected a memory leak of type 'Map< std::pair< std::string,std::vector< Double > > > *', no destructor found. 理由はよくわからないが、Map< pair< string, vector > > plotAxis をpublicからprivateに移動させると、このメッセージが消えた。 この際なので、いくつか存在するpublicにおいてあった内部変数を全て名前を変えて(_を付与し)privateにおいた。 Apr 7 2022 [update:Utsusemi:4.0] Revice codes to prepare for PySide6 DATA_RDCT-146 夕顔,空蟬4.2:PySide6対応 将来PySide6への対応へ向け、以下の置き換えを行った。 - 古いPySideで使用されていたQComboBox.activated[str]をQComboBox.activatedに置き換える - 古いPySideで使用されていたQTreeWidget.setItemSelectedが廃止されるので、QTreeWidgetに登録される個別のQTreeWidgetItemオブジェクトのメソッドsetSelected()を使用する **動作検証環境** - PySide(Ubuntu16.04LTS) - PySide2(Ubuntu20.04LTS) Apr 6 2022 [bugfix:Utsusemi:4.0] The issue that finishing of DetectMap used on python interactive mode makes users leave the mode. Pythonのコマンドラインから下記のようにDetectMapアプリを起動して、そのアプリを閉じるとPythonから抜けてしまう問題に対処した。 .. code-block:: python import utsusemi.vis.DetectMap as DM DM.DetectMap(DAT) Apr 5 2022 [update:uGao:master] replace obsolete use of QComboBox.activated for newer PySide6 DATA_RDCT-146 夕顔,空蟬4.2:PySide6対応 古いPySideで使用されていたQComboBox.activated[str]をQComboBox.activatedに置き換えて、将来PySide6への対応に備える。 Apr 4 2022 [update:uGao:rm_import_wild] Remove import statements using wildcard (2) DATA_RDCT-101 空蟬4や夕顔のPythonコードからfrom XXX import * をなくしたい MPlotとM2PlotPlus関連のコードに書かれていた from import * とワイルドカードを用いたimportを撲滅する試み。 いくつかのコードで未定義のモジュールが出てきてエラーとなったのを修正した。 - uGaoUtil::PlotException - uGaoUtil::PlotMessage - codecs Apr 4 2022 [bugfix:uGao:master] The issue that M2PlotPlus cannot produce hi-resolution GUI on launching from other application Apr 4 2022 [update:uGao:rm_import_wild] Remove import statements using wildcard DATA_RDCT-101 空蟬4や夕顔のPythonコードからfrom XXX import * をなくしたい MPlotとM2PlotPlus関連のコードに書かれていた from import * とワイルドカードを用いたimportを撲滅する試み。 **方針(仮)** - numpyのモジュールは一般的な名前のものが多いため(exp,sqrt,..)、np という別名で扱う(import numpy as np) .. code-block:: python import numpy as np - uGaoUtilのモジュールは、必要なモジュールのみをimportする形にした(が、importするモジュールや変数が結構多いことがわかり検討中) .. code-block:: python from uGao.uGaoUtil as import XXX - from pylab でのモジュールは、本当は何が呼ばれているのか非常にわかりにくいため、numpyで置き換えられるものは置き換える。 .. code-block:: python from pylab import setp, getp, Normlize, Rectangle - pyside-uicでの変換後のファイル (ui_XXX.py, ui2_XXX.py) には適応しない Mar 30 2022 [update:Utsusemi:4.0] Update DoxySwig40.i for current source codes Mar 29 2022 [bugfix:Utsusemi:4.0] fixed wrong class name causing compile errors and fixed typo about comments with doxygen style Mar 29 2022 [update:Utsusemi:4.0] Improve the command tree structure of SequenceEditor to enable to change the group and commands list freely DATA_RDCT-135 空蟬4:SequenceEditorのコマンドのリストのグルーピング SequenceEditorのコマンド選択欄の構造が、ComやCmm, DR など、facadeフォルダに入っているファサードファイルごとにグルーピングされていたが、そのグルーピングと並び方を変更できるようにした。 変更された例は以下のようなものである。 :: - SIK - File - Cmm.SaveDataToManyoBinary - Cmm.LoadDataFromManyoBinary - ... - DataReduct - Cmm.GetNeunetHist - Cmm.GetMultiEi2 - DR.GetDataOfMonochroEi2 - ... - Original - Com - Cmm - DR - Visualizer - D1Plotter **仕様詳細** これまでは以下のように、root(Functions)のSIKの下にCmm.pyのコマンド群がCmmの中に、という形で自動的にグループ化されていた。 :: - Functions - SIK - Com - Cmm - DR - Visualizer - D1Plotter ちなみにこれまでもこの構造は、facadeフォルダに入っている **Sequencer_facades.py** を編集することで若干変更はできていた。 今回の更新で **Sequencer_facades.py** に対し、以下のような **__Structures__** というリストを追記することで、上記の構造を変えることができるようにした。 :: __Structures__ = [("File",["Cmm.SaveDataToManyoBinary", "Cmm.LoadDataFromManyoBinary", "Cmm.SaveDataToDAVEgrp", "Cmm.SaveDataToDump", "Cmm.LoadDataFromDump"]), ("DataReduct",["Cmm.GetNeunetHist", "Cmm.GetMultiEi2", "DR.GetDataOfMonochroEi2", "DR.GetDataOfMonochroEi3", "DR.ToPowder", "DR.MakeRunList"]) ] なお、これまで使用していたComやCmmなどは、新たに Original というグループに移動する。 また、追記しない場合は、これまで通りの表示となる。 *設定用リストの構造* 一つのグループは、タイトルとコマンドのリストをタプルにしたものである。 それを順番に複数並べてリストとする。 :: [ (, <list of commands>), (<title>, <list of commands>), (...) ] *編集手段とオーバーライト順序* この設定を書き込む **Sequencer_facades.py** は、空蟬のそれぞれの装置コードのフォルダにあるfacadeフォルダに格納されているが、同時に通常個人のファサードファイルを配置するフォルダ(環境変数 ${UTSUSEMI_USR_DIR}/facade で指定される)に置くことも可能である。 その場合、個人のフォルダに **__Structures__** を設定したファイルを作成した場合、装置側の設定が個人フォルダのそれで上書きされる。 また、個人のフォルダにおくファイル名は必ず、 **Sequencer_facades_XXX.py** (XXXは任意でユニークなもの)という名前にすること。装置側の設定 ( ${UTSUSEMI_BASE_DIR}/${UTSUSEMI_INST_CODE}/facade/Sequencer_facades.py )の名前と被ると反映されないため。 *使用例* 上記の設定を個人のfacadeフォルダ、すなわち下記の場所のSequencer_facades_xxx.pyファイルに書き込む。 :: $ gedit ~/facade/Sequencer_facades_hoge.py すると、上記のようにSequenceEditorのコマンド欄が変化することが確認できるはず。 Mar 29 2022 [bugfix:Utsusemi:4.0] The issue that D4Mat2Slicer occurs error when Xtalparam is loaded on MakeNewMatrix dialog in file menu. D4Mat2Slicerで、Fileメニューの"Make New Matrix..."を選択すると現れるダイアログにおいて、その"Load param file"ボタンを用いてXtalParamファイルを読み込むとエラーとなる問題に対処した。 内部で存在しないメソッドUtsusemiSqeCalcXtalParams::PutAxUnitsを呼び出そうとしてエラーとなっていた PutAxLabelsは存在しているが、この戻り値は "X"のラベル,"Y"のラベル、"T"のラベル×2の順番であり、一方"Make New Matrxi"ダイアログはAx1,Ax2,Ax3,Ax4の順であるので、実際には不都合である。 よって、PutAxLabelsではなく、PutViewAxesLabelsを用いるのが正解。 同様に、Unitの方もPutViewAxesUnitsを用いるように改変した。 **他の修正** - PutAxLabelsの戻り値と同じ並び方のUnitもあれば良いだろうと、今回PutAxUnitsを追加した。 - Make New MatrixダイアログやMake Virtual D4matパネルで、XtalParamではないファイルを読み込んだときにエラーを出すようにした。 - いくつかdoxygenコメントをUtsusemiSqeCalcXtalParamsに追加した。 Mar 28 2022 [bugfix:Utsusemi:4.0] Small fix about line-indents in code of UtsusemiSqeCalcXtalParams.cc Mar 28 2022 [bugfix:Utsusemi:4.0] The issue that UtsusemiSqeCalcXtalParam outputs a XtalParams.xml with wrong format about UBMatrix information. DATA_RDCT-131 空蟬4: VisualContQのUBマトリックス対応 - UtsusemiSqeCalcXtalParamの出力するUBマトリックス情報のタグ位置が間違っていたのを修正した - ちいさなバグ修正 Mar 27 2022 [bugfix:Utsusemi:4.0] The issue that pixel info (Pixel position, Polar and Azimuth angles) by DetectMap summation or integration of given pixels does not correct. DATA_RDCT-111 空蟬4:DetectMap関連 DATA_RDCT-79 空蟬4 DetectMapでMPlotの出力にPixel情報(PolarAngle, AzimAngle, L2など)を見せるように DetectMapで、Pixel範囲を指定してプロットした時に受け渡されているPixel情報(位置や2Theta, Azimuth角度など)が、選択領域の端のPixelのものが使われているが、正しい値としては選択(積分)領域の平均値であるべきである。 その点を修正した。 Mar 25 2022 [update:Utsusemi:4.0] Change method name from UtsusemiD4Matrix2::ProjectionStepByStep to ::Projection DATA_RDCT-59 空蟬4 : D4Mat2のデータ保存・読み込み機能 - ProjectionStepByStep名をProjectionに変更 **次に必要なこと** - オンラインモードでの挙動を確認(ここはいずれRedisPubSubに移行) Mar 25 2022 [update:Utsusemi:4.0] Add the default values for arguments of methods in UtsusemiGetNeunetHistogram and WiringInfoEditorBase Mar 24 2022 [bugfix:Utsusemi:4.0] The issue that runNo the delimitor of runNo argument in GetDataOfMonochroEi3 must be comma GetDataOfMonochroEi3の引数 *runNo* で複数のRunを与えるときに、スペース区切りではなく、カンマ区切りでないと受け付けない問題に対処した。 基本的に他の関数では、引数にstringを用いていて複数指定が可能な場合、カンマ区切りを基本としている。 GetDataOfMonochroEi3の引数は、基本スペース区切り(オリジナルのSequenceEditorの仕様のため)であったが、後ほどカンマ区切りも受け付けるようにした。 一方で、GetDataOfMonochroEi3はGetNeunetHist -> Manyo.Utsusemi.UtsusemiGetNeunetHistogramを使用するようになり、RunNoはカンマ区切りのみとなった。 これらの仕様の混在により、問題が発生した。 今回は引数runNoを与えた場合に、スペース区切り、カンマ区切り、両方を許可するように修正した。 今後も、引数で複数の値を与える場合カンマ区切りを基本とするが、後方互換のためにいくつかはスペース区切りも許可するのは今まで通り。 あと、この変更でエラーが出るようになった部分も修正した。 Mar 24 2022 [bugfix:Utsusemi:4.0] Typo in GetDataOfMonochroEi3 docstring Mar 23 2022 [bugfix:Utsusemi:4.0devApp] The issue that DlgSetUtsusemiEnv.py does not work correctly on saving file without change of beam line. DATA_RDCT-138 空蟬4.2:GUIコードのアプリ化 _loadenvのアップデートに伴い、挙動の不自然なところがあったので修正した。 - DlgSetUtsusemiEnv.pyを起動してビームライン選択リストに触れずに保存した場合に、必ず"SIK"が選ばれる問題 Mar 23 2022 [update:Utsusemi:4.0devApp] Improved environment settings DATA_RDCT-138 空蟬4.2:GUIコードのアプリ化 以下の仕様を満たすために変更を行った。 **想定仕様** *主なファイル* - _loadenv - _setEnvUbuntu - bashrc.SIK **_loadenv** 全ての基本となるファイル。全てのAppスクリプトの先頭で読み込まれる。主な機能は以下の通り。 1. OS依存性 OS環境により、OS環境依存設定ファイル(_setEnvUbuntu, _setEnvMac)、ユーザー環境設定ファイル(utsusemienv.cfg)のパス、UTSUSEMI_DATA_DIR, UTSUSEMI_USR_DIRのデフォルト位置が設定される。 2. ユーザー環境設定ファイル ユーザー環境設定ファイル(utsusemienv.cfg)がなければ作成する。さらにあらかじめUTSUSEMI_INST_CODEが指定されていれば、それを設定とする。 3. ユーザー環境設定ファイルにより設定 ユーザー環境設定とは *EnvironSetting* アプリで変更可能な、データ処理に関連するものである。このファイルを利用して以下の環境変数の設定を行う。 - UTSUSEMI_DATA_DIR - UTSUSEMI_USR_DIR - UTSUSEMI_DEBUGMODE - UTSUSEMI_INST_CODE - UTSUSEMI_LOG_QUIET - UTSUSEMI_MULTH - UTSUSEMI_DEFAULT_FONTSIZE 4. OS環境依存の環境変数設定 後述の_setEnvUbuntuを利用して設定する。 **_setEnvUbuntu** 主に空蟬本体の起動に関係する環境変数を設定する。 - MLFSOFT_PATH - MANYO_PATH - UTSUSEMI_BASE_DIR - PYTHONPATH, PATH, LD_LIBRARYPATH **設定** 最小限の設定 最小限の設定は *_loadenv* ファイルのあるbinフォルダを環境変数 *PATH* に追記するだけである。 :: export PATH=/path/to/utsusemi/bin:${PATH} 使用BLの固定 使用するBLを固定したい場合は、 *UTSUSEMI_INST_CODE* を先に指定しておく。 :: export UTSUSEMI_INST_CODE=SIK export PATH=/path/to/utsusemi/bin:${PATH} 空蟬環境を複数利用 使用する空蟬環境を *MLFSOFT_PATH* レベルで複数作成し、あらかじめ指定しておけば良い。 なお、 *MLFSOFT_PATH* は指定しないとデフォルト ("/opt/mlfsoft") が使用される。 :: export MLFSOFT_PATH=/opt/mlfsoft export PATH=/path/to/utsusemi/bin:${PATH} 設定サンプル 今回の変更に対する設定として、以下を参照すること。 :: python-utsusemi-SIK/bashrc.SIK 主要な部分は以下である。 :: # Utsusemi Environment export UTSUSEMI_INST_CODE=SIK export MLFSOFT_PATH=/opt/mlfsoft # BackUp PATH export PATH_UTSUSEMI_BACKUP=${PATH_UTSUSEMI_BACKUP:-${PATH}} # Executable path export PATH=${MLFSOFT_PATH}/python-utsusemi/utsusemi/bin:${PATH_UTSUSEMI_BACKUP} Mar 23 2022 [update:Utsusemi:4.0] Add new facade GetEiMultiEi2 produced by R.Kajimoto 新しく梶本氏が作られたGetEiMultiEi2ファサードを追加した。 **概要** 梶本氏のメール(2021/01/17)より一部抜粋 :: 最近、四季でモニタ代わりに使っていたダイレクトビームの検出器の強度を落としてからGetMultiEiが強度不足でうまく行かないことが多く不便でしたので、任意の検出器を積分してそこからEiを求めるコマンドを作ってみました。 #好みで出力にもこだわってみました:) 最初にGetNeunetHistを使って中性子エネルギーのヒストグラムになおして、選択した検出器のデータを足し合わせてから、エネルギースペクトルをガウス関数でフィットしています。エネルギーのヒストグラムに変換する時点で各検出器のL2の差は補正されているはずなので、広い範囲の検出器を選択してもエネルギーのズレはないはずです。 Mar 23 2022 [update:Utsusemi:4.0] small improvement of D4Mat2Slicer about showing experimental information on M2Plot+ DATA_RDCT-136 空蟬4:D4Mat2SlicerのXtalParamの読み込みとそのほか細かいGUI スライスをM2Plot+で表示する際に実験情報の表示を少し見栄えをよくした。 Mar 22 2022 [update:Utsusemi:4.0devApp] Add desktop launcher for apps. DATA_RDCT-138 空蟬4.2:GUIコードのアプリ化 Ubuntuのデスクトップ(Gnome)にラウンチャーを作成するスクリプトとアイコン画像を加えた。 なお、ランチャー作成時にその時の環境変数を読み込むので、環境が変わったら再度作り直す必要がある。 **使用方法** python-utsusemi/bin/をPATHに追加する。 続けて、以下のコマンドを実行する。 :: $ CreateGnomeDesktopApps 結果、デスクトップに以下のファイルが作成される。 - Sequencer.desktop - D4mat.desktop - D4mat2.desktop - M2Plot.desktop - EnvironSetting.desktop これらのファイルを右クリックし、出てきたメニューから"Allow Launching"もしくは「起動を許可する」を選択すれば、アイコンのついたランチャーとなる。 Mar 22 2022 [update:Utsusemi:4.0devApp] Update DlgSetUtsusemiEnv.py DATA_RDCT-138 空蟬4.2:GUIコードのアプリ化 環境設定用GUIである、DlgSetUtsusemiEnv.pyをアップデートした。 - GUIのソースとなる.uiファイルがなかったので、GUIをいちから書き直した - DlgSetUtsusemiEnv.ui - ui2_DlgSetUtsusemiEnv.py) - 環境変数として *UTSUSEMI_DEFAULT_FONTSIZE* を加えた Mar 22 2022 [update:Utsusemi:4.0devApp] Add scripts as App launchers DATA_RDCT-138 空蟬4.2:GUIコードのアプリ化 最初のアップロード。 python-utsusemi/binを作成し、その中に起動用スクリプト(App)を配置する。 このbinフォルダをPATHに追加することでそれぞれのAppをダイレクトに起動すル。 これらのAppは、内部に _loadevnを呼び出し、必要な環境設定を行う。 同フォルダの_setEnvUbuntuは、OSの環境依存を集約する目的でおいている。 またユーザーごとの設定ファイルは、現状 ~/.mlfsoft/utsusemi/utsusemi.cfg に置かれる。 Mar 20 2022 [update:Utsusemi:4.0] small improvement (changed args name of RotStep to RotAngle on GetOriginPixel seriese ) Mar 19 2022 [update:Utsusemi:4.0] Add some scripts to compile c++ codes of manyo+Utsusemi. Mar 19 2022 [update:Utsusemi:4.0] Add uninstall option to Makefile Mar 19 2022 [update:Utsusemi:4.0] Remove useless codes in WiringInfoEditor series Mar 18 2022 [bugfix:Utsusemi:4.0] The issue that some actions on D4Mat2Slicer about treating XtalParams and GUI is not correct. DATA_RDCT-136 空蟬4:D4Mat2SlicerのXtalParamの読み込みとそのほか細かいGUI **問題** 部分的にXtalParamを読み込む際に、GUIの情報が古い情報に置き換わる *対処* 読み込んだXtalParamの情報で変更する場合、実施に変更する情報以外は内部で保存してる情報で置き換えるために発生する。 すなわちGUI上で変更された情報が内部情報に取り込まれるタイミングがないので、保存されていた古い情報で上書きされる。 よって、以下のアクション時に内部情報を更新するようにした。 - XtalParamを読み込む直前 - Projectionを行なった直後 *その他の要望* 1. メインパネルのData Reduction欄に示される角度の情報が、たまに桁が非常に多い場合がある 2. スライスのプロット画面にData Reductionの情報を載せてほしい 対処1 角度情報を内部で保管する際に、必ず round( x, 3 )で小数点3桁までの数値に丸めてから保管するようにした 対処2 プロット時に与えるタイトルとサブタイトルにData Reduction情報も加えた 4.0.220317 or later ====================== Mar 17 2022 [update:Utsusemi:4.0] Add facade functions CalcYRotAngle seriese and add functions to show command name on execute RadialCollimaterCorrect with UTSUSEMI_LOG_QUIET=y 以下の機能追加を行った - UTSUSEMI_LOG_QUIET=y状態で、Cmm.RadialCollimatorCorrectの実行時に、コマンド名が表示されない問題に対処 - 新しくfacadeとして Cmm.CalcYRotAngleFromQXtalParam および Cmm.CalcYRotAngleFromQString を追加 Mar 17 2022 [bugfix:Utsusemi:4.0] The issue that error calculation in ShamotoDymPDF class fails because of wrong conversion about Q values DymPDF計算結果をプロッタで表示すると、一部抜けがあるように見えた問題に対応。 調査すると、計算結果のエラー値がnanになっているデータがあり、マスクがかけられていたため抜けがあるように見えた。 エラーの値が誤って計算されていることが原因と見られるので修正した。 また、一部移植時にtypoもあったので修正した。 Mar 17 2022 [update:uGao:master] Add new color map of 'turbo' DATA_RDCT-134 夕顔:新しいカラーマップの追加 推薦のあったColorMapである **turbo** を追加した。 これは、matplotlib 3.3.0以降では採用されているので、将来的には不要となる。 なお、matplotlibのcmapへの取り込みは下記のスクリプトを利用させてもらった。 https://gist.github.com/FedeMiorelli/640bbc66b2038a14802729e609abfe89 Mar 11 2022 [update:Utsusemi-SAS:0.3.7] Improve some functions to treat multi data using with CaseInfo analysis. DATA_RDCT-133 BL15でのCaseInfoを用いたデータ処理をするファサードがない問題 CaseInfoを用いた場合、単独のRunNoにたいして複数のデータが出現する。 例えばヒストグラム作成時にCaseInfoで分割を行うと、ファサードの戻り値としてはそれらのデータをリスト形式を用いることになる。 今回「リストに収められた複数データ」を通常のファサード関数でも使えるようにする試みの初手である。 **ヒストグラム化** いくつかあるヒストグラム化の関数にたいして変更を行った。 変更方針は下記となる。 1. CaseInfoを与えるのに、引数paramFilesを使用し、三つ目のパラメータファイルとしてCaseInfoを追加 2. 内部での処理は「リストに収められた複数データ」を基本とする 3. 戻り値は複数データの場合はリスト、一つだけリストにデータがある場合はそのデータのみ返すことで、以前の関数と同じ動作を保証する - HistBaseCommands::GetHistogramBaseSAS - 上記の1-3以外に以下の修正などを行った - モニターデータのCaseInfoによる分割がうまくいかない問題に対処 - GateNETのモニターのPulseIdとNEUNETおよびTrigNETのPulseIdとが一致しないために発生する。UtsusemiGetNeunetHistogram::SetFlagOfPulseIdCheckの制御で回避 - HistBaseCommands::GetMonHistSAS - 上記の1-3以外に下記の修正を行った - 引数にGetHistogramSASと同様に 引数paramFilesを追加し、CaseInfoに対応できるようにした - TransBaseCommands::GetTransNormByMon系列 - 上記の1-3に対応し、内部でGetMonHistSASを呼び出すので、引数にparamFilesを加えてCaseInfoを渡せるようにした。 - GetTransNormByMonCounts - GetTransNormByMonCountsTS - GetTransNormByMon - GetTransNormByMonTS **補正関数** 基本、引数で「リストに収められたデータ」を与えられたら、それに対応できるようにした。 - TransBaseCommands::TransmittanceCorrectionExp - TransBaseCommands::TransmittanceCorrectionPoly3 - TransBaseCommands::FitExponentialWoBase - TransBaseCommands::FitExponential - TransBaseCommands::FitPolynominal3 - Trans::TransMittanceCorrection - Trans::TransMittanceCorrectionExp - Trans::TransMittanceCorrectionPoly3 **ファサード関数** - Cmm::GetNeunetHistSAS - 複数のRunNoに対応しているようでしていなかったので修正 - RunNoごとにBaseCommands::GetNeunetHistを実行し、戻り値はリストがくることを想定し修正 - Cmm::DataReductionMulti - 複数のRunNoを与えたときのモニターの処理に不備があったので修正 - データが一つの時はデータそのものを返すようにした - Cmm::SubtractBackMulti - 「リストに収められた複数データ」から共通のバックグランドRunを引き算できるようにする機能を追加した - Hist3::GetMonHistSAS - 引数にparamFilesを加えてCaseInfoを渡せるようにした **今後** 他にも「リストに収められた複数データ」対応が必要そうな関数があれば対応してゆく。 ユーザーが直接扱うファサードとして今回は、ヒストグラム化(Hist3::GetNeunetHistSAS,GetMonHistSAS)およびリダクション補正(Cmm::DataReductionMulti)と透過率(Trans::TransMittanceCorrection)の補正だけにとどまる。 Mar 8 2022 [bugfix:Utsusemi:0.3.7] The issue that core dump occurs in UtsusemiTrignetDictionary::SetClock Mar 8 2022 [bugfix:Utsusemi-SAS:0.3.7] The issue that wrong results return when signal as virtual time origin has chattering region on TrigNET. BL15で、TrigNETに矩形波(周期10秒以上)を打ち込んで、そのRiseとFallのシグナルを仮想的な時間原点として時間分解し、かつサイクリックにデータを集める手法がある。 この場合、CaseInfoを以下の二つに分けて処理する。 - Riseをキッカーとして時間分解するcaseinfo - Fallをキッカーとして時間分解するcaseinfo 問題 この実験で実際に装置を組むと、Riseは綺麗なシグナルだが、Fall時にチャタリングが発生する事態となった。この場合、チャタリングが発生する時に短時間に複数回の時間原点が発生することになり、正しく時間分解ができない可能性がある。そこで時間分解のレンジ内に別のトリガーが来た時に、そのトリガーを無視する機能をつけた。しかしながら、それがうまく動作しなかったので、修正を試みた。 原因1 結局、CountEvent関数の中で、Counter Triggerを仮想原点Kickerとする場合に、SetClock( clock )を行う。これは戻り値としてCaseを返すのだが、SetClock関数の仕様として、直前のCase(_preCase)と同じだと、Case=0を返す、という仕様となっていた。 原因2 CountEvent関数では、SetClockの戻り値(Case)が0だと、次のトリガーを探しにゆく流れとなっているので、_preCaseと同じだと次のトリガーが発動していた。 修正 SetClock関数でConditionType=1(羅列タイプ)の時に以下のように変更した。 - _preCaseと同じならそのまま_preCaseを戻す - 羅列のリストで範囲に飛びや抜けがある場合、その隙間の値の時にはCase=0が戻ってしまう。その時は_preCaseを返す。 Mar 7 2022 [bugifx:Utsusemi:4.0] The issue that import error of HPN/facade/Cmm.py Mar 7 2022 [bugfix:Utsusemi:4.0] The issue that nxspe file made by the other software cannot be read correctly. DATA_RDCT-127 空蟬4: nxspe出力関連 以下の問題に対処 - 他のアプリのnxspeを読み込む際に、内部のpixelごとのデータはElementContainerに変換し、さらにnum_of_pixel/PSDの個数ごとにElementContainerArrayに収めるのだが、あまりが出た時の処理が正しくない Mar 7 2022 [bugfix:Utsusemi:4.0] Small bugfix Mar 7 2022 [bugfix:Utsusemi:4.0devUB] The issue that VisualContQ occurs error on using UtsusemiSqeCalc2 and UtsusemiSqeCalcXtalParams with UB matrix DATA_RDCT-131 空蟬4: VisualContQのUBマトリックス対応 UB行列対応したUtsusemiSqeCalc2やUtsusemiSqeCalcXtalParamsを利用する環境でVisualContQで使用すると以下の問題が発生するので対処した - VisualContではこれまで使用していなかったUB行列や優先度の情報を扱っていないことに起因し処理できない問題があったので修正した - XtalParamファイルの書き出しのフォーマットに問題があったので修正した Mar 7 2022 [update:Utsusemi:4.0devUB] Improve functions to treat UB matrix in UtsusemiSqeCalc2 class DATA_RDCT-131 空蟬4: VisualContQのUBマトリックス対応 UtsusemiSqeCalc2クラス内でUB行列を扱うにあたり、役割分担と関数名を一致させて処理の流れを整えた 以前 :: MakeProjectionMatrix(LA,U,V,R,Vi) -> _MakeProjectionMatrix(LA,U,V,R,Vi) -> 変換行列A作成 MakeProjectionMatrix(UB,R,Vi) -> _MakeProjectionMatrix(UB,R,Vi) -> 変換行列A作成 変更後 :: MakeProjectionMatrix(LA,U,V,R,Vi) -> _MakeUBIMatrix(LA,U,V) | V MakeProjectionMatrix(UB,R,Vi) -> _MakeUBIMatrix(UB) -> _MakeProjectionMatrix(R,Vi) -> 変換行列A 役割 - _MakeUBIMatrix - 内部でUB行列の逆行列(UBI)を作成する - _MakeProjectionMatrix - 内部のUBIと引数(回転情報、スライス軸情報)で最終的な変換行列Aを計算 Mar 5 2022 [bugfix:Utsusemi:4.0] The issue that compiler shows some warning messages on macos. macOS 上でコンパイルした時に以下のWarningが出る問題に対処。 :: Utsusemi_wrap.cxx:82719:3: warning: delete called on 'UtsusemiReadoutEventDecoderTemplate<WiringInfoEditorReadout, DetectorInfoEditorReadout2d>' that is abstract but has non-virtual destructor [-Wdelete-abstract-non-virtual-dtor] delete arg1; ^ (以下同様のメッセージが4つほど) このメモリリークは仮想関数を定義した時、具体的には以下のように定義した時に、デストラクタにもvirtualをつける必要がある(仮想デストラクタが必要)というC++言語仕様のせいらしい。 :: virtual void method() = 0; そこで、問題が発生しているクラス - manyo/UtsusemiEventDataConverterReadoutTemplate.hh - manyo/UtsusemiReadoutEventDecoderTemplate.hh のデストラクタにvirtualを付与した。結果、上記のWarningは消えた。 Mar 5 2022 [bugfix:Utsusemi:4.0] The issue that "the error for object : pointer being freed was not allocated" occurs on exiting from python3 after import Manyo.Utsusemi on macos macOS 上でコンパイルしたManyo.Utsusemiをpython3上でimportしてctrl-Dで終了すると、以下のエラーが出る問題に対処。 :: Python(20680,0x102494580) malloc: *** error for object 0x102494580: pointer being freed was not allocated Python(20680,0x102494580) malloc: *** set a breakpoint in malloc_error_break to debug zsh: abort python3 このエラーが出ると、Appleに報告する旨のダイアログが出る。その詳細は以下の文章で始まるものである。 :: ------------------------------------- Translated Report (Full Report Below) ------------------------------------- (後略) このメッセージをつらつら眺めていると、libmxml.1.dylibがエラーを起こしているように見えた。元々libmxmlはUtsusemiでは不要であり、Linux版では大昔に削除されていたものだった。 よってmacOS上でのコンパイルに使用するMakefile.py3.macに含まれていた以下を削除した。 :: -lmxml \ その結果、上記の無駄なポインタの解放によるエラーがなくなった。 Mar 3 2022 [bugfix:Utsusemi:4.0] The issue that deb packages comple fails because manyo/Makefile.obj is not updated about EventDataCreater class Mar 1 2022 [update:Utsusemi:4.0devUB] Add functions to treat UB matrix in UtsusemiSqeCalc2 class DATA_RDCT-131 空蟬4: VisualContQのUBマトリックス対応 UtsusemiSqeCalc2クラス内でUB行列を扱えるようにする。 **UB行列定義** (qx,qy,qz):装置系Q座標 :: |qx| | | |H| |qy| = |UB-Matrix|x|K| |qz| | | |L| **変更点** - UB行列の逆行列を内部で持つ(これがSqeCalc2内での変換に一番近い) - MakeProjectionMatrixの多様化 - 格子定数+U,Vベクトル, 回転情報, View Axes(従来) - UB行列, 回転情報, View Axes (追加) - いずれも内部でUB行列の逆行列を算出し、それを用いて最終的なProjectionMatrixを計算するロジックで共通化する - _SetViewMatrixの見直し - View Axesを用いた変換行列とは結局、基底変換行列の作成であるから、_SetBasisVectToMatrixに統合する - _SetViewMatrix は _SetBasisVectToMatri(vector<Double>, gsl_matrix )にする - SetUBMatrix追加 4.0.220228 or later ====================== Feb 28 2022 [bugfix:Utsusemi:4.0] fixed small typo in BaseCommands:CopyData Feb 20 2022 [update:Utsusemi-SAS:4.0] Improve Cmm.GetNeunetHistSAS to enable to give several run numbers Feb 20 2022 [update:Utsusemi-SAS:4.0] Update UBSlicer DATA_RDCT-113 空蟬:BL15 QxQyQzをQhklに変換しスライスする機能の実装 UBSlicerを以下の点で改良した - 読み込んだデータ(ElementContainerMatrix)のヘッダからRunNoを取り出してGUI上(WindowTitleやLabel)に表示 - 2Dプロットのタイトルの表示を改良 - RunNoをM2Plot+のMain Title - Sub TitleのUB行列の表現方法を改良 - Projectionを行う前ではSlice情報の領域をdisabledとなるようにした - FileメニューからLoad ... を選択した場合も同様の挙動となるようにした Feb 19 2022 [bugfix:Utsusemi-SAS:4.0] The issue of TreatQhklWithUB that calculation with ViewAxes has problem. DATA_RDCT-113 空蟬:BL15 QxQyQzをQhklに変換しスライスする機能の実装 TreatQhklWithUBで、ViewAxesをデフォルトから異なる行列にすると、うまく動作しない問題に対処した。 - UB行列をgsl_matrixに置き換える部分に問題があったので修正 - ViewAxesを行列に変換するやり方をそのままUB行列の代入に使用していた。そのため、結果的に射影結果を取り出す時にもおかしな取り出し方をしていた。それらを正しい(UtsusemiSqeCalc2と同じ)方法に修正した。 Feb 18 2022 [bugfix:Utsusemi:4.0] Improvement about treatment of cases in a frame using Ambiguity param=3 at UtsusemiFileterBase::CheckAmbiguousFrame(2) Feb 18 2022 [bugfix:Utsusemi:4.0] Improvement about treatment of cases in a frame using Ambiguity param=3 at UtsusemiFileterBase::CheckAmbiguousFrame Feb 18 2022 [update:Utsusemi-SAS:4.0] Add facade functions to Load/Save of ManyoBinary format Feb 18 2022 [update:Utsusemi-SAS:4.0] Improved UBSlicer to add save and load UB matrix parameters DATA_RDCT-113 空蟬:BL15 QxQyQzをQhklに変換しスライスする機能の実装 UBSlicerに以下の機能をつけた - UB matrix情報を保存し、読み込めるようにした - 将来、非弾性のVisualContのもの(XtalParam.xml)と共通フォーマットにする - UI上にProject AxesにUnit(単位)の欄をつけた Feb 17 2022 [update:Utsusemi-SAS:0.3.7] Update WiringInfo and DetectroInfo for current status at BL Ana PC Feb 16 2022 [update:Utsusemi-SAS:0.3.7] Add new facade functions for the inelastic sacattering data treatments DATA_RDCT-126 BL15: 非弾性散乱処理の実装 BL15における非弾性散乱処理(ヒストグラム化と円環平均処理)の関数を加えた。 またGetHistogramSASで横軸Energyで処理できるようにした。 **追加ファサード関数** *Hist3.GetHistInelaSAS* .. code-block:: python def GetHistInelaSAS( runNo="0", Bank="SM", Ei=10.0, Erange="-5 5", dHW=0.1): """ Histogram Creation for inelastic scattering on SAS @param runNo (string) Run Number "10,11,12" @param Bank (string) "SM"... Monitors by "MON1" or "MON2" @param Ei (float) Incident energy @param Erange (string) <hw_min>, <hw_max> @param dHW (float) bin width of hw @retval DAT (ElementContainerMatrix) """ *Hist3.ToPowder* .. code-block:: python def ToPowder(dat=DAT,startQ=-1.0,endQ=-1.0,deltaQ=0.1): """ Convert data from crystal to powder @param dat [Def:DAT] (ElementContaienrMatrix) @param startQ (double) Q value of range; if minus, auto calculated @param endQ (double) Q value of range; if minus, auto calculated @param deltaQ (double) binning of Q @retval ECM (ElementContainerMatrix) """ *GetHistogramSAS* Xrangeにtype:"ene"を追加 :: @param Xrange (string) "startX endX widthX type" separated with space (not comma) : type=[dL, dL/L, tof, d, ene] Feb 14 2022 [update:Utsusemi-SAS:4.0] Add new visualization application to use TreatQhklWithUB class DATA_RDCT-113 空蟬:BL15 QxQyQzをQhklに変換しスライスする機能の実装 manyo.SAS.TreatQhklWithUB を使用し、結果を可視化するためのGUIアプリを作成したので追加した。 **変更・追加したファイル** 新たに(今回初めて)python-utsusemi/SAS/visにUBSlicer.pyを作成した。 名前はもう少し考えたいが・・・ *GUIアプリ* :: vis ├── UBSlicer.py ├── __init__.py ├── ui2_SAS_UBSlicer.py └── uis ├── SAS_UBSlicer.ui └── conv2_UB_Slicer.sh *ファサードの登録* :: python-utsusemi-SAS/facade/VisualModule.py Feb 14 2022 [update:Utsusemi-SAS:0.3.7] Update manyo/TreatQhklWithUB class to treat HKL with UB matrix DATA_RDCT-113 空蟬:BL15 QxQyQzをQhklに変換しスライスする機能の実装 - ConvertToQspace::Executeの修正(Q=ki-kf)の結果、UB matrixを原点対称する機能を廃止 - いくつかのメソッドで使用していた引数"isOrgSyn"とUB matrixを原点対称にする処理が不要となったので修正した - UB matrixを作用させた軸を"Q1","Q2","Q3"と規定した - ElementContainerに登録するKEYを、これまでのSetViewAxesLabelで与えていた_Labelsから、"Q1","Q2","Q3"(_Keys[])に変更 - KEYとLABELの分離(LABELは自由に与えられるためKEYに相応しくない文字列が使われる可能性が高いため) - これらのKEYを取り出すメソッド PutQKeysList() も追加 Feb 14 2022 [bugfix:Utsusemi-SAS:0.3.7] The issue that the calculation of <Qx Qy Qz> is wrong. manyo.SAS.ConvertToQspace::Execute で行われている検出器位置情報と波長から装置系のQx,Qy,Qzを計算する際に :: Q = kf - ki と定義していたのを修正した。 :: Q = ki - kf Feb 13 2022 [update:manyo:0.3.4] Add -std=c++11 to core/Makefile Feb 13 2022 [bugfix:manyo:0.3.4] the issue that ManyoData Binary format does not include units of ElementContainer data. DATA_RDCT-128 万葉: ManyoBinaryフォーマットElementContainerの単位情報が記録されない? ElementContainerの単位の情報は、内部のHeaderBase UnitHeader に保管されている。 ManyoDataIOクラス内のWrite部分とRead部分で、このUnitHeaderを保存・読み込み部分がコメントアウトされていた。 これを戻すだけだと、ElementContainer読み込み時にAdd関数でvectorを追加する際UnitHeaderに対して再度書き込みを行うためWarningを起こす。(それがコメントアウトの原因?) 以下のように対応した。 - 保存時 : UnitHeaderを保存する - 読み込み : UnitHeaderは読み込むがElementContainerには直接登録せず、Add関数の時のキーに対する単位用Mapとして使用することでWarning回避 Feb 13 2022 [update:Utsusemi-SAS:0.3.7] Update manyo/TreatQhklWithUB class to treat HKL with UB matrix DATA_RDCT-113 空蟬:BL15 QxQyQzをQhklに変換しスライスする機能の実装 - ViewAxesを設定できるようにした - GUIをつけることを想定して関数を追加した - いくつかの関数と引数、内部変数の名前を整理した **処理の流れ** - UBmatrixを設定 - ViewAxesを設定(各軸をQ1, Q2, Q3とした) - SliceでのプロットのX軸,Y軸,厚み軸をQ1, Q2, Q3で指定 - Slice軸の範囲指定はX軸, Y軸, 厚みで指定 **サンプルコード** .. code-block:: python import Manyo import Manyo.SAS as ms ubmat = [ 0.306,0.164,-0.961, -0.007,0.767, 0.012, 0.836,0.420, 0.352 ] TQ=ms.TreatQhklWithUB(DAT) TQ.SetUBmatrix( ubmat, True ) TQ.SetViewAxes( [1,0,0],[0,1,0],[0,0,1]) #Q1=[H,0,0], Q2=[0,K,0], Q3=[0,0,L] TQ.SetViewAxesLabels( "H","K","L","rlu","rlu","rlu" ) # Q1:"H(rlu)", Q2:"K(rlu)", Q3:"L(rlu)" TQ.Projection() # cordinate projection (Qx,Qy,Qz) -> (Q1,Q2,Q3) # Setting for slice TQ.SetSliceAxes("X","Y","T") # Q1:X-axis Q2:Y-axis Q3:Thickness for slicing allr = TQ.PutSliceMaxRangeList() # [<X min>,<X max>,<Y min>,<Y max>,<Thickness min>,<T max>] Xrange = [allr[0],allr[1], 0.01] # Xrange = [<min>,<max>,<bin width>] Yrange = [allr[2],allr[3], 0.01] # Yrange = [<min>,<max>,<bin width>] Trange = [ -1-0.05, -1+0.05 ] # T range = [<min>,<max>] # Slice ECA = Manyo.ElementContainerArray() TQ.Slice( ECA, Xrange, Yrange, Trange ) Feb 11 2022 [update:Utsusemi-SAS:0.3.7] Update manyo/TreatQhklWithUB class to treat HKL with UB matrix DATA_RDCT-113 空蟬:BL15 QxQyQzをQhklに変換しスライスする機能の実装 TreatQhklWithUBへの入力と一部の出力をPyObject(リスト)を利用できるようにした。 **主な追加** *TreatQhklWithUB::SetUBMatrix* - 中島さんのUBマトリックスは座標軸が空蟬のものと原点対称なので、それを反転させるためのフラグを追加 - 代わりにSetUBMatrixTNを削除 - Pythonのリストを入力で受け付けるようにした *TreatQhklWithUB::Slice* - Pythonのリストを入力で受け付けるようにした **その他** - PutAxesRangeをvector<Double>ではなくPythonリストで返す関数を追加した(TreatQhklWithUB::PutAxesRangeList) - コメントを追記 **サンプルコード** .. code-block:: python import Manyo import Manyo.SAS as ms # UB matrix ubmat = [ 0.306,0.164,-0.961, -0.007,0.767, 0.012, 0.836,0.420, 0.352 ] # Set Data and UB matrix to calculate HKL axes tt=ms.TreatQhklWithUB(DAT) tt.SetUBmatrix( ubmat, True ) # required to use Taro Nakajima's UB matrix tt.SetAxesLabel( "H","K","L" ) tt.Execute() # Slice Range allr = tt.PutAxesRangeList() # [<H min>,<H max>,<K min>,<K man>,<L min>,<L max>] ## H range (X-axis) Hrange = allr[0:2] Hrange.append( 0.01 ) ## K range (Y-axis) Krange = allr[2:4] Krange.append( 0.01 ) # L range (Thickness) Lrange = [ -1-0.05, -1+0.05 ] # Slicing ECA = Manyo.ElementContainerArray() tt.Slice( ECA, Hrange, Krange, Lrange ) Feb 10 2022 [update:Utsusemi-SAS:0.3.7] Add manyo/TreatQhklWithUB class to treat HKL with UB matrix DATA_RDCT-113 空蟬:BL15 QxQyQzをQhklに変換しスライスする機能の実装 大観のデータ(最低以下を行なったデータ)に対し、UBマトリックスを与え、HKL軸に変換しスライスする機能を実装した。 - Hist3.GetHistogramSAS - Corr.ConvertQSpace **サンプルコード** .. code-block:: python import Manyo import Manyo.SAS as ms # Make UB matrix ubmat = Manyo.MakeDoubleVector() ubmat.append( 0.306 ) ubmat.append( 0.164 ) ubmat.append( -0.961 ) ubmat.append( -0.007 ) ubmat.append( 0.767) ubmat.append( 0.012 ) ubmat.append( 0.836 ) ubmat.append( 0.42 ) ubmat.append( 0.352 ) # Set Data and UB matrix to calculate HKL axes tt=ms.TreatQhklWithUB(DAT) tt.SetUBmatrix( ubmat ) #tt.SetUBmatrixTN( ubmat ) tt.SetAxesLabel( "H","K","L" ) tt.Execute() # Slice allr = tt.PutAxesRange() # H range (X-axis) Hrange = Manyo.MakeDoubleVector() Hrange.append( allr[0] ) Hrange.append( allr[1] ) Hrange.append( 0.01 ) # K range (Y-axis) Krange = Manyo.MakeDoubleVector() Krange.append( allr[2] ) Krange.append( allr[3] ) Krange.append( 0.01 ) # L range (Thickness) Lrange = Manyo.MakeDoubleVector() Lrange.append( -1-0.05 ) Lrange.append( -1+0.05 ) # Slicing ECA = Manyo.ElementContainerArray() tt.Slice( ECA, Hrange, Krange, Lrange ) Feb 1 2022 [bugfix:Utsusemi:devCalcPosi] remove useless codes and move messages for debug to show them on Debug mode. Feb 1 2022 [bugfix:Utsusemi:devCalcPosi] The issue that the calculated pixels are wrong when given Q position has distance from a horizontal plane DATA_RDCT-108 空蟬4:単結晶試料データ処理後のQ空間の座標を測定するために必要な試料の方位を求める手段 角度計算(CalcYRotAngleFromQ)の第2候補のPixel情報がおかしいという問題に対処 **問題点** 水平面から離れると、計算されたPixelがおかしくなる現象。 **解決方法** まず押さえるべき点は、実験室系のki_o(0,0,ki)と、Q(qx,qy,qz)から求めたkiとの間の角度を計算することが目的であること。 また、ki_oとkiを揃えるための回転方向はY軸を軸中心とした回転方向のみである。 一方、Q_vec=ki_vec-kf_vecを満たすkiとkfは、OQベクトルに垂直で、中心がOQ上にある円周上のどこでも良いはずである。 (正確には、Q_vecの始点を中心とした半径kfの球面と、Q_vecの終点を中心とした半径kiの球面の交差する円周) よって、ki_oとの角度を計算する際に最も適している場所を選ぶべきだ。 すなわち、Y軸に対して垂直な同一面内にQ_vecの終点(先端)とkiの始点が乗る、つまりkiをその面内でY軸中心に回転させれば ki_oと一致できるようなkiを選ぶことにする。 そのためには、kiとkfの円周の式で、Y軸=qy(Q_vecの先端のY)の点での直線式を用いて、二つのkiを求めればよい。 **修正** これまで、CalcTwoSpharePlaneで計算された二つの球面の重なる円周の面の式( Sa*X + Sb*Y + Sc*Z + Sd = 0 )にY=0を入れた直線の式を利用して、二つのkiを求めていた。これだとQがY=0平面に近ければ問題はないが、Y=0平面から離れると角度がおかしくなってしまっていた。 そこで、今回は円周の面の式のYにqyを入れることで、ki_oとkiが同一平面となり、回転角度も正しく計算されるようになった。 **前回の疑問点** - qx,qy,qzの方位であるが、-qx/kf, -qy/kf, (ki-qz)/kf という値は使わなくて良いか確認が必要 - この値を用いると各軸での演算により方位が狂うので不要であると結論。 Feb 1 2022 [update:Utsusemi:devCalcPosi] DATA_RDCT-108 空蟬4:単結晶試料データ処理後のQ空間の座標を測定するために必要な試料の方位を求める手段 角度計算(CalcYRotAngleFromQ)の第2候補のPixel情報がおかしいという問題に対処 **修正** - GetOrigPixelFromQ - px,py,pzの方向ベクトルとPSDの交点を求める際に、(-px,-py,-pz)方向の交点も許可していたのを修正した - 一つも見つからなかった時に、Raiseしていた。しかし見つからない場合はNoneであるので、Noneを返すようにした - CalcYRotAngleFromQ - 散乱方向kfの方位を計算する際に、ベクトル方向が逆だったので修正した **今後の疑問点** - qx,qy,qzの方位であるが、-qx/kf, -qy/kf, (ki-qz)/kf という値は使わなくて良いか確認が必要 Jan 31 2022 [update:Utsusemi:0.3.7] improve EventDataConverterTemplate::SetDataPath to show search path TSUSEMI_DATA_DIRの中に複数のフォルダがあったときに、SetDataPathがうまくフォルダを選べないことがある。 その原因がわかりにくいので、UtsusemiMessageでフォルダを表示することにした(様子見)。 Jan 31 2022 [bugfix:Utsusemi:0.3.7] The issue core dump happened on histogram creation when given daqId or moduleNo are not defined in WiringInfo. DATA_RDCT-123 BL15のHDバンクのデータの処理中に落ちる問題 **原因** T0イベントから読み込んだmoduleNoがWiringInfoに情報(ABCパラメータなど)が記載されてなかったため、存在しない情報(NULL)にアクセスして落ちていた。 **対処** 1. WiringInfoの情報にアクセスする場合に、与えられたDaqIdとmoduleNoがWiringInfoに登録されていない場合でも落ちることがないようにした 2. T0イベントから読み込んだmoduleNoが、Incrementの引数で渡されたNoと違った場合にWarningを出力するようにした Jan 28 2022 [bugfix:Utsusemi:4.0] The issue that CalcYRotAngleFromQ and GetOrigPixelFromQ do not work correctly(2) DATA_RDCT-108 空蟬4:単結晶試料データ処理後のQ空間の座標を測定するために必要な試料の方位を求める手段 以下の関数で、わかりにくい表現をする問題や正しく動作しない問題を修正した。 - ana.Reduction.BaseCommandsInEla.GetDetectorPixelFromOrientation - 与えられたポジションが検出器のカバーする範囲外の時に"Out of range"と表示し None を返すようにした - ana.Reduction.BaseCommandsInEla.CalcYRotAngleFromQ - 最終的なPixelを計算する部分で、Qy方向の情報を計算していなかったので修正した - GetDetectorPixelFromOrientationがNoneを返すときの処理を追加した - ana.Reduction.BaseCommandsInEla.CalcYRotAngleFromQXtalParam - 回転情報を入力するとエラーとなるのを修正 Jan 27 2022 [bugfix:Utsusemi:4.0] The issue that CalcYRotAngleFromQ and GetOrigPixelFromQ do not work correctly DATA_RDCT-108 空蟬4:単結晶試料データ処理後のQ空間の座標を測定するために必要な試料の方位を求める手段 以下の関数で、正しく動作しない問題を修正した。 - ana.Reduction.BaseCommandsInEla.CalcYRotAngleFromQ - 最終的なPixelを計算する部分が間違っていたのを修正 - ana.Reduction.BaseCommandsInEla.GetOrigPixelFromQ - 回転情報を入力するとエラーとなるのを修正 Jan 27 2022 [update:Utsusemi:4.0] Update Makefile.obj.vc to build Manyo.Utsusemi module on Windows 4.0.220125 or later ====================== Jan 20 2022 [Bugfix:Utsusemi:0.3.7] The issue that ABC parameter detID=70 was wrong. Jan 20 2022 [Update:Utsusemi:4.0] Simplify WiringInfo format in SIK/ana/xml for Utsusemi4 DATA_RDCT-116 空蟬4:WiringInfo, DetectorInfoでタグの単純化 空蟬4では、WiringInfoやDetectorInfoのタグのルールを単純化している。 すなわち昔は同じタグが複数含まれている場合、親タグの属性に"n"、子タグの属性に"i"をつけるルールがあったが撤廃したので、主にその点についてより単純なフォーマットで対応できるようになった。 その単純化を進めた。最初はSIK/ana/xml/WiringInfoである。 Jan 20 2022 [Bugfix:Utsusemi:4.0] The issue that error occurs when MakeNewMatrix and RebinMatrix on the menu in D4MatSlicer are executed. 以前に行った、「XtalParam.xmlに軸の単位を追加、D4MatSlicer系への対応」の結果、manyo/UtsusemiD4Matrix::AllocateNewMat に新しく単位を指定する引数が追加された。 この結果、D4MatSlicer.pyのメニューから選べるMakeNewMatrixとRebinMatrixを実行するとこの引数が追加されていなかったためエラーが起きる。 この部分を修正した。 Jan 20 2022 [Update:Utsusemi:4.0] Add new argument at UtsusemiWiringInfoEditorTemplate::MakeTempWiringInfo to save xml information as a file. Jan 18 2022 [update:Utsusemi:0.3.7] Improve ABC parameters in WiringInfo to add new one Jan 5 2022 [Update:Utsusemi:4.0] Add new facade functions to treat Shamoto's DymPDF class DATA_RDCT-77 空蟬4 Dynamical PDF 計算コード移植 社本氏のDynamical PDFの計算クラス (ShamotoDymPDF) を使用するためのファサード関数を作成した。 - BaseCoomandsInEla.pyにDymPDF関数として追加 - SIK/facade/Cmm.py および AMR/facade/Cmm.py にDymPDFファサードとして追加