Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

We should be able to detect if a parameter has been modified in the controller (consideration on the initialization step). (linked with #142) #143

Closed
servoz opened this issue Feb 5, 2020 · 21 comments
Labels
enhancement New feature or request

Comments

@servoz
Copy link
Contributor

servoz commented Feb 5, 2020

Let's take an example:

  • Launch Mia
  • Import or open a project with for ex. one anat.nii and one deformation field for normalisation (y_anat.nii).
  • Go to Pipeline Manager
  • In the New Pipeline tab, drag and drop the Normalize12 brick from the mia_processes library
  • On this Normalize12 brick, right click and choose Export all unconnected plugs
  • Click on the inputs node then click on the Filter buttons for the deformation_file and apply_to_files parameters then select the y_anat.nii and anat.nii scan from the database, respectively, (right part of the window).
  • Pipeline > Initialize pipeline
  • The run button become available
  • Then change the jobtype parameter to 'est'
  • The run button stay available
  • So click on the run button
  • The pipeline is launched but with the previous set of parameters (as with jobtype == write)
@servoz servoz added the enhancement New feature or request label Feb 5, 2020
@servoz servoz added this to the Populse_mia objectives for populse release 20.06 milestone Feb 5, 2020
@M40V M40V changed the title We should be able to detect if a parameter has been modified in the controller (consideration on the initialization step). We should be able to detect if a parameter has been modified in the controller (consideration on the initialization step). (linked with #142) Feb 7, 2020
@M40V
Copy link
Contributor

M40V commented Feb 20, 2020

The commit 55b5b09 should solve this issue but I sometimes get a Segmentation fault when changing parameters value.
I tried to update my version of Python from 3.5 to 3.6 to see if the segmentation fault still occurred and it did. By running MIA with gdb, I was able to pinpoint where it was coming from (PyQt5 C++ library).

Thread 1 "python3.6" received signal SIGSEGV, Segmentation fault.
0x00007fffeb40c12c in void doActivate<false>(QObject*, int, void**) ()
   from /home/username/.local/lib/python3.6/site-packages/PyQt5/Qt/lib/libQt5Core.so.5

@servoz
Copy link
Contributor Author

servoz commented Feb 20, 2020

What I don't like is that it happens from time to time and inexplicably (that's right?) and that it's linked with a PyQt5 C++ shared object ...
It could be very interesting to have @denisri and @sapetnioc opinion on this subject. For my part, I don't have any idea at the moment ...

@servoz servoz pinned this issue Feb 20, 2020
@M40V
Copy link
Contributor

M40V commented Feb 20, 2020

That's right, it might happen the first time we change a parameter or the 20th time, I was not able to discern a pattern.

@servoz
Copy link
Contributor Author

servoz commented Feb 20, 2020

I'll try on my station (not the same OS, but may be not the same SIP and PyQt?).
For the recipe. You observe this SIGSEGV problem with the recipe of the first post? If not, please can you tell us the minimum steps to reproduce?

@M40V
Copy link
Contributor

M40V commented Feb 20, 2020

  • Launch Mia
  • Import or open a project
  • Go to Pipeline Manager
  • In the New Pipeline tab, drag and drop the Smooth brick from the mia_processes library
  • On this Smooth brick, right click and choose Export all unconnected plugs
  • Then change the data_type parameter to any integer and press "Enter" (Repeat until Segmentation fault)

@servoz
Copy link
Contributor Author

servoz commented Feb 20, 2020

I do not reproduce the SIGSEGV.
The minimum step to repoduce is really the one above ?

@servoz
Copy link
Contributor Author

servoz commented Feb 20, 2020

You launch mia from a terminal or from an IDE ?

@sapetnioc
Copy link
Contributor

sapetnioc commented Feb 20, 2020 via email

@M40V
Copy link
Contributor

M40V commented Feb 20, 2020

I tried from PyCharm and a terminal, I got the error in both case.
The minimum step is the one above. Initially I got it while reproducing the recipe of the first post.

@servoz
Copy link
Contributor Author

servoz commented Feb 20, 2020

Hum ... I already observed that we are not very clean concerning the QT calls from a single thread ... Is it this issue here ?

@servoz
Copy link
Contributor Author

servoz commented Feb 21, 2020

@M40V, please can you search for Qt related calls (even those that do not use the
graphic elements) and check if they are made from a single thread ?

@servoz
Copy link
Contributor Author

servoz commented Feb 21, 2020

it's very strange. I tested again with another station (OS fc31) and I can't reproduce the SIGSEGV! (I stopped after 50 inputs
Are you sure you don't omit a step in the minimum steps for reproduce?

@M40V
Copy link
Contributor

M40V commented Feb 21, 2020

It might be specific to my configuration.
PyQt5 : 5.14.0
PyQt5-sip : 12.7.1
I can try to reinstall Qt.

@servoz
Copy link
Contributor Author

servoz commented Feb 21, 2020

>>> from PyQt5.Qt import PYQT_VERSION_STR
>>> from sip import SIP_VERSION_STR
>>> PYQT_VERSION_STR
'5.14.0'
>>> SIP_VERSION_STR
'5.0.0'
>>> 

@servoz
Copy link
Contributor Author

servoz commented Feb 21, 2020

OK ! it's my error, I was testing with the master branch and not your branch.

So I just added self.main_window.pipeline_manager.pipelineEditorTabs.update_current_node()
to the end of the update_node_name() method in NodeController class of the populse_mia.user_interface.pipeline_manager.node_controller module in the "master branch" (so we are sure this is the only command that cause the mess, it's better for debugging) and I observe now the SIGSEGV!

So I think the idea of @sapetnioc sounds very pretty.

Please, can you search for Qt related calls (even those that do not use the
graphic elements) and check if they are made from a single thread ?

@M40V
Copy link
Contributor

M40V commented Feb 21, 2020

Yes, I'll try to look into it with Pycharm debugger and gdb.

@M40V
Copy link
Contributor

M40V commented Feb 25, 2020

I commented the call to update_current_node at the end of the method update_parameters in node_controller.py. It keeps MIA from getting a segmentation fault after modifying the node controller. If the pipeline was initialized previously, the modification will disable the run pipeline action button immediately. If we modify the parameters to correspond to the previous initialization, the run button will not be immediately enabled, first the user will have to click on the node.

I tried to simulate a click on the node after a change of parameters (code commented in pipeline_manager_tab.controller_value_changed) but it causes a segmentation fault too.

Log

Starting program: /usr/local/bin/python3.6 main.py
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7ffff091b700 (LWP 13451)]
[New Thread 0x7ffff011a700 (LWP 13452)]
[New Thread 0x7fffed919700 (LWP 13453)]
[New Thread 0x7fffe9118700 (LWP 13454)]
[New Thread 0x7fffe6917700 (LWP 13455)]
[New Thread 0x7fffe4116700 (LWP 13456)]
[New Thread 0x7fffe1915700 (LWP 13457)]
[Thread 0x7fffe4116700 (LWP 13456) exited]
[Thread 0x7fffe1915700 (LWP 13457) exited]
[Thread 0x7fffe6917700 (LWP 13455) exited]
[Thread 0x7fffe9118700 (LWP 13454) exited]
[Thread 0x7fffed919700 (LWP 13453) exited]
[Thread 0x7ffff011a700 (LWP 13452) exited]
[Thread 0x7ffff091b700 (LWP 13451) exited]
Populse_MIA in "developer" mode

/home/jibril/.populse_mia/configuration.yml has been detected.

Checking the installed versions of nipype and mia_processes ...

** mia use already the current installed version of nipype and mia_processes for this station (1.4.2 and 1.4.0, respectively)
[New Thread 0x7fffe1915700 (LWP 13462)]
[New Thread 0x7fffe4116700 (LWP 13463)]
[New Thread 0x7fffe6917700 (LWP 13464)]
[New Thread 0x7fffe9118700 (LWP 13465)]
[New Thread 0x7fff93919700 (LWP 13467)]
[New Thread 0x7fff929b0700 (LWP 13468)]
200224-14:25:13,207 nipype.utils INFO:
	 No new version available.

Thread 1 "python3.6" received signal SIGSEGV, Segmentation fault.
0x00007fffed40c398 in void doActivate<false>(QObject*, int, void**) ()
   from /home/jibril/.local/lib/python3.6/site-packages/PyQt5/Qt/lib/libQt5Core.so.5

Backtrace:

#0  0x00007fffed40c398 in void doActivate<false>(QObject*, int, void**) ()
   from /home/jibril/.local/lib/python3.6/site-packages/PyQt5/Qt/lib/libQt5Core.so.5
#1  0x00007fffd84d6cb7 in QWidgetLineControl::processKeyEvent(QKeyEvent*) ()
   from /home/jibril/.local/lib/python3.6/site-packages/PyQt5/Qt/lib/libQt5Widgets.so.5
#2  0x00007fffd84ca72a in QLineEdit::keyPressEvent(QKeyEvent*) ()
   from /home/jibril/.local/lib/python3.6/site-packages/PyQt5/Qt/lib/libQt5Widgets.so.5
#3  0x00007fffd8da6f73 in sipQLineEdit::keyPressEvent(QKeyEvent*) ()
   from /home/jibril/.local/lib/python3.6/site-packages/PyQt5/QtWidgets.abi3.so
#4  0x00007fffd83d4077 in QWidget::event(QEvent*) ()
   from /home/jibril/.local/lib/python3.6/site-packages/PyQt5/Qt/lib/libQt5Widgets.so.5
#5  0x00007fffd84d028e in QLineEdit::event(QEvent*) ()
   from /home/jibril/.local/lib/python3.6/site-packages/PyQt5/Qt/lib/libQt5Widgets.so.5
#6  0x00007fffd8da62f3 in sipQLineEdit::event(QEvent*) ()
   from /home/jibril/.local/lib/python3.6/site-packages/PyQt5/QtWidgets.abi3.so
#7  0x00007fffd8394a7c in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
   from /home/jibril/.local/lib/python3.6/site-packages/PyQt5/Qt/lib/libQt5Widgets.so.5
#8  0x00007fffd839c00b in QApplication::notify(QObject*, QEvent*) ()
   from /home/jibril/.local/lib/python3.6/site-packages/PyQt5/Qt/lib/libQt5Widgets.so.5
#9  0x00007fffd8dfc6ce in sipQApplication::notify(QObject*, QEvent*) ()
   from /home/jibril/.local/lib/python3.6/site-packages/PyQt5/QtWidgets.abi3.so
#10 0x00007fffed3d5ae8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) ()
   from /home/jibril/.local/lib/python3.6/site-packages/PyQt5/Qt/lib/libQt5Core.so.5
#11 0x00007fffd83efaa3 in QWidgetWindow::event(QEvent*) ()
   from /home/jibril/.local/lib/python3.6/site-packages/PyQt5/Qt/lib/libQt5Widgets.so.5
#12 0x00007fffd8394a7c in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
   from /home/jibril/.local/lib/python3.6/site-packages/PyQt5/Qt/lib/libQt5Widgets.so.5
#13 0x00007fffd839bcb0 in QApplication::notify(QObject*, QEvent*) ()
   from /home/jibril/.local/lib/python3.6/site-packages/PyQt5/Qt/lib/libQt5Widgets.so.5
#14 0x00007fffd8dfc6ce in sipQApplication::notify(QObject*, QEvent*) ()
---Type <return> to continue, or q <return> to quit---
   from /home/jibril/.local/lib/python3.6/site-packages/PyQt5/QtWidgets.abi3.so
#15 0x00007fffed3d5ae8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) ()
   from /home/jibril/.local/lib/python3.6/site-packages/PyQt5/Qt/lib/libQt5Core.so.5
#16 0x00007fffd7a8624b in QGuiApplicationPrivate::processKeyEvent(QWindowSystemInterfacePrivate::KeyEvent*) ()
   from /home/jibril/.local/lib/python3.6/site-packages/PyQt5/Qt/lib/libQt5Gui.so.5
#17 0x00007fffd7a8af95 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () from /home/jibril/.local/lib/python3.6/site-packages/PyQt5/Qt/lib/libQt5Gui.so.5
#18 0x00007fffa31a568c in QIBusPlatformInputContext::filterEventFinished(QDBusPendingCallWatcher*) ()
   from /home/jibril/.local/lib/python3.6/site-packages/PyQt5/Qt/plugins/platforminputcontexts/libibusplatforminputcontextplugin.so
#19 0x00007fffed40c490 in void doActivate<false>(QObject*, int, void**) ()
   from /home/jibril/.local/lib/python3.6/site-packages/PyQt5/Qt/lib/libQt5Core.so.5
#20 0x00007fffd1e9cccf in QDBusPendingCallWatcher::finished(QDBusPendingCallWatcher*) ()
   from /home/jibril/.local/lib/python3.6/site-packages/PyQt5/Qt/lib/libQt5DBus.so.5
#21 0x00007fffd1e9cdb0 in QDBusPendingCallWatcher::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) ()
   from /home/jibril/.local/lib/python3.6/site-packages/PyQt5/Qt/lib/libQt5DBus.so.5
#22 0x00007fffed404ab3 in QObject::event(QEvent*) ()
   from /home/jibril/.local/lib/python3.6/site-packages/PyQt5/Qt/lib/libQt5Core.so.5
#23 0x00007fffd8394a7c in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
   from /home/jibril/.local/lib/python3.6/site-packages/PyQt5/Qt/lib/libQt5Widgets.so.5
#24 0x00007fffd839bcb0 in QApplication::notify(QObject*, QEvent*) ()
   from /home/jibril/.local/lib/python3.6/site-packages/PyQt5/Qt/lib/libQt5Widgets.so.5
#25 0x00007fffd8dfc6ce in sipQApplication::notify(QObject*, QEvent*) ()
   from /home/jibril/.local/lib/python3.6/site-packages/PyQt5/QtWidgets.abi3.so
#26 0x00007fffed3d5ae8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) ()
   from /home/jibril/.local/lib/python3.6/site-packages/PyQt5/Qt/lib/libQt5Core.so.5
#27 0x00007fffed3d907a in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) ()
   from /home/jibril/.local/lib/python3.6/site-packages/PyQt5/Qt/lib/libQt5Core.so.5
#28 0x00007fffed42eec3 in postEventSourceDispatch(_GSource*, int (*)(void*), void*) ()
---Type <return> to continue, or q <return> to quit---
   from /home/jibril/.local/lib/python3.6/site-packages/PyQt5/Qt/lib/libQt5Core.so.5
#29 0x00007fffd9688197 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#30 0x00007fffd96883f0 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#31 0x00007fffd968849c in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#32 0x00007fffed42e55c in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /home/jibril/.local/lib/python3.6/site-packages/PyQt5/Qt/lib/libQt5Core.so.5
#33 0x00007fffed3d4502 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /home/jibril/.local/lib/python3.6/site-packages/PyQt5/Qt/lib/libQt5Core.so.5
#34 0x00007fffed3dd430 in QCoreApplication::exec() ()
   from /home/jibril/.local/lib/python3.6/site-packages/PyQt5/Qt/lib/libQt5Core.so.5
#35 0x00007fffd8c7bba0 in meth_QApplication_exec ()
   from /home/jibril/.local/lib/python3.6/site-packages/PyQt5/QtWidgets.abi3.so
#36 0x00000000004aee79 in _PyCFunction_FastCallDict (kwargs=0x0, nargs=<optimized out>, args=0x239d4a0, 
    func_obj=0x7fffb81c11f8) at Objects/methodobject.c:234
#37 _PyCFunction_FastCallKeywords (func=func@entry=0x7fffb81c11f8, stack=stack@entry=0x239d4a0, nargs=<optimized out>, 
    kwnames=kwnames@entry=0x0) at Objects/methodobject.c:294
