Inversion: Refactoring 'save_result_in_excel_file' method.
parent
12fea4e182
commit
ba0557294e
|
|
@ -20,16 +20,11 @@
|
||||||
|
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import os
|
||||||
import pandas as pd
|
|
||||||
from PyQt5.QtWidgets import (QWidget, QVBoxLayout, QHBoxLayout, QGroupBox, QComboBox,
|
|
||||||
QLabel, QPushButton, QSpacerItem,
|
|
||||||
QSlider, QLineEdit, QMessageBox, QFileDialog)
|
|
||||||
|
|
||||||
from PyQt5.QtCore import QCoreApplication, Qt
|
|
||||||
from PyQt5.QtGui import QIcon, QPixmap
|
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
import pandas as pd
|
||||||
|
|
||||||
|
from copy import deepcopy
|
||||||
|
|
||||||
import matplotlib.pyplot as plt
|
import matplotlib.pyplot as plt
|
||||||
|
|
||||||
|
|
@ -37,9 +32,14 @@ from matplotlib.colors import LogNorm
|
||||||
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
|
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
|
||||||
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolBar
|
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolBar
|
||||||
|
|
||||||
from os import chdir
|
from PyQt5.QtWidgets import (
|
||||||
|
QWidget, QVBoxLayout, QHBoxLayout, QGroupBox, QComboBox,
|
||||||
|
QLabel, QPushButton, QSpacerItem, QSlider, QLineEdit,
|
||||||
|
QMessageBox, QFileDialog
|
||||||
|
)
|
||||||
|
|
||||||
from copy import deepcopy
|
from PyQt5.QtCore import QCoreApplication, Qt
|
||||||
|
from PyQt5.QtGui import QIcon, QPixmap
|
||||||
|
|
||||||
from View.checkable_combobox import CheckableComboBox
|
from View.checkable_combobox import CheckableComboBox
|
||||||
|
|
||||||
|
|
@ -1671,96 +1671,73 @@ class AcousticInversionTab(QWidget):
|
||||||
self.figure_measured_vs_inverted_sand.canvas.draw_idle()
|
self.figure_measured_vs_inverted_sand.canvas.draw_idle()
|
||||||
|
|
||||||
def save_result_in_excel_file(self):
|
def save_result_in_excel_file(self):
|
||||||
|
|
||||||
if self.combobox_acoustic_data_choice.count() > 0:
|
if self.combobox_acoustic_data_choice.count() > 0:
|
||||||
|
|
||||||
name = QFileDialog.getSaveFileName(
|
name = QFileDialog.getSaveFileName(
|
||||||
caption="Save As - Inversion results", directory="", filter="Excel Files (*.xlsx)",
|
caption="Save As - Inversion results",
|
||||||
options=QFileDialog.DontUseNativeDialog)
|
directory="",
|
||||||
|
filter="Excel Files (*.xlsx)",
|
||||||
|
options=QFileDialog.DontUseNativeDialog
|
||||||
|
)
|
||||||
|
|
||||||
if name[0]:
|
if name[0]:
|
||||||
dirname = "/".join(name[0].split("/")[:-1]) + "/"
|
dirname = os.path.dirname(name[0])
|
||||||
filename = name[0].split("/")[-1]
|
filename = os.path.basename(name[0])
|
||||||
chdir(dirname)
|
os.chdir(dirname)
|
||||||
|
|
||||||
|
results = []
|
||||||
|
|
||||||
for k in range(self.combobox_acoustic_data_choice.count()):
|
for k in range(self.combobox_acoustic_data_choice.count()):
|
||||||
|
|
||||||
if stg.time_cross_section[k].shape != (0,):
|
if stg.time_cross_section[k].shape != (0,):
|
||||||
|
time_data = stg.time_cross_section
|
||||||
if stg.depth_cross_section[k].shape != (0,):
|
|
||||||
|
|
||||||
t = np.repeat(stg.time_cross_section[k][stg.frequency_for_inversion[1]],
|
|
||||||
stg.depth_cross_section[k].shape[1])
|
|
||||||
|
|
||||||
r = np.zeros((stg.depth_cross_section[k].shape[1] *stg.time_cross_section[k].shape[1],1))
|
|
||||||
|
|
||||||
for i in range(stg.time_cross_section[k].shape[1]):
|
|
||||||
for j in range(stg.depth_cross_section[k].shape[1]):
|
|
||||||
r[i * stg.depth_cross_section[k].shape[1] + j] = (
|
|
||||||
stg.depth_cross_section[k][int(stg.frequency_for_inversion[1]), j])
|
|
||||||
|
|
||||||
if stg.SSC_fine[k].shape == (0,):
|
|
||||||
stg.SSC_fine[k] = np.zeros(r.shape[0])
|
|
||||||
if stg.SSC_sand[k].shape == (0,):
|
|
||||||
stg.SSC_sand[k] = np.zeros(r.shape[0])
|
|
||||||
|
|
||||||
else:
|
|
||||||
|
|
||||||
t = np.repeat(stg.time_cross_section[k][stg.frequency_for_inversion[1]], stg.depth[k].shape[1])
|
|
||||||
|
|
||||||
r = np.zeros((stg.depth[k].shape[1] * stg.time_cross_section[k].shape[1], 1))
|
|
||||||
for i in range(stg.time_cross_section[k].shape[1]):
|
|
||||||
for j in range(stg.depth[k].shape[1]):
|
|
||||||
r[i * stg.depth[k].shape[1] + j] = (
|
|
||||||
stg.depth[k][int(stg.frequency_for_inversion[1]), j])
|
|
||||||
|
|
||||||
if stg.SSC_fine[k].shape == (0,):
|
|
||||||
stg.SSC_fine[k] = np.zeros(r.shape[0])
|
|
||||||
if stg.SSC_sand[k].shape == (0,):
|
|
||||||
stg.SSC_sand[k] = np.zeros(r.shape[0])
|
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
time_data = stg.time
|
||||||
|
|
||||||
if stg.depth_cross_section[k].shape != (0,):
|
if stg.depth_cross_section[k].shape != (0,):
|
||||||
|
depth_data = stg.depth_cross_section
|
||||||
t = np.repeat(stg.time[k][stg.frequency_for_inversion[1]], stg.depth_cross_section[k].shape[1])
|
else:
|
||||||
|
depth_data = stg.depth
|
||||||
r = np.zeros((stg.depth_cross_section[k].shape[1] * stg.time[k].shape[1], 1))
|
|
||||||
for i in range(stg.time[k].shape[1]):
|
|
||||||
for j in range(stg.depth_cross_section[k].shape[1]):
|
|
||||||
r[i * stg.depth_cross_section[k].shape[1] + j] = (
|
|
||||||
stg.depth_cross_section[k][int(stg.frequency_for_inversion[1]), j])
|
|
||||||
|
|
||||||
if stg.SSC_fine[k].shape == (0,):
|
|
||||||
stg.SSC_fine[k] = np.zeros(r.shape[0])
|
|
||||||
if stg.SSC_sand[k].shape == (0,):
|
|
||||||
stg.SSC_sand[k] = np.zeros(r.shape[0])
|
|
||||||
|
|
||||||
else:
|
|
||||||
|
|
||||||
t = np.repeat(stg.time[k][stg.frequency_for_inversion[1]], stg.depth[k].shape[1])
|
|
||||||
|
|
||||||
r = np.zeros(stg.depth[k].shape[1] * stg.time[k].shape[1])
|
|
||||||
|
|
||||||
for i in range(stg.time[k].shape[1]):
|
|
||||||
for j in range(stg.depth[k].shape[1]):
|
|
||||||
r[i * stg.depth[k].shape[1] + j] = (
|
|
||||||
stg.depth[k][int(stg.frequency_for_inversion[1]), j])
|
|
||||||
|
|
||||||
if stg.SSC_fine[k].shape == (0,):
|
|
||||||
stg.SSC_fine[k] = np.zeros(r.shape[0])
|
|
||||||
if stg.SSC_sand[k].shape == (0,):
|
|
||||||
stg.SSC_sand[k] = np.zeros(r.shape[0])
|
|
||||||
|
|
||||||
exec("result_" + str(k) + "= pd.DataFrame({'Time (sec)': t," +
|
|
||||||
"'Depth (m)': r," +
|
|
||||||
"'SSC_fine (g/L)': stg.SSC_fine[" + str(k) + "].reshape(t.shape[0])," +
|
|
||||||
"'SSC_sand (g/L)': stg.SSC_sand[" + str(k) + "].reshape(t.shape[0])})")
|
|
||||||
|
|
||||||
|
|
||||||
|
t = np.repeat(
|
||||||
|
time_data[k][stg.frequency_for_inversion[1]],
|
||||||
|
depth_data[k].shape[1]
|
||||||
|
)
|
||||||
|
|
||||||
with pd.ExcelWriter(dirname + filename + '.xlsx') as writer:
|
r = np.zeros((
|
||||||
|
depth_data[k].shape[1] * time_data[k].shape[1], 1
|
||||||
|
))
|
||||||
|
|
||||||
|
for i in range(time_data[k].shape[1]):
|
||||||
|
for j in range(depth_data[k].shape[1]):
|
||||||
|
r_id = i * depth_data[k].shape[1] + j
|
||||||
|
|
||||||
|
r[r_id] = (
|
||||||
|
depth_data[k][
|
||||||
|
int(stg.frequency_for_inversion[1]), j
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
if stg.SSC_fine[k].shape == (0,):
|
||||||
|
stg.SSC_fine[k] = np.zeros(r.shape[0])
|
||||||
|
if stg.SSC_sand[k].shape == (0,):
|
||||||
|
stg.SSC_sand[k] = np.zeros(r.shape[0])
|
||||||
|
|
||||||
|
results.append(
|
||||||
|
pd.DataFrame(
|
||||||
|
{
|
||||||
|
'Time (sec)': t, 'Depth (m)': r,
|
||||||
|
'SSC_fine (g/L)': stg.SSC_fine[k].reshape(t.shape[0]),
|
||||||
|
'SSC_sand (g/L)': stg.SSC_sand[k].reshape(t.shape[0]),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
with pd.ExcelWriter(
|
||||||
|
os.path.join(dirname, filename + '.xlsx')
|
||||||
|
) as writer:
|
||||||
for k in range(self.combobox_acoustic_data_choice.count()):
|
for k in range(self.combobox_acoustic_data_choice.count()):
|
||||||
eval("result_" + str(k) + ".to_excel(writer, index=False, " +
|
results[k].to_excel(
|
||||||
"engine='xlsxwriter', na_rep='NA', " +
|
writer, index=False,
|
||||||
"sheet_name=stg.data_preprocessed[" + str(k) + "])")
|
engine='xlsxwriter', na_rep='NA',
|
||||||
|
sheet_name=stg.data_preprocessed[k],
|
||||||
|
)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue