Shapeworks: عرض كميات من بعض قرارات التعطل عند استخدام itkwidgets.view بعد استخدام الأشكال في جهاز كمبيوتر محمول

تم إنشاؤها على ٢٣ مارس ٢٠٢١  ·  22تعليقات  ·  مصدر: SCIInstitute/ShapeWorks

اعتاد هذا على أنه "تعطل دفتر الملاحظات في البداية مع الاستمالة على نظام التشغيل MacOS" ، لكن الكثير من التحقيقات كشفت عن المشكلة الفعلية ، ربما بسبب المكتبات المشتركة غير المتوافقة.

نظام نظيف ، كوندا نظيف.

هذه هي الخلية التي تنهار:

shapeSeg = shapeSegList[10]
itkw.view( image          = sw2vtkImage(shapeSeg),
           slicing_planes = True,
           axes           = True,
           rotate         = True,
           interpolation  = True)
Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
Exception Codes:       KERN_INVALID_ADDRESS at 0x000000014b76fff3
Exception Note:        EXC_CORPSE_NOTIFY

Termination Signal:    Segmentation fault: 11
Termination Reason:    Namespace SIGNAL, Code 0xb
Terminating Process:   exc handler [0]

VM Regions Near 0x14b76fff3:
    MALLOC_LARGE           000000014b50a000-000000014b769000 [ 2428K] rw-/rwx SM=PRV  
--> 
    MALLOC_LARGE           000000014b770000-000000014d863000 [ 32.9M] rw-/rwx SM=PRV  

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libsystem_platform.dylib        0x00007fff564c85e6 _platform_memmove$VARIANT$Nehalem + 486
1   libvnl.dylib                    0x000000010ae40e6b vnl_vector<double>::operator=(vnl_vector<double> const&) + 139
2   _ITKCommonPython.so             0x000000014ec0d18b vnl_vector<double>::operator=(vnl_vector<double>&&) + 65
3   _ITKCommonPython.so             0x000000014eadec9d 0x14de03000 + 13483165
4   _ITKCommonPython.so             0x000000014e869165 0x14de03000 + 10903909
5   _ITKCommonPython.so             0x000000014ec611a7 itk::ProcessObject::UpdateOutputInformation() + 339
6   _ITKCommonPython.so             0x000000014e47d8fe 0x14de03000 + 6793470
7   _ITKImageGridPython.so          0x00000001538b5619 itk::ProcessObject::UpdateOutputInformation() + 117
8   _ITKImageGridPython.so          0x00000001538b5ebc itk::ProcessObject::UpdateLargestPossibleRegion() + 18
9   _ITKCommonPython.so             0x000000014e10726b 0x14de03000 + 3162731
10  python                          0x00000001044c8843 _PyMethodDef_RawFastCallKeywords + 131
11  python                          0x00000001044c81d6 _PyObject_FastCallKeywords + 598
12  python                          0x0000000104600bb7 call_function + 455
...
bug

ال 22 كومينتر

نعم ، أحاول تشغيله الآن وضرب نفس الانهيار ، هنا:
"" شكل Seg = شكل قائمة [10]
itkw.view (image = sw2vtkImage (shapeSeg) ،
slicing_planes = صحيح ،
المحاور = صحيح ،
استدارة = صحيح ،
الاستيفاء = صحيح)

تبسيط المشكلة ويبدو أن Image :: resample هو الجاني هنا. بعد إعادة التشكيل ، يقوم ellipsoid_05 بتحميل العارض بينما يتسبب ellipsoid_00 في تعطل النواة عند محاولة استخدام itk.view ()

Screen Shot 2021-03-24 at 11 02 20 PM

Screen Shot 2021-03-24 at 11 01 06 PM

بعد الاختبار مع هذا ، قد يكون هناك خطأ ما في Image :: resample wrt itkwidgets.view .
الصور التي تم تجربتها: ellipsoid_1mode / Slications / ellipsoid_00.nrrd و ellipsoid_1mode / Slications / ellipsoid_05.nrrd
- فشل رسم بياني> 00 عند تغليفه بواسطة pyvista في صورة vtk بعد إعادة التشكيل
-> 05 يعمل بشكل جيد
=> _ كلاهما يعمل بشكل جيد عندما يرسمه بيفيستا
لقد ألقيت ببعض التصحيح في صورة :: إعادة أخذ العينة ولم أر شيئًا خارج نطاق المألوف حتى الآن).

