تجربه GSoC من: پروژه PEcAn

درباره PEcAN:
تحلیلگر اکوسیستم پیشبینیکننده (PEcAn) یک سیستم گردش کار علمی برای مدیریت مقادیر بسیار زیاد دادههای محیطی در دسترس عموم و یک سیستم همسان سازی دادههای بیزی برای ترکیب این اطلاعات در مدلهای پیشرفته اکوسیستم است.
خلاصه پروژه
سازمان: پروژه PecAn
مربیان: کریستوفر بلک (#اینفوتروف)، شاشانک سینگ (#moki1202)
مشارکت کننده: Abhinav Pandey (#Sweetdevil144)
مدت زمان پروژه: 350 ساعت
عنوان پروژه: PEcAn را برای استفاده مستقل از تک بهینه کنید
بسته ها
بسیار متشکرم، کریس، برای اینکه به دقت به رویکردهای من گوش دادید و آنها را به روش های بسیار بهتری اصلاح کردید.
تشکر ویژه از سایر مربیان نیز: دیوید لباور، شاشانک سینگ و مایکل دیتز
درباره پروژه:
هدف این پروژه ارتقای پروژه PEcAn با بهینه سازی ماژول های آن برای استفاده مستقل بود. با وجود چارچوب قوی و ماژول های به هم پیوسته PEcAn، نیاز روزافزونی برای قابل اجرا کردن این ماژول ها به طور مستقل وجود داشت. این تغییر برای سادهسازی استفاده، آزمایش و توسعه ماژول، در دسترستر و کارآمدتر کردن سیستم برای کاربران و مشارکتکنندگان ضروری بود. تمرکز بر بهینه سازی ماژول ها برای استفاده مستقل، افزایش عملکرد فردی آنها در چارچوب به هم پیوسته PEcAn بود. اولویت اصلی ما “باز کردن مجدد این کوپلینگ ها” با بازبینی طراحی و رابط بسته های PEcAn بود.
نمای کلی
تابستان امسال، من این افتخار را داشتم که در آن شرکت کنم تابستان کد گوگل، 2024 با پروژه PEcAn. در میان بسیاری از نامزدهای با استعداد انتخاب شده برای برنامه امسال، من یکی از آنها بودم که برای کمک به دنیای واقعی انتخاب شد. نرم افزار متن باز که تأثیر جهانی قابل توجهی دارد. با نزدیک شدن به پایان برنامه، من می خواهم در مورد آنچه در طول سه ماه گذشته با آن یاد گرفته ام فکر کنم PEcAn.
سفر من با پروژه PEcAn خیلی قبل از دوره رسمی GSoC، با من شروع شد روابط عمومی اول در دسامبر 2023 ادغام شد – پنج ماه قبل از جدول زمانی GSoC. این مشارکت اولیه به من تجربه ارزشمندی در جهت یابی معماری پیچیده و طراحی پیچیده کدهای PEcAn داد. همچنین به من این امکان را داد که با کار سازمان، به ویژه در زبان برنامه نویسی R. از همان روزهای اولیه، من مشتاق بودم عمیقتر در پروژه غوطهور شوم و مشارکتهای معناداری داشته باشم.
ارزشمندترین درسی که GSoC به من آموخت این است: ما با انجام دادن یاد می گیریم، و حتی زمانی که راه پیش رو نامشخص به نظر می رسد، مسیر رو به جلو را هموار می کنیم. تجربه من در طول این سفر GSoC به من نشان داده است که آنچه در ابتدا برای انجام آن برنامه ریزی کرده بودم تنها کسری از آنچه در نهایت به دست آوردم بود.
با 15+ درخواست های کششی، 6+ مسائل حل شده و ساعت های بی شماری که در جلسات با مربیانم سپری کردم، به تدریج خود را در راستای اهداف سازمان دیدم. پروژه PEcAn.
کمک های من به PEcAn
(تمام کارهای من که در مورد آنها بحث خواهم کرد در پایین این صفحه پیوند داده شده است.)
دوره GSoC به سه مرحله کلیدی ساختار یافته بود:
-
فاز 1: دوره پیوند جامعه : در این مرحله با پروژه آشنا شدم و با مربیانم ارتباط قوی برقرار کردم. این بار به من اجازه داد تا درک کاملی از اهداف و پیچیدگی های پروژه به دست بیاورم. من با ایجاد تغییرات جزئی در پایگاه کد و در عین حال درک جنبه های کلیدی PEcAn شروع کردم. تلاشهای من بر جمعآوری دادههایی متمرکز بود که بعداً در مقابله با چالشهای پروژه حیاتی میشوند.
-
فاز 2: جداسازی بسته های PEcAn : وظیفه اصلی من در این مرحله شروع جداسازی بسته های PEcAn بود، با نقطه شروع من
data.land
بسته بندی این شامل بررسی دقیق بستههایی بود که نیازمند بهبود در ماژولار بودن و انعطافپذیری در پروژه بودند. در این مرحله وابستگی را حذف کردمdata.land
ازdata.atmosphere
با پی بردن به نمونههای کوچک وابستگیها و هدایت مجدد آنها به بستهDB
در عوض تماس هایی که منجر به کاهش وابستگی کلی شد. علاوه بر این، تغییرات جزئی نیز در آن انجام دادم افزودن مجموعه های آزمایشی برایmet2Cf.csv.R
و به حذف کنیدdb.site.lat.lon
عملکرد و جایگزینی همه موارد استفاده باquery.site
. چندتایی را هم ترکیب کردمDB
تماسهایی که بیشتر به کاهش تماسهای پایگاه داده در سیستم ما و کاهش بیشتر تأخیر در DB کمک کردند. من همچنین یک اسکریپت پایتون سفارشی ایجاد کردم تا مشخص کنمOrphaned functions
که دیگر در پایگاه کد مورد استفاده قرار نمی گرفتند و پاکسازی چنین مواردی را انجام می دادند. -
فاز 3: تقویت
convert_input
تابع : این مرحله به دلیل پیچیدگی، چالش برانگیزترین از همه بودconvert_input
عملکرد در PEcAn من زمان قابل توجهی را به یافتن یک رویکرد خوب برای مقابله با مسائل مختلفی که با آن مواجه بودیم اختصاص دادم. با این حال، این مرحله به لطف درک بسیار عمیقتر از پایگاه کدی که تا این مرحله به دست آورده بودم، پربارترین مرحله نیز بود.
در طول این مرحله، من یک تابع جدید برای بازیابی اختیاری پیشنهاد کردم site.info
توسط #3324
، افزایش انعطاف پذیری علاوه بر این، من به بازسازی و حذف نسخهای که اکنون متوقف شده است کمک کردم BrownDog
بسته، تضمین یک پایگاه کد تمیز و مدرن از طریق #3348
. من با موفقیت تمام نمونه های آن را حذف کردم BrownDog
در حالی که فعالانه درباره این تغییرات با مربیانم بحث می کنم.
برای بهبود بیشتر ماژولار بودن convert_input
تابع، تصمیم گرفتم آن را به توابع کمکی کوچکتر در آن تقسیم کنم #3338
. این بازسازی، ناوبری و درک پایگاه کد را ساده می کند و کار را برای توسعه دهندگان آینده آسان تر می کند.
در طول دوره GSoC، جلسات منظمی (هر چهارشنبه) با مربیانم داشتم تا در مورد پیشرفت هفتگی، برنامههای آینده و استراتژی برای پیشبرد پروژه صحبت کنیم. این کمک منظم از سوی مربیانم واقعاً به من کمک کرد تا توجه خود را روی پروژه متمرکز کنم.
من عمیقاً از کل تیم PEcAn سپاسگزارم که این فرصت باورنکردنی را برای رشد، یادگیری و همکاری با دیگران در اختیار من قرار دادند. چیزی که واقعاً GSoC را منحصر به فرد می کند، لذت خود سفر است. من نه تنها در یک زبان برنامه نویسی جدید مهارت پیدا کردم، بلکه به عنوان یک شخص رشد کردم و از طریق جلسات هفتگی و تعامل با مربیانم از منطقه راحتی خود خارج شدم. این تجربه هم از نظر فنی و هم از نظر شخصی تحول آفرین بوده است.
در ادامه، من قصد دارم به کار با PEcAN در طولانی مدت ادامه دهم و قابلیت های PEcAN را با هر ظرفیتی که می توانم بهبود بخشم!! که فعلاً یک بسته بندی است!! 🚀🚀
لیست من روابط عمومی در پروژه PEcAn 💜