from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_torch_available,
)


UpperCAmelCase					=				{
    '''configuration_align''': [
        '''ALIGN_PRETRAINED_CONFIG_ARCHIVE_MAP''',
        '''AlignConfig''',
        '''AlignTextConfig''',
        '''AlignVisionConfig''',
    ],
    '''processing_align''': ['''AlignProcessor'''],
}

try:
 if not is_torch_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 UpperCAmelCase					=				[
     '''ALIGN_PRETRAINED_MODEL_ARCHIVE_LIST''',
     '''AlignModel''',
     '''AlignPreTrainedModel''',
     '''AlignTextModel''',
     '''AlignVisionModel''',
 ]

if TYPE_CHECKING:
 from .configuration_align import (
     ALIGN_PRETRAINED_CONFIG_ARCHIVE_MAP,
     AlignConfig,
     AlignTextConfig,
     AlignVisionConfig,
 )
 from .processing_align import AlignProcessor

 try:
  if not is_torch_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .modeling_align import (
      ALIGN_PRETRAINED_MODEL_ARCHIVE_LIST,
      AlignModel,
      AlignPreTrainedModel,
      AlignTextModel,
      AlignVisionModel,
  )

else:
 import sys

 UpperCAmelCase					=				_LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)




from .chunk_utils import chunk_layer
from .data_transforms import make_atomaa_masks
from .feats import atomaa_to_atomaa, frames_and_literature_positions_to_atomaa_pos, torsion_angles_to_frames
from .loss import compute_predicted_aligned_error, compute_tm
from .protein import Protein as OFProtein
from .protein import to_pdb
from .rigid_utils import Rigid, Rotation
from .tensor_utils import dict_multimap, flatten_final_dims, permute_final_dims



