





import json
import os

import torch

from diffusers import UNetaDModel


os.makedirs('hub/hopper-medium-v2/unet/hor32', exist_ok=True)
os.makedirs('hub/hopper-medium-v2/unet/hor128', exist_ok=True)

os.makedirs('hub/hopper-medium-v2/value_function', exist_ok=True)



def 				lowerCAmelCase_			(      SCREAMING_SNAKE_CASE       :							Optional[int]   ):


							'''simple docstring'''







							if hor == 128:
														__lowerCamelCase      :      int         =('''DownResnetBlock1D''', '''DownResnetBlock1D''', '''DownResnetBlock1D''')
														__lowerCamelCase      :      Union[str, Any]         =(32, 128, 256)
														__lowerCamelCase      :      List[Any]         =('''UpResnetBlock1D''', '''UpResnetBlock1D''')

							elif hor == 32:
														__lowerCamelCase      :      Optional[Any]         =('''DownResnetBlock1D''', '''DownResnetBlock1D''', '''DownResnetBlock1D''', '''DownResnetBlock1D''')
														__lowerCamelCase      :      Any         =(32, 64, 128, 256)
														__lowerCamelCase      :      Optional[Any]         =('''UpResnetBlock1D''', '''UpResnetBlock1D''', '''UpResnetBlock1D''')
							__lowerCamelCase      :      Optional[int]         =torch.load(F'/Users/bglickenhaus/Documents/diffuser/temporal_unet-hopper-mediumv2-hor{hor}.torch'   )
							__lowerCamelCase      :      int         =model.state_dict()
							__lowerCamelCase      :      Union[str, Any]         ={
							    '''down_block_types''': down_block_types,
							    '''block_out_channels''': block_out_channels,
							    '''up_block_types''': up_block_types,
							    '''layers_per_block''': 1,
							    '''use_timestep_embedding''': True,
							    '''out_block_type''': '''OutConv1DBlock''',
							    '''norm_num_groups''': 8,
							    '''downsample_each_block''': False,
							    '''in_channels''': 14,
							    '''out_channels''': 14,
							    '''extra_in_channels''': 0,
							    '''time_embedding_type''': '''positional''',
							    '''flip_sin_to_cos''': False,
							    '''freq_shift''': 1,
							    '''sample_size''': 65536,
							    '''mid_block_type''': '''MidResTemporalBlock1D''',
							    '''act_fn''': '''mish''',
							}
							__lowerCamelCase      :      List[Any]         =UNetaDModel(**SCREAMING_SNAKE_CASE   )
							print(F'length of state dict: {len(state_dict.keys()   )}'   )
							print(F'length of value function dict: {len(hf_value_function.state_dict().keys()   )}'   )
							__lowerCamelCase      :      str         =dict(zip(model.state_dict().keys()    ,						hf_value_function.state_dict().keys()   )   )
							for k, v in mapping.items():
														__lowerCamelCase      :      str         =state_dict.pop(SCREAMING_SNAKE_CASE   )
							hf_value_function.load_state_dict(SCREAMING_SNAKE_CASE   )

							torch.save(hf_value_function.state_dict()    ,						F'hub/hopper-medium-v2/unet/hor{hor}/diffusion_pytorch_model.bin'   )
							with open(F'hub/hopper-medium-v2/unet/hor{hor}/config.json'    ,						'''w'''   ) as f:
														json.dump(SCREAMING_SNAKE_CASE    ,						SCREAMING_SNAKE_CASE   )



