plot_statistics 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/{README.rdoc → README.markdown} +12 -5
- data/Rakefile +2 -2
- data/VERSION +1 -1
- data/lib/plot_statistics.rb +2 -1
- data/lib/plot_statistics/circle.rb +71 -0
- data/lib/plot_statistics/clam_plot.rb +4 -3
- data/plot_statistics.gemspec +7 -6
- metadata +8 -7
@@ -1,9 +1,16 @@
|
|
1
|
-
|
1
|
+
# plot_statistics
|
2
2
|
|
3
|
-
|
3
|
+
This is a library originally designed to run Ripley's K analyses on Clam Plots. The input is any number of tab separated files with an x and a y column like so:
|
4
|
+
|
5
|
+
21 23
|
6
|
+
4 45
|
7
|
+
32 99
|
8
|
+
32 32
|
9
|
+
|
10
|
+
The output is a Tab separated file that shows the output of the Ripley's K analysis and then mean and upper and lower limits of a Monte Carlo simulation of the data.
|
11
|
+
|
12
|
+
## Note on Patches/Pull Requests
|
4
13
|
|
5
|
-
== Note on Patches/Pull Requests
|
6
|
-
|
7
14
|
* Fork the project.
|
8
15
|
* Make your feature addition or bug fix.
|
9
16
|
* Add tests for it. This is important so I don't break it in a
|
@@ -12,6 +19,6 @@ Description goes here.
|
|
12
19
|
(if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
|
13
20
|
* Send me a pull request. Bonus points for topic branches.
|
14
21
|
|
15
|
-
|
22
|
+
## Copyright
|
16
23
|
|
17
24
|
Copyright (c) 2010 Asa Wilson. See LICENSE for details.
|
data/Rakefile
CHANGED
@@ -5,8 +5,8 @@ begin
|
|
5
5
|
require 'jeweler'
|
6
6
|
Jeweler::Tasks.new do |gem|
|
7
7
|
gem.name = "plot_statistics"
|
8
|
-
gem.summary = %Q{
|
9
|
-
gem.description = %Q{This is a gem
|
8
|
+
gem.summary = %Q{This is a gem to do a Ripley's K analysis}
|
9
|
+
gem.description = %Q{This is a gem to do a Ripley's K analysis}
|
10
10
|
gem.email = "acvwilson@gmail.com"
|
11
11
|
gem.homepage = "http://github.com/acvwilson/plot_statistics"
|
12
12
|
gem.authors = ["Asa Wilson"]
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/lib/plot_statistics.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
class PlotStatistics
|
2
2
|
require 'ostruct'
|
3
3
|
|
4
|
-
require File.dirname(__FILE__) + '/plot_statistics/
|
4
|
+
require File.dirname(__FILE__) + '/plot_statistics/circle'
|
5
|
+
require File.dirname(__FILE__) + '/plot_statistics/clam'
|
5
6
|
require File.dirname(__FILE__) + '/plot_statistics/clam_plot'
|
6
7
|
require File.dirname(__FILE__) + '/plot_statistics/monte_carlo'
|
7
8
|
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
class PlotStatistics
|
2
|
+
class Circle
|
3
|
+
attr_accessor :clam, :radius, :sample_points, :proportion_inside_plot
|
4
|
+
|
5
|
+
DEGREES = [15, 30, 45, 60, 75, 90, 105, 120, 135, 150, 165, 180, 195, 210, 225, 240, 255, 270, 285, 300, 315, 330, 345, 360]
|
6
|
+
RADIANS_TO_DEGREES = 360.0 / (2.0 * Math::PI)
|
7
|
+
|
8
|
+
def initialize(params={})
|
9
|
+
@clam = params[:clam]
|
10
|
+
@radius = params[:radius]
|
11
|
+
@sample_points = { :out_of_bounds => 0.0, :in_bounds => 0.0 }
|
12
|
+
@proportion_inside_plot = out_of_bounds? ? estimate_proportion_inside_plot : 1.0
|
13
|
+
end
|
14
|
+
|
15
|
+
def create_samples
|
16
|
+
sample_circles = radius * 2
|
17
|
+
sample_radius = 0.5
|
18
|
+
sample_circles.times do
|
19
|
+
DEGREES.each do |degrees|
|
20
|
+
x = clam.x + sample_radius * Math.cos(degrees / RADIANS_TO_DEGREES)
|
21
|
+
y = clam.y + sample_radius * Math.sin(degrees / RADIANS_TO_DEGREES)
|
22
|
+
|
23
|
+
if point_out_of_bounds?(x, y)
|
24
|
+
sample_points[:out_of_bounds] += 1
|
25
|
+
else
|
26
|
+
sample_points[:in_bounds] += 1
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
sample_radius += 0.5
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def estimate_proportion_inside_plot
|
35
|
+
create_samples
|
36
|
+
sample_points[:in_bounds] / (sample_points[:in_bounds] + sample_points[:out_of_bounds])
|
37
|
+
end
|
38
|
+
|
39
|
+
def point_out_of_bounds?(x, y)
|
40
|
+
[x, y].each do |coordinate|
|
41
|
+
return true unless coordinate > 0 && coordinate < 100
|
42
|
+
end
|
43
|
+
false
|
44
|
+
end
|
45
|
+
|
46
|
+
def out_of_bounds?
|
47
|
+
right_out_of_bounds? ||
|
48
|
+
left_out_of_bounds? ||
|
49
|
+
top_out_of_bounds? ||
|
50
|
+
bottom_out_of_bounds?
|
51
|
+
end
|
52
|
+
|
53
|
+
def right_out_of_bounds?
|
54
|
+
clam.x + radius > 100
|
55
|
+
end
|
56
|
+
|
57
|
+
def left_out_of_bounds?
|
58
|
+
clam.x - radius < 0
|
59
|
+
end
|
60
|
+
|
61
|
+
def top_out_of_bounds?
|
62
|
+
clam.y + radius > 100
|
63
|
+
end
|
64
|
+
|
65
|
+
def bottom_out_of_bounds?
|
66
|
+
clam.y - radius < 0
|
67
|
+
end
|
68
|
+
|
69
|
+
|
70
|
+
end
|
71
|
+
end
|
@@ -23,7 +23,6 @@ class PlotStatistics
|
|
23
23
|
|
24
24
|
def setup_clam_distances(clams)
|
25
25
|
clams.each_with_index do |reference_clam, i|
|
26
|
-
# next if (clams.size - 1) < i
|
27
26
|
clams[(i + 1)..-1].each do |other_clam|
|
28
27
|
distance = distance_between_clams(reference_clam, other_clam)
|
29
28
|
reference_clam.distances << distance
|
@@ -38,13 +37,15 @@ class PlotStatistics
|
|
38
37
|
|
39
38
|
def calculate_stats
|
40
39
|
(1..MAX_RADIUS).each do |radius|
|
41
|
-
circle_proportion = 1.0
|
42
40
|
|
43
41
|
sums = clams.inject(0) do |sum, clam|
|
44
42
|
clams_inside_circle = clam.distances.select { |distance| distance <= radius }
|
45
43
|
|
44
|
+
circle_proportion = Circle.new(:clam => clam, :radius => radius).proportion_inside_plot
|
45
|
+
reciprocal_proportion = 1 / circle_proportion
|
46
|
+
|
46
47
|
clams_inside_circle.inject(0) do |sum, inside_clam|
|
47
|
-
(
|
48
|
+
( reciprocal_proportion * 1.0 ) / ( number_of_clams ** 2 )
|
48
49
|
end
|
49
50
|
end
|
50
51
|
|
data/plot_statistics.gemspec
CHANGED
@@ -5,28 +5,29 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{plot_statistics}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.2.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Asa Wilson"]
|
12
|
-
s.date = %q{2010-03-
|
12
|
+
s.date = %q{2010-03-16}
|
13
13
|
s.default_executable = %q{plot_statistics}
|
14
|
-
s.description = %q{This is a gem
|
14
|
+
s.description = %q{This is a gem to do a Ripley's K analysis}
|
15
15
|
s.email = %q{acvwilson@gmail.com}
|
16
16
|
s.executables = ["plot_statistics"]
|
17
17
|
s.extra_rdoc_files = [
|
18
18
|
"LICENSE",
|
19
|
-
"README.
|
19
|
+
"README.markdown"
|
20
20
|
]
|
21
21
|
s.files = [
|
22
22
|
".document",
|
23
23
|
".gitignore",
|
24
24
|
"LICENSE",
|
25
|
-
"README.
|
25
|
+
"README.markdown",
|
26
26
|
"Rakefile",
|
27
27
|
"VERSION",
|
28
28
|
"bin/plot_statistics",
|
29
29
|
"lib/plot_statistics.rb",
|
30
|
+
"lib/plot_statistics/circle.rb",
|
30
31
|
"lib/plot_statistics/clam.rb",
|
31
32
|
"lib/plot_statistics/clam_plot.rb",
|
32
33
|
"lib/plot_statistics/monte_carlo.rb",
|
@@ -39,7 +40,7 @@ Gem::Specification.new do |s|
|
|
39
40
|
s.rdoc_options = ["--charset=UTF-8"]
|
40
41
|
s.require_paths = ["lib"]
|
41
42
|
s.rubygems_version = %q{1.3.6}
|
42
|
-
s.summary = %q{
|
43
|
+
s.summary = %q{This is a gem to do a Ripley's K analysis}
|
43
44
|
s.test_files = [
|
44
45
|
"spec/plot_statistics_spec.rb",
|
45
46
|
"spec/spec_helper.rb"
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
7
|
+
- 2
|
8
8
|
- 0
|
9
|
-
version: 0.
|
9
|
+
version: 0.2.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Asa Wilson
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-03-
|
17
|
+
date: 2010-03-16 00:00:00 -04:00
|
18
18
|
default_executable: plot_statistics
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -31,7 +31,7 @@ dependencies:
|
|
31
31
|
version: 1.2.9
|
32
32
|
type: :development
|
33
33
|
version_requirements: *id001
|
34
|
-
description: This is a gem
|
34
|
+
description: This is a gem to do a Ripley's K analysis
|
35
35
|
email: acvwilson@gmail.com
|
36
36
|
executables:
|
37
37
|
- plot_statistics
|
@@ -39,16 +39,17 @@ extensions: []
|
|
39
39
|
|
40
40
|
extra_rdoc_files:
|
41
41
|
- LICENSE
|
42
|
-
- README.
|
42
|
+
- README.markdown
|
43
43
|
files:
|
44
44
|
- .document
|
45
45
|
- .gitignore
|
46
46
|
- LICENSE
|
47
|
-
- README.
|
47
|
+
- README.markdown
|
48
48
|
- Rakefile
|
49
49
|
- VERSION
|
50
50
|
- bin/plot_statistics
|
51
51
|
- lib/plot_statistics.rb
|
52
|
+
- lib/plot_statistics/circle.rb
|
52
53
|
- lib/plot_statistics/clam.rb
|
53
54
|
- lib/plot_statistics/clam_plot.rb
|
54
55
|
- lib/plot_statistics/monte_carlo.rb
|
@@ -85,7 +86,7 @@ rubyforge_project:
|
|
85
86
|
rubygems_version: 1.3.6
|
86
87
|
signing_key:
|
87
88
|
specification_version: 3
|
88
|
-
summary:
|
89
|
+
summary: This is a gem to do a Ripley's K analysis
|
89
90
|
test_files:
|
90
91
|
- spec/plot_statistics_spec.rb
|
91
92
|
- spec/spec_helper.rb
|