bio-isoelectric_point 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE.txt +2 -2
- data/README.rdoc +7 -7
- data/Rakefile +2 -2
- data/VERSION +1 -1
- data/bio-isoelectric_point.gemspec +4 -4
- data/lib/bio-isoelectric_point.rb +16 -2
- data/lib/isoelectric_point/aa.rb +9 -5
- data/lib/isoelectric_point/pka_data.rb +3 -1
- data/test/aa_test.rb +9 -8
- data/test/extensions_test.rb +1 -1
- data/test/test_bio-isoelectric_point.rb +0 -2
- metadata +6 -6
data/LICENSE.txt
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
Copyright (c)
|
|
1
|
+
Copyright (c) 2011 George Githinji
|
|
2
2
|
|
|
3
|
-
bioruby-isoelectric_point library can be freely distributed under the same terms as Ruby.
|
|
3
|
+
bioruby-isoelectric_point library can be freely distributed under the same terms as Ruby.
|
data/README.rdoc
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
The isoelectric point (pI), sometimes abbreviated to iep, is the pH at which a particular molecule or surface carries no net electrical charge.
|
|
4
4
|
|
|
5
|
-
This library is a ruby implementation for
|
|
5
|
+
This library is a ruby implementation for estimating the isoelectric point of a protein, based on the bioperl’s approach. It can be installed as a bioruby-plugin.
|
|
6
6
|
|
|
7
7
|
Support for the following Pka sets is available
|
|
8
8
|
|
|
9
|
-
*
|
|
9
|
+
* dtaselect
|
|
10
10
|
* emboss
|
|
11
11
|
* rodwell
|
|
12
12
|
* wikipedia
|
|
@@ -29,10 +29,10 @@ You can also create a custom Pka set as shown in the example
|
|
|
29
29
|
protein_seq = Bio::Sequence::AA.new("KKGFTCGELA")
|
|
30
30
|
|
|
31
31
|
#what is the protein charge at ph 14?
|
|
32
|
-
charge = protein_seq.
|
|
32
|
+
charge = protein_seq.charge_at(14) #=>-2.999795857467562
|
|
33
33
|
|
|
34
|
-
#calculate the
|
|
35
|
-
isoelectric_point = protein_seq.
|
|
34
|
+
#calculate the pH using dtaselect pka set and round off to 3 decimal places
|
|
35
|
+
isoelectric_point = protein_seq.isoelectric_point('dtaselect', 3) #=>8.219
|
|
36
36
|
|
|
37
37
|
# calculate the iep ph with a custom set
|
|
38
38
|
custom_pka_set = { "N_TERMINUS" => 8.1,
|
|
@@ -45,7 +45,7 @@ You can also create a custom Pka set as shown in the example
|
|
|
45
45
|
"C" => 8.33,
|
|
46
46
|
"Y" => 9.5
|
|
47
47
|
}
|
|
48
|
-
iep_ph = protein_seq.
|
|
48
|
+
iep_ph = protein_seq.isoelectric_point(custom_pka_set, 3) #=> 8.193
|
|
49
49
|
|
|
50
50
|
|
|
51
51
|
== Contributing to bio-isoelectric_point
|
|
@@ -60,6 +60,6 @@ You can also create a custom Pka set as shown in the example
|
|
|
60
60
|
|
|
61
61
|
== Copyright
|
|
62
62
|
|
|
63
|
-
Copyright (c)
|
|
63
|
+
Copyright (c)2011 George Githinji. See LICENSE.txt for
|
|
64
64
|
further details.
|
|
65
65
|
|
data/Rakefile
CHANGED
|
@@ -15,8 +15,8 @@ Jeweler::Tasks.new do |gem|
|
|
|
15
15
|
gem.name = "bio-isoelectric_point"
|
|
16
16
|
gem.homepage = "http://github.com/GeorgeG/bioruby-isoelectric_point"
|
|
17
17
|
gem.license = "Ruby"
|
|
18
|
-
gem.summary = %Q{A bioruby plugin for calculating the isoelectric point
|
|
19
|
-
gem.description = %Q{
|
|
18
|
+
gem.summary = %Q{A bioruby plugin for calculating the isoelectric point and the charge of a protein sequence.}
|
|
19
|
+
gem.description = %Q{A bioruby plugin for calculating the isoelectric point of a protein }
|
|
20
20
|
gem.email = "georgkam@gmail.com"
|
|
21
21
|
gem.authors = ["George Githinji","Pascal Betz"]
|
|
22
22
|
# Include your dependencies below. Runtime dependencies are required when using your gem,
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.1.
|
|
1
|
+
0.1.1
|
|
@@ -5,12 +5,12 @@
|
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |s|
|
|
7
7
|
s.name = %q{bio-isoelectric_point}
|
|
8
|
-
s.version = "0.1.
|
|
8
|
+
s.version = "0.1.1"
|
|
9
9
|
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
11
11
|
s.authors = ["George Githinji", "Pascal Betz"]
|
|
12
|
-
s.date = %q{
|
|
13
|
-
s.description = %q{
|
|
12
|
+
s.date = %q{2011-01-30}
|
|
13
|
+
s.description = %q{A bioruby plugin for calculating the isoelectric point of a protein }
|
|
14
14
|
s.email = %q{georgkam@gmail.com}
|
|
15
15
|
s.extra_rdoc_files = [
|
|
16
16
|
"LICENSE.txt",
|
|
@@ -36,7 +36,7 @@ Gem::Specification.new do |s|
|
|
|
36
36
|
s.licenses = ["Ruby"]
|
|
37
37
|
s.require_paths = ["lib"]
|
|
38
38
|
s.rubygems_version = %q{1.3.7}
|
|
39
|
-
s.summary = %q{A bioruby plugin for calculating the isoelectric point
|
|
39
|
+
s.summary = %q{A bioruby plugin for calculating the isoelectric point and the charge of a protein sequence.}
|
|
40
40
|
s.test_files = [
|
|
41
41
|
"test/aa_test.rb",
|
|
42
42
|
"test/extensions_test.rb",
|
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
require 'bio'
|
|
2
2
|
|
|
3
3
|
['pka_data', 'extensions', 'aa'].each do |name|
|
|
4
|
-
require File.join(File.dirname(__FILE__), 'isoelectric_point',
|
|
5
|
-
end
|
|
4
|
+
require File.join(File.expand_path(File.dirname(__FILE__)), 'isoelectric_point',"#{name}")
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
# protein_seq = Bio::Sequence::AA.new("KKGFTCGELA")
|
|
9
|
+
#
|
|
10
|
+
# #what is the protein charge at ph 14?
|
|
11
|
+
# charge = protein_seq.charge_at(14) #=>-2.999795857467562
|
|
12
|
+
#
|
|
13
|
+
# #calculate the pH using dtaselect pka set and round off to 3 decimal places
|
|
14
|
+
# isoelectric_point = protein_seq.isoelectric_point('dtaselect', 3) #=>8.219
|
|
15
|
+
#
|
|
16
|
+
# puts charge
|
|
17
|
+
# puts isoelectric_point
|
|
18
|
+
#
|
|
19
|
+
#
|
data/lib/isoelectric_point/aa.rb
CHANGED
|
@@ -12,12 +12,13 @@ module Bio
|
|
|
12
12
|
# pka_name_or_set: the name of a PKA set or a custom PKA set
|
|
13
13
|
# places: specify the number of decimal places the value should be rounded to.
|
|
14
14
|
# loop_limit: how many iterations should be made to find the point. You should not need to tweak this.
|
|
15
|
-
|
|
15
|
+
#TODO to be renamed to isoelectric_point to preserve clarity
|
|
16
|
+
def isoelectric_point(pka_name_or_set = 'dtaselect', places = 2, loop_limit = 100)
|
|
16
17
|
loops = 0
|
|
17
18
|
ph = 7.5
|
|
18
19
|
step = 3.5
|
|
19
20
|
begin
|
|
20
|
-
current_charge =
|
|
21
|
+
current_charge = charge_at(ph, pka_name_or_set)
|
|
21
22
|
if current_charge > 0
|
|
22
23
|
ph += step
|
|
23
24
|
else
|
|
@@ -32,7 +33,8 @@ module Bio
|
|
|
32
33
|
|
|
33
34
|
# Calculate the charge of the sequence at a given ph
|
|
34
35
|
# As a second argument you can pass the name of the PKA set or a custom PKA set
|
|
35
|
-
|
|
36
|
+
|
|
37
|
+
def charge_at(ph, pka_name_or_set = 'dtaselect')
|
|
36
38
|
['K', 'R', 'H'].inject(partial_charge(select_pka(pka_name_or_set)['N_TERMINUS'], ph)) do |memo, item|
|
|
37
39
|
memo += partial_charge(select_pka(pka_name_or_set)[item], ph) * charged_residue_frequencies[item]
|
|
38
40
|
end -
|
|
@@ -67,7 +69,7 @@ module Bio
|
|
|
67
69
|
|
|
68
70
|
#
|
|
69
71
|
# Select a PKA set according to the name or supply a custom set.
|
|
70
|
-
# Raises ArgumentError if the name can not be mapped to a
|
|
72
|
+
# Raises ArgumentError if the name can not be mapped to a Pka set.
|
|
71
73
|
# If the argument is a String it is used as a key to lookup the set,
|
|
72
74
|
# if it's a Hash then it's assumed a custom set has been supplied.
|
|
73
75
|
def select_pka(pka_name_or_set = 'dtaselect')
|
|
@@ -81,4 +83,6 @@ module Bio
|
|
|
81
83
|
end #select_pka
|
|
82
84
|
end #class AA
|
|
83
85
|
end #class Sequence
|
|
84
|
-
end #module Bio
|
|
86
|
+
end #module Bio
|
|
87
|
+
#include a new class Bio::AA::Index for Pkas? suggestes by tokiashiki katayama
|
|
88
|
+
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
module Bio
|
|
2
2
|
class Sequence
|
|
3
|
+
|
|
4
|
+
#It would be better to have a class for pKa, compatible with Bio::AAindex indices.Bio::AAindex
|
|
3
5
|
class PkaData
|
|
4
6
|
PKAS = {
|
|
5
7
|
'dtaselect' => { 'N_TERMINUS' => 8.0,
|
|
@@ -55,4 +57,4 @@ module Bio
|
|
|
55
57
|
}.freeze
|
|
56
58
|
end
|
|
57
59
|
end
|
|
58
|
-
end
|
|
60
|
+
end
|
data/test/aa_test.rb
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
|
|
2
|
-
require '
|
|
2
|
+
#require 'helper'
|
|
3
|
+
require File.join(File.expand_path(File.dirname(__FILE__)),'helper')
|
|
3
4
|
|
|
4
5
|
# include Bio::Sequence
|
|
5
6
|
class AATest < Test::Unit::TestCase
|
|
@@ -28,7 +29,7 @@ class AATest < Test::Unit::TestCase
|
|
|
28
29
|
should 'calculate iep' do
|
|
29
30
|
places = 2
|
|
30
31
|
@known.each do |sequence, expected|
|
|
31
|
-
actual = Bio::Sequence::AA.new(sequence).
|
|
32
|
+
actual = Bio::Sequence::AA.new(sequence).isoelectric_point('dtaselect', places)
|
|
32
33
|
assert_equal expected.round_to_places(places), actual, "Expected the iep to be #{expected} but was #{actual} for #{sequence}"
|
|
33
34
|
end
|
|
34
35
|
end
|
|
@@ -59,10 +60,10 @@ class AATest < Test::Unit::TestCase
|
|
|
59
60
|
end
|
|
60
61
|
|
|
61
62
|
should "calculates the isolectric point to 0 places" do
|
|
62
|
-
assert_equal 11, @sequence.
|
|
63
|
+
assert_equal 11, @sequence.isoelectric_point('dtaselect', 0)
|
|
63
64
|
end
|
|
64
65
|
should "calculates the isolectric pointto 3 places" do
|
|
65
|
-
assert_equal 10.603, @sequence.
|
|
66
|
+
assert_equal 10.603, @sequence.isoelectric_point('dtaselect', 3)
|
|
66
67
|
end
|
|
67
68
|
|
|
68
69
|
context 'use a custom pka set' do
|
|
@@ -79,22 +80,22 @@ class AATest < Test::Unit::TestCase
|
|
|
79
80
|
}
|
|
80
81
|
end
|
|
81
82
|
should 'accept a custom pka set and use it for calculation' do
|
|
82
|
-
assert_equal 10.106, @sequence.
|
|
83
|
+
assert_equal 10.106, @sequence.isoelectric_point(@custom, 3)
|
|
83
84
|
end
|
|
84
85
|
|
|
85
86
|
should 'raise when no result can be found due to a invalid set' do
|
|
86
87
|
@custom['K'] = 20
|
|
87
88
|
assert_raises RuntimeError do
|
|
88
|
-
@sequence.
|
|
89
|
+
@sequence.isoelectric_point(@custom, 3)
|
|
89
90
|
end
|
|
90
91
|
end
|
|
91
92
|
end
|
|
92
93
|
context 'use another pka set' do
|
|
93
94
|
should 'work with all provided sets without raising' do
|
|
94
95
|
Bio::Sequence::PkaData::PKAS.keys.each do |key|
|
|
95
|
-
@sequence.
|
|
96
|
+
@sequence.isoelectric_point(key, 3, 25)
|
|
96
97
|
end
|
|
97
98
|
end
|
|
98
99
|
end
|
|
99
100
|
end
|
|
100
|
-
end
|
|
101
|
+
end
|
data/test/extensions_test.rb
CHANGED
metadata
CHANGED
|
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
|
5
5
|
segments:
|
|
6
6
|
- 0
|
|
7
7
|
- 1
|
|
8
|
-
-
|
|
9
|
-
version: 0.1.
|
|
8
|
+
- 1
|
|
9
|
+
version: 0.1.1
|
|
10
10
|
platform: ruby
|
|
11
11
|
authors:
|
|
12
12
|
- George Githinji
|
|
@@ -15,7 +15,7 @@ autorequire:
|
|
|
15
15
|
bindir: bin
|
|
16
16
|
cert_chain: []
|
|
17
17
|
|
|
18
|
-
date:
|
|
18
|
+
date: 2011-01-30 00:00:00 +03:00
|
|
19
19
|
default_executable:
|
|
20
20
|
dependencies:
|
|
21
21
|
- !ruby/object:Gem::Dependency
|
|
@@ -89,7 +89,7 @@ dependencies:
|
|
|
89
89
|
type: :development
|
|
90
90
|
prerelease: false
|
|
91
91
|
version_requirements: *id005
|
|
92
|
-
description: "
|
|
92
|
+
description: "A bioruby plugin for calculating the isoelectric point of a protein "
|
|
93
93
|
email: georgkam@gmail.com
|
|
94
94
|
executables: []
|
|
95
95
|
|
|
@@ -127,7 +127,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
127
127
|
requirements:
|
|
128
128
|
- - ">="
|
|
129
129
|
- !ruby/object:Gem::Version
|
|
130
|
-
hash: -
|
|
130
|
+
hash: -1228718005813956698
|
|
131
131
|
segments:
|
|
132
132
|
- 0
|
|
133
133
|
version: "0"
|
|
@@ -145,7 +145,7 @@ rubyforge_project:
|
|
|
145
145
|
rubygems_version: 1.3.7
|
|
146
146
|
signing_key:
|
|
147
147
|
specification_version: 3
|
|
148
|
-
summary: A bioruby plugin for calculating the isoelectric point
|
|
148
|
+
summary: A bioruby plugin for calculating the isoelectric point and the charge of a protein sequence.
|
|
149
149
|
test_files:
|
|
150
150
|
- test/aa_test.rb
|
|
151
151
|
- test/extensions_test.rb
|