#38 0x000000000054049e in call_function (pp_stack=pp_stack@entry=0x7fffffffd680, oparg=oparg@entry=0, 
    kwnames=kwnames@entry=0x0) at Python/ceval.c:4824
#39 0x000000000054251d in _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at Python/ceval.c:3322
#40 0x000000000053f761 in PyEval_EvalFrameEx (throwflag=0, f=0x239d2e8) at Python/ceval.c:753
#41 _PyFunction_FastCall (co=<optimized out>, args=<optimized out>, nargs=0, globals=globals@entry=0x7ffff7f41288)
    at Python/ceval.c:4906
#42 0x0000000000540611 in fast_function (kwnames=0x0, nargs=<optimized out>, stack=<optimized out>, func=0x7ffff7e7e268)
    at Python/ceval.c:4941
#43 call_function (pp_stack=pp_stack@entry=0x7fffffffd830, oparg=oparg@entry=0, kwnames=kwnames@entry=0x0)
    at Python/ceval.c:4845
#44 0x000000000054251d in _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at Python/ceval.c:3322
#45 0x0000000000540105 in PyEval_EvalFrameEx (throwflag=0, f=0x231e0c8) at Python/ceval.c:753
#46 _PyEval_EvalCodeWithName (_co=0x7ffff7ebced0, globals=globals@entry=0x7ffff7f41288, locals=locals@entry=0x0, 
---Type <return> to continue, or q <return> to quit---
    args=<optimized out>, argcount=0, kwnames=kwnames@entry=0x0, kwargs=0x951988, kwcount=0, kwstep=1, defs=0x0, 
    defcount=0, kwdefs=0x0, closure=0x0, name=0x7ffff7f09ae8, qualname=0x7ffff7f09ae8) at Python/ceval.c:4153
