Найти тему
Nuances of programming

5 модулей Python для исследования Вселенной

Источник: 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, доступными по ссылке. Этот материал послужит хорошей основой для настройки реальных инструментов с реальными данными.

Ссылка на полную документацию по взаимодействию со спутниками.

Читайте также:

Читайте нас в Telegram, VK

Перевод статьи Tate Galbraith: Explore The Universe With These 5 Python Modules