Spaces:
Running
Running
Wanlau
commited on
Commit
·
45c240b
1
Parent(s):
a4ef31a
i18n.en_US
Browse files- .gitignore +1 -0
- NDplot.py +23 -23
- app.py +83 -89
- i18n/i18n.py +30 -0
- i18n/locale/en_US.json +70 -0
- i18n/locale/zh_CN.json +70 -0
.gitignore
CHANGED
@@ -1,2 +1,3 @@
|
|
1 |
__pycache__/*
|
|
|
2 |
.vscode/*
|
|
|
1 |
__pycache__/*
|
2 |
+
i18n/__pycache__/*
|
3 |
.vscode/*
|
NDplot.py
CHANGED
@@ -9,7 +9,7 @@ import matplotlib.pyplot as plt
|
|
9 |
from matplotlib.patches import Patch
|
10 |
|
11 |
## the synthesis methods: Mass Spectroscopy, Radioactive Decay, Light Particles, Fission, Fusion, Spallation, Projectile Fragmentation, and Transfer/Deep Inelastic Scattering
|
12 |
-
|
13 |
"MS" : (0, 0, 0),
|
14 |
"RD" : (0, 255, 255),
|
15 |
"LP" : (255, 165, 0),
|
@@ -20,7 +20,7 @@ colors_synthesisMethods = {
|
|
20 |
"UN" : (127, 0, 127)
|
21 |
}
|
22 |
|
23 |
-
|
24 |
"MS" : "Mass Spectroscopy",
|
25 |
"RD" : "Radioactive Decay",
|
26 |
"LP" : "Light Particles",
|
@@ -31,7 +31,7 @@ names_synthesisMethods = {
|
|
31 |
"UN" : "Transfer/Deep Inelastic"
|
32 |
}
|
33 |
|
34 |
-
|
35 |
"l100ns": (247, 189, 222),
|
36 |
"100ns" : (255, 198, 165),
|
37 |
"1us" : (255, 231, 198),
|
@@ -54,7 +54,7 @@ colors_halflife = {
|
|
54 |
"UN" : (224, 224, 224)
|
55 |
}
|
56 |
|
57 |
-
|
58 |
"l100ns": "<100ns",
|
59 |
"100ns" : "100ns ~ 1us",
|
60 |
"1us" : "1us ~ 10us",
|
@@ -77,7 +77,7 @@ legends_halflife = {
|
|
77 |
"UN" : "UNKNOWN"
|
78 |
}
|
79 |
|
80 |
-
|
81 |
"P" : (255, 148, 115),
|
82 |
"N" : (156, 123, 189),
|
83 |
"A" : (255, 255, 66),
|
@@ -89,7 +89,7 @@ colors_DecayModes = {
|
|
89 |
"UNKNOWN":(224, 224, 224)
|
90 |
}
|
91 |
|
92 |
-
|
93 |
"P" : "Proton",
|
94 |
"N" : "Neutron",
|
95 |
"A" : "Alaph",
|
@@ -277,8 +277,8 @@ def nucildesChartPlotPLTColor(color_data, mode, z_min, n_min ,z_max, n_max):
|
|
277 |
if (row["z"] >= z_min and row["z"] <= z_max) and (row["n"] >= n_min and row["n"] <= n_max):
|
278 |
ypos = row["z"] - z_min
|
279 |
xpos = row["n"] - n_min
|
280 |
-
if row["type"] in
|
281 |
-
color_data[ypos][xpos] = np.array(
|
282 |
|
283 |
## 据衰变模式上色
|
284 |
elif mode == 1:
|
@@ -290,16 +290,16 @@ def nucildesChartPlotPLTColor(color_data, mode, z_min, n_min ,z_max, n_max):
|
|
290 |
if (row["z"] >= z_min and row["z"] <= z_max) and (row["n"] >= n_min and row["n"] <= n_max):
|
291 |
ypos = row["z"] - z_min
|
292 |
xpos = row["n"] - n_min
|
293 |
-
if row["type"] in
|
294 |
-
color_data[ypos][xpos] = np.array(
|
295 |
elif row["type"] in ("2B-", "β⁻"):
|
296 |
-
color_data[ypos][xpos] = np.array(
|
297 |
elif row["type"] in ("2P", "3P"):
|
298 |
-
color_data[ypos][xpos] = np.array(
|
299 |
elif row["type"] in ("2N"):
|
300 |
-
color_data[ypos][xpos] = np.array(
|
301 |
else:
|
302 |
-
color_data[ypos][xpos] = np.array(
|
303 |
|
304 |
## 据合成方法上色
|
305 |
elif mode == 2:
|
@@ -310,29 +310,29 @@ def nucildesChartPlotPLTColor(color_data, mode, z_min, n_min ,z_max, n_max):
|
|
310 |
if (row["z"] >= z_min and row["z"] <= z_max) and (row["n"] >= n_min and row["n"] <= n_max):
|
311 |
ypos = row["z"] - z_min
|
312 |
xpos = row["n"] - n_min
|
313 |
-
if row["type"] in
|
314 |
-
color_data[ypos][xpos] = np.array(
|
315 |
|
316 |
return color_data
|
317 |
|
318 |
def legendHandlesGet(plot_mode):
|
319 |
handles = []
|
320 |
if plot_mode == 0:
|
321 |
-
for hl_tag in
|
322 |
if hl_tag == "ST":
|
323 |
pass
|
324 |
elif hl_tag == "1e15s":
|
325 |
-
handles.append(Patch(facecolor=np.array(
|
326 |
else:
|
327 |
-
handles.append(Patch(facecolor=np.array(
|
328 |
|
329 |
elif plot_mode == 1:
|
330 |
-
for decay_mode in
|
331 |
-
handles.append(Patch(facecolor=np.array(
|
332 |
|
333 |
elif plot_mode == 2:
|
334 |
-
for synthesis_method in
|
335 |
-
handles.append(Patch(facecolor=np.array(
|
336 |
|
337 |
return handles
|
338 |
|
|
|
9 |
from matplotlib.patches import Patch
|
10 |
|
11 |
## the synthesis methods: Mass Spectroscopy, Radioactive Decay, Light Particles, Fission, Fusion, Spallation, Projectile Fragmentation, and Transfer/Deep Inelastic Scattering
|
12 |
+
COLORS_SYNTHESISMETHODS = {
|
13 |
"MS" : (0, 0, 0),
|
14 |
"RD" : (0, 255, 255),
|
15 |
"LP" : (255, 165, 0),
|
|
|
20 |
"UN" : (127, 0, 127)
|
21 |
}
|
22 |
|
23 |
+
NAMES_SYNTHESISMETHODS = {
|
24 |
"MS" : "Mass Spectroscopy",
|
25 |
"RD" : "Radioactive Decay",
|
26 |
"LP" : "Light Particles",
|
|
|
31 |
"UN" : "Transfer/Deep Inelastic"
|
32 |
}
|
33 |
|
34 |
+
COLORS_HALFLIFE = {
|
35 |
"l100ns": (247, 189, 222),
|
36 |
"100ns" : (255, 198, 165),
|
37 |
"1us" : (255, 231, 198),
|
|
|
54 |
"UN" : (224, 224, 224)
|
55 |
}
|
56 |
|
57 |
+
LEGENDS_HALFLIFE = {
|
58 |
"l100ns": "<100ns",
|
59 |
"100ns" : "100ns ~ 1us",
|
60 |
"1us" : "1us ~ 10us",
|
|
|
77 |
"UN" : "UNKNOWN"
|
78 |
}
|
79 |
|
80 |
+
COLORS_DECAYMODES = {
|
81 |
"P" : (255, 148, 115),
|
82 |
"N" : (156, 123, 189),
|
83 |
"A" : (255, 255, 66),
|
|
|
89 |
"UNKNOWN":(224, 224, 224)
|
90 |
}
|
91 |
|
92 |
+
LEGENDS_DECAYMODES = {
|
93 |
"P" : "Proton",
|
94 |
"N" : "Neutron",
|
95 |
"A" : "Alaph",
|
|
|
277 |
if (row["z"] >= z_min and row["z"] <= z_max) and (row["n"] >= n_min and row["n"] <= n_max):
|
278 |
ypos = row["z"] - z_min
|
279 |
xpos = row["n"] - n_min
|
280 |
+
if row["type"] in COLORS_HALFLIFE:
|
281 |
+
color_data[ypos][xpos] = np.array(COLORS_HALFLIFE[row["type"]])
|
282 |
|
283 |
## 据衰变模式上色
|
284 |
elif mode == 1:
|
|
|
290 |
if (row["z"] >= z_min and row["z"] <= z_max) and (row["n"] >= n_min and row["n"] <= n_max):
|
291 |
ypos = row["z"] - z_min
|
292 |
xpos = row["n"] - n_min
|
293 |
+
if row["type"] in COLORS_DECAYMODES:
|
294 |
+
color_data[ypos][xpos] = np.array(COLORS_DECAYMODES[row["type"]])
|
295 |
elif row["type"] in ("2B-", "β⁻"):
|
296 |
+
color_data[ypos][xpos] = np.array(COLORS_DECAYMODES["B-"])
|
297 |
elif row["type"] in ("2P", "3P"):
|
298 |
+
color_data[ypos][xpos] = np.array(COLORS_DECAYMODES["P"])
|
299 |
elif row["type"] in ("2N"):
|
300 |
+
color_data[ypos][xpos] = np.array(COLORS_DECAYMODES["N"])
|
301 |
else:
|
302 |
+
color_data[ypos][xpos] = np.array(COLORS_DECAYMODES["UNKNOWN"])
|
303 |
|
304 |
## 据合成方法上色
|
305 |
elif mode == 2:
|
|
|
310 |
if (row["z"] >= z_min and row["z"] <= z_max) and (row["n"] >= n_min and row["n"] <= n_max):
|
311 |
ypos = row["z"] - z_min
|
312 |
xpos = row["n"] - n_min
|
313 |
+
if row["type"] in COLORS_SYNTHESISMETHODS:
|
314 |
+
color_data[ypos][xpos] = np.array(COLORS_SYNTHESISMETHODS[row["type"]])
|
315 |
|
316 |
return color_data
|
317 |
|
318 |
def legendHandlesGet(plot_mode):
|
319 |
handles = []
|
320 |
if plot_mode == 0:
|
321 |
+
for hl_tag in COLORS_HALFLIFE:
|
322 |
if hl_tag == "ST":
|
323 |
pass
|
324 |
elif hl_tag == "1e15s":
|
325 |
+
handles.append(Patch(facecolor=np.array(COLORS_HALFLIFE[hl_tag])/255., label=">1e15s or Stable"))
|
326 |
else:
|
327 |
+
handles.append(Patch(facecolor=np.array(COLORS_HALFLIFE[hl_tag])/255., label=LEGENDS_HALFLIFE[hl_tag]))
|
328 |
|
329 |
elif plot_mode == 1:
|
330 |
+
for decay_mode in COLORS_DECAYMODES:
|
331 |
+
handles.append(Patch(facecolor=np.array(COLORS_DECAYMODES[decay_mode])/255., label=LEGENDS_DECAYMODES[decay_mode]))
|
332 |
|
333 |
elif plot_mode == 2:
|
334 |
+
for synthesis_method in COLORS_SYNTHESISMETHODS:
|
335 |
+
handles.append(Patch(facecolor=np.array(COLORS_SYNTHESISMETHODS[synthesis_method])/255., label=NAMES_SYNTHESISMETHODS[synthesis_method]))
|
336 |
|
337 |
return handles
|
338 |
|
app.py
CHANGED
@@ -1,10 +1,18 @@
|
|
1 |
-
import gradio as gr
|
2 |
-
import pandas as pd
|
3 |
import json
|
|
|
4 |
from tempfile import NamedTemporaryFile
|
5 |
|
|
|
|
|
|
|
6 |
import NDfilter
|
7 |
import NDplot
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
|
9 |
## 核素筛选
|
10 |
def process_filters(Z_min, Z_max, Z_oe_idx, N_min, N_max, N_oe_idx, A_min, A_max, A_oe_idx, hl_enable_idx, hl_min, hl_min_unit, hl_max, hl_max_unit, dm_enable_idx, decay_modes):
|
@@ -23,10 +31,10 @@ def process_filters(Z_min, Z_max, Z_oe_idx, N_min, N_max, N_oe_idx, A_min, A_max
|
|
23 |
|
24 |
# 结果处理
|
25 |
if len(filtered_data) == 0:
|
26 |
-
result_text = "没有找到符合条件的核素"
|
27 |
result_file_path = None
|
28 |
else:
|
29 |
-
result_text =
|
30 |
with NamedTemporaryFile(suffix=".json", delete=False, mode='w') as file:
|
31 |
json.dump(filtered_data, file, indent=2)
|
32 |
result_file_path = file.name
|
@@ -49,7 +57,7 @@ def process_search(mode_idx, nom, z, n, a, preview_mode, file_type):
|
|
49 |
|
50 |
## 结果处理
|
51 |
if result == None:
|
52 |
-
result_text = "没有找到此核素"
|
53 |
result_dataframe = None
|
54 |
result_file_path = None
|
55 |
else:
|
@@ -57,8 +65,8 @@ def process_search(mode_idx, nom, z, n, a, preview_mode, file_type):
|
|
57 |
name = result["name"]
|
58 |
result_text = f"{name}"
|
59 |
if len(result["levels"]) == 0:
|
60 |
-
result_text = result_text + "\n此核素无数据"
|
61 |
-
result_text = result_text + "\n\
|
62 |
## temp
|
63 |
with open ("data/haveDecayPage.json",'r', encoding='utf-8') as file:
|
64 |
haveDecayPage = json.load(file)
|
@@ -157,67 +165,59 @@ with open (nuclides_data_path,'r', encoding='utf-8') as file:
|
|
157 |
## 半衰期单位转换字典
|
158 |
HL_UNITS = {"fs": 1e-15, "ps": 1e-12, "ns": 1e-9, "us": 1e-6, "ms": 1e-3, "s": 1, "m": 60, "h": 3600, "d": 86400, "y": 31557600, "ky": 31557600e3, "My": 31557600e6, "Gy": 31557600e9}
|
159 |
|
160 |
-
with gr.Blocks(title="核数据工具") as demo:
|
161 |
-
gr.Markdown(""
|
162 |
-
## 核数据工具
|
163 |
-
可能是用来处理核数据的相关工具??
|
164 |
-
|
165 |
-
目前功能有:核素筛选、核素查找、核素图绘制。
|
166 |
-
""")
|
167 |
|
168 |
-
with gr.Tab("核素筛选"):
|
169 |
-
gr.Markdown(""
|
170 |
-
## 核素筛选
|
171 |
-
可以通过质子数(Z)、中子数(N)、质量数(A)以及母核半衰期、衰变模式等进行筛选
|
172 |
-
""")
|
173 |
with gr.Row():
|
174 |
with gr.Column(scale=1):
|
175 |
-
gr.Markdown("根据质子数(Z)、中子数(N)、质量数(A)进行筛选")
|
176 |
with gr.Column(scale=4):
|
177 |
with gr.Row():
|
178 |
with gr.Column(min_width=240):
|
179 |
-
gr.Markdown("质子数(Z)")
|
180 |
-
Z_min = gr.Number(label="最小值", precision=0)
|
181 |
-
Z_max = gr.Number(label="最大值", precision=0)
|
182 |
-
Z_oe = gr.Dropdown(["任意", "奇Z", "偶Z"], label="奇偶", type="index", interactive=True)
|
183 |
with gr.Column(min_width=240):
|
184 |
-
gr.Markdown("中子数(N)")
|
185 |
-
N_min = gr.Number(label="最小值", precision=0)
|
186 |
-
N_max = gr.Number(label="最大值", precision=0)
|
187 |
-
N_oe = gr.Dropdown(["任意", "奇N", "偶N"], label="奇偶", type="index", interactive=True)
|
188 |
with gr.Column(min_width=240):
|
189 |
-
gr.Markdown("质量数(A)")
|
190 |
-
A_min = gr.Number(label="最小值", precision=0)
|
191 |
-
A_max = gr.Number(label="最大值", precision=0)
|
192 |
-
A_oe = gr.Dropdown(["任意", "奇A", "偶A"], label="奇偶", type="index", interactive=True)
|
193 |
|
194 |
with gr.Row():
|
195 |
with gr.Column(scale=1):
|
196 |
-
gr.Markdown("根据母核半衰期进行筛选")
|
197 |
with gr.Column(scale=4):
|
198 |
with gr.Row():
|
199 |
-
hl_enable = gr.Radio(["不使用", "使用"], value="不使用", type="index", show_label=False)
|
200 |
-
hl_min = gr.Number(label="最小值", minimum=0.)
|
201 |
-
hl_min_unit = gr.Dropdown(["fs", "ps", "ns", "us", "ms", "s", "m", "h", "d", "y", "ky", "My", "Gy", "Stable"], value="fs", interactive=True)
|
202 |
-
hl_max = gr.Number(label="最大值", minimum=0.)
|
203 |
-
hl_max_unit = gr.Dropdown(["fs", "ps", "ns", "us", "ms", "s", "m", "h", "d", "y", "ky", "My", "Gy", "Stable"], value="Stable", interactive=True)
|
204 |
|
205 |
with gr.Row():
|
206 |
with gr.Column(scale=1):
|
207 |
-
gr.Markdown("根据衰变模式进行筛选")
|
208 |
with gr.Column(scale=4):
|
209 |
with gr.Row():
|
210 |
-
dm_enable_idx = gr.Radio(["不使用", "筛选包含所有以下所选衰变模式的核素(and)", "筛选包含任意以下所选衰变模式的核素(or)"], value="不使用", type="index", interactive=True, show_label=False)
|
211 |
with gr.Row():
|
212 |
-
decayModes = gr.CheckboxGroup(['B-', 'N', '2N', 'B-N', 'P', 'B-A', 'B-2N', 'B-3N', '2P', 'EC', 'A', 'B-4N', 'EC+B+', 'ECA', 'ECP', 'IT', 'EC2P', 'EC3P', 'ECAP', '3P', '2B-', 'ECSF', '14C', 'B-SF', '24NE', 'SF', '20O', '20NE', '25NE', '28MG', 'NE', '22NE', 'SI', 'MG', '34SI'], label="
|
213 |
|
214 |
with gr.Row():
|
215 |
-
submit_btn = gr.Button("筛选", variant="primary")
|
216 |
-
reset_btn = gr.Button("重置条件", variant="primary")
|
217 |
|
218 |
with gr.Row():
|
219 |
-
result_text = gr.Textbox(label="筛选结果", interactive=False, show_copy_button=True)
|
220 |
-
result_file = gr.File(label="结果文件", interactive=False)
|
221 |
|
222 |
inputs = [
|
223 |
Z_min, Z_max, Z_oe,
|
@@ -234,33 +234,33 @@ with gr.Blocks(title="核数据工具") as demo:
|
|
234 |
)
|
235 |
|
236 |
reset_btn.click(
|
237 |
-
fn=lambda: [None,None,"任意"]*3 + ["不使用", None, "fs", None, "Stable"] + ["不使用", []],
|
238 |
outputs=inputs
|
239 |
)
|
240 |
|
241 |
|
242 |
-
with gr.Tab("核素查找"):
|
243 |
-
gr.Markdown("
|
244 |
with gr.Row():
|
245 |
with gr.Column(scale=3):
|
246 |
-
searchingMode = gr.Radio(["核素名称", "质子数(Z)、中子数(N)", "质子数(Z)、质量数(A)", "中子数(N)、质量数(A)"], value="核素名称", label="查找模式", interactive=True, type="index")
|
247 |
-
gr.Markdown("
|
248 |
-
nuclide_in = gr.Textbox(value=None, info="请输入由质量数及元素名称所组成的核素名称,示例:232Th、232TH、th232、232-Th、th-232等。\n只要不太离谱就能识别……大概?")
|
249 |
-
gr.Markdown("
|
250 |
with gr.Row():
|
251 |
-
Z_in = gr.Number(value=0, label="质子数(Z)", precision=0, interactive=False)
|
252 |
-
N_in = gr.Number(value=0, label="中子数(N)", precision=0, interactive=False)
|
253 |
-
A_in = gr.Number(value=0, label="质量数(A)", precision=0, interactive=False)
|
254 |
-
previewMode = gr.Radio(["紧凑", "常规"], value="紧凑", type="index", label="预览模式")
|
255 |
-
outputFileType = gr.Radio(["json", "csv"], value="json", type="index", label="导出文件格式")
|
256 |
with gr.Row():
|
257 |
-
submit_btn2 = gr.Button("查找", variant="primary")
|
258 |
-
reset_btn2 = gr.Button("重置条件", variant="primary")
|
259 |
|
260 |
with gr.Column(scale=2):
|
261 |
result_text2 = gr.Textbox(interactive=False, show_label=False)
|
262 |
-
preview_df = gr.Dataframe(label="数据预览", interactive=False)
|
263 |
-
result_file2 = gr.File(interactive=False)
|
264 |
|
265 |
searchingMode.change(
|
266 |
fn=update_inputs2,
|
@@ -286,41 +286,35 @@ with gr.Blocks(title="核数据工具") as demo:
|
|
286 |
outputs=[nuclide_in, Z_in, N_in, A_in]
|
287 |
)
|
288 |
|
289 |
-
with gr.Tab("核素图绘制"):
|
290 |
-
gr.Markdown(""
|
291 |
-
## 核素图绘制
|
292 |
-
|
293 |
-
可根据半衰期、衰变模式、合成方法等分类模式绘制核素图。
|
294 |
-
|
295 |
-
部分代码参考了Ming-Hao-Zhang的[Nuclei-Chart-Generator](https://github.com/Ming-Hao-Zhang/Nuclei-Chart-Generator)
|
296 |
-
""")
|
297 |
with gr.Row():
|
298 |
with gr.Column(scale=3):
|
299 |
-
img_preview = gr.Plot(label="图片预览")
|
300 |
with gr.Column(scale=2):
|
301 |
-
plot_mode = gr.Radio(["寿命", "衰变模式", "合成方法"], value="寿命", label="核素分类模式", type="index")
|
302 |
-
text_mode = gr.Radio(["无", "元素名称", "核素名称", "详细信息"], value="无", label="显示信息", type="index")
|
303 |
-
have_legend_idx = gr.Radio(["显示图例", "隐藏图例"], value="显示图例", label="图例", type="index")
|
304 |
-
file_type3 = gr.Radio(["svg", "png"], value="svg", label="导出格式", info="png为位图格式,svg为矢量图格式。\n显示详细信息时,受分辨率限制,png格式将会失真。如需高清晰度图像,请使用svg。")
|
305 |
-
|
306 |
-
with gr.Accordion(open=False, label="更多选项") as filter3:
|
307 |
-
gr.Markdown("根据质子数(Z)、中子数(N)筛选 (未启用)")
|
308 |
-
using_filter = gr.Radio(["不使用", "使用"], value="不使用", show_label=False, type='index', interactive=False)
|
309 |
with gr.Row():
|
310 |
with gr.Column(min_width=120):
|
311 |
-
gr.Markdown("质子数(Z)")
|
312 |
-
Z_min = gr.Number(label="最小值", precision=0, interactive=False)
|
313 |
-
Z_max = gr.Number(label="最大值", precision=0, interactive=False)
|
314 |
with gr.Column(min_width=120):
|
315 |
-
gr.Markdown("中子数(N)")
|
316 |
-
N_min = gr.Number(label="最小值", precision=0, interactive=False)
|
317 |
-
N_max = gr.Number(label="最大值", precision=0, interactive=False)
|
318 |
|
319 |
with gr.Row():
|
320 |
-
submit_btn3 = gr.Button("绘制", variant="primary")
|
321 |
-
reset_btn3 = gr.Button("重置条件", variant="primary")
|
322 |
|
323 |
-
result_file3 = gr.File(interactive=False)
|
324 |
|
325 |
using_filter.change(
|
326 |
fn=update_inputs3,
|
@@ -329,7 +323,7 @@ with gr.Blocks(title="核数据工具") as demo:
|
|
329 |
)
|
330 |
|
331 |
filter3.collapse(
|
332 |
-
fn=lambda: "不使用",
|
333 |
outputs= using_filter
|
334 |
)
|
335 |
|
@@ -342,7 +336,7 @@ with gr.Blocks(title="核数据工具") as demo:
|
|
342 |
)
|
343 |
|
344 |
reset_btn3.click(
|
345 |
-
fn=lambda: ["寿命", "无", "显示图例", "svg", "不使用"] + [None]*4,
|
346 |
outputs=inputs3
|
347 |
)
|
348 |
|
|
|
|
|
|
|
1 |
import json
|
2 |
+
import logging
|
3 |
from tempfile import NamedTemporaryFile
|
4 |
|
5 |
+
import gradio as gr
|
6 |
+
import pandas as pd
|
7 |
+
|
8 |
import NDfilter
|
9 |
import NDplot
|
10 |
+
from i18n.i18n import I18nAuto
|
11 |
+
|
12 |
+
logger = logging.getLogger(__name__)
|
13 |
+
logger.setLevel("INFO")
|
14 |
+
i18n = I18nAuto()
|
15 |
+
logger.info(i18n)
|
16 |
|
17 |
## 核素筛选
|
18 |
def process_filters(Z_min, Z_max, Z_oe_idx, N_min, N_max, N_oe_idx, A_min, A_max, A_oe_idx, hl_enable_idx, hl_min, hl_min_unit, hl_max, hl_max_unit, dm_enable_idx, decay_modes):
|
|
|
31 |
|
32 |
# 结果处理
|
33 |
if len(filtered_data) == 0:
|
34 |
+
result_text = i18n("没有找到符合条件的核素")
|
35 |
result_file_path = None
|
36 |
else:
|
37 |
+
result_text = i18n("找到符合条件核素数目:") + str(len(filtered_data))
|
38 |
with NamedTemporaryFile(suffix=".json", delete=False, mode='w') as file:
|
39 |
json.dump(filtered_data, file, indent=2)
|
40 |
result_file_path = file.name
|
|
|
57 |
|
58 |
## 结果处理
|
59 |
if result == None:
|
60 |
+
result_text = i18n("没有找到此核素")
|
61 |
result_dataframe = None
|
62 |
result_file_path = None
|
63 |
else:
|
|
|
65 |
name = result["name"]
|
66 |
result_text = f"{name}"
|
67 |
if len(result["levels"]) == 0:
|
68 |
+
result_text = result_text + i18n("\n此核素无数据")
|
69 |
+
result_text = result_text + "\n\n" + i18n("NNDC页面:") + "\n\ngetdataset:\n" + f"https://www.nndc.bnl.gov/nudat3/getdataset.jsp?nucleus={name}&unc=NDS"
|
70 |
## temp
|
71 |
with open ("data/haveDecayPage.json",'r', encoding='utf-8') as file:
|
72 |
haveDecayPage = json.load(file)
|
|
|
165 |
## 半衰期单位转换字典
|
166 |
HL_UNITS = {"fs": 1e-15, "ps": 1e-12, "ns": 1e-9, "us": 1e-6, "ms": 1e-3, "s": 1, "m": 60, "h": 3600, "d": 86400, "y": 31557600, "ky": 31557600e3, "My": 31557600e6, "Gy": 31557600e9}
|
167 |
|
168 |
+
with gr.Blocks(title=i18n("核数据工具")) as demo:
|
169 |
+
gr.Markdown(i18n("**核数据工具** <br> 可能是用来处理核数据的相关工具?? <br> 目前功能有:核素筛选、核素查找、核素图绘制。"))
|
|
|
|
|
|
|
|
|
|
|
170 |
|
171 |
+
with gr.Tab(i18n("核素筛选")):
|
172 |
+
gr.Markdown(i18n("**核素筛选** <br> 可以通过质子数(Z)、中子数(N)、质量数(A)以及母核半衰期、衰变模式等进行筛选"))
|
|
|
|
|
|
|
173 |
with gr.Row():
|
174 |
with gr.Column(scale=1):
|
175 |
+
gr.Markdown(i18n("根据质子数(Z)、中子数(N)、质量数(A)进行筛选"))
|
176 |
with gr.Column(scale=4):
|
177 |
with gr.Row():
|
178 |
with gr.Column(min_width=240):
|
179 |
+
gr.Markdown(i18n("质子数(Z)"))
|
180 |
+
Z_min = gr.Number(label=i18n("最小值"), precision=0)
|
181 |
+
Z_max = gr.Number(label=i18n("最大值"), precision=0)
|
182 |
+
Z_oe = gr.Dropdown([i18n("任意"), i18n("奇Z"), i18n("偶Z")], label=i18n("奇偶"), type="index", interactive=True)
|
183 |
with gr.Column(min_width=240):
|
184 |
+
gr.Markdown(i18n("中子数(N)"))
|
185 |
+
N_min = gr.Number(label=i18n("最小值"), precision=0)
|
186 |
+
N_max = gr.Number(label=i18n("最大值"), precision=0)
|
187 |
+
N_oe = gr.Dropdown([i18n("任意"), i18n("奇N"), i18n("偶N")], label=i18n("奇偶"), type="index", interactive=True)
|
188 |
with gr.Column(min_width=240):
|
189 |
+
gr.Markdown(i18n("质量数(A)"))
|
190 |
+
A_min = gr.Number(label=i18n("最小值"), precision=0)
|
191 |
+
A_max = gr.Number(label=i18n("最大值"), precision=0)
|
192 |
+
A_oe = gr.Dropdown([i18n("任意"), i18n("奇A"), i18n("偶A")], label=i18n("奇偶"), type="index", interactive=True)
|
193 |
|
194 |
with gr.Row():
|
195 |
with gr.Column(scale=1):
|
196 |
+
gr.Markdown(i18n("根据母核半衰期进行筛选"))
|
197 |
with gr.Column(scale=4):
|
198 |
with gr.Row():
|
199 |
+
hl_enable = gr.Radio([i18n("不使用"), i18n("使用")], value=i18n("不使用"), type="index", show_label=False)
|
200 |
+
hl_min = gr.Number(label=i18n("最小值"), minimum=0.)
|
201 |
+
hl_min_unit = gr.Dropdown(["fs", "ps", "ns", "us", "ms", "s", "m", "h", "d", "y", "ky", "My", "Gy", "Stable"], value="fs", interactive=True, label=" ")
|
202 |
+
hl_max = gr.Number(label=i18n("最大值"), minimum=0.)
|
203 |
+
hl_max_unit = gr.Dropdown(["fs", "ps", "ns", "us", "ms", "s", "m", "h", "d", "y", "ky", "My", "Gy", "Stable"], value="Stable", interactive=True, label=" ")
|
204 |
|
205 |
with gr.Row():
|
206 |
with gr.Column(scale=1):
|
207 |
+
gr.Markdown(i18n("根据衰变模式进行筛选"))
|
208 |
with gr.Column(scale=4):
|
209 |
with gr.Row():
|
210 |
+
dm_enable_idx = gr.Radio([i18n("不使用"), i18n("筛选包含所有以下所选衰变模式的核素(and)"), i18n("筛选包含任意以下所选衰变模式的核素(or)")], value=i18n("不使用"), type="index", interactive=True, show_label=False)
|
211 |
with gr.Row():
|
212 |
+
decayModes = gr.CheckboxGroup(['B-', 'N', '2N', 'B-N', 'P', 'B-A', 'B-2N', 'B-3N', '2P', 'EC', 'A', 'B-4N', 'EC+B+', 'ECA', 'ECP', 'IT', 'EC2P', 'EC3P', 'ECAP', '3P', '2B-', 'ECSF', '14C', 'B-SF', '24NE', 'SF', '20O', '20NE', '25NE', '28MG', 'NE', '22NE', 'SI', 'MG', '34SI'], label=i18n("衰变模式"), interactive=True)
|
213 |
|
214 |
with gr.Row():
|
215 |
+
submit_btn = gr.Button(i18n("筛选"), variant="primary")
|
216 |
+
reset_btn = gr.Button(i18n("重置条件"), variant="primary")
|
217 |
|
218 |
with gr.Row():
|
219 |
+
result_text = gr.Textbox(label=i18n("筛选结果"), interactive=False, show_copy_button=True)
|
220 |
+
result_file = gr.File(label=i18n("结果文件"), interactive=False)
|
221 |
|
222 |
inputs = [
|
223 |
Z_min, Z_max, Z_oe,
|
|
|
234 |
)
|
235 |
|
236 |
reset_btn.click(
|
237 |
+
fn=lambda: [None,None,i18n("任意")]*3 + [i18n("不使用"), None, "fs", None, "Stable"] + [i18n("不使用"), []],
|
238 |
outputs=inputs
|
239 |
)
|
240 |
|
241 |
|
242 |
+
with gr.Tab(i18n("核素查找")):
|
243 |
+
gr.Markdown(i18n("**核素查找**"))
|
244 |
with gr.Row():
|
245 |
with gr.Column(scale=3):
|
246 |
+
searchingMode = gr.Radio([i18n("核素名称"), i18n("质子数(Z)、中子数(N)"), i18n("质子数(Z)、质量数(A)"), i18n("中子数(N)、质量数(A)")], value=i18n("核素名称"), label=i18n("查找模式"), interactive=True, type="index")
|
247 |
+
gr.Markdown(i18n("**根据核素名称查找**"))
|
248 |
+
nuclide_in = gr.Textbox(value=None, show_label=False, info=i18n("请输入由质量数及元素名称所组成的核素名称,示例:232Th、232TH、th232、232-Th、th-232等。\n只要不太离谱就能识别……大概?"))
|
249 |
+
gr.Markdown(i18n("**根据质子数(Z)、中子数(N)、质量数(A)查找**"))
|
250 |
with gr.Row():
|
251 |
+
Z_in = gr.Number(value=0, label=i18n("质子数(Z)"), precision=0, interactive=False)
|
252 |
+
N_in = gr.Number(value=0, label=i18n("中子数(N)"), precision=0, interactive=False)
|
253 |
+
A_in = gr.Number(value=0, label=i18n("质量数(A)"), precision=0, interactive=False)
|
254 |
+
previewMode = gr.Radio([i18n("紧凑"), i18n("常规")], value=i18n("紧凑"), type="index", label=i18n("预览模式"))
|
255 |
+
outputFileType = gr.Radio(["json", "csv"], value="json", type="index", label=i18n("导出文件格式"))
|
256 |
with gr.Row():
|
257 |
+
submit_btn2 = gr.Button(i18n("查找"), variant="primary")
|
258 |
+
reset_btn2 = gr.Button(i18n("重置条件"), variant="primary")
|
259 |
|
260 |
with gr.Column(scale=2):
|
261 |
result_text2 = gr.Textbox(interactive=False, show_label=False)
|
262 |
+
preview_df = gr.Dataframe(label=i18n("数据预览"), interactive=False)
|
263 |
+
result_file2 = gr.File(label=i18n("结果文件"), interactive=False)
|
264 |
|
265 |
searchingMode.change(
|
266 |
fn=update_inputs2,
|
|
|
286 |
outputs=[nuclide_in, Z_in, N_in, A_in]
|
287 |
)
|
288 |
|
289 |
+
with gr.Tab(i18n("核素图绘制")):
|
290 |
+
gr.Markdown(i18n("**核素图绘制** <br> 可根据半衰期、衰变模式、合成方法等分类模式绘制核素图。 <br>部分代码参考了Ming-Hao-Zhang的[Nuclei-Chart-Generator](https://github.com/Ming-Hao-Zhang/Nuclei-Chart-Generator)"))
|
|
|
|
|
|
|
|
|
|
|
|
|
291 |
with gr.Row():
|
292 |
with gr.Column(scale=3):
|
293 |
+
img_preview = gr.Plot(label=i18n("图片预览"))
|
294 |
with gr.Column(scale=2):
|
295 |
+
plot_mode = gr.Radio([i18n("寿命"), i18n("衰变模式"), i18n("合成方法")], value=i18n("寿命"), label=i18n("核素分类模式"), type="index")
|
296 |
+
text_mode = gr.Radio([i18n("无"), i18n("元素名称"), i18n("核素名称"), i18n("详细信息")], value=i18n("无"), label=i18n("显示信息"), type="index")
|
297 |
+
have_legend_idx = gr.Radio([i18n("显示图例"), i18n("隐藏图例")], value=i18n("显示图例"), label=i18n("图例"), type="index")
|
298 |
+
file_type3 = gr.Radio(["svg", "png"], value="svg", label=i18n("导出格式"), info=i18n("png为位图格式,svg为矢量图格式。\n显示详细信息时,受分辨率限制,png格式将会失真。如需高清晰度图像,请使用svg。"))
|
299 |
+
|
300 |
+
with gr.Accordion(open=False, label=i18n("更多选项")) as filter3:
|
301 |
+
gr.Markdown(i18n("根据质子数(Z)、中子数(N)筛选 (未启用)"))
|
302 |
+
using_filter = gr.Radio([i18n("不使用"), i18n("使用")], value=i18n("不使用"), show_label=False, type='index', interactive=False)
|
303 |
with gr.Row():
|
304 |
with gr.Column(min_width=120):
|
305 |
+
gr.Markdown(i18n("质子数(Z)"))
|
306 |
+
Z_min = gr.Number(label=i18n("最小值"), precision=0, interactive=False)
|
307 |
+
Z_max = gr.Number(label=i18n("最大值"), precision=0, interactive=False)
|
308 |
with gr.Column(min_width=120):
|
309 |
+
gr.Markdown(i18n("中子数(N)"))
|
310 |
+
N_min = gr.Number(label=i18n("最小值"), precision=0, interactive=False)
|
311 |
+
N_max = gr.Number(label=i18n("最大值"), precision=0, interactive=False)
|
312 |
|
313 |
with gr.Row():
|
314 |
+
submit_btn3 = gr.Button(i18n("绘制"), variant="primary")
|
315 |
+
reset_btn3 = gr.Button(i18n("重置条件"), variant="primary")
|
316 |
|
317 |
+
result_file3 = gr.File(label=i18n("结果文件"), interactive=False)
|
318 |
|
319 |
using_filter.change(
|
320 |
fn=update_inputs3,
|
|
|
323 |
)
|
324 |
|
325 |
filter3.collapse(
|
326 |
+
fn=lambda: i18n("不使用"),
|
327 |
outputs= using_filter
|
328 |
)
|
329 |
|
|
|
336 |
)
|
337 |
|
338 |
reset_btn3.click(
|
339 |
+
fn=lambda: [i18n("寿命"), i18n("无"), i18n("显示图例"), "svg", i18n("不使用")] + [None]*4,
|
340 |
outputs=inputs3
|
341 |
)
|
342 |
|
i18n/i18n.py
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import json
|
2 |
+
import locale
|
3 |
+
import os
|
4 |
+
|
5 |
+
|
6 |
+
## codes form the repository Retrieval-based-Voice-Conversion-WebUI
|
7 |
+
## URL: https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI
|
8 |
+
def load_language_list(language):
|
9 |
+
with open(f"./i18n/locale/{language}.json", "r", encoding="utf-8") as f:
|
10 |
+
language_list = json.load(f)
|
11 |
+
return language_list
|
12 |
+
|
13 |
+
|
14 |
+
class I18nAuto:
|
15 |
+
def __init__(self, language=None):
|
16 |
+
if language in ["Auto", None]:
|
17 |
+
language = locale.getdefaultlocale()[
|
18 |
+
0
|
19 |
+
] # getlocale can't identify the system's language ((None, None))
|
20 |
+
if not os.path.exists(f"./i18n/locale/{language}.json"):
|
21 |
+
language = "en_US"
|
22 |
+
language = "en_US" ##测试
|
23 |
+
self.language = language
|
24 |
+
self.language_map = load_language_list(language)
|
25 |
+
|
26 |
+
def __call__(self, key):
|
27 |
+
return self.language_map.get(key, key)
|
28 |
+
|
29 |
+
def __repr__(self):
|
30 |
+
return "Use Language: " + self.language
|
i18n/locale/en_US.json
ADDED
@@ -0,0 +1,70 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"\n此核素无数据": "\nThis nuclide has no data",
|
3 |
+
"**核数据工具** <br> 可能是用来处理核数据的相关工具?? <br> 目前功能有:核素筛选、核素查找、核素图绘制。": "**NuclearDataTools** <br> Tools for nuclear data processing?? <br> Current features: nuclide filter, nuclide search, nuclide chart plot.",
|
4 |
+
"**核素图绘制** <br> 可根据半衰期、衰变模式、合成方法等分类模式绘制核素图。 <br>部分代码参考了Ming-Hao-Zhang的[Nuclei-Chart-Generator](https://github.com/Ming-Hao-Zhang/Nuclei-Chart-Generator)": "**Nuclide Chart Plot** <br> The nuclide chart can be plotted based on classification modes such as half-life, decay mode, and synthesis method. <br> Part of the code references Ming-Hao-Zhang's [Nuclei-Chart-Generator].(https://github.com/Ming-Hao-Zhang/Nuclei-Chart-Generator)",
|
5 |
+
"**核素查找**": "**Nuclide Search**",
|
6 |
+
"**核素筛选** <br> 可以通过质子数(Z)、中子数(N)、质量数(A)以及母核半衰期、衰变模式等进行筛选": "**Nuclide Filter** <br> Filtering is available by proton number (Z), neutron number (N), mass number (A), parent nuclide half-life, decay mode, and other criteria.",
|
7 |
+
"**根据核素名称查找**": "**Search by nuclide name**",
|
8 |
+
"**根据质子数(Z)、中子数(N)、质量数(A)查找**": "**Search by proton number (Z), neutron number (N), and mass number (A)**",
|
9 |
+
"NNDC页面:": "Page on NNDC:",
|
10 |
+
"png为位图格式,svg为矢量图格式。\n显示详细信息时,受分辨率限制,png格式将会失真。如需高清晰度图像,请使用svg。": "PNG is a bitmap format, SVG is a vector format.\nWhen displaying detailed information, PNG images may appear distorted due to resolution limitations. For high-definition images, please use SVG.",
|
11 |
+
"不使用": "disabled",
|
12 |
+
"中子数(N)": "Neutron number (N)",
|
13 |
+
"中子数(N)、质量数(A)": "Neutron number (N), mass number (A)",
|
14 |
+
"任意": "Any",
|
15 |
+
"使用": "enabled",
|
16 |
+
"偶A": "Even A",
|
17 |
+
"偶N": "Even N",
|
18 |
+
"偶Z": "Even Z",
|
19 |
+
"元素名称": "Element name",
|
20 |
+
"合成方法": "Synthesis method",
|
21 |
+
"图例": "Legend",
|
22 |
+
"图片预览": "Image preview",
|
23 |
+
"奇A": "Odd A",
|
24 |
+
"奇N": "Odd N",
|
25 |
+
"奇Z": "Odd Z",
|
26 |
+
"奇偶": "Odd-even",
|
27 |
+
"导出文件格式": "File output format",
|
28 |
+
"导出格式": "Output format",
|
29 |
+
"寿命": "Half-life",
|
30 |
+
"常规": "Normal",
|
31 |
+
"找到符合条件核素数目:": "Matching nuclides count: ",
|
32 |
+
"数据预览": "Data preview",
|
33 |
+
"无": "None",
|
34 |
+
"显示信息": "Information display",
|
35 |
+
"显示图例": "Legend show",
|
36 |
+
"更多选项": "Options",
|
37 |
+
"最大值": "Maximum",
|
38 |
+
"最小值": "Minimum",
|
39 |
+
"查找": "Search",
|
40 |
+
"查找模式": "Searching mode",
|
41 |
+
"核数据工具": "NuclearDataTools",
|
42 |
+
"核素分类模式": "Classification mode",
|
43 |
+
"核素名称": "Nuclide name",
|
44 |
+
"核素图绘制": "Nuclide Chart Plot",
|
45 |
+
"核素查找": "Nuclide Search",
|
46 |
+
"核素筛选": "Nuclide Filter",
|
47 |
+
"根据母核半衰期进行筛选": "Filter by parent nuclide half-life",
|
48 |
+
"根据衰变模式进行筛选": "Filter by decay mode",
|
49 |
+
"根据质子数(Z)、中子数(N)、质量数(A)进行筛选": "Filter by proton number (Z), neutron number (N), and mass number (A)",
|
50 |
+
"根据质子数(Z)、中子数(N)筛选 (未启用)": "Filter by proton number (Z), and neutron number (N) (Disabled)",
|
51 |
+
"没有找到此核素": "No nuclide found",
|
52 |
+
"没有找到符合条件的核素": "No matching nuclides found",
|
53 |
+
"筛选": "Filter",
|
54 |
+
"筛选包含任意以下所选衰变模式的核素(or)": "Filter for nuclides containing any of the selected decay modes (OR)",
|
55 |
+
"筛选包含所有以下所选衰变模式的核素(and)": "Filter for nuclides containing all of the selected decay modes (AND)",
|
56 |
+
"筛选结果": "Filtering result",
|
57 |
+
"紧凑": "Compact",
|
58 |
+
"结果文件": "File of result",
|
59 |
+
"绘制": "Plot",
|
60 |
+
"衰变模式": "Decay mode",
|
61 |
+
"详细信息": "Detailed information",
|
62 |
+
"请输入由质量数及元素名称所组成的核素名称,示例:232Th、232TH、th232、232-Th、th-232等。\n只要不太离谱就能识别……大概?": "Please enter the nuclide name consisting of the mass number and element name. Ex: 232Th or 232TH or th232 or 232-Th or th-232 ...\nIt can recognize as long as it's not too far off... probably?",
|
63 |
+
"质子数(Z)": "Proton number (Z)",
|
64 |
+
"质子数(Z)、中子数(N)": "Proton number (Z), neutron number (N)",
|
65 |
+
"质子数(Z)、质量数(A)": "Proton number (Z), mass number (A)",
|
66 |
+
"质量数(A)": "Mass number (A)",
|
67 |
+
"重置条件": "Reset conditions",
|
68 |
+
"隐藏图例": "Legend hide",
|
69 |
+
"预览模式": "Preview mode"
|
70 |
+
}
|
i18n/locale/zh_CN.json
ADDED
@@ -0,0 +1,70 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"\n此核素无数据": "\n此核素无数据",
|
3 |
+
"**核数据工具** <br> 可能是用来处理核数据的相关工具?? <br> 目前功能有:核素筛选、核素查找、核素图绘制。": "**核数据工具** <br> 可能是用来处理核数据的相关工具?? <br> 目前功能有:核素筛选、核素查找、核素图绘制。",
|
4 |
+
"**核素图绘制** <br> 可根据半衰期、衰变模式、合成方法等分类模式绘制核素图。 <br>部分代码参考了Ming-Hao-Zhang的[Nuclei-Chart-Generator](https://github.com/Ming-Hao-Zhang/Nuclei-Chart-Generator)": "**核素图绘制** <br> 可根据半衰期、衰变模式、合成方法等分类模式绘制核素图。 <br>部分代码参考了Ming-Hao-Zhang的[Nuclei-Chart-Generator](https://github.com/Ming-Hao-Zhang/Nuclei-Chart-Generator)",
|
5 |
+
"**核素查找**": "**核素查找**",
|
6 |
+
"**核素筛选** <br> 可以通过质子数(Z)、中子数(N)、质量数(A)以及母核半衰期、衰变模式等进行筛选": "**核素筛选** <br> 可以通过质子数(Z)、中子数(N)、质量数(A)以及母核半衰期、衰变模式等进行筛选",
|
7 |
+
"**根据核素名称查找**": "**根据核素名称查找**",
|
8 |
+
"**根据质子数(Z)、中子数(N)、质量数(A)查找**": "**根据质子数(Z)、中子数(N)、质量数(A)查找**",
|
9 |
+
"NNDC页面:": "NNDC页面:",
|
10 |
+
"png为位图格式,svg为矢量图格式。\n显示详细信息时,受分辨率限制,png格式将会失真。如需高清晰度图像,请使用svg。": "png为位图格式,svg为矢量图格式。\n显示详细信息时,受分辨率限制,png格式将会失真。如需高清晰度图像,请使用svg。",
|
11 |
+
"不使用": "不使用",
|
12 |
+
"中子数(N)": "中子数(N)",
|
13 |
+
"中子数(N)、质量数(A)": "中子数(N)、质量数(A)",
|
14 |
+
"任意": "任意",
|
15 |
+
"使用": "使用",
|
16 |
+
"偶A": "偶A",
|
17 |
+
"偶N": "偶N",
|
18 |
+
"偶Z": "偶Z",
|
19 |
+
"元素名称": "元素名称",
|
20 |
+
"合成方法": "合成方法",
|
21 |
+
"图例": "图例",
|
22 |
+
"图片预览": "图片预览",
|
23 |
+
"奇A": "奇A",
|
24 |
+
"奇N": "奇N",
|
25 |
+
"奇Z": "奇Z",
|
26 |
+
"奇偶": "奇偶",
|
27 |
+
"导出文件格式": "导出文件格式",
|
28 |
+
"导出格式": "导出格式",
|
29 |
+
"寿命": "寿命",
|
30 |
+
"常规": "常规",
|
31 |
+
"找到符合条件核素数目:": "找到符合条件核素数目:",
|
32 |
+
"数据预览": "数据预览",
|
33 |
+
"无": "无",
|
34 |
+
"显示信息": "显示信息",
|
35 |
+
"显示图例": "显示图例",
|
36 |
+
"更多选项": "更多选项",
|
37 |
+
"最大值": "最大值",
|
38 |
+
"最小值": "最小值",
|
39 |
+
"查找": "查找",
|
40 |
+
"查找模式": "查找模式",
|
41 |
+
"核数据工具": "核数据工具",
|
42 |
+
"核素分类模式": "核素分类模式",
|
43 |
+
"核素名称": "核素名称",
|
44 |
+
"核素图绘制": "核素图绘制",
|
45 |
+
"核素查找": "核素查找",
|
46 |
+
"核素筛选": "核素筛选",
|
47 |
+
"根据母核半衰期进行筛选": "根据母核半衰期进行筛选",
|
48 |
+
"根据衰变模式进行筛选": "根据衰变模式进行筛选",
|
49 |
+
"根据质子数(Z)、中子数(N)、质量数(A)进行筛选": "根据质子数(Z)、中子数(N)、质量数(A)进行筛选",
|
50 |
+
"根据质子数(Z)、中子数(N)筛选 (未启用)": "根据质子数(Z)、中子数(N)筛选 (未启用)",
|
51 |
+
"没有找到此核素": "没有找到此核素",
|
52 |
+
"没有找到符合条件的核素": "没有找到符合条件的核素",
|
53 |
+
"筛选": "筛选",
|
54 |
+
"筛选包含任意以下所选衰变模式的核素(or)": "筛选包含任意以下所选衰变模式的核素(or)",
|
55 |
+
"筛选包含所有以下所选衰变模式的核素(and)": "筛选包含所有以下所选衰变模式的核素(and)",
|
56 |
+
"筛选结果": "筛选结果",
|
57 |
+
"紧凑": "紧凑",
|
58 |
+
"结果文件": "结果文件",
|
59 |
+
"绘制": "绘制",
|
60 |
+
"衰变模式": "衰变模式",
|
61 |
+
"详细信息": "详细信息",
|
62 |
+
"请输入由质量数及元素名称所组成的核素名称,示例:232Th、232TH、th232、232-Th、th-232等。\n只要不太离谱就能识别……大概?": "请输入由质量数及元素名称所组成的核素名称,示例:232Th、232TH、th232、232-Th、th-232等。\n只要不太离谱就能识别……大概?",
|
63 |
+
"质子数(Z)": "质子数(Z)",
|
64 |
+
"质子数(Z)、中子数(N)": "质子数(Z)、中子数(N)",
|
65 |
+
"质子数(Z)、质量数(A)": "质子数(Z)、质量数(A)",
|
66 |
+
"质量数(A)": "质量数(A)",
|
67 |
+
"重置条件": "重置条件",
|
68 |
+
"隐藏图例": "隐藏图例",
|
69 |
+
"预览模式": "预览模式"
|
70 |
+
}
|