#47 0x00000000005403b7 in fast_function (kwnames=0x0, nargs=<optimized out>, stack=<optimized out>, func=0x7fffba4dcae8)
    at Python/ceval.c:4965
#48 call_function (pp_stack=pp_stack@entry=0x7fffffffda90, oparg=oparg@entry=0, kwnames=kwnames@entry=0x0)
    at Python/ceval.c:4845
#49 0x000000000054251d in _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at Python/ceval.c:3322
#50 0x0000000000540105 in PyEval_EvalFrameEx (throwflag=0, f=0x951808) at Python/ceval.c:753
#51 _PyEval_EvalCodeWithName (_co=_co@entry=0x7ffff6dea270, globals=globals@entry=0x7ffff7f5b600, 
    locals=locals@entry=0x7ffff6dea270, args=args@entry=0x0, argcount=argcount@entry=0, kwnames=kwnames@entry=0x0, 
    kwargs=0x0, kwcount=0, kwstep=2, defs=0x0, defcount=0, kwdefs=0x0, closure=0x0, name=0x0, qualname=0x0)
    at Python/ceval.c:4153
#52 0x0000000000540f93 in PyEval_EvalCodeEx (closure=0x0, kwdefs=0x0, defcount=0, defs=0x0, kwcount=0, kws=0x0, argcount=0, 
    args=0x0, locals=locals@entry=0x7ffff6dea270, globals=globals@entry=0x7ffff7f5b600, _co=_co@entry=0x7ffff6dea270)
    at Python/ceval.c:4174
