Shapeworks: تحطم مع "femur --groom_images" على MacOS

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

$ python RunUseCase.py --use_case femur --groom_images

...

##### توسيط

اسم ملف الإدخال: Output / femur / groomed / com_aligned / images / m03_L_1x_hip.isores.pad.com.nrrd
اسم ملف الإخراج: Output / femur / groomed / centered / images / m03_L_1x_hip.isores.pad.com.center.nrrd
اسم ملف الإدخال: Output / femur / groomed / com_aligned / images / m04_L_1x_hip.isores.pad.com.nrrd
.....
اسم ملف الإدخال: Output / femur / groomed / com_aligned / images / n19_L_1x_hip.isores.pad.com.nrrd
اسم ملف الإخراج: Output / femur / groomed / centered / images / n19_L_1x_hip.isores.pad.com.center.nrrd
اسم ملف الإدخال: الإخراج / عظم الفخذ / مهيأ / com_aligned / images / n19_R_1x_hip.reflect.isores.pad.com.nrrd
اسم ملف الإخراج: Output / femur / groomed / centered / images / n19_R_1x_hip.reflect.isores.pad.com.center.nrrd
zsh: خطأ تجزئة بيثون RunUseCase.py --use_case femur --groom_images

كان هذا على MacOS مع RC10.

QA bug

ال 23 كومينتر

هل تحطم مع الاختبار الصغير؟

the tiny_test لا تتعطل.

قد يكون له علاقة بعظم الفخذ المنعكسة بعد ذلك لأن الاختبار الصغير لم يترك سوى عظام الفخذ.

تحديث: لقد راجعت مرتين ويبدو أنه يعمل على Linux.

حاولت تشغيل tiny_test مع عظام 2 اليسرى وعظم الفخذ الأيمن. لا توجد مشاكل هناك.

* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
  * frame #0: 0x000000016b8612ad libvnl_algo.dylib`vnl_qr<double>::vnl_qr(this=0x00007ffeefbfd568, M=0x00007ffeefbfd6f0) at vnl_qr.hxx:51:24 [opt]
    frame #1: 0x000000016b85cf1d libvnl_algo.dylib`double vnl_determinant<double>(M=<unavailable>, balance=<unavailable>) at vnl_determinant.hxx:107:14 [opt]
    frame #2: 0x00000003dec807ac _ITKIOImageBasePython.so`___lldb_unnamed_symbol9961$$_ITKIOImageBasePython.so + 252
    frame #3: 0x00000003deba7ff4 _ITKIOImageBasePython.so`___lldb_unnamed_symbol7056$$_ITKIOImageBasePython.so + 132
    frame #4: 0x00000003dec80586 _ITKIOImageBasePython.so`___lldb_unnamed_symbol9956$$_ITKIOImageBasePython.so + 38
    frame #5: 0x00000003dea1d188 _ITKIOImageBasePython.so`___lldb_unnamed_symbol1480$$_ITKIOImageBasePython.so + 1560
    frame #6: 0x00000003ded50753 _ITKIOImageBasePython.so`itk::ProcessObject::UpdateOutputInformation() + 351
    frame #7: 0x00000003dec7fec2 _ITKIOImageBasePython.so`___lldb_unnamed_symbol9945$$_ITKIOImageBasePython.so + 70
    frame #8: 0x00000003ded5b6f4 _ITKIOImageBasePython.so`itk::DataObject::Update() + 18
    frame #9: 0x000000041a65c177 _ITKCommonPython.so`___lldb_unnamed_symbol8759$$_ITKCommonPython.so + 58
    frame #10: 0x000000010002c843 python`_PyMethodDef_RawFastCallKeywords + 131
    frame #11: 0x000000010002c1d6 python`_PyObject_FastCallKeywords + 598
    frame #12: 0x0000000100164bb7 python`call_function + 455
    frame #13: 0x000000010015c604 python`_PyEval_EvalFrameDefault + 20180
    frame #14: 0x0000000100155f04 python`_PyEval_EvalCodeWithName + 532
    frame #15: 0x000000010002c5e3 python`_PyFunction_FastCallKeywords + 403
    frame #16: 0x0000000100164aa7 python`call_function + 183
    frame #17: 0x000000010015c604 python`_PyEval_EvalFrameDefault + 20180
    frame #18: 0x000000010002c535 python`_PyFunction_FastCallKeywords + 229
    frame #19: 0x0000000100164aa7 python`call_function + 183
    frame #20: 0x000000010015cdb0 python`_PyEval_EvalFrameDefault + 22144
    frame #21: 0x0000000100155f04 python`_PyEval_EvalCodeWithName + 532
    frame #22: 0x000000010002c5e3 python`_PyFunction_FastCallKeywords + 403
    frame #23: 0x0000000100164aa7 python`call_function + 183
    frame #24: 0x000000010015c604 python`_PyEval_EvalFrameDefault + 20180
    frame #25: 0x0000000100155f04 python`_PyEval_EvalCodeWithName + 532
    frame #26: 0x00000001001c1afb python`PyRun_FileExFlags + 235
    frame #27: 0x00000001001c14c6 python`PyRun_SimpleFileExFlags + 502
    frame #28: 0x00000001001ede30 python`pymain_run_file + 160
    frame #29: 0x00000001001ed72b python`pymain_run_filename + 123
    frame #30: 0x00000001001ecf11 python`pymain_run_python + 145
    frame #31: 0x00000001001ecb8b python`pymain_main + 27
    frame #32: 0x00000001000018c9 python`main + 89
    frame #33: 0x00007fff6aedfcc9 libdyld.dylib`start + 1
    frame #34: 0x00007fff6aedfcc9 libdyld.dylib`start + 1

