Subsections

- Atom files
- Alignment file
- Script file

## Preparing input files

The sample input files in this tutorial can be found in the `examples/automodel` directory of the MODELLER distribution.

There are three kinds of input files: Protein Data Bank atom files with coordinates for the template structures, the alignment file with the alignment of the template structures with the target sequence, and MODELLER commands in a script file that instruct MODELLER what to do.

### Atom files

Each atom file is named `code.atm` where `code` is a short protein code, preferably the PDB code; for example, Peptococcus aerogenes ferredoxin would be in a file `1fdx.atm`. If you wish, you can also use file extensions `.pdb` and `.ent` instead of `.atm`. The code must be used as that protein's identifier throughout the modeling.

###
Alignment file

One of the formats for the alignment file is related to the PIR database format; this is the preferred format for comparative modeling:

    C; A sample alignment in the PIR format; used in tutorial

    >P1;5fd1
    structureX:5fd1:1    :A:106  :A:ferredoxin:Azotobacter vinelandii: 1.90: 0.19
    AFVVTDNCIKCKYTDCVEVCPVDCFYEGPNFLVIHPDECIDCALCEPECPAQAIFSEDEVPEDMQEFIQLNAELA
    EVWPNITEKKDPLPDAEDWDGVKGKLQHLER*

    >P1;1fdx
    sequence:1fdx:1    : :54   : :ferredoxin:Peptococcus aerogenes: 2.00:-1.00
    AYVINDSC--IACGACKPECPVNIIQGS--IYAIDADSCIDCGSCASVCPVGAPNPED-----------------
    -------------------------------*

See Section B.1 for a detailed description of the alignment file format. Influence of the alignment on the quality of the model cannot be overemphasized. To obtain the best possible model, it is important to understand how the alignment is used by MODELLER[Šali & Blundell, 1993]. In outline, for the aligned regions, MODELLER tries to derive a 3D model for the target sequence that is as close to one or the other of the template structures as possible while also satisfying stereochemical restraints (e.g., bond lengths, angles, non-bonded atom contacts, ...); the inserted regions, which do not have any equivalent segments in any of the templates, are modeled in the context of the whole molecule, but using their sequence alone. This way of deriving a model means that whenever a user aligns a target residue with a template residue, he tells MODELLER to treat the aligned residues as structurally equivalent. Command alignment.check() can be used to find some trivial alignment mistakes.

###
Script file

MODELLER is a command-line only tool, and has no graphical user interface; instead, you must provide it with a script file containing MODELLER commands. This is an ordinary Python script.

If you are not familiar with Python, you can simply adapt one of the many examples in the `examples` directory, or look at the code for the classes used by MODELLER itself, in the `modlib/modeller` directory. Finally, there are many resources for learning Python itself, such as a comprehensive tutorial at https://docs.python.org/release/2.3.5/tut/.

A sample script file `model-default.py` to produce one model of sequence `1fdx` from the known structure of `5fd1` and from the alignment between the two sequences is

    # Comparative modeling by the automodel class
    from modeller import *              # Load standard Modeller classes
    from modeller.automodel import *    # Load the automodel class

    log.verbose()    # request verbose output
    env = environ()  # create a new MODELLER environment to build this model in

    # directories for input atom files
    env.io.atom_files_directory = ['.', '../atom_files']

    a = automodel(env,
                  alnfile  = 'alignment.ali',     # alignment filename
                  knowns   = '5fd1',              # codes of the templates
                  sequence = '1fdx')              # code of the target
    a.starting_model= 1                 # index of the first model
    a.ending_model  = 1                 # index of the last model
                                        # (determines how many models to calculate)
    a.make()                            # do the actual comparative modeling

See Chapter 2 for more information about the `automodel` class, and a more detailed explanation of what this script does.