Change History 2026

Change History 2026#

Author:

Yasuhiro Inamura

Last Update:

Jan 19, 2026

4.0.260116 or later#

Jan 19 2026

[bugfix:Utsusemi:4.0] The problem that DetectMap app cannot be launched on old matplotlib version.

DATA_RDCT-301 空蝉夕顔:2D系プロッタのToolbarのPanおよびZoom機能が動作しない(matplotlib 3.9.0)

新しいmatplotlibでPanやZoom機能が動作しない問題に対処した際に、逆に古いmatplotlibで動作しなくなった(BL02)ため、matplotlibのバージョンが3.3以上で新しい方法を用いるようにし、3.3未満では以前の方法を利用するようにした。

Jan 16 2026

[update:Utsusemi:4.0] Improve D4Mat2 methods for CUI control with loaded binary data.

DATA_RDCT-336 空蝉4:D4Mat2SlicerのCUIで.d4mzファイルを読み込んでスライスしたらCoreDump

問題点:

d4mzファイルを読み込んでProjection処理を行う際に、これまで下記のようにSample Info関連のパラメータを入力する必要があった。

` D4M = mu.UtsusemiD4Matrix2() D4M.ClearAll() D4M.LoadData(inputFile) ## set Sample Info D4M.SetD4MatSampleInfo(LatticeConst, Uvector, Vvector, RotateSteps) ## Projection D4M.Projection(ProjAxes) `

本来、Sample Infoはd4mzファイルに(XtalParamの形で)含まれていて読み込まれているのに、再度指定するのは美しくない。よって、LoadDataしたときに内部でSample Infoをきちんと取り込むようにした。

  • LoadData時にSetCrystalParametersToHeader、SetD4MatProjectionAxesInfoを実行しProjectionに必要な情報を設定

  • Projection():引数なしを定義し、内部のviewAxis情報を利用するようにした

  • 確認のため、DumpInnerHeader()を追加した

結果として、CUIでのスクリプトがシンプルになった。

` D4M = mu.UtsusemiD4Matrix2() D4M.ClearAll() D4M.LoadData(inputFile) D4M.Projection(ProjAxes) `

Jan 15 2026

[bugfix:Utsusemi:4.0] The problem that CUI of D4Mat2Slicer occurs core dump on executing Slice2d.

DATA_RDCT-336 空蝉4:D4Mat2SlicerのCUIで.d4mzファイルを読み込んでスライスしたらCoreDump

` D4M.Slice2d(sliced_eca, ax1, ax2, ax3, ax4, ax_dFold, ax_units) `

を実行すると [2026/01/15 14:19:00] ERROR : UtsusemiSqeCalc2:: _MakeProjectionMatrix >>> viewAxes size is invalid. というエラーが出て結果的にCore Dumpする。

理由:

Projection(PyObj*) を実行した際にメモリセーブモードだった場合に、 引数で与えた viewAxis の値がメンバー変数に引き継がれなかったからである。そのためメンバー関数を利用してProjection Matrixを作成しようとして、EmptyのviewAxisを利用した結果、EmptyのProjection Matrixが作成された。 データの座標変換のために本来サイズ16の Projection Matrixが必要であるが、サイズが0であったためにメモリに不正にアクセスし、Core Dumpを引き起こした。

メモリセーブモードでなければエラーが出なかったので、このバグには気づかなかったかも。

対策:

  • 与えられた`viewAxis` のサイズが16でなければFalseを返すようにした

  • メモリセーブモードでも引数として与えられた viewAxis をメンバー変数 _viewAxis にコピーするようにした

  • 空の _viewAxis を使用して正常でないProjection Matrix(サイズが16でない)が返ってきた場合に、座標変換処理をしないようにした

Jan 15 2026

[bugfix:uGao:master] The problem that the maximum value becomes MASKVALUE when data includes MASKVALUE on M2Plot+

DATA_RDCT-331 夕顔:M2Plot+の軸範囲指定時の要望

Auto Scaleを押した時に最大値を計算するが、単純に max() 関数を利用するとMASKVALUE=1e100に指定しているので、その値が反映される問題に対応。

最大値を取り出す時に内部でMASKVALUEの値は無視して取り出すように変更した。

