概述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...