int sbcoil( float observed[ hashed ], int no_coil[ hashed ] ) { // // subtract random coil shifts from observed values // // 1) PROTEINS // // coil shift reference values // values from Table 1 of Merutka, Dyson, Wright pre-print (Sep. 93) // for 278K // // histidine value for protonated ring, asp and glu charged // residue labelled HID will get neutral shifts for his subtracted, // --output will be labelled HIS; reference shifts are for the neutral // for from the Bundi & Wuthrich paper // // (Note that when two protons that // are stereo pairs are reported, the larger value of chemical // is listed first; this convention should thus be followed // in the observed shift file as well.) // // here are the assumed atom orderings: // amide proton temp. coefficient (ppb/K) is in column 2 // // 2) DNA // // sugar: // methyl-beta-furanoside of 2'-deoxy-D-erythro-pentose // R. U. Lemieux, Carb. Res. 20: 59-72 (1971) // base: // bases in acidic or basic solution, from Aldrich spectral catalog // // // //============================================================================ // string omap[ hashed ], coil[ hashed ]; string idp; string idpfields[ 3 ], mapfields[ 30 ]; int nmap, i, found; float tempd, tempco; // set up arrays to help read random coil values: omap["GLY"] = "H HA2 HA3"; omap["ALA"] = "H HA HB3"; omap["VAL"] = "H HA HB HG13 HG23"; omap["LEU"] = "H HA HB2 HB3 HG HD13 HD23"; omap["ILE"] = "H HA HB HG12 HG13 HG23 HD13"; omap["SER"] = "H HA HB2 HB3"; omap["THR"] = "H HA HB HG23"; omap["PHE"] = "H HA HB2 HB3 HD2 HE2 HZ"; omap["HIS"] = "H HA HB2 HB3 HE1 HD2"; omap["TYR"] = "H HA HB2 HB3 HD2 HE2 HH"; omap["TRP"] = "H HA HB2 HB3 HE1 HD1 HE3 HZ2 HH2 HZ3"; omap["PRO"] = "HA HB2 HB3 HG2 HG3 HD2 HD3"; omap["ASP"] = "H HA HB2 HB3"; omap["GLU"] = "H HA HB2 HB3 HG2 HG3"; omap["ASN"] = "H HA HB2 HB3 HD21 HD22"; omap["GLN"] = "H HA HB2 HB3 HG2 HG3 HE21 HE22"; omap["ARG"] = "H HA HB2 HB3 HG2 HG3 HD2 HD3"; omap["LYS"] = "H HA HB2 HB3 HG2 HG3 HD2 HD3 HE2 HE3"; omap["MET"] = "H HA HB2 HB3 HG2 HG3 HE3"; omap["CYS"] = "H HA HB2 HB3 HG"; omap["CYX"] = "H HA HB2 HB3"; omap["MTH"] = "H1 H2 H3 H4"; omap["CYT"] = "H1' H2'1 H2'2 H3' H4' H5'1 H5'2 H41 H42 H5 H6"; omap["THY"] = "H1' H2'1 H2'2 H3' H4' H5'1 H5'2 H3 H6 H73"; omap["ADE"] = "H1' H2'1 H2'2 H3' H4' H5'1 H5'2 H2 H61 H62 H8"; omap["GUA"] = "H1' H2'1 H2'2 H3' H4' H5'1 H5'2 H1 H21 H22 H8"; #ifdef RNA omap["CYT"] = "H1' H2'1 HO'2 H3' H4' H5'1 H5'2 H41 H42 H5 H6"; omap["THY"] = "H1' H2'1 HO'2 H3' H4' H5'1 H5'2 H3 H6 H73"; omap["ADE"] = "H1' H2'1 HO'2 H3' H4' H5'1 H5'2 H2 H61 H62 H8"; omap["GUA"] = "H1' H2'1 HO'2 H3' H4' H5'1 H5'2 H1 H21 H22 H8"; omap["URA"] = "H1' H2'1 HO'2 H3' H4' H5'1 H5'2 H3 H5 H6"; #endif omap["PSU"] = "H1' H2'1 HO'22 H3' H4' H5'1 H5'2 H1 H3 H6"; omap["H2U"] = "H1' H2'1 HO'2 H3' H4' H5'1 H5'2 H3 H51 H52 H61 H62"; omap["7MG"] = "H1' H2'1 HO'2 H3' H4' H5'1 H5'2 H1 H21 H22 H73 H8"; omap["1MA"] = "H1' H2'1 HO'2 H3' H4' H5'1 H5'2 H11 H12 H13 H2 H6 H8"; omap["2MG"] = "H1' H2'1 HO'2 H3' H4' H5'1 H5'2 H1 H2 HA3 H8"; omap["M2G"] = "H1' H2'1 HO'2 H3' H4' H5'1 H5'2 H1 H8 HB3 HB3"; omap["5MC"] = "H1' H2'1 HO'2 H3' H4' H5'1 H5'2 H41 H42 H6 H73"; omap["5MU"] = "H1' H2'1 HO'2 H3' H4' H5'1 H5'2 H3 H6 H73"; omap["OMG"] = "H1' H2'1 HA'3 H3' H4' H5'1 H5'2 H1 H21 H22 H8"; omap["OMC"] = "H1' H2'1 HA'3 H3' H4' H5'1 H5'2 H41 H42 H5 H6"; omap["YG"] = "H1' H2'1 HO'2 H3' H4' H5'1 H5'2 H33 H2 H8 H103 H133 H141 H142 H15 H193 H20 H243"; omap["MTH"] = "H1 H2 H3 H4"; omap["BEN"] = "H1 H2 H3 H4 H5 H6"; omap["PRT"] = "HP"; omap["NRG"] = "H HA HB2 HB3 HG2 HG3 HD2 HD3"; omap["CLA"] = "H HA HB3"; coil["GLY"] = "-7.3: 8.66 : 4.01 : 4.01 "; coil["ALA"] = "-8.6: 8.67 : 4.34 : 1.41 "; coil["VAL"] = "-8.7: 8.51 : 4.13 : 2.12 : 0.97 : 0.95 "; coil["ILE"] = "-8.7: 8.52 : 4.18 : 1.89 : 1.49 : 1.21 : 0.93 : 0.88"; coil["LEU"] = "-8.6: 8.64 : 4.35 : 1.64 : 1.64 : 1.64 : 0.93 : 0.89"; coil["SER"] = "-7.3: 8.69 : 4.49 : 3.95 : 3.93 "; coil["THR"] = "-7.7: 8.52 : 4.39 : 4.32 : 1.22"; coil["ASP"] = "-6.7: 8.61 : 4.63 : 2.71 : 2.70"; coil["GLU"] = "-7.3: 8.83 : 4.29 : 2.09 : 1.99 : 2.34 : 2.34"; coil["LYS"] = "-8.2: 8.67 : 4.32 : 1.87 : 1.79 : 1.46 : 1.46 : 1.69 : 1.68 : 2.99 : 2.99 : 7.59"; coil["ARG"] = "-7.5: 8.69 : 4.34 : 1.90 : 1.80 : 1.67 : 1.67 : 3.22 : 3.22 : 7.26 : 6.92 : 6.49"; coil["ASN"] = "-7.3: 8.76 : 4.76 : 2.88 : 2.79 : 7.03 : 7.74 ::"; coil["GLN"] = "-7.3: 8.70 : 4.36 : 2.15 : 2.02 : 2.40 : 2.39 : 6.97 : 7.69 ::"; coil["MET"] = "-8.3: 8.73 : 4.52 : 2.15 : 2.03 : 2.63 : 2.56 : 2.10 "; coil["CYS"] = "-8.0: 8.75 : 4.58 : 2.97 : 2.97 :"; coil["CYX"] = "-8.0: 8.75 : 4.58 : 2.97 : 2.97 "; coil["TRP"] = "-8.3: 8.23 : 4.62 : 3.23 : 3.23 :10.20 : 7.22 : 7.59 : 7.44 : 7.19 : 7.13 "; coil["PHE"] = "-8.8: 8.61 : 4.62 : 3.15 : 3.06 : 7.28 : 7.38 : 7.32 "; coil["TYR"] = "-9.7: 8.59 : 4.56 : 3.06 : 2.98 : 7.15 : 6.85 :"; coil["HIS"] = "-8.0: 8.79 : 4.77 : 3.33 : 3.19 : 8.59 : 7.31 "; coil["HID"] = "0.0: 8.415 : 4.630 : 3.263 : 3.198 : 7.747 : 6.966"; coil["PRO"] = ": 4.44 : 2.28 : 2.02 : 2.030 : 2.030 : 3.68 : 3.65"; coil["CYT"] = ":5.23:2.24:2.17:4.36:4.0:3.6:3.72::: 6.20 : 7.80"; coil["THY"] = ":5.23:2.24:2.17:4.36:4.0:3.6:3.72:: 7.45 : 1.90"; coil["GUA"] = ":5.23:2.24:2.17:4.36:4.0:3.6:3.72:::: 7.69"; coil["ADE"] = ":5.23:2.24:2.17:4.36:4.0:3.6:3.72: 8.68 :::8.60"; #ifdef RNA coil["CYT"] = ":5.23:4.36::4.36:4.0:3.6:3.72::: 6.081:7.926"; coil["URA"] = ":5.23:4.36::4.36:4.0:3.6:3.72:: 5.890:7.890"; coil["GUA"] = ":5.23:4.36::4.36:4.0:3.6:3.72:::: 8.015"; coil["ADE"] = ":5.23:4.36::4.36:4.0:3.6:3.72: 8.117 :20:20:8.337"; #endif tempd = (36. - 5.)/1000.; for( idp in observed ){ fprintf( stderr, "idp = %s\n", idp ); split( idp, idpfields, ":" ); if( !(idpfields[1] in omap) ){ fprintf( stderr, "unable to subtract coil for %s\n", idp ); exit(1); } nmap = split( omap[idpfields[1]], mapfields, " " ); found = 0; for( i=1; i<= nmap; i=i+1 ) { if( mapfields[i] == idpfields[3] ){ found=1; break; } } if( found ){ nmap = split( coil[idpfields[1]], mapfields, ":" ); if( mapfields[i+1] == "" ){ fprintf( stderr, "unable to subtract coil for %s", idp ); fprintf( stderr, " (blank mapfield)\n" ); no_coil[ idp ] = 1; } else { if( idpfields[3] == "H" ){ tempco = atof( mapfields[1] ); observed[ idp ] = observed[ idp ] - atof( mapfields[2] ) - tempco*tempd; } else { observed[ idp ] = observed[ idp ] - atof( mapfields[i+1] ); } #ifdef DEBUG fprintf( stderr, "sbcoil: %s %8.3f\n", idp, atof( mapfields[i+1] )); #endif } } else { fprintf( stderr, "unable to subtract coil for %s", idp ); fprintf( stderr, " (atom name not found)\n" ); no_coil[ idp ] = 1; } } return(0); };