Shapeworks: التعبئة والتغليف شكل العمل وإعادة هيكلة حالة الاستخدام

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

التعليق الأكثر فائدة

خطوات إعادة الهيكلة:

  1. قم بتضمين جميع وظائف المساعد المستخدمة في دفاتر Jupyter إلى وحدة ShapeWorks python.
  2. قم بتحديث دفاتر الملاحظات لاستخدام الوظائف المساعدة من وحدة Python.
  3. أعد كتابة حالات استخدام python باستخدام وحدة python وأوامر واجهة برمجة تطبيقات python دون استخدام GroomUtils.

ال 13 كومينتر

من # 818

أعد تصميم أدوات العريس بحيث يمكن تشغيلها بشكل تفاعلي بدلاً من الدُفعة الحكيمة.
سيؤدي ذلك إلى عدم الحاجة إلى حفظ ملفات الاستمالة المتوسطة (المشكلة رقم 598) ويمكن تخطي الخطوات (المشكلة رقم 507)

دعنا نستخدم هذه المشكلة كقضية الوالدين / القيادة لتعبئة أشكال الثعبان وتصميم حالة الاستخدام المرتبط بها. يمكننا إضافة المزيد من القضايا المركزة لاحقًا وربطها بهذه المشكلة. لقد أغلقت القضايا ذات الصلة وفقًا لذلك.

@ jadie1 @ iyerkrithika21 يرجى الانضمام إلى فتحة GC لمناقشة هذا كجزء من واجهات برمجة تطبيقات

أنا أبحث في تغليف وحدة Python الآن. يرجى الاتصال بي إذا كان لديك اقتراحات أو أفكار.

بعض التعليمات التي وجدتها:

حتى الآن أنا مهتم جدًا بـ Conda للحصول على مواصفات تبعية أفضل ، ولكن سأكون سعيدًا لامتلاك أي شيء.
سبب conda هو أننا يجب أن نكون قادرين على تثبيت كل شيء باستخدام هذه الحزمة: سطر الأوامر ، وحدة Python ، والاستوديو. لكننا سنبدأ بوحدة بايثون الخاصة بنا.

أكبر مخاوفي هي المشكلات متعددة المنصات التي تستنزف حياتنا ، لذا سأحاول تشغيل OSX أولاً والانطلاق من هناك.

لم تنجح حالات الاستخدام بالنسبة لي على Ubuntu 18.04 ، وكان علي:

  1. في RunUseCase.py ، أضفت في الأعلى sys.path.append('../../build/cmake-build-release/bin/')
  2. تعيين متغير البيئة LD_LIBRARY_PATH=../../dependencies/install/lib/ (وإلا فإنه يشتكي من فقدان "libvcl.so")

للحصول على خيار حفظ النواتج الوسيطة ، هل يمكننا تضمين خيار الكتابة في كل عملية بدلاً من وظيفة كتابة / حفظ منفصلة؟
ما أتخيله هو:

img.binarize(write=False)
img.resample(write=True).binarize(write=True)

بدلا من

img.binarize()
img.write()
img.resample()
img.write()

سيحتاج هذا على الأرجح إلى اسم ملف كوسيطة إدخال
على سبيل المثال ، img.binarize (write = True، filename = 'blabla')

archanasri @ كريستي الأفكار؟

للحصول على خيار حفظ النواتج الوسيطة ، هل يمكننا تضمين خيار الكتابة في كل عملية بدلاً من وظيفة كتابة / حفظ منفصلة؟
ما أتخيله هو:

img.binarize(write=False)
img.resample(write=True).binarize(write=True)

بدلا من

img.binarize()
img.write()
img.resample()
img.write()

Image.write قابل للتسلسل مثل أي شيء آخر. فقط ضعه في السلسلة إذا
انت تريده.

img.binarize().write(<path>)
img.resample().write(<path>).binarize()

يوم الثلاثاء 19 يناير 2021 الساعة 4:58 مساءً Shireen Elhabian [email protected]
كتب:

سيحتاج هذا على الأرجح إلى اسم ملف كوسيطة إدخال
على سبيل المثال ، img.binarize (write = True، filename = 'blabla')

archanasri https://github.com/archanasri cchriste
https://github.com/cchriste الأفكار؟

للحصول على خيار حفظ النواتج الوسيطة ، هل يمكننا تضمين امتداد
خيار الكتابة داخل كل عملية بدلاً من كتابة / حفظ منفصل
وظيفة؟
ما أتخيله هو:

img.binarize (الكتابة = خطأ)
img.resample (write = True) .binarize (write = True).

بدلا من

img.binarize ()
img.write ()
img.resample ()
img.write ()

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

Image.write قابل للتسلسل مثل أي شيء آخر. فقط ضعه في السلسلة إذا كنت تريد ذلك. img.binarize().write(<path>) img.resample().write(<path>).binarize()
...

أفهم أن وظيفة الكتابة قابلة للتسلسل أيضًا ؛ كانت وجهة نظري في اقتراح خيار الكتابة داخل كل عملية هي الحصول على وظيفة واحدة فقط وتمرير العلامة سواء أردنا حفظ الصور الوسيطة أم لا وتبسيط حالات الاستخدام.
مثال sudo-code:

function groom(write_flag):
    img.binarize(write = write_flag).resize(write = write_flag).crop(write=write_flag)
groom(write_flag = True)
groom(write_flag = False)

بهذه الطريقة ، يمكننا تجنب تكرار نفس جزء الكود. فقط أريد أن أعرف جدوى هذه الفكرة.