def 				lowerCAmelCase_			(      ):


							'''simple docstring'''







							__lowerCamelCase      :      Optional[int]         ={
							    '''in_channels''': 14,
							    '''down_block_types''': ('''DownResnetBlock1D''', '''DownResnetBlock1D''', '''DownResnetBlock1D''', '''DownResnetBlock1D'''),
							    '''up_block_types''': (),
							    '''out_block_type''': '''ValueFunction''',
							    '''mid_block_type''': '''ValueFunctionMidBlock1D''',
							    '''block_out_channels''': (32, 64, 128, 256),
							    '''layers_per_block''': 1,
							    '''downsample_each_block''': True,
							    '''sample_size''': 65536,
							    '''out_channels''': 14,
							    '''extra_in_channels''': 0,
							    '''time_embedding_type''': '''positional''',
							    '''use_timestep_embedding''': True,
							    '''flip_sin_to_cos''': False,
							    '''freq_shift''': 1,
							    '''norm_num_groups''': 8,
							    '''act_fn''': '''mish''',
							}

							__lowerCamelCase      :      Any         =torch.load('''/Users/bglickenhaus/Documents/diffuser/value_function-hopper-mediumv2-hor32.torch'''   )
							__lowerCamelCase      :      Optional[Any]         =model
							__lowerCamelCase      :      Tuple         =UNetaDModel(**SCREAMING_SNAKE_CASE   )
							print(F'length of state dict: {len(state_dict.keys()   )}'   )
							print(F'length of value function dict: {len(hf_value_function.state_dict().keys()   )}'   )

							__lowerCamelCase      :      Optional[int]         =dict(zip(state_dict.keys()    ,						hf_value_function.state_dict().keys()   )   )
							for k, v in mapping.items():
														__lowerCamelCase      :      Union[str, Any]         =state_dict.pop(SCREAMING_SNAKE_CASE   )

							hf_value_function.load_state_dict(SCREAMING_SNAKE_CASE   )

							torch.save(hf_value_function.state_dict()    ,						'''hub/hopper-medium-v2/value_function/diffusion_pytorch_model.bin'''   )
							with open('''hub/hopper-medium-v2/value_function/config.json'''    ,						'''w'''   ) as f:
														json.dump(SCREAMING_SNAKE_CASE    ,						SCREAMING_SNAKE_CASE   )


if __name__ == "__main__":
							unet(32)
							# unet(128)
							value_function()











"""simple docstring"""





import math
from datetime import datetime, timedelta



def 				lowerCAmelCase_			(      SCREAMING_SNAKE_CASE       :							int   ):


							'''simple docstring'''







							__lowerCamelCase      :      Any         =year % 19
							__lowerCamelCase      :      Optional[Any]         =year % 4
							__lowerCamelCase      :      Tuple         =year % 7
							__lowerCamelCase      :      Optional[int]         =math.floor(year / 100   )
							__lowerCamelCase      :      List[str]         =math.floor((13 + 8 * leap_day_inhibits) / 25   )
							__lowerCamelCase      :      Any         =leap_day_inhibits / 4
							__lowerCamelCase      :      Optional[Any]         =(
							    15 - lunar_orbit_correction + leap_day_inhibits - leap_day_reinstall_number
							) % 30
							__lowerCamelCase      :      Optional[Any]         =(4 + leap_day_inhibits - leap_day_reinstall_number) % 7

							# days to be added to March 21
							__lowerCamelCase      :      Any         =(19 * metonic_cycle + secular_moon_shift) % 30

							# PHM -> Paschal Full Moon
							__lowerCamelCase      :      str         =(
							    2 * julian_leap_year
							    + 4 * non_leap_year
							    + 6 * days_to_add
							    + century_starting_point
							) % 7

							if days_to_add == 29 and days_from_phm_to_sunday == 6:
														return datetime(SCREAMING_SNAKE_CASE    ,						4    ,						19   )
							elif days_to_add == 28 and days_from_phm_to_sunday == 6:
														return datetime(SCREAMING_SNAKE_CASE    ,						4    ,						18   )
							else:
														return datetime(SCREAMING_SNAKE_CASE    ,						3    ,						22   ) + timedelta(
														    days=int(days_to_add + days_from_phm_to_sunday   )   )


if __name__ == "__main__":
							for year in (1994, 2000, 2010, 2021, 2023):
														_UpperCamelCase							=      'will be' if year > datetime.now().year else 'was'
														print(f'''Easter in {year} {tense} {gauss_easter(year)}''')