#53 PyEval_EvalCode (co=co@entry=0x7ffff6dea270, globals=globals@entry=0x7ffff7f41288, locals=locals@entry=0x7ffff7f41288)
    at Python/ceval.c:730
#54 0x000000000042762f in run_mod (arena=0x7ffff7f5b600, flags=0x7fffffffdd70, locals=0x7ffff7f41288, 
    globals=0x7ffff7f41288, filename=0x7ffff7e7b420, mod=0x9bae58) at Python/pythonrun.c:980
#55 PyRun_FileExFlags (fp=0x9337e0, filename_str=<optimized out>, start=<optimized out>, globals=0x7ffff7f41288, 
    locals=0x7ffff7f41288, closeit=1, flags=0x7fffffffdd70) at Python/pythonrun.c:933
#56 0x000000000042785c in PyRun_SimpleFileExFlags (fp=0x9337e0, filename=<optimized out>, closeit=1, flags=0x7fffffffdd70)
    at Python/pythonrun.c:396
#57 0x000000000043bc25 in run_file (p_cf=0x7fffffffdd70, filename=0x8fc2a0 L"main.py", fp=0x9337e0) at Modules/main.c:338
#58 Py_Main (argc=argc@entry=2, argv=argv@entry=0x8fb010) at Modules/main.c:809
#59 0x000000000041dd72 in main (argc=2, argv=<optimized out>) at ./Programs/python.c:69

