Example Daplex Constraints from the Protein Database

extend module pdb1


% Constraints on proteins

constrain each p in protein
to have molecular_weight(p) > 0


constrain each p in protein
to have molecular_weight(p) >=
        total(over c in component_protein_inv(p) of molwt(c as chain))


constrain each p in protein
to have resolution(p) > 0



% Constraints on chains

constrain each c in chain
to have molwt(c) > 0


constrain each c in chain
to have num_residues(c) = count(has_component_inv(c) as residue)



% Constraints on secondary structure

constrain no s in strand
to have s in antiparallel(parallel(s))


constrain each s in structure such that
                        no s2 in structure has follows(s2) = s
to have first_structure(structure_chain(s)) = s


constrain each s in structure such that
                                no s2 in structure has s in follows_inv(s2)
to have end(s) = num_residues(structure_chain(s))


constrain each s in structure
to have end(s) = start(follows(s)) - 1


constrain each s in structure
to have start(s) = end(the s1 in follows_inv(s)) + 1


constrain each a in structure such that a is a alpha
     each h in hbond such that
        residue_structure(acceptor(h) as residue) = a and
                residue_structure(donor(h) as residue) = a and
                acceptor_atom(h) = "o" and
                donor_atom(h) = "n"
to have pos(donor(h)) = pos(acceptor(h)) + 3



% Constraints on residues

constrain each r in residue
to have pos(r) >= 1


constrain each r in residue
to have pos(r) =< num_residues(has_component(r) as chain)


constrain each r in residue
to have pos(r) >= start(residue_structure(r)) and
        pos(r) =< end(residue_structure(r))


constrain each r in residue
to have absolutepos(has_component(r) as chain, pos(r)) = r


constrain each r in residue
to have res_by_name(has_component(r) as chain, name(r)) = r



% Constraints on disulphide bridges

constrain each sc in sub_component
to have disulphide(disulphide(sc)) = sc


constrain each r in residue such that
     some sc in sub_component has disulphide(sc) as residue = r
to have name(r) = "cys"


constrain each r in residue
to have distance(atom(r, "sg"), atom(disulphide(r), "sg")) < 3.7;

pfdm@csd.abdn.ac.uk