إليك دفتر ملاحظات بسيط إذا كنت تريد التجربة.
wishy_washy_resample.ipynb.zip

... وكيف يبدو فارغًا عند تحميله:
Screen Shot 2021-03-24 at 7 59 23 PM

... وكيف سيبدو عند تشغيله. قم بتغيير 05 إلى 00 وتشغيله مرة أخرى لتعطل عندما يحاول itkw التقديم.
Screen Shot 2021-03-24 at 7 55 29 PM

تبديل أو ... المصفوفة التي يمكن تقديمها
إذا كنت تتذكر ، يمكن أن تعرض itkwidgets مصفوفة فارغة مباشرة. لكنه يفسر هذه المصفوفة على أنها تبديل ما يتم تمريره ، وهو شيء لا تفعله عند استخدام مصفوفة vtk. لذلك نحن عادةً نبدل ما نحصل عليه من الصورة قبل لفها في مصفوفة vtk ، وببساطة نستخدم مصفوفة vtk مع itkwidgets لإبقاء الأمور بسيطة.

لقد جربت هذا الصباح وللأسف لم يحدث أي فرق. منقولة أم لا ، مصفوفات numpy أو vtk ، كل شيء يتعطل عند محاولة التقديم باستخدام itkwidgets بعد Image.resample.

نسخ أو ... هل أنا أكرر نفسي؟
قد تكون المصفوفة القادمة من الصورة هي المشكلة. ربما يشير إلى ذاكرة غير صالحة. لذلك دعونا ننشئ نسخة!
بعد نسخ المصفوفة - في كلٍّ من order='C' و order='F' ، مع النقل والتعديل والوقوف على رأسي أثناء تأليف الوظائف والتفكير في الأمر كله ، لا يزال يتعطل في كل مرة.

هذا يشير إلى أن حجم المصفوفة نفسها قد تكون مشكلة. كانت إحدى الطرق لتأكيد ذلك هي استدعاء إعادة العينة بنفس التباعد ( [1,1,2] ) ، الذي نجح بشكل جيد. كانت هناك طريقة أخرى وهي إنشاء مجموعة زائفة من الحجم المشكوك فيه. و...
لفة طبل من فضلك ...
تقديم...
لأول مرة على الإطلاق ... (في جيثب)
A _shapeworks-free_ repro!

array = np.ndarray([109, 77, 204])
itkw.view(image = array)

لذا ، ضع ذلك في دفتر ملاحظاتك ودخنه.

* يشير الدخان إلى الانهيار ، وليس الدعوة إلى الاستنشاق الفعلي لأي شيء ، لاحظ أن هذا مرفق لغير المدخنين ، وغير صالح مع أي عرض آخر ، ... على أي حال ، آمل أن يبتسم شخص ما ، لأن هذه ليست مشكلتنا! ما عدا أنه هو. 😞

array = np.ndarray([109, 77, 204])
itkw.view(image = array)
array = np.ndarray([109, 109, 204])
itkw.view(image = array)



md5-047f51858ff0a12b3bec85f300fc2efa



array = np.ndarray([109, 109, 109])
itkw.view(image = array)

كل هذه الأمثلة تقدم عارض itk عندما لا يتم استيراد أشكال الأشكال.
إنه يتعطل عند استيراد أشكال الأشكال.

حسنًا ، هل لدينا تفاعل مكتبة conda itk / vtk vs shapeworks itk / vtk؟

أعتقد أن itkwidgets يستخدم إصدارًا آخر من itk

أمر الاستيراد ليس مهمًا ، ولكن ترتيب الاستخدام مهم. هذا يعني أنه إذا قمت باستيراد كل شيء ، ولكنك تستخدم itkwidgets قبل أعمال الأشكال ، فإنه يتعطل عند استخدام الأشكال ، والعكس صحيح.

نظرًا لأن حل # 1179 كان ببساطة "لا تستخدم الأمر" ، أقترح أن نحل هذه المشكلة بنفس الطريقة. ما لم يكن هناك خيار أفضل في الوقت الحالي ، فلنقم بإزالة أدوات itk من دفاتر الملاحظات الخاصة بنا.