Info about the threads:

  Id   Target Id         Frame 
* 1    Thread 0x7ffff7fcb700 (LWP 13446) "python3.6" 0x00007fffed40c398 in void doActivate<false>(QObject*, int, void**) ()
   from /home/jibril/.local/lib/python3.6/site-packages/PyQt5/Qt/lib/libQt5Core.so.5
  9    Thread 0x7fffe1915700 (LWP 13462) "QXcbEventQueue" 0x00007ffff71db74d in poll ()
    at ../sysdeps/unix/syscall-template.S:84
  10   Thread 0x7fffe4116700 (LWP 13463) "gmain" 0x00007ffff71db74d in poll () at ../sysdeps/unix/syscall-template.S:84
  11   Thread 0x7fffe6917700 (LWP 13464) "gdbus" 0x00007ffff71db74d in poll () at ../sysdeps/unix/syscall-template.S:84
  12   Thread 0x7fffe9118700 (LWP 13465) "QDBusConnection" 0x00007ffff71db74d in poll ()
    at ../sysdeps/unix/syscall-template.S:84
  13   Thread 0x7fff93919700 (LWP 13467) "radeon_cs:0" pthread_cond_wait@@GLIBC_2.3.2 ()
    at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
  14   Thread 0x7fff929b0700 (LWP 13468) "disk_cache:0" pthread_cond_wait@@GLIBC_2.3.2 ()
    at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185

