Set upΒΆ

  1. To run Efitter you need a parameter file in Python language format that specifies:

    • input structures to fit

    • EM maps

    • fitting parameters

    • optionally, options for execution on a computer cluster

  2. For this tutorial, the parameter files are already prepared for both CR and NR Y-complexes in the scnpc_tutorial/CR_Y_complex/systematic_fits/ and scnpc_tutorial/NR_Y_complex/NR_Y_complex_de_novo_run/systematic_fits/ directories (from our git repository). The systematic_fitting_parameters.py file contains (example parameters file for CR Y-complex following):

    from efitter import Map
    from string import Template
    
    method='chimera'
    dry_run = False
    run_crashed_only = True
    master_outdir = './result_fits_chimera'
    
    MAPS = [
        Map('em_maps/CR_with_Y_no_env_relative.mrc', threshold=0.0142, resolution=40)
    ]
    
    models_dir = './PDB'
    
    PDB_FILES = [
        'ScNup133N_56-480_renamed.pdb',
        'ScNup84_437-726_ScNup133C_490_1155_renamed_relative_3I4R.pdb',
        '4XMM.renamed.noAb_Seh1_Nup85_47_544_3F3F.pdb',
        '4XMM.renamed.noAb_Nup145c_149-550_Sec13_Nup84_7-436_3IKO_updated.pdb',
        '4XMM.renamed.noAb_Nup120_2-711_3F7F_updated.pdb',
        '4XMM.renamed.noAb_Nup120_715-1036_Nup85_553-744_Nup145c_92-99_554-712_remaining_updated.pdb'
    ]
    
    CA_only = False
    backbone_only = False
    move_to_center = True
    
    fitmap_args = [
        # We suggest to run a small test run with search 100 first
        # {
        #     'template': Template("""
        #         map $map
        #         map_threshold $threshold
        #         fitmap_args resolution $resolution metric cam envelope true search 100 placement sr clusterAngle 3 clusterShift 3.0 radius 600 inside .30
        #         saveFiles False
        #         """),
        #     'config_prefix': 'test'
        #     },
        # Paramters for main runs (https://www.cgl.ucsf.edu/chimera/docs/UsersGuide/midas/fitmap.html)
        {
            'template': Template("""
                map $map
                map_threshold $threshold
                fitmap_args resolution $resolution metric cam envelope true search 100000 placement sr clusterAngle 3 clusterShift 3.0 radius 600 inside .30
                saveFiles False
                """),
            'config_prefix': 'search100000_metric_cam_rad_600_inside0.3_res_40'
            }
    ]
    
    # If necessary, edit the below template following specifications of
    # cluster_submission_command
    # and template for your cluster submission script (using Python string.Template formatting)
    cluster_submission_command = 'sbatch'
    run_script_templ = Template("""#!/bin/bash
    #
    #SBATCH --job-name=$job_name
    #SBATCH --nodes=1
    #SBATCH --mem-per-cpu=m=2000
    #SBATCH --time=10:00:00
    #SBATCH --error $pdb_outdir/log_err.txt
    #SBATCH --output $pdb_outdir/log_out.txt
    
    $cmd
    """)
    

    Note

    Read more about fit libriaries and how to set up the parameters file in the Assembline manual. Remember that you can retrieve and inspect template parameter files in Assembline/doc/templates from our Assembline git repository.

  3. Based on the above example parameter file, Efitter will run six fitting runs - one for each input PDB structure. You can run these as six independent jobs on a computer cluster or six processes on a multicore computer, or one by one on a single core computer.

  4. To run on a computer cluster, adjust the cluster_submission_command and run_script_templ to the queuing system on your cluster (the provided example would work only on a Slurm cluster). It is important that you include $job_name, $pdb_outdir, and $cmd in your script template.

  5. To run on a multicore computer, remove cluster_submission_command and replace the run_script_templ with

    run_script_templ = Template("""#!/bin/bash
    #
    echo $job_name
    $cmd &>$pdb_outdir/log&
    """)
    

Note

In the CR Y-complex parameters file example (from above), more settings than what will actually be used for modelling were left in (all the ones with False value, e.g. dry_run = False) in order to give a broader overview of the available options to users.