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;