


"""simple docstring"""




from typing import Dict

import numpy as np
import torch

from . import residue_constants as rc
from .tensor_utils import tensor_tree_map, tree_map

def        lowercase							(		lowerCAmelCase__ :     Dict[str, torch.Tensor]			) ->      List[Any]:
		__a           =			[]
		__a           =			[]
		__a           =			[]

		for rt in rc.restypes:
				__a           =			rc.restype_name_to_atomaa_names[rc.restype_atoa[rt]]
				restype_atomaa_to_atomaa_list.append([(rc.atom_order[name] if name else 0) for name in atom_names]			)
				__a           =			{name: i for i, name in enumerate(snake_case__			)}
				restype_atomaa_to_atomaa_list.append(
				    [(atom_name_to_idxaa[name] if name in atom_name_to_idxaa else 0) for name in rc.atom_types]			)

				restype_atomaa_mask_list.append([(1.0 if name else 0.0) for name in atom_names]			)

		# Add dummy mapping for restype 'UNK'
		restype_atomaa_to_atomaa_list.append([0] * 14			)
		restype_atomaa_to_atomaa_list.append([0] * 37			)
		restype_atomaa_mask_list.append([0.0] * 14			)

		__a           =			torch.tensor(
		    snake_case__    ,					dtype=torch.intaa    ,					device=protein['''aatype'''].device    ,					)
		__a           =			torch.tensor(
		    snake_case__    ,					dtype=torch.intaa    ,					device=protein['''aatype'''].device    ,					)
		__a           =			torch.tensor(
		    snake_case__    ,					dtype=torch.floataa    ,					device=protein['''aatype'''].device    ,					)
		__a           =			protein['''aatype'''].to(torch.long			)

		# create the mapping for (residx, atom14) --> atom37, i.e. an array
		# with shape (num_res, 14) containing the atom37 indices for this protein
		__a           =			restype_atomaa_to_atomaa[protein_aatype]
		__a           =			restype_atomaa_mask[protein_aatype]

		__a           =			residx_atomaa_mask
		__a           =			residx_atomaa_to_atomaa.long()

		# create the gather indices for mapping back
		__a           =			restype_atomaa_to_atomaa[protein_aatype]
		__a           =			residx_atomaa_to_atomaa.long()

		# create the corresponding mask
		__a           =			torch.zeros([21, 37]    ,					dtype=torch.floataa    ,					device=protein['''aatype'''].device			)
		for restype, restype_letter in enumerate(rc.restypes			):
				__a           =			rc.restype_atoa[restype_letter]
				__a           =			rc.residue_atoms[restype_name]
				for atom_name in atom_names:
						__a           =			rc.atom_order[atom_name]
						__a           =			1

		__a           =			restype_atomaa_mask[protein_aatype]
		__a           =			residx_atomaa_mask

		return protein




def        lowercase							(		lowerCAmelCase__ :     Dict[str, torch.Tensor]			) ->      Any:
		__a           =			tree_map(lambda lowerCAmelCase__			: torch.tensor(snake_case__    ,					device=batch['''aatype'''].device			)    ,					snake_case__    ,					np.ndarray			)
		__a           =			tensor_tree_map(lambda lowerCAmelCase__			: np.array(snake_case__			)    ,					make_atomaa_masks(snake_case__			)			)
		return out








import os




def 				a						(							):


				'''simple docstring'''
				lowercase_       =					os.path.join(os.path.dirname(snake_case__					)						,   '''num.txt'''					)
				with open(snake_case__					) as file_hand:
								return str(sum(int(snake_case__					) for line in file_hand					)					)[:10]


if __name__ == "__main__":
						print(solution())