هذا يبدو وكأنه خطة جيدة في الوقت الحالي. هل من المعقول إزالة أدوات itk من دفاتر الملاحظات؟ لماذا نستخدمها؟

نحن نستخدمه لعرض التقسيمات. أعتقد أنه يمكننا استخدام pyvista بدلاً من ذلك

لاحظ أن pyvista (على حد علمي) لا يحترم المعلومات الوصفية للصورة (الأصل ، وتباعد فوكسل ، واتجاه المحاور) ، ولكن itkwidget تفعل ذلك.

لاحظ أن pyvista (على حد علمي) لا يحترم المعلومات الوصفية للصورة (الأصل ، وتباعد فوكسل ، واتجاه المحاور) ، ولكن itkwidget تفعل ذلك.

سنبحث في هذا ، ولكن يجب أن يكون هناك بعض الاحترام للأصل نظرًا لأنه يمكن رسم مجلدات متعددة في وقت واحد مع مواقع مختلفة ، وتوضح هذه الصورة أن المسافات تستخدم للتخطيط. ببساطة لم تحتفظ بها وظيفة (وظائف) sw2vtkImage الخاصة بنا (أعلم أنني غيرت هذا في البعض ، ولكن ربما تكون هذه في فرع pybind الجديد).

Screen Shot 2021-03-26 at 1 34 32 PM

أريد أن أقترح أن نطلق هذا وندفعه إلى الإصدار التالي حيث أن هذا الإصدار يحتوي على العديد من التحسينات الأخرى في Python والكمبيوتر المحمول ، وسنضطر بشكل أساسي إلى إعادة كتابتها. ربما تركناهم ينكسرون. إنها مشكلة معروفة في مستودع عام ولدينا حل بديل في حالة تعرض أي مستخدم لها.

(سنظل بحاجة إلى تعديل دفتر بدء التشغيل بالتقسيم حتى يكتمل دون تعطل ، وهو ما يعني ببساطة اختيار صورة عشوائية مختلفة لإظهار العرض.)

أنا موافق. دعنا ندفع هذا إلى الإصدار 6.1 وسوف أقوم بتحديث ملاحظات الإصدار والملخص الرسومي للتخلص من التركيز على عناصر بيثون.

بعد استخدام صورة عشوائية لا تحطم العارض ، لا تزال تتعطل في 3 أماكن أخرى تستخدم صورة الشكل المتوسطة.
تضمين التغريدة

أقترح استبعاد دفتر الملاحظات هذا من الإصدار باستثناء الوثائق.

تناسبني. sheryjoe ؟

عرض pyvista الإحداثيات المنطقية
https://sci.utah.edu/~shapeworks/doc-resources/mp4s/nb-groom-resample.mp4

مقابل itkwidgets تظهر الإحداثيات المادية
https://sci.utah.edu/~shapeworks/doc-resources/mp4s/nb-groom-resample-iso.mp4

عرض pyvista الإحداثيات المنطقية
مقابل itkwidgets تظهر الإحداثيات المادية

نظرًا للإصدار رقم 900 ، من الصعب تخيل أنه قد أظهر إحداثيات فعلية على الإطلاق.

لهذه الصورة (مع z-spacing = 2):

{
    dims: [93, 87, 94],
    origin: [-24, -19, -21],
    size: [93, 87, 188],
    spacing: [1, 1, 2]
}

يستطيع عارض itk فقط إظهار الإصدار غير المقياس لأنه بخلاف ذلك يتعطل.
Screen Shot 2021-03-30 at 3 57 34 PM

إليك مجلد pyvista واحد يعرض كلاً من الشكل الإهليلجي غير المقاس والنسخة المصغرة.
Screen Shot 2021-03-30 at 3 56 20 PM

لا تعجبني حقًا الطريقة التي يعرض بها عارض pyvista الحدود مقارنةً بمشاهد itk.
لكنها صحيحة ، وتعرض إحداثيات مادية.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

akenmorris picture akenmorris  ·  23تعليقات

jadie1 picture jadie1  ·  8تعليقات

akenmorris picture akenmorris  ·  32تعليقات

cchriste picture cchriste  ·  3تعليقات

iyerkrithika21 picture iyerkrithika21  ·  7تعليقات