noted orignal filename
This commit is contained in:
parent
8fc63372f7
commit
ed22e7d3a3
@ -1,3 +1,6 @@
|
||||
# 这里全是重力波相关的
|
||||
# 原始文件名 :cosmic重力波多天.py
|
||||
|
||||
import os
|
||||
import numpy as np
|
||||
import pandas as pd
|
||||
@ -269,7 +272,7 @@ def process_single_file(base_folder_path, i):
|
||||
|
||||
|
||||
# 主循环,处理1到3个文件
|
||||
base_folder_path = r"./cosmic/data/2008"
|
||||
base_folder_path = r"./data/cosmic/2008"
|
||||
all_mean_ktemp_Nz = []
|
||||
all_mean_ktemp_Ptz = []
|
||||
for file_index in range(1, 365):
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
# 重力波 一天cosmic重力波
|
||||
|
||||
import os
|
||||
import time
|
||||
import numpy as np
|
||||
@ -361,6 +363,7 @@ def plot_results_mean_ktemp_Nz(mean_ktemp_Nz, heights):
|
||||
# plt.gca().invert_yaxis() # 使高度坐标轴从上到下递增,符合常规习惯
|
||||
# plt.show()
|
||||
|
||||
|
||||
def plot_results_mean_ktemp_Ptz(mean_ktemp_Ptz, heights):
|
||||
"""
|
||||
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
# 原始文件 cosmic行星波参数全年逐日绘图
|
||||
# 此代码是对数据处理后的txt数据进行行星波参数提取绘图
|
||||
|
||||
import pandas as pd
|
||||
@ -36,17 +37,16 @@ def temp_render(path:str = f"{DATA_BASEPATH.cosmic}/cosmic.txt", T = 16):
|
||||
df = df.dropna(subset=['Temperature'])
|
||||
# 设置初始参数
|
||||
# initial_guess = [1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0] # v0, a1, b1, a2, b2, a3, b3
|
||||
initial_guess = [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5,0.5, 0.5, 0.5, 0.5,0.5, 0.5, 0.5, 0.5] # 9个 a 和 9个 b 参数
|
||||
initial_guess = [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5,
|
||||
0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5] # 9个 a 和 9个 b 参数
|
||||
|
||||
# 设置参数界限
|
||||
bounds = (
|
||||
[0, -np.inf, 0, -np.inf, 0, -np.inf, 0, -np.inf, 0, -np.inf, 0, -np.inf, 0, -np.inf, 0, -np.inf, 0, -np.inf], # 下界
|
||||
[0, -np.inf, 0, -np.inf, 0, -np.inf, 0, -np.inf, 0, -np.inf,
|
||||
0, -np.inf, 0, -np.inf, 0, -np.inf, 0, -np.inf], # 下界
|
||||
[np.inf, np.inf, np.inf, np.inf, np.inf, np.inf, np.inf, np.inf, np.inf, np.inf, np.inf, np.inf, np.inf, np.inf, np.inf,
|
||||
np.inf, np.inf, np.inf]) # 上界
|
||||
|
||||
|
||||
|
||||
|
||||
# 用于存储拟合参数结果的列表
|
||||
all_fit_results = []
|
||||
|
||||
@ -77,13 +77,15 @@ def temp_render(path:str = f"{DATA_BASEPATH.cosmic}/cosmic.txt", T = 16):
|
||||
temperature = np.array(df_8['Temperature']) # 温度,因变量
|
||||
|
||||
# 用T进行拟合
|
||||
popt, pcov = curve_fit(u_func, x, temperature, p0=initial_guess, bounds=bounds, maxfev=50000)
|
||||
popt, pcov = curve_fit(u_func, x, temperature,
|
||||
p0=initial_guess, bounds=bounds, maxfev=50000)
|
||||
|
||||
# 将拟合结果添加到列表中
|
||||
all_fit_results.append(popt)
|
||||
|
||||
# 将结果转换为DataFrame
|
||||
columns = ['a1', 'b1', 'a2', 'b2', 'a3', 'b3', 'a4', 'b4', 'a5', 'b5', 'a6', 'b6', 'a7', 'b7', 'a8', 'b8', 'a9', 'b9']
|
||||
columns = ['a1', 'b1', 'a2', 'b2', 'a3', 'b3', 'a4', 'b4',
|
||||
'a5', 'b5', 'a6', 'b6', 'a7', 'b7', 'a8', 'b8', 'a9', 'b9']
|
||||
fit_df = pd.DataFrame(all_fit_results, columns=columns) # fit_df即为拟合的参数汇总
|
||||
|
||||
# -------------------------------画图----------------------------
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
# saber 行星波参数一年逐日图
|
||||
# 此代码是对数据处理后的txt数据进行行星波参数提取绘图
|
||||
|
||||
import pandas as pd
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
# 原始文件 saber行星波处理.py
|
||||
# 高度、纬度可以指定,得到指定高度纬度下的数据,高度在101行,一般输入70、90、110,纬度在115行,纬度一般输入-20、30、60
|
||||
|
||||
import os
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
# saber 重力波
|
||||
|
||||
from io import BytesIO
|
||||
import netCDF4 as nc
|
||||
import numpy as np
|
||||
|
||||
27
tidi/plot.py
27
tidi/plot.py
@ -1,3 +1,5 @@
|
||||
# 原文件:TIDI循环重力波
|
||||
|
||||
import os
|
||||
import pandas as pd
|
||||
import numpy as np
|
||||
@ -377,7 +379,6 @@ def process_vzonal_day(day, year=2015):
|
||||
# 初始化一个空的DataFrame来存储所有天的结果
|
||||
|
||||
|
||||
|
||||
# -------------------------------------------------------------------------------------------
|
||||
# --------meridional-------------------------------------------------------------------------
|
||||
def process_vmeridional_day(day, year=2015):
|
||||
@ -757,14 +758,17 @@ def day_to_month(day):
|
||||
if day <= cumulative_days:
|
||||
return f'{["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"][i]}'
|
||||
|
||||
|
||||
class TidiPlotv2:
|
||||
def __init__(self, year):
|
||||
self.year = year
|
||||
cache_path = f"{DATA_BASEPATH.tidi}/cache"
|
||||
if os.path.exists(f"{cache_path}/{year}/all_days_vzonal_results.parquet") \
|
||||
and os.path.exists(f"{cache_path}/{year}/all_days_vmeridional_results.parquet"):
|
||||
all_days_vzonal_results = pd.read_parquet(f"{cache_path}/{year}/all_days_vzonal_results.parquet")
|
||||
all_days_vmeridional_results = pd.read_parquet(f"{cache_path}/{year}/all_days_vmeridional_results.parquet")
|
||||
all_days_vzonal_results = pd.read_parquet(
|
||||
f"{cache_path}/{year}/all_days_vzonal_results.parquet")
|
||||
all_days_vmeridional_results = pd.read_parquet(
|
||||
f"{cache_path}/{year}/all_days_vmeridional_results.parquet")
|
||||
else:
|
||||
|
||||
all_days_vzonal_results = pd.DataFrame()
|
||||
@ -775,7 +779,8 @@ class TidiPlotv2:
|
||||
all_days_vzonal_results[rf"{day:02d}"] = u2
|
||||
|
||||
# 将结果按列拼接
|
||||
all_days_vzonal_results.columns = [f"{day:02d}" for day in range(1, 365)]
|
||||
all_days_vzonal_results.columns = [
|
||||
f"{day:02d}" for day in range(1, 365)]
|
||||
# 初始化一个空的DataFrame来存储所有天的结果
|
||||
all_days_vmeridional_results = pd.DataFrame()
|
||||
|
||||
@ -785,27 +790,29 @@ class TidiPlotv2:
|
||||
all_days_vmeridional_results[rf"{day:02d}"] = v2
|
||||
|
||||
# 将结果按列拼接
|
||||
all_days_vmeridional_results.columns = [f"{day:02d}" for day in range(1, 365)]
|
||||
all_days_vmeridional_results.columns = [
|
||||
f"{day:02d}" for day in range(1, 365)]
|
||||
|
||||
# cache the results
|
||||
# if dir not exists, create it
|
||||
if not os.path.exists(f"{cache_path}/{year}"):
|
||||
os.makedirs(f"{cache_path}/{year}")
|
||||
|
||||
all_days_vzonal_results.to_parquet(f"{cache_path}/{year}/all_days_vzonal_results.parquet")
|
||||
all_days_vmeridional_results.to_parquet(f"{cache_path}/{year}/all_days_vmeridional_results.parquet")
|
||||
all_days_vzonal_results.to_parquet(
|
||||
f"{cache_path}/{year}/all_days_vzonal_results.parquet")
|
||||
all_days_vmeridional_results.to_parquet(
|
||||
f"{cache_path}/{year}/all_days_vmeridional_results.parquet")
|
||||
|
||||
self.all_days_vzonal_results = all_days_vzonal_results
|
||||
self.all_days_vmeridional_results = all_days_vmeridional_results
|
||||
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------------------------------
|
||||
# --------经纬向风平方和计算动能--------------------------------------------------------------------------------
|
||||
|
||||
# 使用numpy.where来检查两个表格中的对应元素是否都不是NaN
|
||||
sum_df = np.where(
|
||||
pd.notna(all_days_vmeridional_results) & pd.notna(all_days_vzonal_results),
|
||||
pd.notna(all_days_vmeridional_results) & pd.notna(
|
||||
all_days_vzonal_results),
|
||||
all_days_vmeridional_results + all_days_vzonal_results,
|
||||
np.nan
|
||||
)
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
# 行星波
|
||||
# 原始文件 TIDI行星波一年逐日图
|
||||
|
||||
# 此代码是对数据处理后的txt数据进行行星波参数提取绘图
|
||||
# 2006_TIDI_V_Meridional_data.txt也可以做同样处理,一个是经向风提取的行星波,一个是纬向风的
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
# 原始文件 TIDI行星波数据处理.py
|
||||
|
||||
import os
|
||||
import numpy as np
|
||||
from scipy.io import loadmat
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user