G4-DESCSS/utils/cal.py
2022-10-16 17:16:25 +08:00

188 lines
4.9 KiB
Python

import numpy as np
import pandas as pd
df = pd.read_csv('result/res-P.csv')
mass = pd.to_numeric(df.iloc[0, 1:38])
zoom = pd.to_numeric(df.iloc[2:, 39])
omegaT = pd.to_numeric(df.iloc[1, 1:38])
omegaR = pd.to_numeric(df.iloc[2:, 38])
eDep = {}
for k in range(2, 32):
name = df.iloc[k, 0]
data = pd.to_numeric(df.iloc[k, 1:])
eDep[name] = 0
for i in range(37):
eDep[name] += zoom[k] * data[i]
aDose = {}
for k in range(2, 32):
name = df.iloc[k, 0]
data = pd.to_numeric(df.iloc[k, 1:])
aDose[name] = 0
for i in range(37):
aDose[name] += 30 * 86400 * zoom[k] * data[i] * 1.6 * 1e-10 / mass[i]
eqDose = {}
for k in range(2, 32):
name = df.iloc[k, 0]
data = pd.to_numeric(df.iloc[k, 1:])
eqDose[name] = 0
for i in range(37):
eqDose[name] += 30 * 86400 * omegaR[k] * zoom[k] * data[i] * 1.6 * 1e-10 / mass[i]
efDose = {}
for k in range(2, 32):
name = df.iloc[k, 0]
data = pd.to_numeric(df.iloc[k, 1:])
efDose[name] = 0
for i in range(37):
efDose[name] += 30 * 86400 * omegaR[k] * zoom[k] * omegaT[i] * data[i] * 1.6 * 1e-10 / mass[i]
res = pd.DataFrame({
'energy deposition': pd.Series(eDep),
'absorbed dose': pd.Series(aDose),
'equivalent dose': pd.Series(eqDose),
'effective dose': pd.Series(efDose)
})
res.index.name = 'Particle'
res.loc['Sum'] = res.apply(lambda x: x.sum())
res.to_csv('result/anl-P.csv')
# -----------------------------------------------
df = pd.read_csv('result/res-O.csv')
mass = pd.to_numeric(df.iloc[2:, 31])
zoom = pd.to_numeric(df.iloc[0, 1:31])
omegaT = pd.to_numeric(df.iloc[2:, 32])
omegaR = pd.to_numeric(df.iloc[1, 1:31])
eDep = {}
for k in range(2, 39):
name = df.iloc[k, 0]
data = pd.to_numeric(df.iloc[k, 1:])
eDep[name] = 0
for i in range(30):
eDep[name] += zoom[i] * data[i]
aDose = {}
for k in range(2, 39):
name = df.iloc[k, 0]
data = pd.to_numeric(df.iloc[k, 1:])
aDose[name] = 0
for i in range(30):
aDose[name] += 30 * 86400 * zoom[i] * data[i] * 1.6 * 1e-10 / mass[k]
eqDose = {}
for k in range(2, 39):
name = df.iloc[k, 0]
data = pd.to_numeric(df.iloc[k, 1:])
eqDose[name] = 0
for i in range(30):
eqDose[name] += 30 * 86400 * omegaR[i] * zoom[i] * data[i] * 1.6 * 1e-10 / mass[k]
efDose = {}
for k in range(2, 39):
name = df.iloc[k, 0]
data = pd.to_numeric(df.iloc[k, 1:])
efDose[name] = 0
for i in range(30):
efDose[name] += 30 * 86400 * omegaR[i] * zoom[i] * omegaT[k] * data[i] * 1.6 * 1e-10 / mass[k]
res = pd.DataFrame({
'energy deposition': pd.Series(eDep),
'absorbed dose': pd.Series(aDose),
'equivalent dose': pd.Series(eqDose),
'effective dose': pd.Series(efDose)
})
res.index.name = 'Organ'
res.loc['Sum'] = res.apply(lambda x: x.sum())
res.to_csv('result/anl-O.csv')
# -----------------------------------------------
df = pd.read_csv('result/res-O.csv')
organ = df.iloc[2:, 0].to_numpy()
index = df.columns.to_numpy()[1:-2]
mass = pd.to_numeric(df.iloc[2:, 31])
zoom = pd.to_numeric(df.iloc[0, 1:31])
omegaT = pd.to_numeric(df.iloc[2:, 32])
omegaR = pd.to_numeric(df.iloc[1, 1:31])
eDep = {}
for name in index:
eDep[name] = np.zeros(shape=(37, ))
for k in range(2, 39):
data = pd.to_numeric(df.iloc[k, 1:])
for i in range(30):
eDep[index[i]][k - 2] = zoom[i] * data[i]
res = pd.DataFrame(eDep, index=organ)
res['Sum'] = res.apply(lambda x: x.sum(), axis=1)
res.loc['Sum'] = res.apply(lambda x: x.sum())
res.to_csv('result/anl-eDep.csv')
aDose = {}
for name in index:
aDose[name] = np.zeros(shape=(37, ))
for k in range(2, 39):
data = pd.to_numeric(df.iloc[k, 1:])
for i in range(30):
aDose[index[i]][k - 2] = 30 * 86400 * zoom[i] * data[i] * 1.6 * 1e-10 / mass[k]
res = pd.DataFrame(aDose, index=organ)
res['Sum'] = res.apply(lambda x: x.sum(), axis=1)
res.loc['Sum'] = res.apply(lambda x: x.sum())
res.to_csv('result/anl-aDose.csv')
eqDose = {}
for name in index:
eqDose[name] = np.zeros(shape=(37, ))
for k in range(2, 39):
data = pd.to_numeric(df.iloc[k, 1:])
for i in range(30):
eqDose[index[i]][k - 2] = 30 * 86400 * omegaR[i] * zoom[i] * data[i] * 1.6 * 1e-10 / mass[k]
res = pd.DataFrame(eqDose, index=organ)
res['Sum'] = res.apply(lambda x: x.sum(), axis=1)
res.loc['Sum'] = res.apply(lambda x: x.sum())
res.to_csv('result/anl-eqDose.csv')
efDose = {}
for name in index:
efDose[name] = np.zeros(shape=(37, ))
for k in range(2, 39):
data = pd.to_numeric(df.iloc[k, 1:])
for i in range(30):
efDose[index[i]][k - 2] = 30 * 86400 * omegaR[i] * zoom[i] * omegaT[k] * data[i] * 1.6 * 1e-10 / mass[k]
res = pd.DataFrame(efDose, index=organ)
res['Sum'] = res.apply(lambda x: x.sum(), axis=1)
res.loc['Sum'] = res.apply(lambda x: x.sum())
res.to_csv('result/anl-efDose.csv')