Skip to content

Commit 1fd8e79

Browse files
committed
Update to use unique pka values for each of the 20 Amino Acid residues for N-Terminal and C-Terminal
git-svn-id: http://code.open-bio.org/repos/biojava/biojava-live/trunk@9462 7c6358e6-4a41-0410-a743-a5b2a554c398
1 parent c01faa6 commit 1fd8e79

4 files changed

Lines changed: 101 additions & 32 deletions

File tree

biojava3-aa-prop/src/main/java/org/biojava3/aaproperties/Constraints.java

Lines changed: 65 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,8 @@ public class Constraints {
5050
public static Map<AminoAcidCompound, Double> aa2PKa = new HashMap<AminoAcidCompound, Double>();
5151
public static Map<String, Double> diAA2Instability = new HashMap<String, Double>();
5252

53-
//Used for Innovagen
54-
public static double pkaOfNH2;
55-
public static double pkaOfCOOH;
53+
public static Map<AminoAcidCompound, Double> aa2NTerminalPka = new HashMap<AminoAcidCompound, Double>();
54+
public static Map<AminoAcidCompound, Double> aa2CTerminalPka = new HashMap<AminoAcidCompound, Double>();
5655

5756
static{
5857
initMolecularWeight();
@@ -159,23 +158,74 @@ private static void initHydropathicity(){
159158
* http://www.innovagen.se/custom-peptide-synthesis/peptide-property-calculator/peptide-property-calculator-notes.asp#NetCharge
160159
*/
161160
private static void initPKaInnovagen(){
161+
/*
162+
* A.Lehninger, Principles of Biochemistry, 4th Edition (2005), Chapter 3, page78, Table 3-1.
163+
*/
162164
//(NH2-) 9.69 (-COOH) 2.34
163-
Constraints.pkaOfNH2 = 9.69;
164-
Constraints.pkaOfCOOH = 2.34;
165-
// K, Lys 10.5
166-
aa2PKa.put(K, 10.5);
167-
// D, Asp 3.86
168-
aa2PKa.put(D, 3.86);
169-
// R, Arg 12.4
170-
aa2PKa.put(R, 12.4);
165+
aa2CTerminalPka.put(G, 2.34);
166+
aa2CTerminalPka.put(A, 2.34);
167+
aa2CTerminalPka.put(P, 1.99);
168+
aa2CTerminalPka.put(V, 2.32);
169+
aa2CTerminalPka.put(L, 2.36);
170+
aa2CTerminalPka.put(I, 2.36);
171+
aa2CTerminalPka.put(M, 2.28);
172+
173+
aa2CTerminalPka.put(F, 1.83);
174+
aa2CTerminalPka.put(Y, 2.20);
175+
aa2CTerminalPka.put(W, 2.38);
176+
177+
aa2CTerminalPka.put(S, 2.21);
178+
aa2CTerminalPka.put(T, 2.11);
179+
aa2CTerminalPka.put(C, 1.96);
180+
aa2CTerminalPka.put(N, 2.02);
181+
aa2CTerminalPka.put(Q, 2.17);
182+
183+
aa2CTerminalPka.put(K, 2.18);
184+
aa2CTerminalPka.put(H, 1.82);
185+
aa2CTerminalPka.put(R, 2.17);
186+
187+
aa2CTerminalPka.put(D, 1.88);
188+
aa2CTerminalPka.put(E, 2.19);
189+
190+
aa2NTerminalPka.put(G, 9.60);
191+
aa2NTerminalPka.put(A, 9.69);
192+
aa2NTerminalPka.put(P, 10.96);
193+
aa2NTerminalPka.put(V, 9.62);
194+
aa2NTerminalPka.put(L, 9.60);
195+
aa2NTerminalPka.put(I, 9.68);
196+
aa2NTerminalPka.put(M, 9.21);
197+
198+
aa2NTerminalPka.put(F, 9.13);
199+
aa2NTerminalPka.put(Y, 9.11);
200+
aa2NTerminalPka.put(W, 9.39);
201+
202+
aa2NTerminalPka.put(S, 9.15);
203+
aa2NTerminalPka.put(T, 9.62);
204+
aa2NTerminalPka.put(C, 10.28);
205+
aa2NTerminalPka.put(N, 8.80);
206+
aa2NTerminalPka.put(Q, 9.13);
207+
208+
aa2NTerminalPka.put(K, 8.95);
209+
aa2NTerminalPka.put(H, 9.17);
210+
aa2NTerminalPka.put(R, 9.04);
211+
212+
aa2NTerminalPka.put(D, 9.60);
213+
aa2NTerminalPka.put(E, 9.67);
214+
215+
// K, Lys 10.53
216+
aa2PKa.put(K, 10.53);
217+
// D, Asp 3.65
218+
aa2PKa.put(D, 3.65);
219+
// R, Arg 12.48
220+
aa2PKa.put(R, 12.48);
171221
// E, Glu 4.25
172222
aa2PKa.put(E, 4.25);
173223
// H, His 6.00
174224
aa2PKa.put(H, 6.00);
175-
// C, Cys 8.33
176-
aa2PKa.put(C, 8.33);
177-
// Y, Tyr 10.0
178-
aa2PKa.put(Y, 10.0);
225+
// C, Cys 8.18
226+
aa2PKa.put(C, 8.18);
227+
// Y, Tyr 10.07
228+
aa2PKa.put(Y, 10.07);
179229
}
180230

181231
private static void initPKa(){

biojava3-aa-prop/src/main/java/org/biojava3/aaproperties/IPeptideProperties.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -240,8 +240,10 @@ public AminoAcidCompositionTable obtainAminoAcidCompositionTable(File elementMas
240240
* approach stated in
241241
* <a href="http://www.innovagen.se/custom-peptide-synthesis/peptide-property-calculator/peptide-property-calculator-notes.asp#PI">here</a>
242242
*
243-
* pKa values used will be either those used by Expasy which referenced "Electrophoresis 1994, 15, 529-539" or based on Lehninger Principles of Biochemistry, Third Edition
244-
*
243+
* pKa values used will be either
244+
* those used by Expasy which referenced "Electrophoresis 1994, 15, 529-539"
245+
* OR
246+
* A.Lehninger, Principles of Biochemistry, 4th Edition (2005), Chapter 3, page78, Table 3-1.
245247
* @param sequence
246248
* a protein sequence consisting of non-ambiguous characters only
247249
* @param useExpasyValues
@@ -259,7 +261,10 @@ public AminoAcidCompositionTable obtainAminoAcidCompositionTable(File elementMas
259261
* The net charge will be computed using the approach stated in
260262
* <a href="http://www.innovagen.se/custom-peptide-synthesis/peptide-property-calculator/peptide-property-calculator-notes.asp#NetCharge>here</a>
261263
*
262-
* pKa values used will be either those used by Expasy which referenced "Electrophoresis 1994, 15, 529-539" or based on Lehninger Principles of Biochemistry, Third Edition
264+
* pKa values used will be either
265+
* those used by Expasy which referenced "Electrophoresis 1994, 15, 529-539"
266+
* OR
267+
* A.Lehninger, Principles of Biochemistry, 4th Edition (2005), Chapter 3, page78, Table 3-1.
263268
*
264269
* @param sequence
265270
* a protein sequence consisting of non-ambiguous characters only

biojava3-aa-prop/src/main/java/org/biojava3/aaproperties/PeptideProperties.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,10 @@ public static final double getAvgHydropathy(String sequence) {
278278
* approach stated in
279279
* <a href="http://www.innovagen.se/custom-peptide-synthesis/peptide-property-calculator/peptide-property-calculator-notes.asp#PI">here</a>
280280
*
281-
* pKa values used will be either those used by Expasy which referenced "Electrophoresis 1994, 15, 529-539" or based on Lehninger Principles of Biochemistry, Third Edition
281+
* pKa values used will be either
282+
* those used by Expasy which referenced "Electrophoresis 1994, 15, 529-539"
283+
* OR
284+
* A.Lehninger, Principles of Biochemistry, 4th Edition (2005), Chapter 3, page78, Table 3-1.
282285
*
283286
* @param sequence
284287
* a protein sequence consisting of non-ambiguous characters only
@@ -303,7 +306,10 @@ public static final double getIsoelectricPoint(String sequence){
303306
* The net charge will be computed using the approach stated in
304307
* <a href="http://www.innovagen.se/custom-peptide-synthesis/peptide-property-calculator/peptide-property-calculator-notes.asp#PI">here</a>
305308
*
306-
* pKa values used will be either those used by Expasy which referenced "Electrophoresis 1994, 15, 529-539" or based on Lehninger Principles of Biochemistry, Third Edition
309+
* pKa values used will be either
310+
* those used by Expasy which referenced "Electrophoresis 1994, 15, 529-539"
311+
* OR
312+
* A.Lehninger, Principles of Biochemistry, 4th Edition (2005), Chapter 3, page78, Table 3-1.
307313
*
308314
* @param sequence
309315
* a protein sequence consisting of non-ambiguous characters only

biojava3-aa-prop/src/main/java/org/biojava3/aaproperties/PeptidePropertiesImpl.java

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -396,17 +396,17 @@ private double getNetChargeExpasy(String sequence){
396396
//
397397
// Look up N-terminal and C-terminal residue.
398398
//
399-
int nTermResidue = -1;
400-
int index = 0;
401-
while((nTermResidue < 0 || nTermResidue >= 26) && index < 25){
402-
nTermResidue = sequence.charAt(index++) - 'A';
403-
}
399+
int nTermResidue = sequence.charAt(0) - 'A';
400+
// int index = 0;
401+
// while((nTermResidue < 0 || nTermResidue >= 26) && index < 25){
402+
// nTermResidue
403+
// }
404404

405-
int cTermResidue = -1;
406-
index = 1;
407-
while((cTermResidue < 0 || cTermResidue >= 26) && index < 25){
408-
cTermResidue = sequence.charAt(sequence.length() - index++) - 'A';
409-
}
405+
int cTermResidue = sequence.charAt(sequence.length() - 1) - 'A';
406+
// index = 1;
407+
// while((cTermResidue < 0 || cTermResidue >= 26) && index < 25){
408+
// cTermResidue = sequence.charAt(sequence.length() - index++) - 'A';
409+
// }
410410
return getNetChargeExpasy(comp, nTermResidue, cTermResidue, 7.0);
411411
}
412412

@@ -442,9 +442,17 @@ private double getNetCharge(Map<AminoAcidCompound, Integer> chargedAA2Count, dou
442442
//Asp => D, Glu => E, Cys => C, Tyr => Y
443443
AminoAcidCompoundSet aaSet = new AminoAcidCompoundSet();
444444

445-
double nTerminalCharge = this.getPosCharge(Constraints.pkaOfNH2, ph);
445+
double nTerminalCharge = 0.0;
446+
AminoAcidCompound nTermCompound = aaSet.getCompoundForString(nTerminalChar + "");
447+
if(Constraints.aa2NTerminalPka.containsKey(nTermCompound)){
448+
nTerminalCharge = this.getPosCharge(Constraints.aa2NTerminalPka.get(nTermCompound), ph);
449+
}
446450

447-
double cTerminalCharge = this.getNegCharge(Constraints.pkaOfCOOH, ph);
451+
double cTerminalCharge = 0.0;
452+
AminoAcidCompound cTermCompound = aaSet.getCompoundForString(cTerminalChar + "");
453+
if(Constraints.aa2CTerminalPka.containsKey(cTermCompound)){
454+
cTerminalCharge = this.getNegCharge(Constraints.aa2CTerminalPka.get(cTermCompound), ph);
455+
}
448456

449457
double kCharge = chargedAA2Count.get(aaSet.getCompoundForString("K")) * this.getPosCharge(Constraints.aa2PKa.get(aaSet.getCompoundForString("K")), ph);
450458
double rCharge = chargedAA2Count.get(aaSet.getCompoundForString("R")) * this.getPosCharge(Constraints.aa2PKa.get(aaSet.getCompoundForString("R")), ph);

0 commit comments

Comments
 (0)