radiation 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +14 -6
- data/.gitignore +17 -17
- data/.rspec +1 -1
- data/CHANGELOG.md +42 -12
- data/Gemfile +6 -5
- data/LICENSE.txt +22 -22
- data/README.md +52 -45
- data/Rakefile +6 -6
- data/lib/radiation/cli.rb +15 -4
- data/lib/radiation/resource/iaea.rb +7 -3
- data/lib/radiation/resource/nucleideorg.rb +7 -3
- data/lib/radiation/version.rb +1 -1
- data/radiation.gemspec +32 -32
- data/samples/B0-Ra226.xml +1305 -2921
- data/samples/B0.cal +2 -0
- data/samples/hdtv-peakfind-result.jpg +0 -0
- data/spec/radiation_spec.rb +7 -0
- data/spec/spec_helper.rb +4 -1
- metadata +23 -21
checksums.yaml
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
ZmQ1ZGI5OTEzZDA5M2E3ODRhNWU4YzI4OTM1NzEyNDk5ODcxYWVlNw==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
ZTUyYzhjMzhjZGI1MmRlOTljZTRkMDBkZmFjMmM5ZmQ1NWRlYzJjMg==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
YzQwZjVkZGExMmY4MGYyZDM4MGYzYzY5MTUwMDZmYzFjMGQ1MDVlZjRiY2Vk
|
10
|
+
NjQyMjI1MDEzZjYzYTUyZGM0Mzk0ZDI5ZjNlMDVjNjZjZGU3NjJlNTAzZTMz
|
11
|
+
OGIyNjljMTY5MjZjNjE5M2JjMDNhNDNkMDMyNDQ4YjI0YzJkYTM=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
OGY4NmY5OGRmODQ4MDFjMjkzYjExNDdjZGUxYTBlNTI4OTgwMTM1N2JlNThk
|
14
|
+
YWY4MmM0M2Q4MTJjMDAyODZlOTI1ZGExNWRhM2I3Y2FlNjUyMGNkNDc1Y2U1
|
15
|
+
NDM2ZDMzNDRmZGRmMDVkOGI2N2U2NzNkMjFkZGZlZWExOTM1ZGM=
|
data/.gitignore
CHANGED
@@ -1,17 +1,17 @@
|
|
1
|
-
*.gem
|
2
|
-
*.rbc
|
3
|
-
.bundle
|
4
|
-
.config
|
5
|
-
.yardoc
|
6
|
-
Gemfile.lock
|
7
|
-
InstalledFiles
|
8
|
-
_yardoc
|
9
|
-
coverage
|
10
|
-
doc/
|
11
|
-
lib/bundler/man
|
12
|
-
pkg
|
13
|
-
rdoc
|
14
|
-
spec/reports
|
15
|
-
test/tmp
|
16
|
-
test/version_tmp
|
17
|
-
tmp
|
1
|
+
*.gem
|
2
|
+
*.rbc
|
3
|
+
.bundle
|
4
|
+
.config
|
5
|
+
.yardoc
|
6
|
+
Gemfile.lock
|
7
|
+
InstalledFiles
|
8
|
+
_yardoc
|
9
|
+
coverage
|
10
|
+
doc/
|
11
|
+
lib/bundler/man
|
12
|
+
pkg
|
13
|
+
rdoc
|
14
|
+
spec/reports
|
15
|
+
test/tmp
|
16
|
+
test/version_tmp
|
17
|
+
tmp
|
data/.rspec
CHANGED
@@ -1 +1 @@
|
|
1
|
-
#--color
|
1
|
+
#--color
|
data/CHANGELOG.md
CHANGED
@@ -1,12 +1,42 @@
|
|
1
|
-
## v0.
|
2
|
-
|
3
|
-
* Added
|
4
|
-
*
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
1
|
+
## v0.1.4
|
2
|
+
|
3
|
+
* Added list to resources and CLI
|
4
|
+
* Example for 30 seconds en
|
5
|
+
* Changed number formatting in CLI, see plusminus nio_write
|
6
|
+
|
7
|
+
## v0.1.3
|
8
|
+
|
9
|
+
* Removed internal resource in favor of IAEA Data
|
10
|
+
|
11
|
+
## v0.1.2
|
12
|
+
|
13
|
+
* Fixing bug with percentage based intensities
|
14
|
+
* Gnuplot fitting experiments
|
15
|
+
|
16
|
+
## v0.1.1
|
17
|
+
|
18
|
+
* Weighted fits
|
19
|
+
* Added IAEA recommended data
|
20
|
+
|
21
|
+
## v0.1.0
|
22
|
+
|
23
|
+
* Added initial efficiency calculations
|
24
|
+
* Modified class structure of resources.
|
25
|
+
* Fixed rspec: Replaced round() with be_within
|
26
|
+
|
27
|
+
## v0.0.4
|
28
|
+
|
29
|
+
* Added CLI
|
30
|
+
|
31
|
+
## v0.0.3
|
32
|
+
|
33
|
+
* Added basic parsing for hdtv xml files
|
34
|
+
* Changed dependency for linefit
|
35
|
+
|
36
|
+
## v0.0.2
|
37
|
+
|
38
|
+
* Added spectrum class with energy calibration options
|
39
|
+
|
40
|
+
## v0.0.1
|
41
|
+
|
42
|
+
* initial release
|
data/Gemfile
CHANGED
@@ -1,5 +1,6 @@
|
|
1
|
-
source 'https://rubygems.org'
|
2
|
-
|
3
|
-
|
4
|
-
#
|
5
|
-
gemspec
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
gem 'coveralls', require: false
|
4
|
+
#gem "linefit", git: "https://github.com/janmayer/linefit.git"
|
5
|
+
# Specify your gem's dependencies in radiation.gemspec
|
6
|
+
gemspec
|
data/LICENSE.txt
CHANGED
@@ -1,22 +1,22 @@
|
|
1
|
-
Copyright (c) 2013 Jan Mayer
|
2
|
-
|
3
|
-
MIT License
|
4
|
-
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
-
a copy of this software and associated documentation files (the
|
7
|
-
"Software"), to deal in the Software without restriction, including
|
8
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
-
permit persons to whom the Software is furnished to do so, subject to
|
11
|
-
the following conditions:
|
12
|
-
|
13
|
-
The above copyright notice and this permission notice shall be
|
14
|
-
included in all copies or substantial portions of the Software.
|
15
|
-
|
16
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
-
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
-
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
-
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
1
|
+
Copyright (c) 2013 Jan Mayer
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
CHANGED
@@ -1,45 +1,52 @@
|
|
1
|
-
# Radiation
|
2
|
-
[![Gem Version](https://badge.fury.io/rb/radiation.png)](http://badge.fury.io/rb/radiation)
|
3
|
-
[![Build Status](https://travis-ci.org/janmayer/radiation.png?branch=master)](https://travis-ci.org/janmayer/radiation)
|
4
|
-
[![Code Climate](https://codeclimate.com/github/janmayer/radiation.png)](https://codeclimate.com/github/janmayer/radiation)
|
5
|
-
|
6
|
-
This gem provides easy access to energies and intensities from the decay of radioactive nuclei.
|
7
|
-
Currently two data sources are accessible:
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
$
|
1
|
+
# Radiation
|
2
|
+
[![Gem Version](https://badge.fury.io/rb/radiation.png)](http://badge.fury.io/rb/radiation)
|
3
|
+
[![Build Status](https://travis-ci.org/janmayer/radiation.png?branch=master)](https://travis-ci.org/janmayer/radiation)
|
4
|
+
[![Code Climate](https://codeclimate.com/github/janmayer/radiation.png)](https://codeclimate.com/github/janmayer/radiation)
|
5
|
+
|
6
|
+
This gem provides easy access to energies and intensities from the decay of radioactive nuclei.
|
7
|
+
Currently two data sources are accessible:
|
8
|
+
|
9
|
+
* IAEA [xgamma](http://www-nds.iaea.org/xgamma_standards/) recommended values (default)
|
10
|
+
* Laboratoire National Henri Becquerel [DDEP](http://www.nucleide.org/DDEP_WG/DDEPdata.htm) recommended data
|
11
|
+
|
12
|
+
Note that IAEA data is compiled and filtered with energy and efficiency calibration in mind, while DDEP data ist focused on completeness.
|
13
|
+
|
14
|
+
|
15
|
+
## Example Usage
|
16
|
+
|
17
|
+
The radiation gem can be use in two ways:
|
18
|
+
|
19
|
+
### Command line interface
|
20
|
+
|
21
|
+
$ radiation
|
22
|
+
$ radiation source Na-22
|
23
|
+
=> E_ɣ ΔE_ɣ I_ɣ ΔI_ɣ
|
24
|
+
=> 511.0 0.0 1.798 2E-03
|
25
|
+
=> 1274.537 0.003 0.9994 1E-04
|
26
|
+
|
27
|
+
Refer to the CLI for more options.
|
28
|
+
|
29
|
+
### In your ruby files:
|
30
|
+
|
31
|
+
require "radiation"
|
32
|
+
Radiation::Source.new(nuclide: "Ra-226").energies.collect{|e| e.value}
|
33
|
+
|
34
|
+
See files in `./samples/`.
|
35
|
+
|
36
|
+
|
37
|
+
## Installation
|
38
|
+
|
39
|
+
Requirement is a (local) ruby with rubygems. Using rvm is recommended
|
40
|
+
|
41
|
+
### Installing ruby locally on a debian based system
|
42
|
+
|
43
|
+
$ \curl -L https://get.rvm.io | bash -s stable
|
44
|
+
$ source ~/.bashrc
|
45
|
+
$ rvm mount -r http://rvm.io/binaries/debian/7.0/x86_64/ruby-2.0.0-p247.tar.bz2 --verify-downloads 1
|
46
|
+
$ rvm use --default 2.0.0
|
47
|
+
|
48
|
+
### Installing the gem
|
49
|
+
|
50
|
+
$ gem install radiation
|
51
|
+
|
52
|
+
Or use bundler.
|
data/Rakefile
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
require "bundler/gem_tasks"
|
2
|
-
require 'rspec/core/rake_task'
|
3
|
-
|
4
|
-
RSpec::Core::RakeTask.new(:spec)
|
5
|
-
|
6
|
-
task default: :spec
|
1
|
+
require "bundler/gem_tasks"
|
2
|
+
require 'rspec/core/rake_task'
|
3
|
+
|
4
|
+
RSpec::Core::RakeTask.new(:spec)
|
5
|
+
|
6
|
+
task default: :spec
|
data/lib/radiation/cli.rb
CHANGED
@@ -15,8 +15,19 @@ class CLI < Thor
|
|
15
15
|
desc "source NUCLIDE", "decay radiation data"
|
16
16
|
def source(nuclide)
|
17
17
|
resource = options[:resource] ? options[:resource] : "iaea"
|
18
|
-
puts ["E_ɣ", "ΔE_ɣ", "I_ɣ", "ΔI_ɣ"].join("\t")
|
19
|
-
puts Radiation::Source.new(nuclide: nuclide, resource: resource).intensities.collect{|l| [l[:energy].
|
18
|
+
puts ["#E_ɣ", "ΔE_ɣ", "I_ɣ", "ΔI_ɣ"].join("\t")
|
19
|
+
puts Radiation::Source.new(nuclide: nuclide, resource: resource).intensities.collect{|l| [l[:energy].nio_write, l[:energy].delta, l[:intensity].nio_write, "%.0E" % l[:intensity].delta].join("\t") }
|
20
|
+
end
|
21
|
+
|
22
|
+
option :resource
|
23
|
+
desc "list", "List available nuclei"
|
24
|
+
def list
|
25
|
+
resource = options[:resource] ? options[:resource] : "iaea"
|
26
|
+
puts case resource
|
27
|
+
when "iaea" then Radiation::Resource::IAEA.new.list
|
28
|
+
when "nucleide.org" then Radiation::Resource::Nucleideorg.new.list
|
29
|
+
else raise "Unknown Datasource"
|
30
|
+
end
|
20
31
|
end
|
21
32
|
|
22
33
|
desc "resources", "List available data resources"
|
@@ -54,9 +65,9 @@ class CLI < Thor
|
|
54
65
|
mini = options[:mini] ? options[:mini].to_f : 0.003
|
55
66
|
source = Radiation::Source.new(nuclide: nuclide, resource: resource)
|
56
67
|
spectrum = Radiation::Spectrum.new(source: source ).parse_hdtv(file)
|
57
|
-
puts ["E_ɣ", "I_ɣ", "ΔI_ɣ", "e", "Δe"].join("\t")
|
68
|
+
puts ["#E_ɣ", "ΔE_ɣ", "I_ɣ", "ΔI_ɣ", "e", "Δe"].join("\t")
|
58
69
|
spectrum.calibrate.efficiencies.peaks.select{|p| p[:intensity] > mini}.sort_by{|k| k[:energy]}.each do |p|
|
59
|
-
puts [ p[:energy].
|
70
|
+
puts [ p[:energy].nio_write, p[:energy].delta, p[:intensity].nio_write, p[:intensity].delta, p[:efficiency].nio_write, "%.0E" % p[:efficiency].delta ].join("\t")
|
60
71
|
end
|
61
72
|
end
|
62
73
|
|
@@ -10,7 +10,7 @@ module Radiation::Resource
|
|
10
10
|
def fetch(nuclide)
|
11
11
|
@nuclide = nuclide
|
12
12
|
begin
|
13
|
-
@data = load_data
|
13
|
+
@data = load_data.select{|n| n[:nuclide] == nuclide}.first
|
14
14
|
# FIXME: Better conversion from x, x_uncertainty to pm
|
15
15
|
@data[:transitions].collect!{|t| { :energy => t[:energy].to_f.pm(t[:energy_uncertainty].to_f), :intensity => t[:intensity].to_f.pm(t[:intensity_uncertainty].to_f)} }
|
16
16
|
rescue
|
@@ -19,9 +19,13 @@ module Radiation::Resource
|
|
19
19
|
self
|
20
20
|
end
|
21
21
|
|
22
|
+
def list
|
23
|
+
load_data.collect{|n| n[:nuclide]}
|
24
|
+
end
|
25
|
+
|
22
26
|
private
|
23
|
-
def load_data
|
24
|
-
JSON.parse( IO.read("#{PATH}/#{FILENAME}"), {:symbolize_names => true} )
|
27
|
+
def load_data
|
28
|
+
JSON.parse( IO.read("#{PATH}/#{FILENAME}"), {:symbolize_names => true} )
|
25
29
|
end
|
26
30
|
|
27
31
|
end
|
@@ -7,7 +7,8 @@ require 'tmpdir'
|
|
7
7
|
|
8
8
|
module Radiation::Resource
|
9
9
|
class Nucleideorg < Base
|
10
|
-
|
10
|
+
OpenURI::Cache.cache_path = "#{Dir.tmpdir}/radiation/"
|
11
|
+
|
11
12
|
def fetch(nuclide)
|
12
13
|
@nuclide = nuclide
|
13
14
|
@nuclide = "Ra-226D" if @nuclide == "Ra-226" #Ra-226 in equilibrium with daughters
|
@@ -16,7 +17,6 @@ module Radiation::Resource
|
|
16
17
|
|
17
18
|
@data[:reference] = "A. Pluquet et al. (2013). Recommended data for #{@nuclide} by the Decay Data Evaluation Project working group. Decay Data Evaluation Project, Laboratoire National Henri Becquerel, C.E. Saclay. Retrieved from http://www.nucleide.org/DDEP_WG/Nuclides/#{@nuclide}.lara.txt"
|
18
19
|
|
19
|
-
OpenURI::Cache.cache_path = "#{Dir.tmpdir}/radiation/"
|
20
20
|
uri = open("http://www.nucleide.org/DDEP_WG/Nuclides/#{@nuclide}.lara.txt").readlines
|
21
21
|
start = 0
|
22
22
|
uri.each_with_index do |line, lineno|
|
@@ -40,5 +40,9 @@ module Radiation::Resource
|
|
40
40
|
self
|
41
41
|
end
|
42
42
|
|
43
|
+
def list
|
44
|
+
open("http://www.nucleide.org/DDEP_WG/DDEPdata.htm").read.scan(/Nuclides\/(.*).lara.txt/).flatten
|
45
|
+
end
|
46
|
+
|
43
47
|
end
|
44
|
-
end
|
48
|
+
end
|
data/lib/radiation/version.rb
CHANGED
data/radiation.gemspec
CHANGED
@@ -1,32 +1,32 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require 'radiation/version'
|
5
|
-
|
6
|
-
Gem::Specification.new do |spec|
|
7
|
-
spec.name = "radiation"
|
8
|
-
spec.version = Radiation::VERSION
|
9
|
-
spec.authors = ["Jan Mayer"]
|
10
|
-
spec.email = ["jan.mayer@ikp.uni-koeln.de"]
|
11
|
-
spec.description = %q{Decay Radiation}
|
12
|
-
spec.summary = %q{This gem provides easy access to energies and intensities from the decay of radioactive nuclei}
|
13
|
-
spec.homepage = "https://github.com/janmayer/radiation"
|
14
|
-
spec.license = "MIT"
|
15
|
-
|
16
|
-
spec.files = `git ls-files`.split($/)
|
17
|
-
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
-
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
-
spec.require_paths = ["lib"]
|
20
|
-
|
21
|
-
spec.add_dependency "plusminus"
|
22
|
-
spec.add_dependency "open-uri-cached"
|
23
|
-
spec.add_dependency "combinatorics"
|
24
|
-
spec.add_dependency "linefit"
|
25
|
-
spec.add_dependency "xml-simple"
|
26
|
-
spec.add_dependency "thor"
|
27
|
-
|
28
|
-
|
29
|
-
spec.add_development_dependency "bundler", "~> 1.3"
|
30
|
-
spec.add_development_dependency "rake"
|
31
|
-
spec.add_development_dependency "rspec"
|
32
|
-
end
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'radiation/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "radiation"
|
8
|
+
spec.version = Radiation::VERSION
|
9
|
+
spec.authors = ["Jan Mayer"]
|
10
|
+
spec.email = ["jan.mayer@ikp.uni-koeln.de"]
|
11
|
+
spec.description = %q{Decay Radiation}
|
12
|
+
spec.summary = %q{This gem provides easy access to energies and intensities from the decay of radioactive nuclei}
|
13
|
+
spec.homepage = "https://github.com/janmayer/radiation"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_dependency "plusminus"
|
22
|
+
spec.add_dependency "open-uri-cached"
|
23
|
+
spec.add_dependency "combinatorics"
|
24
|
+
spec.add_dependency "linefit"
|
25
|
+
spec.add_dependency "xml-simple"
|
26
|
+
spec.add_dependency "thor"
|
27
|
+
|
28
|
+
|
29
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
30
|
+
spec.add_development_dependency "rake"
|
31
|
+
spec.add_development_dependency "rspec"
|
32
|
+
end
|