mizlab 0.1.0 → 0.1.6

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 894a3675ba2feea2a673e352e900a2000805b0fc6d44b413e912fc17a65d4b09
4
- data.tar.gz: 26b8765e6ef006ff1bcf12dc9d93a8293a4c52b9b8cf6c84093a22ca94009dd1
3
+ metadata.gz: '0997e1a56ba6b17aa4eedc2fd89e84462e3ac2d3f51c1c251221a0fc7613ff66'
4
+ data.tar.gz: aaac55320663e3b8fef03c5518d73156ea3a1880736936c8debb1a6eb9d60935
5
5
  SHA512:
6
- metadata.gz: 4d9284a55408dd8bfd122313c47c5a762a5c41ab419c12e619e5b68938d578846a4c265e3c9b0e619d5b4dec388453077aa982db92d00ce998f663b793544f10
7
- data.tar.gz: 81024dcb6542d7b269ee0ef0339fade2d3f4d8fa5467b0edf31f4c17c9ddd2dd9b3587a1b6b457700910624728197a5c14ca429dcc4fd7dec6f03d9d9fc555a1
6
+ metadata.gz: a5e073bceea54fd25ad99e80c35052732c265a6e827b8e23bcf4f2bc21f3b03095243d5e9b718bf6b521ae8097f5059b72a15cc32ec67e7bfe534e3b8c7d35bc
7
+ data.tar.gz: 61f1545fd3218ce1a74b030a6a64718964a8129f30587deaebeb038cadfe82991b9d7356751129ba92df751278193d5a1cf92c147790e8a88008bb285fa665c8
@@ -18,4 +18,4 @@ jobs:
18
18
  # Optional, will publish to RubyGems if specified
19
19
  api_key: ${{secrets.RUBYGEMS_API_KEY}}
20
20
  # Optional, will publish to GitHub Packages if specified
21
- github_token: ${{secrets.GITHUB_TOKEN}}
21
+ # github_token: ${{secrets.GITHUB_TOKEN}}
data/Gemfile CHANGED
@@ -5,10 +5,7 @@ source "https://rubygems.org"
5
5
  # Specify your gem's dependencies in mizlab.gemspec
6
6
  gemspec
7
7
 
