phenix.find_all_ligands is a command line tool for finding all the ligands in a map by repetitively running phenix.ligandfit with a series of ligands and choosing the best-fitting one at each cycle.
The basic procedure for phenix.find_all_ligands has three steps. The first is to identify the largest contiguous region of density in your map that is not already occupied by your model or previously-fitted ligands. The second is to fit each ligand (you identify the candidate ligands in advance) into this density. The third is to choose the one that fits the density the best. Then the best-fitting ligand is added to the structure and the process is repeated until the number of ligands you request is found or the correlation of ligand to the map drops below the value you specify (default=0.5).
The output ligand files from phenix.find_all_ligands are normally in the temporary directory (default='temp_dir'). They will be files with names such as "SITE_1_ATP.pdb" for the placement of ATP in the first site fitted.
Running phenix.find_all_ligands is easy. Usually you will want to edit a small parameter file (find_all_ligands.eff) to contain your commands like this, where the ligandfit commands are sent to phenix.ligandfit: for the actual fitting and the find_all_ligands commands determine what searches are done: type:
# commands for running phenix.find_all_ligands find_all_ligands { number_of_ligands = 5 cc_min = 0.5 ligand_list = ATP.pdb NAD.pdb nproc = 2 } ligandfit { data = "nsf-d2.mtz" model = "nsf-d2_noligand.pdb" lig_map_type = fo-fc_difference_map }
You might also want to add to this some additional commands for phenix.ligandfit. Any commands for ligandfit are allowed, except that the commands "ligand" and "input_lig_file" are ignored as the input ligand comes from the find_all_ligands command "ligand_list":
# find_all_ligands.eff more commands for ligandfit ligandfit { data = "nsf-d2.mtz" model = "nsf-d2_noligand.pdb" lig_map_type = fo-fc_difference_map ligand_cc_min = 0.75 verbose = Yes }
where you can put any phenix.ligandfit commands in the braces.
Then you can run this with the command:
phenix.find_all_ligands find_all_ligands.eff
NOTE: in addition to the find_all_ligands keywords shown here, all phenix.ligandfit commands are also allowed, except that the commands "ligand" and "input_lig_file" are ignored as the input ligand comes from the find_all_ligands.