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

class MyModel(loopmodel):
    def special_restraints(self, aln):
        rsr = self.restraints
        at = self.atoms

        
        # Ring Finger: C3HC3H (Type 2)

        # First Zinc
        rsr.make_distance(at['SG:1'],at['SG:4'],aln,spline_on_site=False,restraint_group=physical.xy_distance,maximal_distance=0.5)
        rsr.make_distance(at['SG:1'],at['ND1:24'],aln,spline_on_site=False,restraint_group=physical.xy_distance,maximal_distance=0.5)
        rsr.make_distance(at['SG:1'],at['SG:27'],aln,spline_on_site=False,restraint_group=physical.xy_distance,maximal_distance=0.5)
        rsr.make_distance(at['SG:4'],at['ND1:24'],aln,spline_on_site=False,restraint_group=physical.xy_distance,maximal_distance=0.5)
        rsr.make_distance(at['SG:4'],at['SG:27'],aln,spline_on_site=False,restraint_group=physical.xy_distance,maximal_distance=0.5)
        rsr.make_distance(at['ND1:24'],at['SG:27'],aln,spline_on_site=False,restraint_group=physical.xy_distance,maximal_distance=0.5)
        rsr.make_distance(at['ZN:42'],at['SG:1'],aln,spline_on_site=False,restraint_group=physical.xy_distance,maximal_distance=0.5)
        rsr.make_distance(at['ZN:42'],at['SG:4'],aln,spline_on_site=False,restraint_group=physical.xy_distance,maximal_distance=0.5)
        rsr.make_distance(at['ZN:42'],at['ND1:24'],aln,spline_on_site=False,restraint_group=physical.xy_distance,maximal_distance=0.5)
        rsr.make_distance(at['ZN:42'],at['SG:27'],aln,spline_on_site=False,restraint_group=physical.xy_distance,maximal_distance=0.5)

        # Second Zinc
        rsr.make_distance(at['SG:19'],at['ND1:21'],aln,spline_on_site=False,restraint_group=physical.xy_distance,maximal_distance=0.5)
        rsr.make_distance(at['SG:19'],at['SG:38'],aln,spline_on_site=False,restraint_group=physical.xy_distance,maximal_distance=0.5)
        rsr.make_distance(at['SG:19'],at['SG:41'],aln,spline_on_site=False,restraint_group=physical.xy_distance,maximal_distance=0.5)
        rsr.make_distance(at['ND1:21'],at['SG:38'],aln,spline_on_site=False,restraint_group=physical.xy_distance,maximal_distance=0.5)
        rsr.make_distance(at['ND1:21'],at['SG:41'],aln,spline_on_site=False,restraint_group=physical.xy_distance,maximal_distance=0.5)
        rsr.make_distance(at['SG:38'],at['SG:41'],aln,spline_on_site=False,restraint_group=physical.xy_distance,maximal_distance=0.5)

        rsr.make_distance(at['ZN:43'],at['SG:19'],aln,spline_on_site=False,restraint_group=physical.xy_distance,maximal_distance=0.5)
        rsr.make_distance(at['ZN:43'],at['ND1:21'],aln,spline_on_site=False,restraint_group=physical.xy_distance,maximal_distance=0.5)
        rsr.make_distance(at['ZN:43'],at['SG:38'],aln,spline_on_site=False,restraint_group=physical.xy_distance,maximal_distance=0.5)
        rsr.make_distance(at['ZN:43'],at['SG:41'],aln,spline_on_site=False,restraint_group=physical.xy_distance,maximal_distance=0.5)
