Commit 4a33d5db authored by dasharatha.vamshi's avatar dasharatha.vamshi

init

parent 56d09898
,Date,Shift,"A1A023, A1A024",7303011675,"E5E014,E5E003, E5E016",IV component,7302011030,Recovered 7302011030,Reaction Product ,Package Scrubber Over Flow ,Package Scrubber Make Up ,MEE To RPT,Main 7302011030 Totaliser,Flash Column Feed,Flash Column Bottom,R#4 7302011030 Recovery Feed(FT-801),Flash Column Ejector UIST01,T-101 level (%),E5E014 E5E003 E5E016 Conc Shift Average,Surge Tank Pyr,Surge Tank Beta,Make Up To P/S (Pyr) MEE Tank,Make Up To P/S (Beta) MEE Tank,Package O/F Pyr,Package O/F Beta,Alpha in Rxn (PPM),Gamma to Beta Ratio,7303011675.1,Reactor coke,Regenerator coke,Fresh 7302011030,7302011030 totaliser,Calculated 7303011675,Calculated IV component,"Calculated E5E014,E5E003, E5E016",TOTAL 7302011030,Fresh 7302011030 / Total 7302011030,"Calculated A1A023, A1A024","(A1A023, A1A024)+7303011675+IV component",PRODN. RXN PDT,Calculated Scrubber,Calculated MEE To RPT,Surge Tank (PB) Total,Make Up To P/S (PB) MEE Tank,Norm (Surge Tank Stage),Norm (RPT Stage),Yield,"A1A023, A1A024 to E5E014 E5E003 E5E016 Molar ratio","A1A023, A1A024 to Amm Molar ratio","E5E014 E5E003 E5E016 to A1A023, A1A024 ratio @ 37%"
0,16-Jun-20,A,84010,90872,20947614,0,4170949,13912668,38505,3127685,25884,7220725,19282442,60026708,146480896,60026708,12497817,49,46.7,13.56,13.06,,,,,608,0.43,,,,,,,,,,,,,,,,26.62,,,,,,,
1,16-Jun-20,B,8445,96441,20990822,0,4178243,13935717,18630,3215626,93779,7246067,19290064,60097936,146553200,51907,12506987,66,46.62,14.12,13.26,3.86,1.33,3.72,1.38,504,0.34,5569.0,1.27,1.03,7294.0,7622.0,5569.0,0.0,43208.0,23049.0,31.65%,24435.0,30004.0,80125.0,20046.0,25342.0,27.38,5.19,1.368,1.29,88.35%,1.2090813210558624,2.02,2.228036832412523
2,16-Jun-20,C,32944,2025,21034178,0,4185799,13957892,98988,3304077,61739,7263277,19296874,60181620,146637552,67193,12514134,57,46.62,13.03,16.51,3.92,1.27,3.61,1.21,510,0.18,5584.0,,,7556.0,6810.0,5584.0,0.0,43356.0,22175.0,34.07%,24499.0,30083.0,80358.0,1120491.0,17210.0,29.54,5.19,1.267,1.221,89.26%,1.2100534127923588,1.96,2.2298281562512754
3,17-Jun-20,A,57633,7648,21077852,0,4193419,13980316,80229,3393286,30556,7277307,19302896,60251764,146709136,82163,12522326,52,46.67,13.42,13.17,2.98,1.03,3.9,1.15,469,0.15,5623.0,,,7620.0,6022.0,5623.0,0.0,43674.0,22424.0,33.98%,24689.0,30312.0,81241.0,1120392.0,14030.0,26.59,4.01,1.403,1.368,89.49%,1.2108453902547693,1.96,2.2312875741795506
4,17-Jun-20,B,81596,13112,21120998,0,4200325,14002027,58385,3479779,97142,7298859,19306896,60327168,146785408,96818,12530364,51,46.84,12.59,12.66,3.16,1.12,4.13,1.21,455,0.29,5464.0,2.21,1.26,6906.0,4000.0,5464.0,0.0,43146.0,21711.0,31.81%,23963.0,29427.0,78156.0,19907.0,21552.0,25.25,4.28,1.491,1.425,87.99%,1.2369372248883697,1.95,2.2793683505313935
5,17-Jun-20,C,7008,18903,21165954,0,4207826,14025105,42550,3571557,67942,7324324,19314654,60411128,146870896,12538,12538937,45,46.6,14.41,16.01,3.01,1.1,3.51,1.1,611,0.44,5791.0,,,7501.0,7758.0,5791.0,0.0,44956.0,23078.0,32.5%,25412.0,31203.0,84165.0,1120978.0,25465.0,30.42,4.11,1.219,1.171,90.07%,1.2091109502072512,1.95,2.228091431585844
6,18-Jun-20,A,31019,24377,21208458,0,4215741,14046827,21637,3655150,31688,7339559,19322662,60482024,146944528,25020,12546907,64,46.75,12.34,12.86,2.6,0.93,2.91,1.03,389,0.26,5474.0,,,7915.0,8008.0,5474.0,0.0,42504.0,21722.0,36.44%,24011.0,29485.0,79087.0,1119847.0,15235.0,25.2,3.53,1.479,1.441,89.63%,1.2137593602931989,1.97,2.2366572978375903
7,18-Jun-20,B,54349,29851,21250762,108,4223191,14068487,250,3740988,98107,7362143,19326866,60552000,147015200,39376,12554967,57,46.79,12.74,12.93,2.14,0.76,3.12,0.76,426,0.3,5474.0,1.49,0.99,7450.0,4204.0,5474.0,108.0,42304.0,21660.0,34.4%,23330.0,28912.0,78613.0,19419.0,22584.0,25.67,2.9,1.433,1.388,90.06%,1.2443746683811971,2.01,2.2930737132331647
8,18-Jun-20,C,78320,35325,21294384,487,4231048,14090848,81320,3830045,66638,7380538,19334790,60632876,147098880,53807,12563201,49,46.79,14.63,16.01,3.01,0.82,3.01,1.42,436,0.25,5474.0,1.56,1.21,7857.0,7924.0,5474.0,379.0,43622.0,22361.0,35.14%,23971.0,29824.0,81070.0,1120526.0,18395.0,30.64,3.83,1.201,1.168,90.12%,1.2488316259925187,2.02,2.301286780084494
Date,Shift,"A1A023, A1A024",7303011675,"E5E014,E5E003, E5E016",IV component,7302011030,Recovered 7302011030,Reaction Product ,Package Scrubber Over Flow ,Package Scrubber Make Up ,MEE To RPT,Main 7302011030 Totaliser,Flash Column Feed,Flash Column Bottom,R#4 7302011030 Recovery Feed(FT-801),Flash Column Ejector UIST01,T-101 level (%),E5E014 E5E003 E5E016 Conc Shift Average,Surge Tank Pyr,Surge Tank Beta,Make Up To P/S (Pyr) MEE Tank,Make Up To P/S (Beta) MEE Tank,Package O/F Pyr,Package O/F Beta,Alpha in Rxn (PPM),Gamma to Beta Ratio,7303011675,Reactor coke,Regenerator coke
16-Jun-20,A,84010,90872,20947614,0,4170949,13912668,38505,3127685,25884,7220725,19282442,60026708,146480896,60026708,12497817,49,46.7,13.56,13.06,,,,,608,0.43,,,
16-Jun-20,B,8445,96441,20990822,0,4178243,13935717,18630,3215626,93779,7246067,19290064,60097936,146553200,51907,12506987,66,46.62,14.12,13.26,3.86,1.33,3.72,1.38,504,0.34,5569,1.27,1.03
16-Jun-20,C,32944,2025,21034178,0,4185799,13957892,98988,3304077,61739,7263277,19296874,60181620,146637552,67193,12514134,57,46.62,13.03,16.51,3.92,1.27,3.61,1.21,510,0.18,5584,,
17-Jun-20,A,57633,7648,21077852,0,4193419,13980316,80229,3393286,30556,7277307,19302896,60251764,146709136,82163,12522326,52,46.67,13.42,13.17,2.98,1.03,3.9,1.15,469,0.15,5623,,
17-Jun-20,B,81596,13112,21120998,0,4200325,14002027,58385,3479779,97142,7298859,19306896,60327168,146785408,96818,12530364,51,46.84,12.59,12.66,3.16,1.12,4.13,1.21,455,0.29,5464,2.21,1.26
17-Jun-20,C,7008,18903,21165954,0,4207826,14025105,42550,3571557,67942,7324324,19314654,60411128,146870896,12538,12538937,45,46.6,14.41,16.01,3.01,1.1,3.51,1.1,611,0.44,5791,,
18-Jun-20,A,31019,24377,21208458,0,4215741,14046827,21637,3655150,31688,7339559,19322662,60482024,146944528,25020,12546907,64,46.75,12.34,12.86,2.6,0.93,2.91,1.03,389,0.26,5474,,
18-Jun-20,B,54349,29851,21250762,108,4223191,14068487,250,3740988,98107,7362143,19326866,60552000,147015200,39376,12554967,57,46.79,12.74,12.93,2.14,0.76,3.12,0.76,426,0.3,5474,1.49,0.99
18-Jun-20,C,78320,35325,21294384,487,4231048,14090848,81320,3830045,66638,7380538,19334790,60632876,147098880,53807,12563201,49,46.79,14.63,16.01,3.01,0.82,3.01,1.42,436,0.25,5474,1.56,1.21
\ No newline at end of file
import os
import sys
import traceback
import pandas as pd
import logging
from logging import StreamHandler
logger = logging.getLogger("YieldReport")
logger.setLevel(os.environ.get("logger", "INFO"))
__formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(module)s - %(lineno)d - %(message)s')
__console_handler = StreamHandler(sys.stdout)
__console_handler.setFormatter(__formatter)
logger.addHandler(__console_handler)
enable_traceback = True
class AppConstants(object):
"""
In this Constants class we will be having the new column names and the dependant column names
"""
fresh_7302011030 = {
"new_column": "Fresh 7302011030",
"dependant_column": "7302011030"
}
totaliser_7302011030 = {
"new_column": "7302011030 totaliser",
"dependant_column": "Main 7302011030 Totaliser"
}
calculated_7303011675 = {
"new_column": "Calculated 7303011675",
"dependant_column": "7303011675",
"condition": [0, 100000]
}
calculated_IV_component = {
"new_column": "Calculated IV component",
"dependant_column": "IV component"
}
calculated_E5E014_E5E003_E5E016 = {
"new_column": "Calculated E5E014,E5E003, E5E016",
"dependant_column": "E5E014,E5E003, E5E016"
}
total_7302011030 = {
"new_column": "TOTAL 7302011030",
"dependant_column": "Recovered 7302011030"
}
fresh_div_total_7302011030 = {
"new_column": "Fresh 7302011030 / Total 7302011030",
"numerator": "Fresh 7302011030",
"denominator": "TOTAL 7302011030"
}
A1A023_A1A024 = {
"new_column": "Calculated A1A023, A1A024",
"dependant_column": "A1A023, A1A024",
"condition": [0, 100000]
}
A1A023_A1A024_plus_7303011675_plus_IV_component = {
"new_column": "(A1A023, A1A024)+7303011675+IV component",
"dependant_column": ["Calculated A1A023, A1A024", "Calculated 7303011675", "Calculated IV component"]
}
PRODN_RXNPDT = {
"new_column": "PRODN. RXN PDT",
"dependant_column": "Reaction Product ",
"condition": [0, 100000]
}
Calculated_Scrubber = {
"new_column": "Calculated Scrubber",
"dependant_column_1": "Package Scrubber Over Flow ",
"condition_1": [0, 1000000],
"dependant_column_2": "Package Scrubber Make Up ",
"condition_2": [0, 1000000]
}
Calculated_MEE_to_RPT = {
"new_column": "Calculated MEE To RPT",
"dependant_column": "MEE To RPT",
"condition": [0, 1000000]
}
surge_tank_total = {
"new_column": "Surge Tank (PB) Total",
"dependant_column": ["Surge Tank Pyr", "Surge Tank Beta"]
}
make_up_to_mee_tank = {
"new_column": "Make Up To P/S (PB) MEE Tank",
"dependant_column": ["Make Up To P/S (Pyr) MEE Tank", "Make Up To P/S (Beta) MEE Tank"]
}
norm_surge_tank_stage = {
"new_column": "Norm (Surge Tank Stage)",
"dependant_column": ["(A1A023, A1A024)+7303011675+IV component", "PRODN. RXN PDT", "Surge Tank (PB) Total"]
}
norm_rpt_stage = {
"new_column": "Norm (RPT Stage)",
"dependant_column": ["(A1A023, A1A024)+7303011675+IV component", "PRODN. RXN PDT", "Surge Tank (PB) Total",
"Calculated MEE To RPT", "Make Up To P/S (PB) MEE Tank"]
}
calculate_yield = {
"new_column": "Yield",
"dependant_column": ["PRODN. RXN PDT", "Calculated A1A023, A1A024", "Calculated E5E014,E5E003, E5E016",
"TOTAL 7302011030"]
}
A1A023_A1A024_to_E5E014_E5E003_E5E016_Molar_ratio = {
"new_column": "A1A023, A1A024 to E5E014 E5E003 E5E016 Molar ratio",
"dependant_column": ["Calculated E5E014,E5E003, E5E016","E5E014 E5E003 E5E016 Conc Shift Average","Calculated A1A023, A1A024"],
"constants": [44,30]
}
A1A023_A1A024_to_Amm_Molar_ratio = {
"new_column": "A1A023, A1A024 to Amm Molar ratio",
"dependant_column": ["TOTAL 7302011030","Fresh 7302011030","Calculated A1A023, A1A024"],
"constants": [0.75,44,17]
}
E5E014_E5E003_E5E016_to_A1A023_A1A024_ratio_37 = {
"new_column": "E5E014 E5E003 E5E016 to A1A023, A1A024 ratio @ 37%",
"dependant_column": ["Calculated E5E014,E5E003, E5E016","Calculated A1A023, A1A024","E5E014 E5E003 E5E016 Conc Shift Average"],
"constants": [37]
}
class CalculatedColumns:
def fresh_7302011030(self, df):
my_dict = AppConstants.fresh_7302011030
try:
logger.info(f"Calculating the column {my_dict['new_column']}")
df[my_dict['new_column']] = df[my_dict['dependant_column']].diff()
return df
except Exception as e:
logger.error(f"Failed to calculate {my_dict['new_column']} because of error {e}", exc_info=enable_traceback)
def totaliser_7302011030(self, df):
my_dict = AppConstants.totaliser_7302011030
try:
logger.info(f"Calculating the column {my_dict['new_column']}")
df[my_dict['new_column']] = df[my_dict['dependant_column']].diff()
return df
except Exception as e:
logger.error(f"Failed to calculate {my_dict['new_column']} because of error {e}", exc_info=enable_traceback)
def calculated_7303011675(self, df):
# check negative
my_dict = AppConstants.calculated_7303011675
try:
logger.info(f"Calculating the column {my_dict['new_column']}")
df[my_dict['new_column']] = df[my_dict['dependant_column']].diff()
my_list = list(df[my_dict['new_column']])
new_list = []
for i in my_list:
if i > 0:
new_list.append(i + my_dict['condition'][0])
elif i < 0:
new_list.append(i + my_dict['condition'][1])
else:
new_list.append(i)
df[my_dict['new_column']] = pd.Series(new_list)
return df
except Exception as e:
logger.error(f"Failed to calculate {my_dict['new_column']} because of error {e}", exc_info=enable_traceback)
def calculated_IV_component(self, df):
my_dict = AppConstants.calculated_IV_component
try:
logger.info(f"Calculating the column {my_dict['new_column']}")
df[my_dict['new_column']] = df[my_dict['dependant_column']].diff()
return df
except Exception as e:
logger.error(f"Failed to calculate {my_dict['new_column']} because of error {e}", exc_info=enable_traceback)
def calculated_E5E014_E5E003_E5E016(self, df):
my_dict = AppConstants.calculated_E5E014_E5E003_E5E016
try:
logger.info(f"Calculating the column {my_dict['new_column']}")
df[my_dict['new_column']] = df[my_dict['dependant_column']].diff()
return df
except Exception as e:
logger.error(f"Failed to calculate {my_dict['new_column']} because of error {e}", exc_info=enable_traceback)
def total_7302011030(self, df):
my_dict = AppConstants.total_7302011030
try:
logger.info(f"Calculating the column {my_dict['new_column']}")
df[my_dict['new_column']] = df[my_dict['dependant_column']].diff()
return df
except Exception as e:
logger.error(f"Failed to calculate {my_dict['new_column']} because of error {e}", exc_info=enable_traceback)
def fresh_div_total_7302011030(self, df):
my_dict = AppConstants.fresh_div_total_7302011030
try:
logger.info(f"Calculating the column {my_dict['new_column']}")
df[my_dict['new_column']] = (((df[my_dict['numerator']] / df[my_dict['denominator']]) * 100))
my_list = list(df[my_dict['new_column']])
new_list = []
for i in my_list:
if i > 0:
new_list.append(str(round(i, 2)) + "%")
else:
new_list.append(i)
df[my_dict['new_column']] = pd.Series(new_list)
return df
except Exception as e:
logger.error(f"Failed to calculate {my_dict['new_column']} because of error {e}", exc_info=enable_traceback)
def A1A023_A1A024(self, df):
my_dict = AppConstants.A1A023_A1A024
try:
logger.info(f"Calculating the column {my_dict['new_column']}")
df[my_dict['new_column']] = df[my_dict['dependant_column']].diff()
my_list = list(df[my_dict['new_column']])
new_list = []
for i in my_list:
if i > 0:
new_list.append(i + my_dict['condition'][0])
elif i < 0:
new_list.append(i + my_dict['condition'][1])
else:
new_list.append(i)
df[my_dict['new_column']] = pd.Series(new_list)
return df
except Exception as e:
logger.error(f"Failed to calculate {my_dict['new_column']} because of error {e}", exc_info=enable_traceback)
def A1A023_A1A024_plus_7303011675_plus_IV_component(self, df):
my_dict = AppConstants.A1A023_A1A024_plus_7303011675_plus_IV_component
try:
logger.info(f"Calculating the column {my_dict['new_column']}")
df[my_dict['new_column']] = df[my_dict['dependant_column'][0]] + df[my_dict['dependant_column'][1]] + df[
my_dict['dependant_column'][2]]
return df
except Exception as e:
logger.error(f"Failed to calculate {my_dict['new_column']} because of error {e}", exc_info=enable_traceback)
def PRODN_RXNPDT(self, df):
my_dict = AppConstants.PRODN_RXNPDT
try:
logger.info(f"Calculating the column {my_dict['new_column']}")
df[my_dict['new_column']] = df[my_dict['dependant_column']].diff()
my_list = list(df[my_dict['new_column']])
new_list = []
for i in my_list:
if i > 0:
new_list.append(i + my_dict['condition'][0])
elif i < 0:
new_list.append(i + my_dict['condition'][1])
else:
new_list.append(i)
df[my_dict['new_column']] = pd.Series(new_list)
return df
except Exception as e:
logger.error(f"Failed to calculate {my_dict['new_column']} because of error {e}", exc_info=enable_traceback)
def Calculated_Scrubber(self, df):
my_dict = AppConstants.Calculated_Scrubber
try:
logger.info(f"Calculating the column {my_dict['new_column']}")
df["temp1"] = df[my_dict['dependant_column_1']].diff()
df["temp2"] = df[my_dict['dependant_column_2']].diff()
df[my_dict['new_column']] = df["temp1"] - df["temp2"]
final_list = list(df[my_dict['new_column']])
my_list = list(df["temp1"])
print(my_list)
new_list = []
for i in range(0, len(my_list)):
if my_list[i] > 0:
new_list.append(final_list[i] + my_dict['condition_1'][0])
elif my_list[i] < 0:
new_list.append(final_list[i] + my_dict['condition_1'][1])
else:
new_list.append(final_list[i])
df["temp1"] = pd.Series(new_list)
print(new_list)
my_list_1 = list(df["temp2"])
new_list_1 = []
print(my_list_1)
for i in range(0, len(my_list_1)):
if my_list_1[i] > 0:
new_list_1.append(new_list[i] + my_dict['condition_2'][0])
elif my_list_1[i] < 0:
new_list_1.append(new_list[i] + my_dict['condition_2'][1])
else:
new_list_1.append(new_list[i])
df["temp2"] = pd.Series(new_list_1)
df[my_dict['new_column']] = pd.Series(new_list_1)
df = df.drop(["temp1", "temp2"], axis=1)
return df
except Exception as e:
logger.error(f"Failed to calculate {my_dict['new_column']} because of error {e}", exc_info=enable_traceback)
def Calculated_MEE_to_RPT(self, df):
my_dict = AppConstants.Calculated_MEE_to_RPT
try:
logger.info(f"Calculating the column {my_dict['new_column']}")
df[my_dict['new_column']] = df[my_dict['dependant_column']].diff()
my_list = list(df[my_dict['new_column']])
new_list = []
for i in my_list:
if i > 0:
new_list.append(i + my_dict['condition'][0])
elif i < 0:
new_list.append(i + my_dict['condition'][1])
else:
new_list.append(i)
df[my_dict['new_column']] = pd.Series(new_list)
return df
except Exception as e:
logger.error(f"Failed to calculate {my_dict['new_column']} because of error {e}", exc_info=enable_traceback)
def surge_tank_total(self, df):
my_dict = AppConstants.surge_tank_total
try:
logger.info(f"Calculating the column {my_dict['new_column']}")
df[my_dict['new_column']] = df[my_dict['dependant_column'][0]] + df[my_dict['dependant_column'][1]]
return df
except Exception as e:
logger.error(f"Failed to calculate {my_dict['new_column']} because of error {e}", exc_info=enable_traceback)
def make_up_to_mee_tank(self, df):
my_dict = AppConstants.make_up_to_mee_tank
try:
logger.info(f"Calculating the column {my_dict['new_column']}")
df[my_dict['new_column']] = round(df[my_dict['dependant_column'][0]] + df[my_dict['dependant_column'][1]],
2)
return df
except Exception as e:
logger.error(f"Failed to calculate {my_dict['new_column']} because of error {e}", exc_info=enable_traceback)
def norm_surge_tank_stage(self, df):
my_dict = AppConstants.norm_surge_tank_stage
try:
logger.info(f"Calculating the column {my_dict['new_column']}")
df[my_dict['new_column']] = round((df[my_dict['dependant_column'][0]]) / (
(df[my_dict['dependant_column'][1]] * df[my_dict['dependant_column'][2]]) / 100), 3)
return df
except Exception as e:
logger.error(f"Failed to calculate {my_dict['new_column']} because of error {e}", exc_info=enable_traceback)
def norm_rpt_stage(self, df):
my_dict = AppConstants.norm_rpt_stage
try:
logger.info(f"Calculating the column {my_dict['new_column']}")
df[my_dict['new_column']] = round((df[my_dict['dependant_column'][0]]) /
((df[my_dict['dependant_column'][1]] * df[
my_dict['dependant_column'][2]]) / 100 + (
df[my_dict['dependant_column'][3]] * df[
my_dict['dependant_column'][4]]) / 100), 3)
return df
except Exception as e:
logger.error(f"Failed to calculate {my_dict['new_column']} because of error {e}", exc_info=enable_traceback)
def calculate_yield(self, df):
my_dict = AppConstants.calculate_yield
try:
logger.info(f"Calculating the column {my_dict['new_column']}")
df[my_dict['new_column']] = round((df[my_dict['dependant_column'][0]]/(df[my_dict['dependant_column'][1]] + df[my_dict['dependant_column'][2]] + df[my_dict['dependant_column'][3]]))*100,2)
my_list = list(df[my_dict['new_column']])
new_list = []
for i in my_list:
if i > 0:
new_list.append(str(i) + "%")
else:
new_list.append(i)
df[my_dict['new_column']] = pd.Series(new_list)
return df
except Exception as e:
logger.error(f"Failed to calculate {my_dict['new_column']} because of error {e}", exc_info=enable_traceback)
def A1A023_A1A024_to_E5E014_E5E003_E5E016_Molar_ratio(self, df):
my_dict = AppConstants.A1A023_A1A024_to_E5E014_E5E003_E5E016_Molar_ratio
try:
logger.info(f"Calculating the column {my_dict['new_column']}")
df[my_dict['new_column']] = (df[my_dict['dependant_column'][0]] * df[my_dict['dependant_column'][1]] * my_dict['constants'][0]) / (df[my_dict['dependant_column'][2]] * my_dict['constants'][1])/100
return df
except Exception as e:
logger.error(f"Failed to calculate {my_dict['new_column']} because of error {e}", exc_info=enable_traceback)
def A1A023_A1A024_to_Amm_Molar_ratio(self, df):
my_dict = AppConstants.A1A023_A1A024_to_Amm_Molar_ratio
try:
logger.info(f"Calculating the column {my_dict['new_column']}")
nr = ((df[my_dict['dependant_column'][0]] - df[my_dict['dependant_column'][1]]) * my_dict['constants'][0]) + df[my_dict['dependant_column'][1]]
df[my_dict['new_column']] = round((nr * my_dict['constants'][1]) / (df[my_dict['dependant_column'][2]] * my_dict['constants'][2]),2)
return df
except Exception as e:
logger.error(f"Failed to calculate {my_dict['new_column']} because of error {e}", exc_info=enable_traceback)
def E5E014_E5E003_E5E016_to_A1A023_A1A024_ratio_37(self, df):
my_dict = AppConstants.E5E014_E5E003_E5E016_to_A1A023_A1A024_ratio_37
try:
logger.info(f"Calculating the column {my_dict['new_column']}")
nr = ((df[my_dict['dependant_column'][0]])/df[my_dict['dependant_column'][1]]) * df[my_dict['dependant_column'][2]]
df[my_dict['new_column']] = nr / my_dict['constants'][0]
return df
except Exception as e:
logger.error(f"Failed to calculate {my_dict['new_column']} because of error {e}", exc_info=enable_traceback)
\ No newline at end of file
import os
import dask
import dask.dataframe as dd
import os
import sys
import traceback
import pandas as pd
import logging
from logging import StreamHandler
from yield_calculated_columns import CalculatedColumns
logger = logging.getLogger("YieldReport")
logger.setLevel(os.environ.get("logger", "INFO"))
__formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(module)s - %(lineno)d - %(message)s')
__console_handler = StreamHandler(sys.stdout)
__console_handler.setFormatter(__formatter)
logger.addHandler(__console_handler)
enable_traceback = False
class yield_report:
def __init__(self, path):
self.df = self.read_csv(path)
def read_csv(self, path):
"""
This function is used to read dataframe using dask
:param path: Path of CSV file
:return: Data Frame
"""
df = pd.read_csv(path)
return df
def add_calculate_columns(self):
cal_obj = CalculatedColumns()
try:
self.df = cal_obj.fresh_7302011030(self.df)
self.df = cal_obj.totaliser_7302011030(self.df)
self.df = cal_obj.calculated_7303011675(self.df)
self.df = cal_obj.calculated_IV_component(self.df)
self.df = cal_obj.calculated_E5E014_E5E003_E5E016(self.df)
self.df = cal_obj.total_7302011030(self.df)
self.df = cal_obj.fresh_div_total_7302011030(self.df)
self.df = cal_obj.A1A023_A1A024(self.df)
self.df = cal_obj.A1A023_A1A024_plus_7303011675_plus_IV_component(self.df)
self.df = cal_obj.PRODN_RXNPDT(self.df)
self.df = cal_obj.Calculated_Scrubber(self.df)
self.df = cal_obj.Calculated_MEE_to_RPT(self.df)
self.df = cal_obj.surge_tank_total(self.df)
self.df = cal_obj.make_up_to_mee_tank(self.df)
self.df = cal_obj.norm_surge_tank_stage(self.df)
self.df = cal_obj.norm_rpt_stage(self.df)
self.df = cal_obj.calculate_yield(self.df)
self.df = cal_obj.A1A023_A1A024_to_E5E014_E5E003_E5E016_Molar_ratio(self.df)
self.df = cal_obj.A1A023_A1A024_to_Amm_Molar_ratio(self.df)
self.df = cal_obj.E5E014_E5E003_E5E016_to_A1A023_A1A024_ratio_37(self.df)
return self.df
except Exception as e:
logger.error(f"failed to calculate because of error {e}", exc_info=enable_traceback)
if __name__ == '__main__':
my_obj = yield_report("test.csv")
df = my_obj.add_calculate_columns()
# df = df.compute()
df.to_csv("output.csv")
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment