Quantcast
Channel: Active questions tagged python - Stack Overflow
Viewing all articles
Browse latest Browse all 18819

How to use threads function in my results?

$
0
0

I'm attempting to introduce diversity into my result values, yet I encounter challenges as they consistently yield NA values or remain constant across all sentences. This presents an issue in achieving the desired variability in the outcomes. I am currently exploring potential solutions or adjustments to enhance the variation in the results for a more comprehensive and representative analysis

This is my soil values

def create_soil_profile(index):    rowsolo5 = df_camadas_solo5.loc[index]    row = argila_geodf.loc[index]    rowsolo15 = df_camadas_solo15.loc[index]    rowsolo30 = df_camadas_solo30.loc[index]    rowsolo60 = df_camadas_solo60.loc[index]    rowsolo100 = df_camadas_solo100.loc[index]    soilprofile = SoilProfile(        pars={'SALB': albedo,  # Albedo'SLU1': 6,  # Stage 1 Evaporation (mm)'SLPF': 0.8  # Soil fertility factor        }    )    soilprofile.n_layers = 10    soilprofile.total_depth = 100    soilprofile.site = 'Douradina'    soilprofile.country = 'MS_Brazil'    soilprofile.lat = dfxy['x'].iloc[index]  # Use 'iloc' to access individual values by index    soilprofile.lon = dfxy['y'].iloc[index]  # Use 'iloc' to access individual values by index    for layer_index in range(soilprofile.n_layers):        layers = [            SoilLayer(10, {'SLCL': row['SLCL'], 'SLSI': (0.15 * row['SLCL']),'SLOC': rowsolo5['SLOC'],'SCEC': rowsolo5['SCEC'], 'SBDM': rowsolo5['Bdod'],'SLLL': rowsolo5['PMP'],'SSAT': rowsolo5['AD'],'SDUL': rowsolo5['CC'] ,'SSKS': rowsolo5['ksat'], 'SRGF': 1}),            SoilLayer(20, {'SLCL': row['SLCL'], 'SLSI': (0.15 * row['SLCL']),'SLOC': rowsolo15['SLOC'],'SCEC': rowsolo15['SCEC'], 'SBDM': rowsolo15['Bdod'],'SLLL': rowsolo15['PMP'], 'SSAT': rowsolo15['AD'],'SDUL': rowsolo15['CC'],'SSKS': rowsolo5['ksat'], 'SRGF': 1}),            SoilLayer(30, {'SLCL': row['SLCL'], 'SLSI': (0.15 * row['SLCL']),'SLOC': rowsolo30['SLOC'],'SCEC': rowsolo30['SCEC'], 'SBDM': rowsolo30['Bdod'],'SLLL': rowsolo30['PMP'], 'SSAT': rowsolo30['AD'],'SDUL': rowsolo30['CC'],'SSKS': rowsolo30['ksat'], 'SRGF': 0.42 }),            SoilLayer(40, {'SLCL': row['SLCL'], 'SLSI': (0.15 * row['SLCL']), 'SLOC': rowsolo30['SLOC'],'SCEC': rowsolo30['SCEC'], 'SBDM': rowsolo30['Bdod'], 'SLLL': rowsolo30['PMP'],'SSAT': rowsolo30['AD'], 'SDUL': rowsolo30['CC'], 'SSKS': rowsolo5['ksat'], 'SRGF': 0.34}),            SoilLayer(50, {'SLCL': rowsolo30['Clay'], 'SLSI': rowsolo30['Silt'], 'SLOC': rowsolo30['SLOC'],'SCEC': rowsolo30['SCEC'], 'SBDM': rowsolo30['Bdod'], 'SLLL': rowsolo30['PMP'],'SSAT': rowsolo30['AD'], 'SDUL': rowsolo30['CC'], 'SSKS': rowsolo5['ksat'], 'SRGF': 0.23}),            SoilLayer(60, {'SLCL': rowsolo60['Clay'], 'SLSI': rowsolo60['Silt'],'SLOC': rowsolo60['SLOC'],'SCEC': rowsolo60['SCEC'], 'SBDM': rowsolo60['Bdod'],'SLLL': rowsolo60['PMP'], 'SSAT': rowsolo60['AD'],'SDUL': rowsolo60['CC'],'SSKS': rowsolo5['ksat'], 'SRGF': 0.20}),            SoilLayer(70, {'SLCL': rowsolo60['Clay'], 'SLSI': rowsolo60['Silt'], 'SLOC': rowsolo60['SLOC'],'SCEC': rowsolo60['SCEC'], 'SBDM': rowsolo60['Bdod'], 'SLLL': rowsolo60['PMP'],'SSAT': rowsolo60['AD'], 'SDUL': rowsolo60['CC'], 'SSKS': rowsolo5['ksat'], 'SRGF': 0.18}),            SoilLayer(80, {'SLCL': rowsolo60['Clay'], 'SLSI': rowsolo60['Silt'], 'SLOC': rowsolo60['SLOC'],'SCEC': rowsolo60['SCEC'], 'SBDM': rowsolo60['Bdod'], 'SLLL': rowsolo60['PMP'],'SSAT': rowsolo60['AD'], 'SDUL': rowsolo60['CC'], 'SSKS': rowsolo5['ksat'], 'SRGF': 0.16}),            SoilLayer(90, {'SLCL': rowsolo60['Clay'], 'SLSI': rowsolo60['Silt'], 'SLOC': rowsolo60['SLOC'],'SCEC': rowsolo60['SCEC'], 'SBDM': rowsolo60['Bdod'], 'SLLL': rowsolo60['PMP'],'SSAT': rowsolo60['AD'], 'SDUL': rowsolo60['CC'], 'SSKS': rowsolo5['ksat'], 'SRGF': 0.04}),            SoilLayer(100, {'SLCL': rowsolo100['Clay'], 'SLSI': rowsolo100['Silt'],'SLOC': rowsolo100['SLOC'],'SCEC': rowsolo100['SCEC'], 'SBDM': rowsolo100['Bdod'],'SLLL': rowsolo100['PMP'], 'SSAT': rowsolo100['AD'],'SDUL': rowsolo100['CC'],'SSKS': rowsolo5['ksat'], 'SRGF': 0.04 }),        ]        for layer in layers:            soilprofile.add_layer(layer)    return soilprofilesoil_profiles = []profiles_to_create = 10for idx in dfxy.index:    profile = create_soil_profile(idx)    soil_profiles.append(profile)    if len(soil_profiles) >= profiles_to_create:        breakargila = soil_profiles 

This is my Weather variables

WTH_DATA =  Weather(    data_weather_dssat,{'TMIN': 'TMIN', 'TMAX': 'TMAX', 'RAIN': 'RAIN', 'SRAD': 'SRAD', 'RHUM': 'RHUM', 'WIND':'WIND', 'DEWP':'DEWP', 'PAR':'PAR'},    lat.iloc[0],    long.iloc[0],    elev,)wth = WTH_DATA

And this is my Management variables

man = Management(    planting_date=datetime(2022, 10, 4),    irrigation='R',    harvest='M',    fertilization='D',)man.harvest_details["HDATE"] = 23046man.planting_details["PPOP"] = 30man.planting_details["PPOE"] = 30man.planting_details["PLRS"] = 45man.simulation_controls["CO2"] = 'M'man.simulation_controls["WATER"] = 'Y'man.simulation_controls["WAOUT"] = 'Y'man.field['...........XCRD'] = row['geometry'].xman.field['...........YCRD'] = row['geometry'].yman.field['.............AREA'] = 14420000man.field['.SLAS'] = df_slopeman.field['.....ELEV'] = df_demman.field['WSTA....'] = wthman.field['SLDP'] = rowsolo#     ##     management_list.append(man)## man = management_listprint(man.field)

Im using this code to run all data variables

def run_dssat(thread, crop, man, argila, dssat_envs):    dssat_env = DSSAT()    dssat_env.setup()    dssat_env.run(crop=crop, weather=wth, management=man, soil=argila)    plant_gro_results = dssat_env.output.get('PlantGro', {})    df = pd.DataFrame(plant_gro_results)    df['Profile'] = f'Soil Profile {thread + 1}'    dssat_envs[thread] = dssat_env    return dfthreads = len(argila)output_dataframes = [None] * threadsdssat_envs = [None] * threadswith concurrent.futures.ThreadPoolExecutor(max_workers=threads) as executor:    futures = [executor.submit(run_dssat, thread, crop, deepcopy(man), soilprofile, dssat_envs) for thread, soilprofile in enumerate(argila)]    for future in concurrent.futures.as_completed(futures):        thread = int(future.result()['Profile'].str.extract('(\d+)').iloc[0:].iloc[0])-1        output_dataframes[thread] = future.result()df = pd.concat(output_dataframes, ignore_index=False)gwad_df = df[['GWAD', 'Profile']].copy()gwad_df['GWAD'] = gwad_df['GWAD'].astype(float).round().astype(int)gwad_df['Profile_Index'] = gwad_df.groupby('Profile').cumcount()def gwad():    gwad_pivot = gwad_df.pivot(index='Profile_Index', columns='Profile', values='GWAD')    gwad_pivot.columns = pd.to_numeric(gwad_pivot.columns.str.extract('(\d+)')[0])    gwad_pivot.sort_index(axis=1, inplace=True)    return gwad_pivotgwad_values = gwad()print(gwad_values)

This is my result

RUN    TRT FLO MAT TOPWT HARWT  RAIN  TIRR   CET  PESW  TNUP  TNLF   TSON TSOC           dap dap kg/ha kg/ha    mm    mm    mm    mm kg/ha kg/ha  kg/ha t/ha  1 SB   1  26  88  6304  4418   366     0    21   253     0   -99      0  207RUN    TRT FLO MAT TOPWT HARWT  RAIN  TIRR   CET  PESW  TNUP  TNLF   TSON TSOC           dap dap kg/ha kg/ha    mm    mm    mm    mm kg/ha kg/ha  kg/ha t/ha  1 SB   1  26  88  6304  4418   366     0    21   253     0   -99      0  207RUN    TRT FLO MAT TOPWT HARWT  RAIN  TIRR   CET  PESW  TNUP  TNLF   TSON TSOC           dap dap kg/ha kg/ha    mm    mm    mm    mm kg/ha kg/ha  kg/ha t/ha  1 SB   1  26  88  6304  4418   366     0    21   253     0   -99      0  2070                1     2     3     4     5     6     7     8     9     10Profile_Index                                                            0                 0     0     0     0     0     0     0     0     0     01                 0     0     0     0     0     0     0     0     0     02                 0     0     0     0     0     0     0     0     0     03                 0     0     0     0     0     0     0     0     0     04                 0     0     0     0     0     0     0     0     0     0...             ...   ...   ...   ...   ...   ...   ...   ...   ...   ...96             4418    4418    4418    4418    4418    4418    4418    4418   4418    4418  97             4418  4418  4418  4418  4418  4418  4418  4418  4418  441898             4418  4418  4418  4418  4418  4418  4418  4418  4418  441899             4418  4418  4418  4418  4418  4418  4418  4418  4418  4418100            4418  4418  4418  4418  4418  4418  4418  4418  4418  4418

[101 rows x 10 columns]The values ​​don't vary, and I'm looking for reasons why these values ​​don't vary in my code...


Viewing all articles
Browse latest Browse all 18819

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>