#!/usr1/people/gabrielc/bin/nmrPipe/install/nmrbin.sgi6x/nmrWish -f set auto_path "[split $env(TCLPATH) :] $auto_path" set ARGV [concat $argv0 $argv] set ARGC [llength $ARGV] set assName 22580.all set inName hsqc set outName hsqc.ass set hnTolPPM 0.02 set nTolPPM 0.08 # # Help text: if {[flagLoc $ARGV -HELP] || [flagLoc $ARGV -help]} \ { puts "Project assignments from one peak table to another:" puts " -ass assName Assigned peak table input." puts " -in inName Unassigned peak table input." puts " -out outName Assigned peak table output." puts " -hnTol xMax Maximum X_PPM difference for match." puts " -nTol yMax Maximum Y_PPM difference for match." exit } getArgD $ARGV -in inName getArgD $ARGV -ass assName getArgD $ARGV -out outName getArgD $ARGV -hnTol hnTolPPM getArgD $ARGV -nTol nTolPPM set assList "" gdbInit gdbCreate dBase -name ASS set assTab [gdbRead table -in $assName -name ass -verb] set pkTab [gdbRead table -in $inName -name peak -verb] set entryI [gdbFirst $assTab] set idList "" while {$entryI} \ { set resID [gdbGet $entryI RESID] set resType($resID) [gdbGet $entryI RESNAME] set atName [gdbGet $entryI ATOMNAME] set ass($resID) $resType($resID)$resID set shift($resID,$atName) [gdbGet $entryI SHIFT] if {[lsearch $idList $resID] < 0} \ { append idList "$resID " } set entryI [gdbNext $entryI] } foreach i $idList \ { if {[info exists shift($i,HN)] == 1} \ { set xPPM $shift($i,HN) } \ else \ { set xPPM 9999.0 } if {[info exists shift($i,N)] == 1} \ { set yPPM $shift($i,N) } \ else \ { set yPPM 9999.0 } # # Find the peak entry nearest to the given X and Y position. set cond "near( X_PPM, $xPPM, $hnTolPPM ) && near( Y_PPM, $yPPM, $nTolPPM )" set eList [gdbSelect -from $pkTab -M -inPlace -cond $cond] set count [llength $eList] if {$count < 1} \ { puts "Residue $ass($i): No match!" } \ elseif {$count == 1} \ { # puts "Matched to residue $ass" foreach entryJ $eList \ { set index [gdbGet $entryJ INDEX] if {[lsearch $assList $index] < 0} \ { gdbSetValByVar $entryJ ASS $ass($i) set ready($index) $ass($i) } \ else \ { puts "Matched to $ass($i) but overlaps with previously matched $ready($index)" } lappend assList $index } } \ else \ { puts "Residue $ass($i): Ambiguous, matched $count times." } } gdbWrite $pkTab $outName exit