#! /bin/csh -f # # ./scripts/maps.com - make refmac's maps # # # use this script to get the "current" map out of # refmacout.mtz, even if refmac is still running # alias nawk /usr/bin/nawk set refmacmtz = ./refmacout.mtz set pdbin = ./pdb/starthere.pdb # PDB to "cover" set xyzlim = "" # important for ARP maps # need this to make O maps set MAPMAN = /programs/o/rave/rave_irix6/6d_mapman set tempfile = ${CCP4_SCR}ffttemp # user override defaults foreach arg ( $* ) if("$arg" =~ *.mtz) set refmacmtz = "$arg" if("$arg" =~ *.pdb) set pdbin = "$arg" if("$arg" =~ *mapman*) set MAPMAN = "$arg" end if(! -e "$refmacmtz") then echo "ERROR: no $refmacmtz ! " exit 9 endif FFT: ############################################################################### # # make maps. # # Sigmaa style 2mfo-dfc map with FREE R removed (for ARP) # echo "making arp's maps/2fofc_free.map" fft hklin ./refmacout.mtz mapout ${tempfile}.map <& /dev/null mapmask MAPIN ${tempfile}.map MAPOUT maps/2fofc_free.map << EOF $xyzlim END EOF # # # Sigmaa style 2mfo-dfc map _without_ FREE R removed (for O) # echo "making maps/2fofc.map" fft hklin $refmacmtz mapout maps/2fofc.map <& /dev/null ############################################################################### pick_peaks: # list difference peaks echo "picking peaks in maps/fofc.map" peakmax MAPIN maps/fofc.map XYZOUT ${tempfile}pick.pdb << eof-pick THRESHOLD RMS 4 NEGATIVES OUTPUT BROOKHAVEN END eof-pick # convert to an O macro cat ${tempfile}pick.pdb |\ nawk '/^ATOM/{print substr($0, 61, 6)+0, substr($0, 31, 8), substr($0, 39, 8), substr($0, 47, 8)}' |\ sort -nr |\ nawk '{print "! ", $1, "sigma peak"; print "centre_xyz", $2,$3,$4; \ print "sym_sphere ; ; ;";print "@map";}' |\ cat >! ${tempfile}peaklist rm -f ${tempfile}pick.pdb >& /dev/null if($?NO_MACROS) goto done # make some nice O macros for visiting large difference features echo "generating o macros in ./o/" cat ${tempfile}peaklist >! ./o/visit_peaks.omac set temp = `awk '/^ATOM/{++n;X+=substr($0, 31, 8);Y+=substr($0, 39, 8);Z+=substr($0, 47, 8)} END{if(n) print "cen_x", X/n, Y/n, Z/n}' $pdbin` cat << EOF-latest >! ./o/latest.omac sam_atom_in `pwd`/$pdbin latest mol latest obj latest zone ; end $temp paint_ramp atom_b ; blue red obj Bfac zone ; end sym_set ; ; P212121 ; sym_cell menu @visit_peaks.omac on menu @map on EOF-latest if(! -e ./o/map) then cat << EOF-map >! ./o/map map_cache map_active_centre map_file `pwd`/o/2fofc.omap map_object sigmaa map_parameter 15 15 15 1 tan 0.5 0 1 map_draw map_cache map_active_centre map_file `pwd`/o/fofc.omap map_object good map_parameter 15 15 15 3 green 0.5 0 1 map_draw map_cache map_active_centre map_file `pwd`/o/fofc.omap map_object bad map_parameter 15 15 15 -3 red 0.5 0 1 map_draw EOF-map endif done: # list the difference peaks cat ${tempfile}peaklist |\ nawk '/sigma/{printf "%s | ", $0} /cen/{print}' rm -f ${tempfile}peaklist >& /dev/null echo "maps ready." exit