
     i                         d Z ddlZddlmZ ddlmZ ddlmZm	Z	m
Z
mZmZ ddlmZ  G d	 d
e          Z G d de          ZdS )aZ  DL Poly format Topology Readers --- :mod:`MDAnalysis.topology.DLPolyParser`
==============================================================================

Read DL Poly_ format topology files

DLPoly files have the following Attributes:
 - Atomnames
 - Atomids

.. note::

        By default, atomtypes and masses will be guessed on Universe creation.
        This may change in release 3.0.
        See :ref:`Guessers` for more information.

.. _Poly: http://www.stfc.ac.uk/SCD/research/app/ccg/software/DL_POLY/44516.aspx

Classes
-------

.. autoclass:: ConfigParser

.. autoclass:: HistoryParser


    N   )TopologyReaderBase   )Topology)Atomids	AtomnamesResidsResnumsSegids)openanyc                       e Zd ZdZdZd ZdS )ConfigParserzDL_Poly CONFIG file parser

    .. versionadded:: 0.10.1
    .. versionchanged:: 2.8.0
       Removed type and mass guessing (attributes guessing takes place now
       through universe.guess_TopologyAttrs() API).
    CONFIGc           
         t          | j                  5 }|                                 t          j        |                                                                d d                   \  }}}|dk    s<|                                 |                                 |                                 g }g }|                                                                }|r|d d                                         }	|                    |	           	 t          |dd                    }
|                    |
           n# t          $ r Y nw xY w|                                 |dk    r|                                 |dk    r|                                 |                                }|d d d            n# 1 swxY w Y   t          |          }|rTt          j        |          }t          j        |t                    }t          j        |          }||         }||         }nt          j        |          }t          |          t!          |          t#          t          j        dg                    t%          t          j        dg                    t'          t          j        dgt                              g}t)          |dd|          }|S )	N   r      r   dtyper   SYSTEMattrs)r   filenamereadlinenpint64splitstripappendint
ValueErrorlenarrayobjectargsortaranger   r   r	   r
   r   r   selfkwargsinflevcfgimconmegatmnamesidslinenameidxn_atomsorderr   tops                  j/srv/www/vhosts/g4struct/public_html/venv/lib/python3.11/site-packages/MDAnalysis/topology/DLPolyParser.pyparsezConfigParser.parseK   s   T]## 	&sLLNNN$&HS\\^^-A-A-C-CBQB-G$H$H!FE6A::EC<<>>''))D &BQBx~~''T"""$d122h--C JJsOOOO "   D
 A::LLNNNQ;;LLNNN||~~!  &	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&< e** 	%(3--CHU&111EJsOOEe*C%LEE)G$$C eCLL28QC==!!BHaSMM""28XJf55566
 w1E222
s7   C8F5D;%F5;
EF5EA!F55F9<F9N__name__
__module____qualname____doc__formatr6        r5   r   r   @   s4          F2 2 2 2 2r>   r   c                       e Zd ZdZdZd ZdS )HistoryParserz>DL_Poly History file parser

    .. versionadded:: 0.10.1
    HISTORYc           
         t          | j                  5 }|                                 t          j        |                                                                d d                   \  }}}g }g }|                                }t          |                                          dk    st          |                                          dk    ss|                                }|dk    rt          d          t          |                                          dk    s%t          |                                          dk    s|r|                    d          s|d d         	                                }	|
                    |	           	 t          |                                d                   }
|
                    |
           n# t          $ r Y nw xY w|                                 |d	k    r|                                 |d
k    r|                                 |                                }|r|                    d          d d d            n# 1 swxY w Y   t          |          }|rTt          j        |          }t          j        |t                    }t          j        |          }||         }||         }nt          j        |          }t#          |          t%          |          t'          t          j        dg                    t)          t          j        dg                    t+          t          j        dgt                              g}t-          |dd|          }|S )Nr          z)End of file reached when reading HISTORY.timestepr   r   r   r   r   r   r   )r   r   r   r   r   r   r!   EOFError
startswithr   r   r   r    r"   r#   r$   r%   r   r   r	   r
   r   r   r&   s                  r5   r6   zHistoryParser.parse   s0   T]## 	&sLLNNN$&HS\\^^-A-A-C-CBQB-G$H$H!FE6EC<<>>D4::<<((A--TZZ\\1B1Ba1G1G||~~2::"#NOOO 4::<<((A--TZZ\\1B1Ba1G1G
  &tz:: &BQBx~~''T"""$djjll1o..C JJsOOOO "   D
 A::LLNNNQ;;LLNNN||~~!  &tz:: &	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&> e** 	%(3--CHU&111EJsOOEe*C%LEE)G$$C eCLL28QC==!!BHaSMM""28XJf55566
 w1E222
s7   E7I'G
4I

GIGA6II INr7   r=   r>   r5   r@   r@      s4         
 F3 3 3 3 3r>   r@   )r;   numpyr   baser   core.topologyr   core.topologyattrsr   r   r	   r
   r   lib.utilr   r   r@   r=   r>   r5   <module>rN      s   0 4     $ $ $ $ $ $ $ $ $ $ $ $                   = = = = =% = = =@; ; ; ; ;& ; ; ; ; ;r>   