قسمت تاریک پایتون برای هیدرولوژی
هیدروژئولوژی و کابوس وابستگی های نامشخص است
آینده نزدیک پردازش داده ها برای Hydrology / Hydrogeology در پایتون 3 نوشته شده است و بسیاری از دانشگاه ها و موسسات از آموزش C ++ ،Matlab یا Fortran به Python در حال تغییر هستند. میزان ابزارها، بسته ها، کدها و نوت بوک های Ipython موجود برای پردازش داده ها و تجزیه و تحلیل داده های مربوط به آب، حتی با موفقیت بسیار بالا در تکرارپذیری تجزیه و تحلیل داده ها، شگفت آور است.
با این حال ، همیشه نمای مشخصی در کار کردن با پایتون وجود ندارد، به خصوص اگر در ویندوز کار می کنید. بعد از اینکه اولین مراحل خود را در ترسیم سری هیدرولوژیکی، آنالیز آماری و یا حتی اجرای یک شبکه عصبی انجام دادید، ممکن است بخواهید با پایتون کارهای بیشتری انجام دهید و زمانی وجود دارد که شرایط غیرقابل تحمل شود.
ماهیت اجتناب ناپذیر تغییر
روانشناس می گوید زندگی اتفاق می افتد و آنچه اتفاق می افتد چیزی به نام تغییر است. بنابراین پایتون بسیار زنده است. سالها پیش مسئله تغییر از پایتون 2 به پایتون 3 وجود داشت، اکنون مسئله این است که آیا یک بسته سازگار با پایتون 3.5، پایتون 3.6 یا پایتون 3.7 سازگار است یا خیر.
میزان تغییر از نسخه های پایتون، از نسخه های QGIS و عدم سازگاری به عقب باعث می شود تا پایتون خود را به نوعی "گیوتین" تغییر دهد که در آن همه کد ها و بسته های قبلی مفید نیستند. البته این که مبالغه می کنم مشخص است، اما حدس می زنم شما نکته این مسئله را متوجه باشید.
داستانهای واقعی درباره شکست
مطمئناً همه داستان خود را دارند ، اما می توانیم برخی از داستانهای واقعی شکست را ذکر کنیم:
شما می توانید 2 ساعت در نصب یک بسته بندی هیدرولوژیکی مانند Pysheds بدون موفقیت تلاش کنید، فقط به این دلیل که روشی که در اینترنت پیدا کردید برای ویندوز 10 کار می کند اما در ویندوز 7 بودید.
بسته Gempy برای مدل سازی زمین شناسی با ابزارهای عالی تجسم سه بعدی در VTK شگفت انگیز است، اما بسته VTK با پایتون 3.7 سازگار نیست، بنابراین باید یک توزیع قدیمی آناکوندا را بررسی کنید که از 3.6 پشتیبانی می کند.
Rasterio ابزارهای عالی برای پردازش، تجزیه و تحلیل و نمایش داده های مکانی ارائه می دهد. ابزارهای فعلی PIP نمی توانند بر روی توزیع آناکوندا نصب شوند، حتی در Conda، بنابراین باید از یک چرخ دودویی غیررسمی پیتون استفاده کنید که یک فرد از یک آزمایشگاه فلورسانس تهیه کرده است.
راه حل هایی که راه حل نیستند
ما توسعه دهنده هسته پایتون نیستیم، اما این ایده را می گیریم که این مشکل همیشه یک مسئله بوده است، بنابراین راه حل های جزئی برای توسعه قدرت کامل پایتون در مباحث مربوط به آب وجود دارد:
Conda: این یک بسته، وابستگی و مدیریت محیط زیست است. مدیر بسته به دنبال یک بسته است و آن را در هر سیستم عامل (ویندوز، macOS، لینوکس) نصب می کند. اگر این بسته در Conda در دسترس نیست، می توانید از Conda-Forge که مجموعه ای از دستور العمل ها است استفاده کنید. اما اگر دستور منسوخ شده باشد، بسته شما نصب نمی شود.
Docker: سطح بالاتری از راه حل و جایگزینی که Gempy برای استفاده از بسته ارائه می دهد. Docker یک بستر برای ساخت و اجرای یک برنامه در هر رایانه ای است، در واقع یک سیستم عامل را در بالای سیستم عامل شما که در آن برنامه شما مستقر و اجرا است ایجاد می کند. مشکل این است که پشتیبانی از نسخه های ویندوز به غیر از اینکه ویندوز 10 محدود است و نیاز به روشن کردن برخی گزینه های مجازی سازی در سیستم عامل و اجرای BIOS دارد، مراحلی که برای یک متخصص غیر آب و غیر عادی منابع ارئه می دهد ساده نیست.
اقیانوس دیجیتال: یا هر ارائه دهنده زیرساخت ابری تحت عنوانAmazon AWS ،Google Cloud ، Rackspace و غیره می توانید حتی یک دستگاه docker نیز یک دستگاه لینوکس روی ابر نصب کنید و شرایط خاص مورد نیاز خود را برآورده کنید. اما این دارای هزینه ماهانه است.
راه حل معقول تر
هفته گذشته ما یک تحقیق در مورد کتابخانه انتزاع داده های Point PDAL انجام دادیم که چیزی شبیه به کتابخانه جغرافیایی GDAL اما برای ابرهای نقطه LIDAR یا Drone LAS است. این کتابخانه توزیع باینری برای لینوکس و ویندوز دارد. با بسته Python و Subprocess می توانیم بدون هیچ زحمتی و ناامیدی عادی، تمام ابزارها را از کتابخانه دریافت کنیم.
یک راه حل می تواند این باشد که بسته های پیش فرض باید به عنوان اجرایی در هر سیستم عامل کامپایل شوند و با استدلال کار کنند تا از کاربرد در هر سیستم عامل اطمینان حاصل شود.
برای غلبه بر این سمت تاریک پایتون قطعاً راه حل های بیشتری مورد نیاز است.
شناسه تلگرام مدیر سایت: SubBasin@
نشانی ایمیل: behzadsarhadi@gmail.com
(سوالات تخصصی را در گروه تلگرام ارسال کنید)
_______________________________________________________
نظرات (۰)