8
- gem "rake", "~> 13.0"
9
-
10
- gem "minitest", "~> 5.0"
11
-
12
- gem "yard", "~> 0.9"
13
-
14
- gem "bio"
8
+ # gem "rake", "~> 13.0"
9
+ # gem "minitest", "~> 5.0"
10
+ # gem "yard", "~> 0.9"
11
+ # gem "bio", "~> 2.0.0"
data/README.md CHANGED
@@ -1,10 +1,10 @@
1
1
  [![Test](https://github.com/MizLab/Mizlab-ruby/actions/workflows/minitest.yml/badge.svg)](https://github.com/MizLab/Mizlab-ruby/actions/workflows/minitest.yml)
2
2
  [![Build page](https://github.com/MizLab/Mizlab-ruby/actions/workflows/yardoc.yml/badge.svg)](https://github.com/MizLab/Mizlab-ruby/actions/workflows/yardoc.yml)
3
+ [![Gem Version](https://badge.fury.io/rb/mizlab.svg)](https://badge.fury.io/rb/mizlab)
3
4
 
4
5
  # Mizlab-ruby
5
6
 
6
- This gem is for easy handling of the processes used in our labolatory.
7
-
7
+ This gem is for easy handling of the processes used in our laboratory.
8
8
 
9
9
  ## Installation
10
10
 
@@ -14,7 +14,7 @@ Install it yourself as:
14
14
  gem install mizlab
15
15
  ```
16
16
 
17
- or add below to your application's Gemfile:
17
+ Or add below to your application's Gemfile:
18
18
 
19
19
  ```ruby
20
20
  gem 'mizlab'
@@ -38,7 +38,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
38
38
 
39
39
  ## Contributing
40
40
 
41
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/mizlab.
41
+ Bug reports and pull requests are welcome on GitHub at https://github.com/MizLab/Mizlab-ruby
42
42
 
43
43
  ## License
44
44
 
data/Rakefile CHANGED
@@ -16,4 +16,24 @@ YARD::Rake::YardocTask.new do |t|
16
16
  t.stats_options = ["--list-undoc"]
17
17
  end
18
18
 
19
+ desc "Version up"
20
+ task :versionup do
21
+ version = ""
22
+ File.open("./lib/mizlab/version.rb") do |f|
23
+ version = f.read[(/(\d+\.\d+\.\d+)/)]
24
+ end
25
+ ver, minor_ver, hotfix = version.split(".")
26
+ hotfix = hotfix.to_i + 1
27
+ new_version = "#{ver}.#{minor_ver}.#{hotfix}"
28
+ cmd = "sed -E -i 's/[0-9]+\\.[0-9]+\\.[0-9]+/#{new_version}/' ./lib/mizlab/version.rb"
29
+ puts(cmd)
30
+ system(cmd)
31
+ cmd = "git add ./lib/mizlab/version.rb && git commit -m ':rocket: Version up'"
32
+ puts(cmd)
33
+ system(cmd)
34
+ cmd = "git tag v#{new_version}"
35
+ puts(cmd)
36
+ system(cmd)
37
+ end
38
+
19
39
  task default: :test
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Mizlab
4
- VERSION = "0.1.0"
4
+ VERSION = "0.1.6"
5
5
  end
data/lib/mizlab.rb CHANGED
@@ -3,28 +3,68 @@
3
3
  require_relative "mizlab/version"
4
4
  require "set"
5
5
  require "bio"
6
+ require "stringio"
7
+ require "rexml/document"
6
8
 
7
9
  module Mizlab
8
10
  class << self
9
- # Fetch data via genbank
10
- # @param [String] accession Accession number Like "NC_012920".
11
- # @param [Bool] is_protein wheather the accession is protein. Default to true.
12
- # @return [Bio::GenBank] GenBank object.
13
- def getobj(accession, is_protein = false)
14
- ret = is_protein ? fetch_protein(accession) : fetch_nucleotide(accession)
15
- parse(ret) do |o|
16
- return o
11
+ # Get entry as String. You can also give a block.
12
+ # @param [String/Array] accessions Accession numbers like ["NC_012920", ...].
13
+ # @return [String] Entry as string.
14
+ # @yield [String] Entry as string.
15
+ def getent(accessions, is_protein = false)
16
+ accessions = accessions.is_a?(String) ? [accessions] : accessions
17
+ accessions.each do |acc|
18
+ ret = is_protein ? fetch_protein(acc) : fetch_nucleotide(acc)
19
+ if block_given?
20
+ yield ret
21
+ else
22
+ return ret
23
+ end
24
+ sleep(0.37) # Using 0.333... seconds, sometimes hit the NCBI rate limit
17
25
  end
18
26
  end
19
27
 
20
- # Fetch multiple data via genbank
21
- # @param [Array] accessions Array of accession string.
28
+ # Fetch data via genbank. You can also give a block.
29
+ # @param [String/Array] accessions Accession numbers Like ["NC_012920", ...].
22
30
  # @param [Bool] is_protein wheather the accession is protein. Default to true.
31
+ # @return [Bio::GenBank] GenBank object.
23
32
  # @yield [Bio::GenBank] GenBank object.
24
- def getobjs(accessions, is_protein = false)
25
- ret = is_protein ? fetch_protein(accessions) : fetch_nucleotide(accessions)
26
- parse(ret) do |o|
27
- yield o
33
+ def getobj(accessions, is_protein = false)
34
+ getent(accessions, is_protein) do |entry|
35
+ parse(entry) do |o|
36
+ if block_given?
37
+ yield o
38
+ else
39
+ return o
40
+ end
41
+ end
42
+ end
43
+ end
44
+
45
+ # Save object.
46
+ # @param [String] filename Filepath from executed source.
47
+ # @param [Bio::DB] obj Object which inherits from `Bio::DB`.
48
+ # @return [nil]
49
+ def savefile(filename, obj)
50
+ if File.exists?(filename)
51
+ yes = Set.new(["N", "n", "no"])
52
+ no = Set.new(["Y", "y", "yes"])
53
+ loop do
54
+ print("#{filename} exists already. Overwrite? [y/n] ")
55
+ inputed = gets.rstrip
56
+ if yes.include?(inputed)
57
+ return
58
+ elsif no.include?(inputed)
59
+ break
60
+ end
61
+ puts("You should input 'y' or 'n'")
62
+ end
63
+ end
64
+ File.open(filename, "w") do |f|
65
+ obj.tags.each do |t|
66
+ f.puts(obj.get(t))
67
+ end
28
68
  end
29
69
  end
30
70
 
@@ -99,6 +139,23 @@ module Mizlab
99
139
  return local_pattern_list
100
140
  end
101
141
 
142
+ # Fetch Taxonomy information from Taxonomy ID. can be give block too.
143
+ # @param [String/Integer] taxonid Taxonomy ID, or Array of its.
144
+ # @return [Hash] Taxonomy informations.
145
+ # @yield [Hash] Taxonomy informations.
146
+ def fetch_taxon(taxonid)
147
+ taxonid = taxonid.is_a?(Array) ? taxonid : [taxonid]
148
+ taxonid.each do |id|
149
+ obj = Bio::NCBI::REST::EFetch.taxonomy(id, "xml")
150
+ hashed = xml_to_hash(REXML::Document.new(obj).root)
151
+ if block_given?
152
+ yield hashed[:TaxaSet][:Taxon][:LineageEx][:Taxon]
153
+ else
154
+ return hashed[:TaxaSet][:Taxon][:LineageEx][:Taxon]
155
+ end
156
+ end
157
+ end
158
+
102
159
  private
103
160
 
104
161
  def fetch_protein(accession)
@@ -106,7 +163,7 @@ module Mizlab
106
163
  end
107
164
 
108
165
  def fetch_nucleotide(accession)
109
- return Bio::NCBI::REST::EFetch.protein(accession)
166
+ return Bio::NCBI::REST::EFetch.nucleotide(accession)
110
167
  end
111
168
 
112
169
  # get patterns from filled pixs.
@@ -200,14 +257,25 @@ module Mizlab
200
257
  # @param [String] entries Entries as string
201
258
  # @yield [Object] Object that match entry format.
202
259
  def parse(entries)
203
- tmp_file_name = ".mizlab_fetch_tmpfile"
204
- File.open(tmp_file_name, "w") do |f|
205
- f.puts entries
206
- end
207
- Bio::FlatFile.auto(tmp_file_name).each_entry do |e|
260
+ Bio::FlatFile.auto(StringIO.new(entries)).each_entry do |e|
208
261
  yield e
209
262
  end
210
- File.delete(tmp_file_name)
263
+ end
264
+
265
+ # Convert XML to Hash.
266
+ # @param [REXML::Document] element XML object.
267
+ # @return [Hash] Hash that converted from xml.
268
+ def xml_to_hash(element)
269
+ value = (if element.has_elements?
270
+ children = {}
271
+ element.each_element do |e|
272
+ children.merge!(xml_to_hash(e)) { |k, v1, v2| v1.is_a?(Array) ? v1 << v2 : [v1, v2] }
273
+ end
274
+ children
275
+ else
276
+ element.text
277
+ end)
278
+ return { element.name.to_sym => value }
211
279
  end
212
280
  end
213
281
  end
data/mizlab.gemspec CHANGED
@@ -29,8 +29,14 @@ Gem::Specification.new do |spec|
29
29
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
30
30
  spec.require_paths = ["lib"]
31
31
 
32
- # Uncomment to register a new dependency of your gem
33
- # spec.add_dependency "example-gem", "~> 1.0"
32
+ # Dependency
33
+ spec.add_dependency "bio", "~> 2.0.0"
34
+ spec.add_dependency "rexml", ">= 0"
35
+
36
+ # Dependency (for development)
37
+ spec.add_development_dependency "rake", "~> 13.0"
38
+ spec.add_development_dependency "yard", "~> 0.9"
39
+ spec.add_development_dependency "minitest", "~> 5.0"
34
40
 
35
41
  # For more information and examples about making a new gem, checkout our
36
42
  # guide at: https://bundler.io/guides/creating_gem.html
metadata CHANGED
@@ -1,15 +1,85 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mizlab
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Omochice
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-10-22 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2021-10-28 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bio
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 2.0.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 2.0.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: rexml
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '13.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '13.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: yard
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.9'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.9'
69
+ - !ruby/object:Gem::Dependency
70
+ name: minitest
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '5.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '5.0'
13
83
  description: The tools for our laboratory
14
84
  email:
15
85
  - mochice.mls.ntl@gmail.com