python中使用bp Python ocbp包

2021-10-12 11:41:05 字數 3977 閱讀 5580

概述ocbpy是乙個python模組,它可以在aacgm座標和磁性之間進行轉換。

相對於開闊地調整緯度和當地時間的座標系

閉合場線邊界(ocb)。這對統計特別有用

磁極的研究,其中相對於固定磁座標的網格劃分

系統會導致不同物理區域的平均值,例如極光

和極冠測量。此座標繫在:chisham,g.(2017),高緯度發展的新方法

電離層氣候和經驗模型,地球物理雜誌

研究:空間物理學,

doi:10.1002/2016ja023235.

ocbs必須從這個座標變換的觀測中獲得。

在英國南極考察隊的image auroral boundary data project

從三個極光儀器提供北半球ocb的位置

2023年5月3日03:01:42 ut-2023年8月22日00:01:28,儘管不是所有時間

這些檔案中包含了對ocb的高質量估計。

推薦的選擇條件作為預設值包含在ocboundary類中。

目前,支援來自以下資料集的檔案:

這些例程可以用作為其他資料集編寫例程的指南。

python版本

這個模組已經在python2.7、3.4-3.6版本上進行了測試。本地測試

也執行了3.3,但下一版本可能不支援。

依賴關係

列出的依賴項使用以下版本進行測試:日期時間

紐比(1.11.3、1.12.1、1.14.1)

行車日誌

設定工具(36.0.1)

使用python模組unittest執行測試

安裝安裝現在可以通過pypi$ pip install ocbpy

您也可以簽出儲存庫並自行安裝:$ git clone git:

將目錄切換到儲存庫資料夾並執行setup.py檔案。為了

本地安裝在「install」之後使用「-user」標誌。$ cd ocbpy/

$ python setup.py install

要執行單元測試,$ python setup.py test

示例在ipython中,執行:import numpy as np

import ocbpy

然後初始化乙個ocb類物件。這使用預設的影象fuv檔案和

需要幾分鐘才能載入。ocb = ocbpy.ocboundary.ocboundary()

print ocb

輸出應如下:open-closed boundary file: ~/ocbpy/ocbpy/boundaries/si13_north_circle

source instrument: image

open-closed boundary reference latitude: 74.0 degrees

219927 records from 2000-05-05 11:35:27 to 2002-08-22 00:01:28

yyyy-mm-dd hh:mm:ss numsectors phi_centre r_centre r r_err area

2000-05-05 11:35:27 4 356.93 8.74 9.69 0.14 3.642e+06

2000-05-05 11:37:23 5 202.97 13.23 22.23 0.77 1.896e+07

2002-08-21 23:55:20 8 322.60 5.49 15.36 0.61 9.107e+06

2002-08-22 00:01:28 7 179.02 2.32 19.52 0.89 1.466e+07

得到第乙個好的ocb記錄,它將是記錄索引27。ocb.get_next_good_ocb_ind()

print ocb.rec_ind

現在繪製ocb的位置

首先初始化該圖import matplotlib.pyplot as plt

f = plt.figure()

ax = f.add_subplot(111, projection="polar")

ax.set_theta_zero_location("s")

ax.xaxis.set_ticks([0, 0.5*np.pi, np.pi, 1.5*np.pi])

ax.xaxis.set_ticklabels(["00:00", "06:00", "12:00 mlt", "18:00"])

ax.set_rlim(0,25)

ax.set_rticks([5,10,15,20])

ax.yaxis.set_ticklabels(["85$^\circ$","80$^\circ$","75$^\circ$","70$^\circ$"])

在aacgm座標系中標記圓中心的位置phi_cent_rad = np.radians(ocb.phi_cent[ocb.rec_ind])

ax.plot([phi_cent_rad], [ocb.r_cent[ocb.rec_ind]], "mx", ms=10, label="ocb pole")

在繪圖時計算ocb在aacgm座標中的位置lon = np.arange(0.0, 2.0 * np.pi + 0.1, 0.1)

del_lon = lon - phi_cent_rad

lat = ocb.r_cent[ocb.rec_ind] * np.cos(del_lon) + np.sqrt(ocb.r[ocb.rec_ind]**2 - (ocb.r_cent[ocb.rec_ind] * np.sin(del_lon))**2)

ax.plot(lon, lat, "m-", linewidth=2, label="ocb")

ax.text(lon[35], lat[35]+1.5, "74$^\circ$", fontsize="medium", color="m")

為ocb座標新增參考標籤lon_clock = list()

lat_clock = list()

for ocb_mlt in np.arange(0.0, 24.0, 6.0):

aa,oo = ocb.revert_coord(74.0, ocb_mlt)

ax.plot(lon_clock, lat_clock, "m+")

ax.plot([lon_clock[0], lon_clock[2]], [lat_clock[0], lat_clock[2]], "-", color="lightpink", zorder=1)

ax.plot([lon_clock[1], lon_clock[3]], [lat_clock[1], lat_clock[3]], "-", color="lightpink", zorder=1)

ax.text(lon_clock[2]+.2, lat_clock[2]+1.0, "12:00",fontsize="medium",color="m")

ax.text(lon[35], olat[35]+1.5, "82$^\circ$", fontsize="medium", color="m")

現在新增點在aacgm座標中的位置,計算

相對於ocb的位置,並在圖例中輸出兩個座標aacgm_lat = 85.0

aacgm_lon = np.pi

ocb_lat, ocb_mlt = ocb.normal_coord(aacgm_lat, aacgm_lon * 12.0 / np.pi)

plabel = "point (mlt, lat)\naacgm (12:00,85.0$^\circ$)\nocb (:,$^\circ$)".format(np.floor(ocb_mlt), (ocb_mlt - np.floor(ocb_mlt))*60.0, ocb_lat)

ax.plot([aacgm_lon], [90.0-aacgm_lat], "ko", ms=5, label=plabel)

ax.legend(loc=2, fontsize="small", title="".format(ocb.dtime[ocb.rec_ind]), bbox_to_anchor=(-0.4,1.15))

現在的數字應該是:

推薦pypi第三方庫

和 在python中使用

給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 和 nums2 不會同時為空。示例 1 nums1 1 3 nums2 2 則中位數是 2.0 示例 2 nums1 1 2 ...

在python中使用websocket

介紹一款很帥的外掛程式autobahnpython,通過它可以在python中很方便的使用websocket進行通訊 基於twisted框架 這個外掛程式真正強大的地方是它提供了乙個 發布 訂閱模式,具體內容有空再寫,先簡單介紹一下如何建立傳統的連線。建立伺服器 必須的模組 from twisted...

python中使用with開啟檔案

file object擁有 enter 和 exit 方法,前者僅僅是返回object自己,而後者則關閉這個檔案 f open x.txt f x.txt mode r at 0x00ae82f0 f.enter x.txt mode r at 0x00ae82f0 f.read 1 x f.exi...