` params.range = (self.u2.plot.data[0].min(), self.u2.plot.data[0].max()) tmp_array = np.array(self.u2.plot.data[0]) masked_arr = np.ma.masked_where(tmp_array >= MASKVALUE, tmp_array) params.range = (self.u2.plot.data[0].min(), float(masked_arr.max())) `

Jan 9 2026

[update:uGao:master] Improve the M2Plot+ behaviors when turning checkboxes for auto scale and add so on

DATA_RDCT-331 夕顔:M2Plot+の軸範囲指定時の要望

  1. M2Plot+のパネルで、Auto Scale チェックボックスのチェックを入れた時に、Rangeの値がAuto Scale時の値に戻らない仕様だったが、戻るように変更

  2. M2Plot+のCUIで強度や軸のスケールを変更する際に、範囲のどちらかをAutoにする方法がなかったので、その機能を追加

  3. M2Plot+のCUIで強度や軸のAutoScaleを設定する関数を追加した

  4. M2Plot+の内部で使用されるSetAutoScaleイベントの呼び出しの引数が発出側と受け手側で仕様が異なっていたため修正

2の機能詳細 引数として範囲を与える際にAutoにしたい値を数値ではなく None にすることにした。なお引数なしの場合(もしくは両方None)はAutoScaleのモードを切り替えとなる。これらの使用は、強度、X軸、Y軸の全てで同等である。

3の機能詳細 SetIntScaleAuto() , SetXScaleAuto() , SetYScaleAuto() はそれぞれ強度、X軸、Y軸のAutoScaleをOnにする

import uGao.M2PlotPlusCui as MP

p = MP.M2PlotPlusCui(DAT)
p.ShowData()

# 強度の最低値をだけを指定したい場合
p.SetIntScale(5, None)

# X軸の最大値だけを3.5に指定したい場合
p.SetXScale(None, 3.5)

# X軸をAutoにしたい場合
p.SetXScaleAuto()
Jan 8 2026

[bugfix:Utsusemi:4.0] The problem that swig/python detectes a memory leak after executing UtsusemiEventDataConverterNeunetWithPH::PutPulseHeightAll / PutPulseHeightOfDet.

  • UtsusemiEventDataConverterNeunetWithPH::PutPulseHeightAllなど、メモリリークを起こしそうな関数(ElementContainerを直接戻り値とする関数)を、結果を戻り値ではなく引数のポインタで渡すように変更した

  • BaseCommands:GetPH内で使用している PutPulseHeightAll の使用方法をメモリリークのない方法へ変更した

Jan 7 2026

[bugfix:Utsusemi:4.0] Fixed import error : from scipy import array exp

Jan 7 2026

[bugfix:Utsusemi:4.0] The problem that swig/python detectes a memory leak after executing AverageElementContainerMatrix::GetAverage and GetSum methods

MLF/AverageElementContainerMatrix::GetAverageおよびGetSumの戻り値(ElementContainer)がメモリリークを起こしているらしく、下記のようなメッセージが出る。

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

そこでこれらの関数の実行結果を戻り値ではなく、引数で与えたElementContainerで戻す関数(以下)で置き直した。 これらの関数は万葉ライブラリ0.4RC_260107以降で有効となっているので注意。

  • bool GetAverage(ElementContainer* ec)

  • bool GetSum(ElementContainer* ec)

こちらの関数を使うことで、下記の関数でこれまで生じていた上記のメモリリーク表示がなくなった。

  • python-utsusemi/ana/Reduction/BaseCommands.py

  • AverageAll

  • IntegPixels

  • python-utsusemi/ana/Reduction/BaseCommandsInEla.py

  • GetEiFromEvent

  • RadialCollimatorCorrectSIK

Jan 7 2026

[update:manyo:0.4RC] Add new methods GetAverage(ElementContainer*) and GetSum(ElementContainer*) of AverageElementContainerMatrix class

MLF/AverageElementContainerMatrix::GetAverageおよびGetSumの実行結果を引数で渡したElementContainerで戻すようにした。

  • bool GetAverage(ElementContainer* ec)

  • bool GetSum(ElementContainer* ec)

こちらの関数を使うことで、これまでの戻り値がElementContainerだった旧関数を使用した際に発生する下記のエラーがなくなった。

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

あと、いくつかのコメントを修正した。