Источник: Nuances of Programming
Курс SkillFactory Python для анализа данных. Вы научитесь за минуты обрабатывать большие файлы и создавать отчеты, автоматизируете сбор данных из интернета, освоите парсинг и работу с API.
В мире науки о данных Python обладает богатейшими возможностями. Он обрабатывает числа, выполняет вычисления и анализирует огромные наборы данных.
Однако необязательно ограничиваться только наскучившими и чисто функциональными данными. Иногда работать с цифрами становится очень интересно, особенно когда они связаны с космосом и планетами.
Приготовьтесь! Мы отправляемся в путешествие вокруг света и сквозь космическое пространство. Нам предстоит познакомиться с модулями Python, которые таят в себе гораздо более увлекательные открытия, чем просто новые бизнес-стратегии.
1. PyEphem
Модуль PyEphem предоставляет высокоточные данные о планетах и Солнечной системе. Он использует супернадежную библиотеку С, которая позволяет определять точное положение планет, выполнять межпланетные вычисления и открывать много познавательных данных.
import ephem
jupiter = ephem.Jupiter()
jupiter.compute()
print(jupiter.ra)
Как видно из этого фрагмента кода, работа с PyEphem начинается очень просто. В приведенном примере импортируется библиотека и вычисляется текущее положение Юпитера. Мы можем получить самые разные данные о планете, включая более подробную информацию о ее местоположении.
Для правильного определения прямого восхождения планеты потребуется астрономическая величина .ra, метрика .dec и точные метрики, указывающие местоположение планеты на небе.
С дополнительной информацией и обновленной документацией по модулю PyEphem можно ознакомиться по ссылке на официальный сайт.
2. solarsystem
По аналогии с предыдущим, модуль solarsystem также позволяет определять и вычислять расположение планет. Он попроще, чем PyEphem, и не содержит так много информации, но зато очень прост в освоении.
Посмотрите, насколько быстро можно получить словарь всех положений планеты на определенный момент времени:
import solarsystem
helio = solarsystem.Heliocentric(year=2022, month=1, day=1, hour=12, minute=0)
print(helio.planets())
Данный код выводит словарь, в котором каждый ключ — это название планеты (например, Юпитер), а каждое значение — кортеж небесной широты и долготы. С помощью таких данных можно создавать координатные сетки, календари и даже интерактивные веб-приложения, исследующие Солнечную систему.
За дополнительной информацией по работе с модулем можно обратиться к документации по указанной ссылке.
3. geemap
Временно вернемся на Землю. Модуль geemap предназначен для картографирования нашей планеты. С его помощью можно создавать подробные карты земного шара и наносить на них данные. Проект geemap взаимодействует с платформой Google Earth Engine (GEE), за счет чего предоставляет массу полезных изображений и графических ресурсов.
Проект geemap также позволяет использовать различные графические бэкенды. Допускается переход на другой бэкенд, если не устраивает установленный по умолчанию или необходим вариант, более совместимый с проектом. На данный момент доступны следующие:
Официальный сайт geemap содержит обучающее руководство, помогающее быстро освоить азы работы с модулем.
4. turboSETI
А вот теперь переходим к по-настоящему захватывающей теме. Как вам идея отправиться на поиски инопланетной жизни?
Если вы еще не в курсе, институт SETI представляет собой организацию, преследующую одну главную цель: поиск внеземного разума. Проект поддерживается не только такими организациями, как NASA, но и сообществом SETI во всем мире.
Присоединиться к проекту может любой энтузиаст, увлекающийся поисками внеземных цивилизаций. А бонусом в этом деле послужит возможность поработать с Python.
Модуль turboSETI обеспечивает эффективный способ анализа необработанных данных SETI и проверки их на наличие аномалий, которые могут свидетельствовать о присутствии внеземной жизни. Рассмотрим пример из официального репозитория turboSETI. Он показывает, как анализировать файл SETI:
# source: https://github.com/UCBerkeleySETI/turbo_seti
import time
from blimpy import Waterfall
from turbo_seti.find_doppler.find_doppler import FindDoppler
H5DIR = "/path_to_seti_data/voyager/"
H5PATH = H5DIR + "Voyager1.single_coarse.fine_res.h5"
OUT_DIR = "/path_to_output_directory"
print("\nUsing HDF5 file: {}\nHeader and data shape:".format(H5PATH))
# -- Получение отчета о заголовке и форме данных
wf = Waterfall(H5PATH)
wf.info()
# -- Инстанцирование FindDoppler.
print("\nInstantiating the FindDoppler object.")
fdop = FindDoppler(datafile=H5PATH, max_drift=4, snr=25, out_dir=OUT_DIR)
# -- Поиск совпадений и отчет о затраченном времени.
print("\nBegin doppler search. Please wait ...")
t1 = time.time()
fdop.search()
elapsed_time = time.time() - t1
print("\nFindDoppler.search() elapsed time = {} seconds".format(elapsed_time))
Можно искать и скачивать датасеты, используя сайт Breakthrough Listen.
Официальная документация turboSETI доступна по указанной ссылке.
5. pysat
Космическое пространство вокруг Земли буквально усеяно спутниками и другими объектами. В любой момент над головой может оказаться спутник, парящий в небесных далях. Отслеживание таких орбитальных станций — задача не из простых. К счастью, она также решается с помощью Python.
Модуль pysat предлагает понятный интерфейс для отслеживания и обозначения орбитальных спутников. Можно загружать различные инструменты и отслеживать предоставляемые ими данные.
Работа с тестовыми данными в pysat начинается очень просто. Для загрузки базового инструмента тестирования выполняется следующая команда:
import pysat
pysat.params['data_dirs'] = ['/tmp/']
inst = pysat.Instrument('pysat', 'testing')
inst.load(2010, 1)
print(inst.data)
Применение настоящих спутниковых данных является более сложной задачей. Она требует дополнительных настроек и конфигурации перед началом исследований.
С механизмом работы pysat можно ознакомиться на примере анализа данных спутника NASA ICON. Сообщество предоставляет подробное руководство по взаимодействию с данными ICON, доступными по ссылке. Этот материал послужит хорошей основой для настройки реальных инструментов с реальными данными.
Ссылка на полную документацию по взаимодействию со спутниками.
Читайте также:
Перевод статьи Tate Galbraith: Explore The Universe With These 5 Python Modules