هل يمكن أن يكون هذا متعلقًا بـ # 1168؟

لماذا يظهر ITKIOImageBasePython.so في تتبع المكدس هذا؟ اعتقدت أننا كنا نستخدم روابط بيثون الأشكال (مثل فئة الصور)؟

أيضًا ، بعض التحذيرات lldb تنفث قبل أن تتحطم مباشرة:

2021-03-25 11:57:01.360622-0600 python[22532:5953417] dynamic_cast error 1: Both of the following type_info's should have public visibility. At least one of them is hidden. N3itk10DataObjectE, N3itk5ImageIfLj3EEE.
2021-03-25 11:57:01.360667-0600 python[22532:5953417] dynamic_cast error 2: One or more of the following type_info's has hidden visibility or is defined in more than one translation unit. They should all have public visibility. N3itk10DataObjectE, N3itk5ImageIfLj3EEE, N3itk9ImageBaseILj3EEE.
2021-03-25 11:57:01.905525-0600 python[22532:5953417] dynamic_cast error 1: Both of the following type_info's should have public visibility. At least one of them is hidden. N3itk10DataObjectE, N3itk5ImageIfLj3EEE.
2021-03-25 11:57:01.905556-0600 python[22532:5953417] dynamic_cast error 2: One or more of the following type_info's has hidden visibility or is defined in more than one translation unit. They should all have public visibility. N3itk10DataObjectE, N3itk5ImageIfLj3EEE, N3itk9ImageBaseILj3EEE.
2021-03-25 11:57:02.113545-0600 python[22532:5953417] dynamic_cast error 1: Both of the following type_info's should have public visibility. At least one of them is hidden. N3itk10DataObjectE, N3itk5ImageIfLj3EEE.
2021-03-25 11:57:02.113577-0600 python[22532:5953417] dynamic_cast error 2: One or more of the following type_info's has hidden visibility or is defined in more than one translation unit. They should all have public visibility. N3itk10DataObjectE, N3itk5ImageIfLj3EEE, N3itk9ImageBaseILj3EEE.
2021-03-25 11:57:02.646500-0600 python[22532:5953417] dynamic_cast error 1: Both of the following type_info's should have public visibility. At least one of them is hidden. N3itk10DataObjectE, N3itk5ImageIfLj3EEE.
2021-03-25 11:57:02.646531-0600 python[22532:5953417] dynamic_cast error 2: One or more of the following type_info's has hidden visibility or is defined in more than one translation unit. They should all have public visibility. N3itk10DataObjectE, N3itk5ImageIfLj3EEE, N3itk9ImageBaseILj3EEE.
2021-03-25 11:57:03.535838-0600 python[22532:5953417] dynamic_cast error 1: Both of the following type_info's should have public visibility. At least one of them is hidden. N3itk10DataObjectE, N3itk5ImageIfLj3EEE.
2021-03-25 11:57:03.535870-0600 python[22532:5953417] dynamic_cast error 2: One or more of the following type_info's has hidden visibility or is defined in more than one translation unit. They should all have public visibility. N3itk10DataObjectE, N3itk5ImageIfLj3EEE, N3itk9ImageBaseILj3EEE.
2021-03-25 11:57:05.224328-0600 python[22532:5953417] dynamic_cast error 1: Both of the following type_info's should have public visibility. At least one of them is hidden. N3itk10DataObjectE, N3itk5ImageIfLj3EEE.
2021-03-25 11:57:05.224362-0600 python[22532:5953417] dynamic_cast error 2: One or more of the following type_info's has hidden visibility or is defined in more than one translation unit. They should all have public visibility. N3itk10DataObjectE, N3itk5ImageIfLj3EEE, N3itk9ImageBaseILj3EEE.

هل يحدث هذا في خطوة التمركز في حالة استخدام الأذين الأيسر أيضًا؟

هل تتعطل أيضًا في التصحيح؟ قد يكشف عن تتبع مكدس أكمل. حيث
الصورة مبنية حول itk :: Image بعض استدعاءات وظائف ShapeWorks Image
قد يتم تحسينها ببساطة.

منذ زمن بعيد وبعيد (ربما لم يعد الفرع موجودًا) حاولت البناء
ارتباطات بايثون itk مع itk في build_dependencies ، لكنني لم أكن كذلك
ناجح. أظن أن الأمر يستحق تجربة أخرى ، خاصة وأن conda / pip هي
لا سيما تثبيت إصدارات مختلفة من بعض ، وليس كل ، itk python
المكونات (5.0 و 5.1) ، وصفة صارخة للمشاكل.

يوم الخميس ، 25 آذار (مارس) 2021 الساعة 11:59 صباحًا Alan Morris @ . * >
كتب:

  • مؤشر الترابط رقم 1 ، قائمة الانتظار = 'com.apple.main-thread' ، سبب الإيقاف = EXC_BAD_ACCESS (الكود = 1 ، العنوان = 0 × 0)

    • الإطار رقم 0: 0x000000016b8612ad libvnl_algo.dylib vnl_qr<double>::vnl_qr(this=0x00007ffeefbfd568, M=0x00007ffeefbfd6f0) at vnl_qr.hxx:51:24 [opt] frame #1: 0x000000016b85cf1d libvnl_algo.dylib double vnl_determinant(م =، التوازن =) في vnl_determinant. hxx: 107 : 14 [اختيار]

      الإطار رقم 2: 0x00000003dec807ac _ITKIOImageBasePython.so ___lldb_unnamed_symbol9961$$_ITKIOImageBasePython.so + 252 frame #3: 0x00000003deba7ff4 _ITKIOImageBasePython.so ___ lldb_unonymous_symbol7056 $$ _ ITKIOImageBasePython.so + 132

      الإطار رقم 4: 0x00000003dec80586 _ITKIOImageBasePython.so ___lldb_unnamed_symbol9956$$_ITKIOImageBasePython.so + 38 frame #5: 0x00000003dea1d188 _ITKIOImageBasePython.so ___ lldb_unonymous_symbol1480 $$ _ ITKIOImageBasePython.so + 1560

      الإطار رقم 6: 0x00000003ded50753 _ITKIOImageBasePython.so itk::ProcessObject::UpdateOutputInformation() + 351 frame #7: 0x00000003dec7fec2 _ITKIOImageBasePython.so ___ lldb_unonymous_symbol9945 $$ _ ITKIOImageBasePython.so + 70

      الإطار رقم 8: 0x00000003ded5b6f4 _ITKIOImageBasePython.so itk::DataObject::Update() + 18 frame #9: 0x000000041a65c177 _ITKCommonPython.so ___ lldb_unonymous_symbol8759 $$ _ ITKCommonPython.so + 58

      الإطار رقم 10: 0x000000010002c843 python _PyMethodDef_RawFastCallKeywords + 131 frame #11: 0x000000010002c1d6 python _PyObject_FastCallKeywords + 598

      الإطار رقم 12: 0x0000000100164bb7 python call_function + 455 frame #13: 0x000000010015c604 python _PyEval_EvalFrameDefault + 20180

      الإطار رقم 14: 0x0000000100155f04 python _PyEval_EvalCodeWithName + 532 frame #15: 0x000000010002c5e3 python _PyFunction_FastCallKeywords + 403

      الإطار رقم 16: 0x0000000100164aa7 python call_function + 183 frame #17: 0x000000010015c604 python _PyEval_EvalFrameDefault + 20180

      الإطار رقم 18: 0x000000010002c535 python _PyFunction_FastCallKeywords + 229 frame #19: 0x0000000100164aa7 python call_function + 183

      الإطار رقم 20: 0x000000010015cdb0 python _PyEval_EvalFrameDefault + 22144 frame #21: 0x0000000100155f04 python _PyEval_EvalCodeWithName + 532

      الإطار رقم 22: 0x000000010002c5e3 python _PyFunction_FastCallKeywords + 403 frame #23: 0x0000000100164aa7 python call_function + 183

      الإطار رقم 24: 0x000000010015c604 python _PyEval_EvalFrameDefault + 20180 frame #25: 0x0000000100155f04 python _PyEval_EvalCodeWithName + 532

      الإطار رقم 26: 0x00000001001c1afb python PyRun_FileExFlags + 235 frame #27: 0x00000001001c14c6 python PyRun_SimpleFileExFlags + 502

      الإطار رقم 28: 0x00000001001ede30 python pymain_run_file + 160 frame #29: 0x00000001001ed72b python pymain_run_filename + 123

      الإطار رقم 30: 0x00000001001ecf11 python pymain_run_python + 145 frame #31: 0x00000001001ecb8b python pymain_main + 27

      الإطار رقم 32: 0x00000001000018c9 python main + 89 frame #33: 0x00007fff6aedfcc9 libdyld.dylib start + 1

      الإطار رقم 34: 0x00007fff6aedfcc9 libdyld.dylib`start + 1

هل يمكن أن يكون هذا متعلقًا بـ # 1168
https://github.com/SCIInstitute/ShapeWorks/issues/1168

-
أنت تتلقى هذا لأنه تم تعيينك.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/SCIInstitute/ShapeWorks/issues/1179#issuecomment-807193351 ،
أو إلغاء الاشتراك
https://github.com/notifications/unsubscribe-auth/AAJT3EKCRFSERHDJ5XDPHCDTFN2ZPANCNFSM4ZZUXDBQ
.

تحديث. حسنًا ، لقد كنت في حيرة من أمري بسبب إخراج Python ، فقد افترضت أنه لا يزال في مركز الخطوة نظرًا لعدم وجود إخراج آخر. إنه يتعطل في FindReferenceImage:

    dim = itk.GetArrayFromImage(itk.imread(inDataList[i])).shape

أعتقد أن المشكلة هي أن لدينا مكتبتين مختلفتين من ITK تم تحميلهما في الذاكرة. 👎

منذ فترة طويلة وبعيدًا (ربما لم يعد الفرع موجودًا) حاولت إنشاء روابط Python الخاصة بـ itk جنبًا إلى جنب مع itk في build_dependencies ، لكنني لم أكن ناجحًا. أظن أن الأمر يستحق تجربة أخرى ، خاصة وأن conda / pip تقوم بشكل ملحوظ بتثبيت إصدارات مختلفة من بعض ، ولكن ليس كلها ، مكونات itk python (5.0 و 5.1) ، وهي وصفة صارخة للمشاكل.

أوافق على أن هذا قد يحل هذه المشكلة ، ولكن ماذا عن # 1168. هل نحتاج بعد ذلك إلى إنشاء أدوات itk من الصفر وتوفيرها أيضًا بحيث يتم بناؤها باستخدام ITK الخاص بنا؟

أوافق على أن هذا قد يحل هذه المشكلة ، ولكن ماذا عن # 1168. هل نحتاج بعد ذلك إلى إنشاء أدوات itk من الصفر وتوفيرها أيضًا بحيث يتم بناؤها باستخدام ITK الخاص بنا؟

إذا كانت هذه مشكلة مكتبة مشتركة ، فربما يمكننا تعيين LD_LIBRARY_PATH قبل تشغيل دفتر الملاحظات.
تحديث: لقد جربت هذا وكانت النتيجة هي نفسها
التحديث 2: لقد جربت حالة الاستخدام # 1168 فقط ، وليس هذه.

إنه يتعطل في FindReferenceImage:

    dim = itk.GetArrayFromImage(itk.imread(inDataList[i])).shape

لا تشارك ShapeWorks في هذه المكالمة. أتساءل عما إذا كان يمكن تنظيف المزيد من المعلومات من خلال تشغيل هذا من خلال pdb :
python -m pub RunUseCase.py --use_case femur --groom_images (ثم ​​اضغط على "r" للتشغيل)

(أنا أشغل هذا الآن. كم من الوقت يستغرق التعطل؟ هل تمكن أي شخص من تقليل هذا؟)
التحديث: يستغرق هذا الوقت الطويل (~ ساعة) ، ولكن أقل فائدة هو أنه يبلغ عن خطأ في S فقط ولا يتركك في مصحح الأخطاء. لا أرى دعوة إلى نصوص خارجية ، لذلك أنا في حيرة من أمري من ذلك.

يبدو أن المشكلة تكمن في أن مكتبة python ITK تعمل على حل واستدعاء مكتبة VXL الخاصة بنا بدلاً من المكتبة التي تم إنشاؤها بها:

  * frame #0: 0x000000016b8612ad libvnl_algo.dylib`vnl_qr<double>::vnl_qr(this=0x00007ffeefbfd568, M=0x00007ffeefbfd6f0) at vnl_qr.hxx:51:24 [opt]
    frame #1: 0x000000016b85cf1d libvnl_algo.dylib`double vnl_determinant<double>(M=<unavailable>, balance=<unavailable>) at vnl_determinant.hxx:107:14 [opt]
    frame #2: 0x00000003dec807ac _ITKIOImageBasePython.so`___lldb_unnamed_symbol9961$$_ITKIOImageBasePython.so + 252
    frame #3: 0x00000003deba7ff4 _ITKIOImageBasePython.so`___lldb_unnamed_symbol7056$$_ITKIOImageBasePython.so + 132