أحد الأسباب التي تجعلنا نحاول تفكيك مجموعة GroomUtils.py من
وظائف "المساعد" هي جعل عمليات العناية الشخصية لدينا أكثر شفافية.
بدون تجميع هذه العمليات في وظائف متجانسة ، أصبحت مرنة
فقط من خلال تمرير المعلمة ، يكون من الأسهل بكثير إنشاء مباشرة ،
مظاهرات حالة الاستخدام مفهومة. إذا لم نستخدم (كثيرًا) التسلسل
في الأمثلة لدينا ، سيكون من السهل جدًا نقل القدرة على الكتابة
النتائج الوسيطة عند الضرورة. الآن يبدو أنهم جميعا
ضروري لأن لدينا حالات استخدام تتطلب هذه النتائج منذ ذلك الحين
تؤدي وظيفة GroomUtils بعض مجموعة (ربما تعسفية) من
العمليات ، يحفظ نتيجتها ، ثم الوظيفة التالية تقرأ تلك النتائج
ويستمر في المعالجة.

أقترح تسوية كل شيء للبدء ، ولجميع حالات الاستخدام ، لا
فقط الأشكال الإهليلجية. أعتقد أن ما سنراه هو نسبيًا
مجموعة مباشرة من العمليات التي تختلف بشكل ملحوظ في حالات معينة
(على سبيل المثال: عندما تكون الصور الأصلية "على طول الطريق"). ما سيفعله المستخدمون
الحصول على من الأمثلة لدينا هو فهم أوضح بكثير لما يمكن و / أو
يجب أن يتم ذلك لمجموعات البيانات الخاصة بهم.

فيما يلي مثال على ما أرغب في محاكاته إذا كنت مستخدمًا:

for img in images:

# since we're starting with fuzzy data, we first need to ensure it's a
binary (black and white) image in order to <explain>
img.binarize()

# next, we must ensure images all have the same logical dimensions since
<explain>
img.resize()

# now we'll crop these images using the bounds we computed earlier so they
all encompass the data without leftover space (since it can be costly and
pointless to compute)
img.crop(bounds)

يمكننا تقديم أمثلة على تسلسل الكتابة لأي من هذه العمليات ، على سبيل المثال
من خلال إضافة .write(<path> بعد أحدهم. ما لا نريده هو بعض
الوظيفة التي "تفعلها فقط" لأن "هي" ليست نفسها في كل مرة
مجموعة البيانات. في حين أن،
سنقوم بتمكين المستخدمين من خلال إظهار أن ما يتم فعله ليس كل شيء
هذا معقد وسهل التغيير. بدلا من منحهم
واجهة الصندوق الأسود مع معلمات zillion ، امنحهم المفاتيح واسمحوا
يقودونهم. آمل أن يساعد هذا في توضيح الفكرة الكاملة وراء التخلص
من العريس.

يوم الاثنين 25 يناير 2021 الساعة 9:49 صباحًا Krithika Iyer [email protected]
كتب:

Image.write قابل للتسلسل مثل أي شيء آخر. فقط ضعه في السلسلة إذا
انت تريده. img.binarize (). اكتب ()
img.resample (). اكتب () .binarize ()
… <# m_-7433729883366947300_>

أفهم أن وظيفة الكتابة قابلة للتسلسل أيضًا ؛ وجهة نظري مع
مما يشير إلى أن خيار الكتابة داخل كل عملية هو أن يكون لديك خيار واحد فقط
وظيفة وتمرير العلم ما إذا كنا نريد حفظ الصور الوسيطة
أو لا وتبسيط حالات الاستخدام.
مثال sudo-code:

وظيفة العريس (write_flag):

img.binarize(write = write_flag).resize(write = write_flag).crop(write=write_flag)

العريس (write_flag = صحيح)

العريس (write_flag = خطأ)

بهذه الطريقة ، يمكننا تجنب تكرار نفس جزء الكود.

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

MustafaHosny اللهم امين

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

تعد كتابة الصور (خاصةً بشكل مؤقت لتصحيح الأخطاء) مثالاً رائعًا على
عندما يكون التسلسل معقولاً.

# let's see what happened
img.operation(...) -> img.operation(...).write(<path>)

بينما ، عندما تكون خطوة مهمة ، قد يكون من الأفضل وضعها في مكانها
سطر خاص مع تعليق.

...
# now let's write the results
img.write(<path>)

يوم الاثنين 25 يناير 2021 الساعة 10:34 صباحًا Shireen Elhabian [email protected]
كتب:

@ iyerkrithika21 https://github.com/iyerkrithika21 @ jadie1
https://github.com/jadie1

أوافق على cchriste https://github.com/cchriste . دعونا لا نستخدم
التسلسل ما لم يكن معقولاً من الناحية اللغوية (على سبيل المثال ، إعادة التشكيل
صور ثنائية) ، حتى في هذه الحالات لا يتعين علينا كتابة كل منها
الناتج الوسيط لخطوة إعادة التشكيل (التحرير والسرد) هذه. دعونا نجعل حالات الاستخدام
سهل المتابعة وموثق ذاتيًا ويسهل على المستخدمين تكييفه وتخصيصه.

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

خطوات إعادة الهيكلة:

  1. قم بتضمين جميع وظائف المساعد المستخدمة في دفاتر Jupyter إلى وحدة ShapeWorks python.
  2. قم بتحديث دفاتر الملاحظات لاستخدام الوظائف المساعدة من وحدة Python.
  3. أعد كتابة حالات استخدام python باستخدام وحدة python وأوامر واجهة برمجة تطبيقات python دون استخدام GroomUtils.

تذكر ، لدينا فرع python_module بدأ فيه هذا بالفعل. لم يتم دمجها لمدة دقيقة ، ولكن ابقنا على اطلاع إذا تعامل شخص ما مع هذا. إنه على رأس قائمة أولوياتي.

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