@servoz
Copy link
Contributor Author

servoz commented Feb 25, 2020

My first attempt:

  • launch Mia
  • go to Pipeline Manager
  • In the New Pipeline tab, drag and drop the Smooth brick from the mia_processes library
  • without further action, click Pipeline > Initialize pipeline
  • the Initialisation failed
  • the run button is now available ...

@servoz
Copy link
Contributor Author

servoz commented Feb 26, 2020

Thanks @M40V, the previous post is now solved!

A synthesis of what should work to close both issues #143 and #142 was already done in #142:

I'll start testing that. It would be really cool to finally close those two tickets.

@servoz
Copy link
Contributor Author

servoz commented Feb 26, 2020

Point A)

  • Launch Mia
  • Import or open a project with for ex. one anat.nii and one func.nii
  • Go to Pipeline Manager
  • In the New Pipeline tab, drag and drop the Smooth brick from the mia_processes library
  • Open a new tab then drag and drop for example a Realign brick from the mia_processes library
  • Come back to the first tab, right click on the Smooth brick and choose Export all unconnected plugs
  • Click on the inputs node then click on the Filter button for the in_files parameter, in the controller (right part of the window)
  • Select the anat.nii file from the database
  • Pipeline > Initialize pipeline => Run pipeline is now available in the first tab
  • Go to the second tab (with the Realign brick), => Run pipeline stay disabled
    => So for the point A) it seems working.
    (I had the feeling during the tests of point A), that it didn't work every time, but without being able to reproduce it rationally ... So I must have been wrong?)

Point B)

  • Launch Mia
  • Import or open a project with for ex. one anat.nii
  • Go to Pipeline Manager
  • In the New Pipeline tab, drag and drop the Smooth brick from the mia_processes library
  • Right click on the Smooth brick and choose Export all unconnected plugs
  • Click on the inputs node then click on the Filter button for the in_files parameter, in the controller (right part of the window)
  • Select the anat.nii file from the database
  • Pipeline > Initialize pipeline => Run pipeline is now available
  • Change fwhm from [6.0, 6.0, 6.0] to [5.0, 5.0, 5.0] and type return => Run pipeline is now disabled
  • Pipeline > Initialize pipeline => Run pipeline is now available
  • Change fwhm from [5.0, 5.0, 5.0] to [6.0, 6.0, 6.0] and type return => Run pipeline is now disabled
    This set of parameters has already been initialised the first time. Currently the functionning is quite basic. For example in the "steps to reproduce" above it is not even necessary to change the value of the parameter fwhm. If we click in the field of fwhm and without changing that, if we type return, it is necessary to restart the initialisation. It would be very interesting to be able to keep a kind of history (a dictionary?) of the initialisations already done, in each tab (be careful to manage the outputs in this case) in order not to start again an initialisation which has already been done.

So I propose to close the #142 (I haven't been able to reproduce the cases that didn't seem to work!) and to keep open the #143 to keep in mind the necessity to make more smart the detection of a change of a parameter for the initialisation.

@servoz servoz unpinned this issue Mar 9, 2020
@servoz
Copy link
Contributor Author

servoz commented May 5, 2021

Except for the history (a dictionary?) of initialisations already done which is not implemented yet, and which, in view of all the more important things we have to do, can be considered as not being a priority for now, all the problems discussed here seem to be fixed now.
So I close this ticket.
We can come back to the idea of the history of the initialisations already done, when we have extra time...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants