def main(): """ Main entry point of the app """ logger.info("CMPC Wide Area Distribution Main Loop") files_yaml = yaml_tools.read_yaml('../configs', 'files.yaml') old_path = os_tools.Change_Working_Path('../Data') # Station_filename = 'Station Location a375a0647.xlsx' Station_filename = files_yaml['Station_Spreadsheet']['filename'] Transformer_filename = files_yaml['Transformer_Spreadsheet']['filename'] Breaker_filename = files_yaml['Breaker_Spreadsheet']['filename'] Relay_filename = files_yaml['Relay_Spreadsheet']['filename'] Circuit_Switcher_filename = files_yaml['Circuit_Switcher_Spreadsheet'][ 'filename'] Metalclad_Switchgear_filename = files_yaml[ 'Metalclad_Switchgear_Spreadsheet']['filename'] Transformer_Risk_filename = files_yaml['Transformer_Risk_Spreadsheet'][ 'filename'] Summer_Load_Filename = files_yaml['Summer_Load_Spreadsheet']['filename'] Winter_Load_Filename = files_yaml['Winter_Load_Spreadsheet']['filename'] Fault_Reporting_Proiritization_filename = files_yaml[ 'East_Doc_Fault_Report_Spreadsheet']['filename'] Fault_Reporting_Proiritization_filename1 = files_yaml[ 'West_Doc_Fault_Report_Spreadsheet']['filename'] Associated_Breaker_Details_filename = files_yaml[ 'Associated_Breaker_Spreadsheet']['filename'] High_Side_Protection = files_yaml['High_Side_Protection_Spreadsheet'][ 'filename'] Excel_Files = [ Station_filename, Transformer_filename, Breaker_filename, Relay_filename, Metalclad_Switchgear_filename, Summer_Load_Filename, Winter_Load_Filename, Circuit_Switcher_filename ] # poolo = Pool(processes=15) High_Side_Protection_DF = Excel_to_Pandas( Associated_Breaker_Details_filename, check_update=False, SheetName='High Side Protection') High_Side_Protection_DF = High_Side_Protection_DF[1] Associated_Breaker_DetailsDF = Excel_to_Pandas( Associated_Breaker_Details_filename, check_update=False, SheetName='Associated Breaker Details') Associated_Breaker_DetailsDF = Associated_Breaker_DetailsDF[1] # Import Excel files # df_listo = pool.map(Excel_to_Pandas, Excel_Files) pool = Pool(processes=cpu_count()) df_list = pool.map( smart_excel_to_pandas.smart_excel_to_pandas.Smart_Excel_to_Pandas, Excel_Files) pool.close() pool.join() Excel_Files = [ Fault_Reporting_Proiritization_filename, Fault_Reporting_Proiritization_filename1 ] pool = Pool(processes=cpu_count()) # df_list.append(pool.starmap(smart_excel_to_pandas.smart_excel_to_pandas.Smart_Excel_to_Pandas, # [(Excel_Files[0],None), (Excel_Files[1],None)])) df_list1 = pool.map(Excel_to_Pandas, Excel_Files) df_list = df_list + df_list1 pool.close() pool.join() # df_list[next(i for i, t in enumerate(df_list) if t[0] == Fault_Reporting_Proiritization_filename)][1] = pd.concat([ df = pd.concat([ df_list[next(i for i, t in enumerate(df_list) if t[0] == Fault_Reporting_Proiritization_filename)][1], df_list[next(i for i, t in enumerate(df_list) if t[0] == Fault_Reporting_Proiritization_filename1)][1] ], axis=0, ignore_index=True) tup = (Fault_Reporting_Proiritization_filename, df) df_list = df_list + [tup] del df_list[10] Transformer_RiskDF = Cleanup_Dataframe( pd.read_csv(Transformer_Risk_filename)) # Data Cleanup AIStationDF = Station.station_df_cleanup( df_list[next(i for i, t in enumerate(df_list) if t[0] == Station_filename)][1], df_list[next(i for i, t in enumerate(df_list) if t[0] == Metalclad_Switchgear_filename)][1]) PowerTransformerDF = PowerTransformer.transformer_df_cleanup(df_list[next( i for i, t in enumerate(df_list) if t[0] == Transformer_filename)][1]) Outdoor_BreakerDF = breaker_df_cleanup(df_list[next( i for i, t in enumerate(df_list) if t[0] == Breaker_filename)][1]) RelayDataDF = relay_df_cleanup(df_list[next(i for i, t in enumerate(df_list) if t[0] == Relay_filename)][1]) Summer_LoadDF = summer_load_df_cleanup(df_list[next( i for i, t in enumerate(df_list) if t[0] == Summer_Load_Filename)][1]) Winter_LoadDF = summer_load_df_cleanup(df_list[next( i for i, t in enumerate(df_list) if t[0] == Winter_Load_Filename)][1]) Fault_Reporting_ProiritizationDF = FRP.Fault_Reporting_Proiritization_df_cleanup( df_list[next(i for i, t in enumerate(df_list) if t[0] == Fault_Reporting_Proiritization_filename)][1]) Circuit_Switcher_df = CS_df_cleanup(df_list[next( i for i, t in enumerate(df_list) if t[0] == Circuit_Switcher_filename)][1]) os_tools.Change_Working_Path(old_path) # Create new date in the dataframes Fault_Reporting_ProiritizationDF = FRP.Fault_Reporting_Proiritization_df_create_data( Fault_Reporting_ProiritizationDF) Summer_LoadDF = summer_load_df_create_data(Summer_LoadDF, AIStationDF) Winter_LoadDF = summer_load_df_create_data(Winter_LoadDF, AIStationDF) AIStationDF = Station.station_df_create_data(AIStationDF, PowerTransformerDF, Outdoor_BreakerDF) PowerTransformerDF = PowerTransformer.transformer_df_create_data( PowerTransformerDF, Transformer_RiskDF, Summer_LoadDF, Winter_LoadDF, AIStationDF) Outdoor_BreakerDF = breaker_df_create_data( Outdoor_BreakerDF, PowerTransformerDF, Fault_Reporting_ProiritizationDF) Outdoor_BreakerDF = Add_Associated_XMR_Details( Outdoor_BreakerDF, Associated_Breaker_DetailsDF) Outdoor_BreakerDF = Match_Missing_Breakers_to_XFMR(Outdoor_BreakerDF, PowerTransformerDF) RelayDataDF = relay_df_create_data(RelayDataDF, PowerTransformerDF, Outdoor_BreakerDF) AIStationDF = Station.add_Risk_to_Stationdf(AIStationDF, PowerTransformerDF) AIStationDF = Station.add_Criticality_to_Stationdf(AIStationDF, PowerTransformerDF) AIStationDF = Station.add_MVA_Exceeded_Stationdf(AIStationDF, PowerTransformerDF) # Outdoor_BreakerDF = Outdoor_Breaker.add_Relay_Outdoor_BreakerDF(RelayDataDF, Outdoor_BreakerDF) Outdoor_BreakerDF = Outdoor_Breaker.add_Relay2_Outdoor_BreakerDF( RelayDataDF, Outdoor_BreakerDF) PowerTransformerDF = PowerTransformer.Add_fused_Bank_to_PowerTransformerDF( PowerTransformerDF, RelayDataDF) AIStationDF = Station.Add_Fused_Bank_to_Stationdf(AIStationDF, PowerTransformerDF) PowerTransformerDF = PowerTransformer.Add_Feeder_Protection_on_Bank( PowerTransformerDF, Outdoor_BreakerDF) PowerTransformerDF = PowerTransformer.Add_FD_DEV_STATUS_on_Bank( PowerTransformerDF, Outdoor_BreakerDF) AIStationDF = Station.Add_Feeder_Protection_on_Station( PowerTransformerDF, AIStationDF) AIStationDF = Station.Add_Bus_Tie_at_Station(AIStationDF, Outdoor_BreakerDF) # PowerTransformerDF = PowerTransformer.add_Xfmer_Diff_Protection_PowerTransformerDF(RelayDataDF, PowerTransformerDF) PowerTransformerDF = PowerTransformer.add_Xfmer2_Diff_Protection_PowerTransformerDF( RelayDataDF, PowerTransformerDF) PowerTransformerDF = PowerTransformer.Add_High_Side_Interrupter_PowerTransformerDF( PowerTransformerDF, High_Side_Protection_DF) AIStationDF = Station.Add_Xfmer_Diff_Protection_on_Station( PowerTransformerDF, AIStationDF) AIStationDF = Station.Add_CS_count_on_Station(Circuit_Switcher_df, AIStationDF) AIStationDF = Station.Add_FID_count_equal_XFMER_count(AIStationDF) AIStationDF = Station.Suggested_Approach_Station(AIStationDF) PowerTransformerDF = PowerTransformer.Suggested_Approach_Bank( PowerTransformerDF) # AIStationDF = pandas_tools.add_colunms_to_df(AIStationDF.copy(),) AIStationDF = Station.Suggested_Approach_Station2( AIStationDF, PowerTransformerDF.copy()) AIStationDF = Station.Add_Needed_MVA_Station(AIStationDF.copy(), PowerTransformerDF.copy()) AIStationDF = Station.Add_Suggested_Solution_Station(AIStationDF.copy()) # PowerTransformerDF.query('Suggested_Approach_Bank.str.contains("Component")', engine=python) dr.main( PowerTransformerDF.query( 'Suggested_Approach_Bank.str.contains("Component") or Suggested_Approach_Bank.str.contains("Rebuild")' )) #dr.main(PowerTransformerDF.query('Suggested_Approach_Bank.str.contains("Rebuild")')) # Analytics df = PowerTransformerDF.groupby( [ 'Feeder_Protection', 'Xfmer_Diff_Protection', 'High_Side_Interrupter', 'Suggested_Approach_Bank' ], dropna=False).size().reset_index().rename(columns={0: 'count'}) df.to_excel('Bank Analytics.xlsx') df = AIStationDF.groupby([ 'Single_Phase_Station', 'FIDequalXFMER', 'Xfmer_Diff_Protection', 'Bus_Equal_XFMER', 'Feeder_Protection', 'Suggested_Approach_Station' ], dropna=False).size().reset_index().rename( columns={0: 'count'}) df.to_excel('Analytics.xlsx') # Select columns to keep # AIStationDF = AIStationDF[ # ['Region', 'Work_Center', 'Maximo_Code', 'Station_Name', 'STATION_STR_TYPE', 'Age', 'Single_Phase_Station', # 'Has_Fused_Bank', 'XFMER_Count', 'BUS_TIE_Count', 'Max_Risk_Index_at_Station', 'Max_MVA_Exceeded', 'Mean_Feeder_Age', 'Feeder_Protection' # ]] AIStationDF = AIStationDF[[ 'Region', 'Work_Center', 'Maximo_Code', 'Station_Name', 'Single_Phase_Station', 'Has_Fused_Bank', 'XFMER_Count', 'Transformer_Sum_Criticality_at_Station', 'Suggested_Approach_Station2', 'Suggested_Solution' ]] PowerTransformerDF = PowerTransformerDF[[ 'Region', 'Work_Center', 'Station_Name', 'Maximo_Code', 'Age', 'MAXIMUM_MVA', 'HV_NOM_KV', 'LV_NOM_KV', 'Risk_Index_(Normalized)', 'Max_Projected_Summer_Load', 'Max_Projected_Winter_Load', 'NUM_PH', 'Feeder_Protection', 'Xfmer_Diff_Protection', 'High_Side_Interrupter', 'Suggested_Approach_Bank' ]] Outdoor_BreakerDF = Outdoor_BreakerDF[[ 'Region', 'Work_Center', 'Station_Name', 'Maximo_Code', 'Age', 'BKR_SERVICE', 'SELF_CONTAINED', 'Manufacturer', 'BKR_MECH_MOD', 'BKR_INTERR', 'Associated_XFMR', 'DOC_Fault_Reporting_Prioritization', 'Feeder_Protection', 'FD_DEV_STATUS' ]] # Create a Pandas Excel writer using XlsxWriter as the engine. writer = pd.ExcelWriter('../CMPC_WideArea_AIS.xlsx', engine='xlsxwriter') # Convert the dataframe to an XlsxWriter Excel object. AIStationDF.to_excel(writer, sheet_name='Stations', index=False) PowerTransformerDF.to_excel(writer, sheet_name='Transformers', index=False) Outdoor_BreakerDF.to_excel(writer, sheet_name='Outdoor Breakers', index=False) RelayDataDF.to_excel(writer, sheet_name='Relay', index=False) Summer_LoadDF.to_excel(writer, sheet_name='Summer Load', index=False) Winter_LoadDF.to_excel(writer, sheet_name='Winter Load', index=False) # Circuit_Switcher_df.to_excel(writer, sheet_name='Circuit Switcher', index=False) # Close the Pandas Excel writer and output the Excel file. writer.save()