§
    ÖX…f—  ã                   óD   — d Z ddlZddlmZ ddlmZ  G d„ d¦  «        ZdS )zSuperimpose two structures.é    N)ÚPDBException)ÚSVDSuperimposerc                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )ÚSuperimposerzERotate/translate one set of atoms on top of another to minimize RMSD.c                 ó"   — d| _         d| _        dS )zInitialize the class.N)ÚrotranÚrms)Úselfs    ú4lib/python3.11/site-packages/Bio/PDB/Superimposer.pyÚ__init__zSuperimposer.__init__   s   € àˆŒØˆŒˆˆó    c                 óF  — t          |¦  «        t          |¦  «        k    st          d¦  «        ‚t          |¦  «        }t          j        |df¦  «        }t          j        |df¦  «        }t	          |¦  «        D ]<}||                              ¦   «         ||<   ||                              ¦   «         ||<   Œ=t          ¦   «         }|                     ||¦  «         |                     ¦   «          | 	                    ¦   «         | _
        |                     ¦   «         | _        dS )aP  Prepare translation/rotation to minimize RMSD between atoms.

        Put (translate/rotate) the atoms in fixed on the atoms in
        moving, in such a way that the RMSD is minimized.

        :param fixed: list of (fixed) atoms
        :param moving: list of (moving) atoms
        :type fixed,moving: [L{Atom}, L{Atom},...]
        z*Fixed and moving atom lists differ in sizeé   N)Úlenr   ÚnpÚzerosÚrangeÚ	get_coordr   ÚsetÚrunÚget_rmsr	   Ú
get_rotranr   )r
   ÚfixedÚmovingÚlengthÚfixed_coordÚmoving_coordÚiÚsups           r   Ú	set_atomszSuperimposer.set_atoms   sô   € õ 5‰zŒzS ™[œ[Ò(Ð(ÝÐKÑLÔLÐLÝU‘”ˆÝ”h ¨˜{Ñ+Ô+ˆÝ”x ¨ Ñ,Ô,ˆÝv‘”ð 	4ð 	4ˆAØ" 1œX×/Ò/Ñ1Ô1ˆK˜‰NØ$ Qœi×1Ò1Ñ3Ô3ˆL˜‰OˆOÝÑÔˆØŠ˜\Ñ*Ô*Ð*ØŠ‰	Œ	ˆ	Ø—;’;‘=”=ˆŒØ—n’nÑ&Ô&ˆŒˆˆr   c                 óÐ   — | j         €t          d¦  «        ‚| j         \  }}|                     d¦  «        }|                     d¦  «        }|D ]}|                     ||¦  «         ŒdS )z!Rotate/translate a list of atoms.Nz)No transformation has been calculated yetÚf)r   r   ÚastypeÚ	transform)r
   Ú	atom_listÚrotÚtranÚatoms        r   ÚapplyzSuperimposer.apply0   st   € àŒ;ÐÝÐJÑKÔKÐKØ”K‰	ˆˆTØjŠj˜‰oŒoˆØ{Š{˜3ÑÔˆØð 	&ð 	&ˆDØNŠN˜3 Ñ%Ô%Ð%Ð%ð	&ð 	&r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r    r)   © r   r   r   r      sG   € € € € € ØOÐOðð ð ð
'ð 'ð 'ð0&ð &ð &ð &ð &r   r   )r-   Únumpyr   ÚBio.PDB.PDBExceptionsr   ÚBio.SVDSuperimposerr   r   r.   r   r   ú<module>r2      so   ðð "Ð !à Ð Ð Ð à .Ð .Ð .Ð .Ð .Ð .Ø /Ð /Ð /Ð /Ð /Ð /ð(&ð (&ð (&ð (&ð (&ñ (&ô (&ð (&ð (&ð (&r   