PYTHON възможности и перспективи в хидрометеорологията
PYTHON: възможности и перспективи в хидрометеорологията
език за програмиране Python
Python [1] е език за програмиране на високо ниво, въведен от Guido van Rossum през 1991 г. Python се отнася за свободен софтуер (FOSS) и се разпространява под PythonSoftwareFoun dationLicense. Това ви позволява да използвате този език за програмиране възможно най-широко и свободно в различни проекти, включително научни. Python е мултиплатформен (Windows/Linux/MacOS) език за програмиране, който помага да се интегрират възможно най-много потребители в една общност. По време на своето съществуване (повече от 20 години), в хода на историческото и логическо развитие, в езика python се формират два клона, наречени съответно python2 и python3. Последното е бъдещето на езика и python2 някой ден ще изчезне. За начинаещи потребители се препоръчва веднага да използват клона на python3. За операционни системи от семейството Windows са разработени специални дистрибуции за различни цели [2]. Повечето се предоставят безплатно, има и търговски компилации с разширена поддръжка.
Популярност на Python
Популярността на Python се осигурява от простия и прозрачен синтаксис на езика, неговата стабилност и широки възможности. Python е еднакво подходящ както за обучение на ученици и студенти по програмиране, така и за анализ на данни.
За python има огромно количество образователни материали (дигитални и печатни) както на английски, така и на български, което значително улеснява разработката на този език за програмиране. Една от най-популярните книги за изучаване на основите на езика Python е свободно разпространяваната книга Python Bite.[8].
Обобщение на изследователските модули
Модулността на python прави лесно и елегантно използването на персонализирани дизайни, които надхвърлят стандартната библиотека на python. А възможността за пренасяне на код, създаден на други езици за програмиране, ви позволява да използвате доказани и оптимизирани алгоритми. Това значително подобрява надеждността и стабилността на кода на Python.
Фиг. 1. Динамика на индекса PyPLNumPy и SciPy. Научни изчислителни модули
NumPy разширява стандартната библиотека на Python с нов тип данни - масиви (тип numpy.ndarray) и предоставя ефективен интерфейс за работа с многомерни масиви (включително вектори и матрици). Де факто NumPy е основната математическа библиотека (math е стандартна), която съдържа огромен брой математически функции, алгоритми за преобразуване на Фурие, генериране на случайни числа, изчислителни методи за линейна алгебра. NumPy също ви позволява да включите код, написан на C / C ++ или Fortran, в програма, създадена на python.
Модулът SciPy се основава на NumPy и разширява неговите възможности с алгоритми от различни области на науката, математиката и инженерството. По-специално, SciPy ви позволява да извършвате статистически анализ на данни и интерполация, да решавате ODE, да анализирате спектри, да работите с различни формати на данни и много други.
Matplotlib и Basemap. Модули за създаване на графики
Графичната библиотека Matploltlib ви позволява да създавате графики с качество на публикация: прости графики, лентови диаграми, кръгови диаграми, кутии с мустаци, наслоени контурни чертежи и много други. Поддържа се възможност за създаване на чертеж, състоящ се от няколко графики или диаграми (поддръжкаподсюжети). Всички елементи на чертежа (дебелина и честота на разделения, техния цвят, размер и тип на шрифта на надписите, прозрачност на линията и т.н.) могат да бъдат персонализирани от потребителя. При създаване на чертежи се поддържат както растерни графични (jpeg, png, tiff), така и векторни (pdf, eps, svg) формати. Можете да зададете размера на картината и нейните dpi. Заслужава да се отбележи безплатното показване на математически формули, представени в кода на компютърната система за оформление LaTex.
Тъй като Matplotlib е модул на Python, тоест част от езика за програмиране, това прави възможно автоматичното създаване на голям брой рисунки (и анимации като цяло). Това го отличава благоприятно от патентованите графични пакети за научна и инженерна графика, които имат ярък графичен интерфейс, но не са добре адаптирани за вградено създаване на чертежи.
Разширението Matplotlib за показване на географска информация, Basemap, ви позволява да създавате карти с диаграми (изискванията за създаване на действителни карти надхвърлят възможностите на това разширение) в различни проекции на карти. Съществува и алтернативен пакет за картографиране, Cartopy [9], който може да се използва за същата цел. С помощта на пакетите за картографиране на Python е лесно да се показват данни както за цялото земно кълбо, така и за определена географска област. Формата на тяхното представяне може да бъде много различна - от прости линии и икони до текущи линии и специални знаци. На фиг. 2 показва пример на схематична карта, създадена с помощта на пакета Basemap.
Фиг. Фиг. 2. Дългосрочно средно (1948 – 2014) геопотенциално височинно поле върху изобарната повърхност от 500 mbar през зимните месеци. Черната линия показва климатичната характерна изохипса на планетарната височинна фронтална зона (PVFZ)Функции на Python вхидрометеорология
Python, заедно с представените по-горе модули, може да служи като основен инструмент за анализ и визуализация при работа с хидрометеорологични данни (хидрология, метеорология, океанология).
Python ви позволява да работите директно както с текстови данни (ASCII, HTML, xls/xlsx), така и с данни от различни формати за съхранение на хидрометеорологични данни, като BUFR, GRIB, netCDF. Например файловете във формат netCDF са достъпни чрез модула netcdf4 на пакета SciPy. Чрез модула SQLite3, python предоставя интерфейс за работа
SQLite база данни. Други бази данни също се поддържат, като MySQL. Освен това е възможно не само четене, но и писане на данни.По този начин създадените от потребителя данни могат да бъдат записвани в специфични формати за съхранение или обмен.
Експерименталните данни, получени от банки данни или оригинални измервания, могат да бъдат анализирани с помощта на статистически, спектрални, дисперсионни или други видове анализи. За да направите това, не е необходимо да търсите специални подпрограми или да пишете оригинален (често почти неоптимизиран) код, където вероятността от грешка в кодирането е висока. Достатъчно е да използвате пакетите NumPy и SciPy, тествани от стотици хиляди потребители.
След анализиране или трансформиране на данни обикновено се изисква визуализиране на резултата. За хидроложки данни, използвайки Matplotlib, е лесно да се представи в една фигура времева серия от измервания, хидрограф и няколко теоретични разпределения, които най-точно описват емпиричните данни въз основа на избрани статистики (хи-квадрат, например). За метеорологични данни можете да изградите конкретни графики, като например диаграма на горните слоеве на въздуха и метеограма, или можете да изградитеклиматични карти-схеми с различно съдържание; в океанологията - вертикални профили на температура и соленост, за показване на пространствените полета на характеристиките на Световния океан (температура, соленост, скорости на течението и др.).
Пример за работа: първоначалните полета на температурата на повърхността (или температурата на повърхността на океана), представени на уебсайта на разработчика във формати netcdf или grib, могат да бъдат директно прехвърлени към масиви, с които потребителят може да извърши анализ, тоест да изчисли емпирична статистика или да изгради полеви спектър. След като изберете необходимия период или формирате свой собствен (например чрез превключване от месечни към сезонни стойности), можете да го анализирате отделно, като вземете част от масива и след това го визуализирате. Така че за четириизмерно температурно поле T (x, y, z, t) можете лесно да изградите както карта-схема на избрано ниво, така и триизмерна фигура в един период от време или да създадете анимация на вертикален разрез през избрана дължина/широчина.
Заключение
Python предоставя големи възможности за решаване на голямо разнообразие от проблеми, които възникват в областта на научното изследване на хидрометеорологичната информация. Работа с различни формати на данни, обработка на данни, тяхното анализиране и визуализиране, създаване на автоматизирани технологии - всичко това може да се направи с помощта на един език за програмиране на Python. Де факто питонът е универсалният език на научните изчисления, той се използва широко в европейски и американски изследователски институти и университети. Лекотата на учене и широката подкрепа на общността прави Python много привлекателен за изучаване. Разпространението и прилагането на езика за програмиране Python в ежедневната изследователска работа може значително да разшири обхвата на задачите, да направи изследванията по-интензивни на знания ивизуален, като същевременно запазва практичността и четливостта на кода. Python прави объркващото сложно, сложното просто и имплицитното експлицитно.
Работата е подкрепена от Руската научна фондация (проект № 14-50-00095).