more refactor for waves
This commit is contained in:
parent
6565fccd25
commit
a832042b54
@ -7,8 +7,8 @@ from quart import Blueprint
|
|||||||
from CONSTANT import DATA_BASEPATH
|
from CONSTANT import DATA_BASEPATH
|
||||||
import modules.balloon as balloon
|
import modules.balloon as balloon
|
||||||
from quart import jsonify, request, send_file
|
from quart import jsonify, request, send_file
|
||||||
from modules.balloon.plot_once_backend import render_by_mode_single
|
from modules.balloon.gravityw_plot_perday import render_by_mode_single
|
||||||
from modules.balloon.plot_year_backend import get_all_modes, render_based_on_mode
|
from modules.balloon.gravityw_plot_year import get_all_modes, render_based_on_mode
|
||||||
from modules.balloon.utils import *
|
from modules.balloon.utils import *
|
||||||
|
|
||||||
BASE_PATH_BALLOON = DATA_BASEPATH.balloon
|
BASE_PATH_BALLOON = DATA_BASEPATH.balloon
|
||||||
|
|||||||
@ -15,6 +15,7 @@ def get_meta():
|
|||||||
return []
|
return []
|
||||||
|
|
||||||
|
|
||||||
|
@cosmic_module.route('/render/planet_wave/daily')
|
||||||
@cosmic_module.route('/temp_render')
|
@cosmic_module.route('/temp_render')
|
||||||
async def render():
|
async def render():
|
||||||
T = request.args.get("T", 16)
|
T = request.args.get("T", 16)
|
||||||
@ -26,6 +27,7 @@ async def render():
|
|||||||
return await send_file(buf, mimetype="image/png")
|
return await send_file(buf, mimetype="image/png")
|
||||||
|
|
||||||
|
|
||||||
|
@cosmic_module.route('/render/gravity_wave/perday')
|
||||||
@cosmic_module.route('/render/single')
|
@cosmic_module.route('/render/single')
|
||||||
async def single_render():
|
async def single_render():
|
||||||
year = request.args.get("year", 2008)
|
year = request.args.get("year", 2008)
|
||||||
|
|||||||
@ -22,7 +22,7 @@ saber_module = Blueprint('saber', __name__)
|
|||||||
renderer = SaberGravitywRenderer()
|
renderer = SaberGravitywRenderer()
|
||||||
|
|
||||||
|
|
||||||
def get_processer():
|
def get_gravityw_processer():
|
||||||
lat_str = request.args.get("lat_range")
|
lat_str = request.args.get("lat_range")
|
||||||
if lat_str is None:
|
if lat_str is None:
|
||||||
lat_str = "30.0,40.0"
|
lat_str = "30.0,40.0"
|
||||||
@ -71,6 +71,7 @@ async def get_days():
|
|||||||
return ncfile.date_time.tolist()
|
return ncfile.date_time.tolist()
|
||||||
|
|
||||||
|
|
||||||
|
@saber_module.route("/render/gravity_wave/per_day/wave_fitting")
|
||||||
@saber_module.route("/render/plot_wave_fitting")
|
@saber_module.route("/render/plot_wave_fitting")
|
||||||
async def do_plot_wave_day_fitting():
|
async def do_plot_wave_day_fitting():
|
||||||
path = request.args.get("path")
|
path = request.args.get("path")
|
||||||
@ -78,12 +79,13 @@ async def do_plot_wave_day_fitting():
|
|||||||
height = request.args.get("height_no")
|
height = request.args.get("height_no")
|
||||||
|
|
||||||
ncfile = await run_sync(data_nc_load)(path)
|
ncfile = await run_sync(data_nc_load)(path)
|
||||||
processor = await run_sync(get_processer)()
|
processor = await run_sync(get_gravityw_processer)()
|
||||||
data = await run_sync(processor.process_day)(ncfile, int(day))
|
data = await run_sync(processor.process_day)(ncfile, int(day))
|
||||||
await run_sync(renderer.plot_wave_fitting)(data, int(height))
|
await run_sync(renderer.plot_wave_fitting)(data, int(height))
|
||||||
return await extract_payload()
|
return await extract_payload()
|
||||||
|
|
||||||
|
|
||||||
|
@saber_module.route("/render/gravity_wave/per_day/fft_ifft")
|
||||||
@saber_module.route("/render/day_fft_ifft_plot")
|
@saber_module.route("/render/day_fft_ifft_plot")
|
||||||
async def do_day_fft_ifft_plot():
|
async def do_day_fft_ifft_plot():
|
||||||
path = request.args.get("path")
|
path = request.args.get("path")
|
||||||
@ -91,13 +93,14 @@ async def do_day_fft_ifft_plot():
|
|||||||
cycle_no = request.args.get("cycle_no")
|
cycle_no = request.args.get("cycle_no")
|
||||||
|
|
||||||
ncfile = await run_sync(data_nc_load)(path)
|
ncfile = await run_sync(data_nc_load)(path)
|
||||||
processor = await run_sync(get_processer)()
|
processor = await run_sync(get_gravityw_processer)()
|
||||||
data = await run_sync(processor.process_day)(ncfile, int(day))
|
data = await run_sync(processor.process_day)(ncfile, int(day))
|
||||||
# 高度滤波处理
|
# 高度滤波处理
|
||||||
await run_sync(renderer.day_fft_ifft_plot)(wave_data=data, cycle_no=int(cycle_no))
|
await run_sync(renderer.day_fft_ifft_plot)(wave_data=data, cycle_no=int(cycle_no))
|
||||||
return await extract_payload()
|
return await extract_payload()
|
||||||
|
|
||||||
|
|
||||||
|
@saber_module.route("/render/gravity_wave/per_day/power_wave_plot")
|
||||||
@saber_module.route("/render/day_cycle_power_wave_plot")
|
@saber_module.route("/render/day_cycle_power_wave_plot")
|
||||||
async def do_day_cycle_power_wave_plot():
|
async def do_day_cycle_power_wave_plot():
|
||||||
path = request.args.get("path")
|
path = request.args.get("path")
|
||||||
@ -105,28 +108,30 @@ async def do_day_cycle_power_wave_plot():
|
|||||||
cycle_no = request.args.get("cycle_no")
|
cycle_no = request.args.get("cycle_no")
|
||||||
|
|
||||||
ncfile = await run_sync(data_nc_load)(path)
|
ncfile = await run_sync(data_nc_load)(path)
|
||||||
processor = await run_sync(get_processer)()
|
processor = await run_sync(get_gravityw_processer)()
|
||||||
data = await run_sync(processor.process_day)(ncfile, int(day))
|
data = await run_sync(processor.process_day)(ncfile, int(day))
|
||||||
await run_sync(renderer.day_cycle_power_wave_plot)(wave_data=data, cycle_no=int(cycle_no))
|
await run_sync(renderer.day_cycle_power_wave_plot)(wave_data=data, cycle_no=int(cycle_no))
|
||||||
return await extract_payload()
|
return await extract_payload()
|
||||||
|
|
||||||
|
|
||||||
|
@saber_module.route("/render/gravity_wave/per_month/power_wave_plot")
|
||||||
@saber_module.route("/render/month_power_wave_plot")
|
@saber_module.route("/render/month_power_wave_plot")
|
||||||
async def do_month_power_wave_plot():
|
async def do_month_power_wave_plot():
|
||||||
path = request.args.get("path")
|
path = request.args.get("path")
|
||||||
month = request.args.get("month")
|
month = request.args.get("month")
|
||||||
|
|
||||||
ncfile = await run_sync(data_nc_load)(path)
|
ncfile = await run_sync(data_nc_load)(path)
|
||||||
processor = await run_sync(get_processer)()
|
processor = await run_sync(get_gravityw_processer)()
|
||||||
data = await run_sync(processor.process_month)(ncfile)
|
data = await run_sync(processor.process_month)(ncfile)
|
||||||
await run_sync(renderer.month_power_wave_plot)(wave_data=data, date_time=ncfile.date_time)
|
await run_sync(renderer.month_power_wave_plot)(wave_data=data, date_time=ncfile.date_time)
|
||||||
return await extract_payload()
|
return await extract_payload()
|
||||||
|
|
||||||
|
|
||||||
|
@saber_module.route("/render/gravity_wave/per_year/power_wave_plot")
|
||||||
@saber_module.route("/render/year_power_wave_plot")
|
@saber_module.route("/render/year_power_wave_plot")
|
||||||
async def do_year_power_wave_plot():
|
async def do_year_power_wave_plot():
|
||||||
year = request.args.get("year")
|
year = request.args.get("year")
|
||||||
processor = await run_sync(get_processer)()
|
processor = await run_sync(get_gravityw_processer)()
|
||||||
data = await run_sync(processor.process_year)([
|
data = await run_sync(processor.process_year)([
|
||||||
data_nc_load(path) for path in glob.glob(f"{DATA_BASEPATH.saber}/{year}/*.nc")
|
data_nc_load(path) for path in glob.glob(f"{DATA_BASEPATH.saber}/{year}/*.nc")
|
||||||
])
|
])
|
||||||
@ -134,6 +139,9 @@ async def do_year_power_wave_plot():
|
|||||||
return await extract_payload()
|
return await extract_payload()
|
||||||
|
|
||||||
|
|
||||||
|
@saber_module.route("/render/planet_wave/per_year/energy_plot")
|
||||||
|
# above path is named correctly
|
||||||
|
# below path is named wrongly, but kept due to compatibility
|
||||||
@saber_module.route("/render/gravity_year")
|
@saber_module.route("/render/gravity_year")
|
||||||
async def do_gravity_year():
|
async def do_gravity_year():
|
||||||
year = request.args.get("year")
|
year = request.args.get("year")
|
||||||
|
|||||||
@ -5,8 +5,8 @@ from quart.utils import run_sync
|
|||||||
from matplotlib import pyplot as plt
|
from matplotlib import pyplot as plt
|
||||||
|
|
||||||
from CONSTANT import DATA_BASEPATH
|
from CONSTANT import DATA_BASEPATH
|
||||||
from modules.tidi.gravity_wave_year import TidiPlotGWYear
|
from modules.tidi.gravity_wave_year import TidiGravityWPlotMonthly
|
||||||
from modules.tidi.planet_wave_daily import TidiPlotPWDaily
|
from modules.tidi.planet_wave_daily import TidiPlotPlanetWDaily
|
||||||
|
|
||||||
|
|
||||||
tidi_module = Blueprint("Tidi", __name__)
|
tidi_module = Blueprint("Tidi", __name__)
|
||||||
@ -22,6 +22,7 @@ def get_all_years():
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@tidi_module.route("/render/planet_wave/daily")
|
||||||
@tidi_module.route('/render/wave')
|
@tidi_module.route('/render/wave')
|
||||||
async def render_wave():
|
async def render_wave():
|
||||||
mode = request.args.get('mode')
|
mode = request.args.get('mode')
|
||||||
@ -37,7 +38,7 @@ async def render_wave():
|
|||||||
height = float(height)
|
height = float(height)
|
||||||
lat_range = tuple(map(int, lat_range.split('~')))
|
lat_range = tuple(map(int, lat_range.split('~')))
|
||||||
|
|
||||||
await run_sync(TidiPlotPWDaily)(mode, year, k, height, lat_range, T)
|
await run_sync(TidiPlotPlanetWDaily)(mode, year, k, height, lat_range, T)
|
||||||
buffer = BytesIO()
|
buffer = BytesIO()
|
||||||
plt.savefig(buffer, format="png")
|
plt.savefig(buffer, format="png")
|
||||||
buffer.seek(0)
|
buffer.seek(0)
|
||||||
@ -45,26 +46,28 @@ async def render_wave():
|
|||||||
return await send_file(buffer, mimetype="image/png")
|
return await send_file(buffer, mimetype="image/png")
|
||||||
|
|
||||||
|
|
||||||
|
@tidi_module.route('/render/gravity_wave/monthly_height')
|
||||||
@tidi_module.route('/render/month_stats_v1')
|
@tidi_module.route('/render/month_stats_v1')
|
||||||
async def render_stats_v1():
|
async def render_stats_v1():
|
||||||
year = request.args.get('year')
|
year = request.args.get('year')
|
||||||
year = int(year)
|
year = int(year)
|
||||||
|
|
||||||
plotter = await run_sync(TidiPlotGWYear)(year)
|
plotter: TidiGravityWPlotMonthly = await run_sync(TidiGravityWPlotMonthly)(year)
|
||||||
await run_sync(plotter.plot_v1)()
|
await run_sync(plotter.plot_height)()
|
||||||
buffer = BytesIO()
|
buffer = BytesIO()
|
||||||
plt.savefig(buffer, format="png")
|
plt.savefig(buffer, format="png")
|
||||||
buffer.seek(0)
|
buffer.seek(0)
|
||||||
return await send_file(buffer, mimetype="image/png")
|
return await send_file(buffer, mimetype="image/png")
|
||||||
|
|
||||||
|
|
||||||
|
@tidi_module.route('/render/gravity_wave/monthly_energy')
|
||||||
@tidi_module.route('/render/month_stats_v2')
|
@tidi_module.route('/render/month_stats_v2')
|
||||||
async def render_stats_v2():
|
async def render_stats_v2():
|
||||||
year = request.args.get('year')
|
year = request.args.get('year')
|
||||||
year = int(year)
|
year = int(year)
|
||||||
|
|
||||||
plotter = await run_sync(TidiPlotGWYear)(year)
|
plotter: TidiGravityWPlotMonthly = await run_sync(TidiGravityWPlotMonthly)(year)
|
||||||
await run_sync(plotter.plot_month)()
|
await run_sync(plotter.plot_energy)()
|
||||||
buffer = BytesIO()
|
buffer = BytesIO()
|
||||||
plt.savefig(buffer, format="png")
|
plt.savefig(buffer, format="png")
|
||||||
buffer.seek(0)
|
buffer.seek(0)
|
||||||
|
|||||||
@ -759,7 +759,7 @@ def day_to_month(day):
|
|||||||
return f'{["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"][i]}'
|
return f'{["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"][i]}'
|
||||||
|
|
||||||
|
|
||||||
class TidiPlotGWYear:
|
class TidiGravityWPlotMonthly:
|
||||||
def __init__(self, year):
|
def __init__(self, year):
|
||||||
self.year = year
|
self.year = year
|
||||||
cache_path = f"{DATA_BASEPATH.tidi}/cache"
|
cache_path = f"{DATA_BASEPATH.tidi}/cache"
|
||||||
@ -842,7 +842,7 @@ class TidiPlotGWYear:
|
|||||||
self.dates = dates
|
self.dates = dates
|
||||||
self.months = [day_to_month(day) for day in dates]
|
self.months = [day_to_month(day) for day in dates]
|
||||||
|
|
||||||
def plot_v1(self):
|
def plot_height(self):
|
||||||
h_reversed = self.h_reversed
|
h_reversed = self.h_reversed
|
||||||
data0_reversed = self.data0_reversed
|
data0_reversed = self.data0_reversed
|
||||||
dates = self.dates
|
dates = self.dates
|
||||||
@ -875,7 +875,7 @@ class TidiPlotGWYear:
|
|||||||
# 显示图形
|
# 显示图形
|
||||||
# plt.show()
|
# plt.show()
|
||||||
|
|
||||||
def plot_month(self):
|
def plot_energy(self):
|
||||||
HP = self.HP
|
HP = self.HP
|
||||||
# --------------绘制月统计图-------------------------------------------------------------------
|
# --------------绘制月统计图-------------------------------------------------------------------
|
||||||
# 获取HP的列数
|
# 获取HP的列数
|
||||||
|
|||||||
@ -13,7 +13,7 @@ import matplotlib.pyplot as plt
|
|||||||
import matplotlib
|
import matplotlib
|
||||||
|
|
||||||
from CONSTANT import DATA_BASEPATH
|
from CONSTANT import DATA_BASEPATH
|
||||||
from modules.tidi.tidi_pw_process import extract_tidi_pw_data
|
from modules.tidi.tidi_planetw_process import extract_tidi_planetw_data
|
||||||
# 设置中文显示和负号正常显示
|
# 设置中文显示和负号正常显示
|
||||||
matplotlib.rcParams['font.sans-serif'] = ['SimHei'] # 显示中文
|
matplotlib.rcParams['font.sans-serif'] = ['SimHei'] # 显示中文
|
||||||
matplotlib.rcParams['axes.unicode_minus'] = False # 正常显示负号
|
matplotlib.rcParams['axes.unicode_minus'] = False # 正常显示负号
|
||||||
@ -33,7 +33,7 @@ bounds = (
|
|||||||
|
|
||||||
# 定义拟合函数
|
# 定义拟合函数
|
||||||
|
|
||||||
def TidiPlotPWDaily(
|
def TidiPlotPlanetWDaily(
|
||||||
mode,
|
mode,
|
||||||
year,
|
year,
|
||||||
k,
|
k,
|
||||||
@ -55,7 +55,7 @@ def TidiPlotPWDaily(
|
|||||||
if os.path.exists(data_cache_path):
|
if os.path.exists(data_cache_path):
|
||||||
df = pd.read_parquet(data_cache_path)
|
df = pd.read_parquet(data_cache_path)
|
||||||
else:
|
else:
|
||||||
df = extract_tidi_pw_data(
|
df = extract_tidi_planetw_data(
|
||||||
year, input_height, lat_range
|
year, input_height, lat_range
|
||||||
)[mode]
|
)[mode]
|
||||||
df.to_parquet(data_cache_path)
|
df.to_parquet(data_cache_path)
|
||||||
@ -146,8 +146,8 @@ def TidiPlotPWDaily(
|
|||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
TidiPlotPWDaily('V_Zonal', 2015, 1)
|
TidiPlotPlanetWDaily('V_Zonal', 2015, 1)
|
||||||
TidiPlotPWDaily('V_Meridional', 2015, 1)
|
TidiPlotPlanetWDaily('V_Meridional', 2015, 1)
|
||||||
|
|
||||||
# # 用于存储拟合参数结果的列表
|
# # 用于存储拟合参数结果的列表
|
||||||
# all_fit_results = []
|
# all_fit_results = []
|
||||||
|
|||||||
@ -15,7 +15,7 @@ HEIGHTS_CONSTANT = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
def extract_tidi_pw_data(
|
def extract_tidi_planetw_data(
|
||||||
year,
|
year,
|
||||||
input_height: float = 82.5,
|
input_height: float = 82.5,
|
||||||
lat_range: tuple = (0, 5),
|
lat_range: tuple = (0, 5),
|
||||||
Loading…
x
Reference in New Issue
Block a user