The monomer file is where the connectivity of the particles in a
monomer is listed and where the rules for joining monomers
are defined. It is an input to the "con" program in order to
generate the connectivity file for the complete molecule.

The structure of the file is as follows:
The top of the file must be (or a comment line that have ~ )

MONO LIST

after the title the different monomers are listed. Each monomer
starts with the line

MONO=(NAME) #prt=5 chrg=0.

where NAME is the name of the monomer type that can be at most four
characters (all character assignments must be closed in brackets.
This include of course also the monomer name). #prt is the number
of particles in the monomer. This includes also virtual particles
used to link the monomer to next or previous monomers.. chrg is the
charge of the total monomer INCLUDING the virtual particles. The virtual
particles are included since their type is the one that will be finally used
(see below). The total charge is used only for test purposes.

After that line ca list of unique names of particles (to that monomer) and
their types is provided:

~ unique particle to monomer       particle type     connectivity action
UNIQ=(UNAM)                          PRTC=(PTYP)          HERE
UNIQ=(B)                             PRTC=(BTYP)
UNIQ=(C)                             PRTC=(CTYP)          NEXT

where the UNIQ command assigns a unique particle name (unique 
to that monomer). The name can be at most four characters.
The name must appear only once for a given type of connectivity action
(see below), otherwise bond assignments will be
ambiguous. The PRTC defined the particle type and it is matched against
the PNAM data from the property file. Failure to match particle types
results in program termination. The connectivity action provides the
necessary data to join monomers. The following keywords are available
for the connectivity action (note that only four characters from a keyword
are actually used):

HERE (or blank)    -  This is a normal particle of the present monomer
NEXT               -  This particle belongs to the next monomer, when
	              the Molecule will be Formed (MF), do
	              the following: Change the Type of the Particle (CTP)
		      in the next monomer to the one defined in the
		      present monomer, Transfer all Bonds (TB) in the present
		      monomer to the one that it is connected to.
PREVIOUS           -  The particle belongs to the previous monomer, when
		      MF do CTP and TB
DNXT               -  At MF delete particle and all its bond in next monomer.
DPRV               -  At MF delete particle and all its bond in 
		      previous monome.

The unique particle list ends (as usual) by DONE

after the particle list, a bond list is provided. A Bond is given by two
unique particle names and a dash in between (e.g. A-B is a bond between A and
B). Note that special particles for which the connectivity action is
different from HERE are denoted by *. Example following the definition of
particles above is.
BOND
B-C* UNAM-C* B-UNAM
DONE

Special particles must come second in bond and a monomer
cannot be used to define a bond between two special particles,
one of the particles must be HERE. Note that the * is really
needed to avoid ambiguity. Since it is possible to have
(for example), particle A as HERE and also particle A as PREV.
This also means that there are some restrictions on the connectivity.
Currently it is not possible to make a reference from a given monomer
to the same particle name at PREVious and NEXT monomers. It is hard
to imaging however a case in which it is truly needed.

Note also that cases in which a NEXT particle is defined but not found
are possible, a warning will be issued but it is not fatal. In fact
it can be quite convenient to define peptide link as the carbonyl carbon
attached to the NEXT nitrogen. This however fails at the C terminus.
The program is set in this way. The virtual nitrogen at the C terminus
is deleted which bring everything back to normal, a warning on that
nitrogen is however issued, that warning should be ignored.

The angles, torsions improper torsions are generated once the
complete molecule is formed and  they are generated in a complete way. I.e.
all possible angles, torsions and improper torsions are formed. Some
torsions are then eliminated (with zero energy contribution). One
consequence is that the possible bonds angles and improper torsions MUST
be defined in the property file. If torsion is not found a yellow alert
is issued (non-fatal warning) and that torsion is ignored.

The file ends in the traditional way, i.e.
*EOD

Finally we give a complete example to define alanine

MONO=(ALA) #prt=7 chrg=-0.57
UNIQ=(N)       PRTC=(NH)
UNIQ=(H)       PRTC=(HN)
UNIQ=(CA)      PRTC=(CAH)
UNIQ=(CB)      PRTC=(CH3)
UNIQ=(C)       PRTC=(CO)
UNIQ=(O)       PRTC=(OC)
UNIQ=(N)       PRTC=(NH)     NEXT
DONE
BOND
C-O C-N* C-CA CA-CB CA-N N-H
DONE


An example for a monomer file can be found moil.mop/ALL.MONO