تذكر أننا نبني ITK الخاص بنا باستخدام VXL / VNL بديل ، وليس ITK. libvnl_algo.dylib لنا ، _ITKIOImageBasePython.so من conda.

نحن نمزج بين إصدارات مختلفة ، لذا فليس من المستغرب أن يتعطل.

archanasri وأنا فقط حاولت عكس ترتيب يتضمن (مرة أخرى ، اختبار # 1168) ، وفشل.
أعتقد أن الحل لمشكلة # 1168 هو أن نبني ببساطة أدوات itkwidgets (نحن نحاول ذلك الآن).
بالنسبة لهذه المشكلة ، هل يمكننا أن نشير إلى vnl كما نوجهه إلى eigen ؟

لدينا بالفعل ITK باستخدام VXL.

-DITK_USE_SYSTEM_VXL=on -DVXL_DIR=${INSTALL_DIR}

تحديث. حسنًا ، لقد كنت في حيرة من أمري بسبب إخراج Python ، فقد افترضت أنه لا يزال في مركز الخطوة نظرًا لعدم وجود إخراج آخر. إنه يتعطل في FindReferenceImage:

    dim = itk.GetArrayFromImage(itk.imread(inDataList[i])).shape

أعتقد أن المشكلة هي أن لدينا مكتبتين مختلفتين من ITK تم تحميلهما في الذاكرة. 👎

بدلاً من استخدام python itk ، يمكننا استخدام shapeworks.Image.toArray (). لذلك استبدلت

dim = itk.GetArrayFromImage(itk.imread(inDataList[i])).shape

مع

img = Image(inDataList[i])
tmp = img.toArray()
dim = tmp.shape

انها لا تحطم الآن.

لطيفarchanasri. نعم ، اعتقدت أنه يمكننا الالتفاف حول الأمر بهذه الطريقة. نحتاج أساسًا إلى التأكد من أننا لا نستخدم python itk + itk في نفس الوقت. أعتقد أن مشكلة itkwidgets هي المشكلة الأكبر على الرغم من أنني أفترض أنها تستخدم واجهة ITK python داخليًا.

نعم ، ونحن غير قادرين على بناء هذه الأدوات.
نحن بحاجة إلى إيجاد طريقة لاستخدام أدوات itk الخاصة بنا.

نعم ، ونحن غير قادرين على بناء هذه الأدوات.
نحن بحاجة إلى إيجاد طريقة لاستخدام أدوات itk الخاصة بنا.

في itkwidgets 0.32.0 (أحدث إصدار مميز) ، يحدد setup.py المتطلبات التالية:

    'install_requires': [
        'colorcet>=2.0.0',
        'itk-core>=5.1.0.post2',
        'itk-filtering>=5.1.0.post2',
        'itk-meshtopolydata>=0.6.2',
        'ipydatawidgets>=4.0.1',
        'ipywidgets>=7.5.1',
        'ipympl>=0.4.1',
        'matplotlib',
        'numpy',
        'six',
        'zstandard',
    ],

بالنسبة لـ itk ، أعتقد أن هذا يعيدنا إلى بناء الثعبان.
هناك طريقة أخرى للتعامل مع هذا وهي التأكد من أن هذه هي الإصدارات المثبتة بواسطة pip (في الغالب) و conda.
جميع إصدارات كل هذه الموجودة على نظامي أحدث.

هذا ما لدي:

(shapeworks) cam<strong i="15">@ananda</strong>:~/code/ShapeWorks/ShapeWorks/Examples/Python$ conda list | grep itk
itk                       5.0.1                    pypi_0    pypi
itk-core                  5.1.2                    pypi_0    pypi
itk-filtering             5.1.2                    pypi_0    pypi
itk-io                    5.0.1                    pypi_0    pypi
itk-meshtopolydata        0.6.3                    pypi_0    pypi
itk-numerics              5.1.2                    pypi_0    pypi
itk-registration          5.0.1                    pypi_0    pypi
itk-segmentation          5.0.1                    pypi_0    pypi
itkwidgets                0.32.0                   pypi_0    pypi
(shapeworks) cam<strong i="16">@ananda</strong>:~/code/ShapeWorks/ShapeWorks/Examples/Python$ conda list | grep ipy
brotlipy                  0.7.0           py37hf967b71_1001    conda-forge
ipycanvas                 0.8.2                    pypi_0    pypi
ipydatawidgets            4.2.0                    pypi_0    pypi
ipyevents                 0.8.2                    pypi_0    pypi
ipykernel                 5.5.0            py37he01cfaa_1    conda-forge
ipympl                    0.7.0                    pypi_0    pypi
ipython                   7.21.0           py37he01cfaa_0    conda-forge
ipython_genutils          0.2.0                      py_1    conda-forge
ipyvtk-simple             0.1.4                    pypi_0    pypi
ipywidgets                7.6.3                    pypi_0    pypi

علامة حمراء واحدة هي إصدارات 5.0.1 من itk-io و -التسجيل -التجزئة ، والأهم من ذلك كله ، أنها نفسها.

لقد قمت بتحديث تثبيتات النقطة إلى الأحدث (كان هناك سبب لعدم تمكننا من القيام بذلك ، ولكن وضع ذلك جانبًا في الوقت الحالي) وأعدت بناء جميع التبعيات. # 1168 لا يزال يتعطل بنفس الطرق الموضحة فيه.

مثبت.

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