glycobook 0.1.0.alpha.1-java

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 8deff49155aa41f6701ed60204721179bae48616729de4599b3ea48c72e564ba
4
+ data.tar.gz: 0db657834ebb2940b689051a22f0ffa575a79f1e5fccd6f290f5d97355c806f8
5
+ SHA512:
6
+ metadata.gz: 7fb3b16a5beb242c3c9d0052c9d652aa7abce8ed05ef4c113c8e4b6c58f2450adf6f63f7ab90a79f1d518a9ab1db7197d1c51f22a50e9ccd6c3ca083d22e6f82
7
+ data.tar.gz: ccd38b26a7206ca6f4bd6e565212a95c9e37fc97802ef41a967e9c40b7fe2b510806630df06f6b6458c9295a40b32d63ab2088ad3d1c94317d6c57f3e27c6348
data/jar.yml ADDED
@@ -0,0 +1,23 @@
1
+ ---
2
+ eula: false
3
+ list:
4
+ - url: "https://repo1.maven.org/maven2/org/apache/xmlgraphics/batik-all/1.16/batik-all-1.16.jar"
5
+ file: "jar/batik-all.jar"
6
+ - url: "https://raw.githubusercontent.com/glycoinfo/MavenRepository/master/org/eurocarbdb/glycanbuilder/glycanbuilder2/1.23.1/glycanbuilder2-1.23.1.jar"
7
+ file: "jar/glycanbuilder2.jar"
8
+ - url: "https://gitlab.com/glycoinfo/wurcsframework/-/package_files/73054558/download"
9
+ file: "jar/wurcsframework.jar"
10
+ - url: "https://gitlab.com/glycoinfo/wurcsframework/-/package_files/73054558/download"
11
+ file: "jar/wurcsframework-1.2.13.jar"
12
+ - url: "https://gitlab.com/glycoinfo/wurcsframework/-/package_files/70458150/download"
13
+ file: "jar/wurcsframework-1.0.1.jar"
14
+ - url: "https://repo1.maven.org/maven2/org/slf4j/slf4j-api/2.0.7/slf4j-api-2.0.7.jar"
15
+ file: "jar/slf4j-api.jar"
16
+ - url: "https://gitlab.glyco.info/glycosmos/subsumption/subsumption/-/package_files/238/download"
17
+ file: "jar/subsumption.jar"
18
+ - url: "https://gitlab.glyco.info/glycosmos/glytoucangroup/archetype/lib/-/package_files/334/download"
19
+ file: "jar/archetype.jar"
20
+ - url: "https://gitlab.com/glycoinfo/glycanformatconverter/-/package_files/81149971/download"
21
+ file: "jar/glycanformatconverter.jar"
22
+ - url: "https://raw.githubusercontent.com/glycoinfo/MavenRepository/master/org/eurocarbdb/MolecularFramework/1.0.0/MolecularFramework-1.0.0.jar"
23
+ file: "jar/MolecularFramework.jar"
data/lib/bookinit.rb ADDED
@@ -0,0 +1,65 @@
1
+ require 'open-uri'
2
+ require 'net/http'
3
+ require 'fileutils'
4
+ require 'yaml'
5
+
6
+ module BookInit
7
+
8
+ def self.load_settings(file_path)
9
+ downloads = []
10
+
11
+ if File.exist?(file_path)
12
+ downloads = YAML.load_file(file_path)
13
+ else
14
+ unless Dir.exist?(ENV['HOME'] + "/.glycobook")
15
+ Dir.mkdir(ENV['HOME'] + "/.glycobook")
16
+ end
17
+ FileUtils.mv(File.dirname(File.expand_path(__FILE__)) + "/../jar.yml", file_path)
18
+ puts "please open file:~/.glycobook/jar.yml and edit eula"
19
+ exit
20
+ end
21
+
22
+ downloads
23
+ end
24
+
25
+ def self.run
26
+
27
+
28
+ # YAMLファイルからdownloads情報をロード
29
+ downloads = load_settings(ENV['HOME'] + "/.glycobook/jar.yml")
30
+ unless downloads["eula"]
31
+ puts "please open file:~/.glycobook/jar.yml and edit eula"
32
+ exit
33
+ end
34
+
35
+ require 'open-uri'
36
+
37
+ folder_path = File.dirname(__FILE__)+"/jar"
38
+ unless Dir.exist?(folder_path)
39
+ FileUtils.mkdir_p(folder_path)
40
+ puts "Folder created: #{folder_path}"
41
+ else
42
+ puts "Folder already exists: #{folder_path}"
43
+ end
44
+ # ダウンロードを実行する
45
+ downloads["list"].each do |download|
46
+
47
+ uri = URI(download["url"])
48
+ response = Net::HTTP.get_response(uri)
49
+ if response.is_a?(Net::HTTPSuccess)
50
+ begin
51
+ File.open(File.dirname(__FILE__)+"/"+download["file"], 'wb') do |file|
52
+ file.write(response.body)
53
+ puts "Installed " + download["file"]
54
+ end
55
+ rescue StandardError => e
56
+ puts "Failed to save file: #{download["file"]}. Error: #{e.message}"
57
+ end
58
+ else
59
+ puts "Failed to download file: #{download["file"]}"
60
+ end
61
+
62
+ end
63
+ end
64
+ end
65
+
@@ -0,0 +1,19 @@
1
+ require 'java'
2
+
3
+ require_relative '../jar/archetype.jar'
4
+ require_relative '../jar/wurcsframework.jar'
5
+ require_relative '../jar/slf4j-api.jar'
6
+
7
+ java_import 'org.glytoucan.Archetype'
8
+ java_import 'org.glycoinfo.WURCSFramework.wurcs.graph.WURCSGraph'
9
+ java_import 'org.glycoinfo.WURCSFramework.util.WURCSException'
10
+ java_import 'org.slf4j.Logger'
11
+ java_import 'org.slf4j.LoggerFactory'
12
+
13
+ module GlycoBook
14
+ class GlyTouCan
15
+ def archetype(w)
16
+ Hash[Archetype.beBorn(w)]
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,74 @@
1
+ require 'java'
2
+
3
+ require_relative '../jar/glycanbuilder2.jar'
4
+ require_relative '../jar/wurcsframework.jar'
5
+ require_relative '../jar/slf4j-api.jar'
6
+ require_relative "../jar/batik-all.jar"
7
+
8
+ java_import 'java.io.ByteArrayOutputStream'
9
+ java_import 'java.util.Base64'
10
+ java_import 'javax.imageio.ImageIO'
11
+ java_import 'org.eurocarbdb.application.glycanbuilder.BuilderWorkspace'
12
+ java_import 'org.eurocarbdb.application.glycanbuilder.massutil.MassOptions'
13
+ java_import 'org.eurocarbdb.application.glycanbuilder.renderutil.GlycanRendererAWT'
14
+ java_import 'org.eurocarbdb.application.glycanbuilder.util.GraphicOptions'
15
+ java_import 'org.glycoinfo.application.glycanbuilder.converterWURCS2.WURCS2Parser'
16
+
17
+ java_import 'org.eurocarbdb.application.glycanbuilder.renderutil.SVGUtils'
18
+
19
+ java_import 'java.util.LinkedList'
20
+
21
+ module GlycoBook
22
+ class GlycanBuilder
23
+ def generatePng(w,scale)
24
+ naki = "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"
25
+
26
+ workspace = BuilderWorkspace.new(GlycanRendererAWT.new)
27
+ workspace.initData()
28
+ workspace.setNotation(GraphicOptions::NOTATION_SNFG)
29
+ parser= WURCS2Parser.new
30
+ begin
31
+ glycan = parser.readGlycan(w, MassOptions.new)
32
+ image = workspace.getGlycanRenderer().getImage(glycan, true, false, true,scale)
33
+ stream = ByteArrayOutputStream.new
34
+ ImageIO.write(image, "png", stream)
35
+ base = Base64.getEncoder().encodeToString(stream.toByteArray())
36
+ return base
37
+ #return "<img src=\"data:image/png;base64,#{base}\">"
38
+ rescue Exception, StackOverflowError => e
39
+ return naki
40
+ end
41
+
42
+ end
43
+
44
+ def generateSvg(wurcs)
45
+ workspace = BuilderWorkspace.new(GlycanRendererAWT.new)
46
+ workspace.init_data
47
+ workspace.set_notation(GraphicOptions::NOTATION_SNFG)
48
+
49
+ begin
50
+ glycan = WURCS2Parser.new.read_glycan(wurcs, MassOptions.new)
51
+ glycans = LinkedList.new
52
+ glycans.add(glycan)
53
+
54
+ SVGUtils.get_vector_graphics(workspace.get_glycan_renderer, glycans, false, true)
55
+ rescue Exception, StackOverflowError => e
56
+ return "<pre>#{e.to_s}</pre>"
57
+ end
58
+ end
59
+
60
+
61
+
62
+ def showImage(w,format,scale)
63
+ if format == "png"
64
+ base = self.generatePng(w,scale)
65
+ IRuby.html "<img src=\"data:image/png;base64,#{base}\">"
66
+ elsif format == "svg"
67
+ scale = 300 * scale
68
+ IRuby.html self.generateSvg(w).sub(/\<svg /,"<svg width=\"#{scale.to_s}px\"")
69
+ else
70
+ IRuby.html "#{format} is not supported"
71
+ end
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,77 @@
1
+ require 'java'
2
+
3
+ require_relative '../jar/glycanformatconverter.jar'
4
+ require_relative '../jar/wurcsframework.jar'
5
+ require_relative '../jar/slf4j-api.jar'
6
+ require_relative "../jar/MolecularFramework.jar"
7
+
8
+ java_import 'org.glycoinfo.GlycanFormatconverter.io.GlycoCT.WURCSToGlycoCT'
9
+ java_import 'org.glycoinfo.GlycanFormatconverter.io.IUPAC.IUPACStyleDescriptor'
10
+ java_import 'org.glycoinfo.GlycanFormatconverter.io.WURCS.WURCSImporter'
11
+ java_import 'org.glycoinfo.GlycanFormatconverter.util.ExporterEntrance'
12
+
13
+ module GlycoBook
14
+ class GlycanFormatConverter
15
+
16
+ def wurcs2iupac(wurcs,style)
17
+ ret = {}
18
+ ret["input"] = wurcs
19
+
20
+ begin
21
+ wi = WURCSImporter.new
22
+ gc = wi.start(wurcs)
23
+ ee = ExporterEntrance.new(gc)
24
+
25
+ if style == "condensed"
26
+ iupaccondensed = ee.toIUPAC(IUPACStyleDescriptor::CONDENSED)
27
+ ret["IUPACcondensed"] = iupaccondensed
28
+ elsif style == "extended"
29
+ iupacextended = ee.toIUPAC(IUPACStyleDescriptor::GREEK)
30
+ ret["IUPACextended"] = iupacextended
31
+ else
32
+ glycam = ee.toIUPAC(IUPACStyleDescriptor::GLYCANWEB)
33
+ ret["GLYCAM"] = glycam
34
+ end
35
+
36
+ rescue GlyCoExporterException, GlycanException, TrivialNameException, WURCSException => e
37
+ logger.error("{}", e)
38
+ ret["message"] = e.to_s
39
+ rescue Exception => e
40
+ logger.error("{}", e)
41
+ ret["message"] = e.to_s
42
+ end
43
+ return ret
44
+ end
45
+
46
+ def wurcs2glycoct(wurcs)
47
+ ret = {}
48
+ ret["input"] = wurcs
49
+ begin
50
+ converter = WURCSToGlycoCT.new
51
+ converter.start(wurcs)
52
+ message = converter.getErrorMessages
53
+ if message.empty?
54
+ ret["GlycoCT"] = converter.getGlycoCT
55
+ ret["message"] = ""
56
+ else
57
+ ret["GlycoCT"] = ""
58
+ ret["message"] = message
59
+ end
60
+ rescue Exception => e
61
+ ret["GlycoCT"] = ""
62
+ ret["message"] = e.to_s
63
+ end
64
+ return ret
65
+ end
66
+
67
+ def wurcs2glycam(wurcs)
68
+ wi = WURCSImporter.new
69
+ ee = ExporterEntrance.new(wi.start(wurcs))
70
+ begin
71
+ ee.toIUPAC(IUPACStyleDescriptor::GLYCANWEB)
72
+ rescue => e
73
+ e.printStackTrace()
74
+ end
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,73 @@
1
+ require 'java'
2
+
3
+ require_relative '../jar/subsumption.jar'
4
+ require_relative '../jar/wurcsframework.jar'
5
+ require_relative '../jar/slf4j-api.jar'
6
+
7
+ java_import 'org.glycoinfo.subsumption.manipulation.GraphManager'
8
+ java_import 'org.glycoinfo.WURCSFramework.wurcs.graph.WURCSGraph'
9
+ java_import 'org.glycoinfo.subsumption.util.GraphManagerException'
10
+ java_import 'org.glycoinfo.WURCSFramework.util.WURCSException'
11
+ java_import 'org.slf4j.Logger'
12
+ java_import 'org.slf4j.LoggerFactory'
13
+ java_import 'org.glycoinfo.subsumption.generator.Topology'
14
+ module GlycoBook
15
+ class Subsumption
16
+
17
+ def topology(w)
18
+ g = nil
19
+ begin
20
+ g = Topology.beBorn(GraphManager.toGraph(w))
21
+ rescue GraphManagerException => e
22
+ e.printStackTrace()
23
+ rescue WURCSException => e
24
+ e.printStackTrace()
25
+ end
26
+ kotae = GraphManager.toWURCS(g)
27
+ return kotae
28
+ end
29
+
30
+ java_import 'org.glycoinfo.subsumption.generator.MonosaccharideCompositionWithoutLinkage'
31
+ def monosaccharideCompositionWithoutLinkage(w)
32
+ g = nil
33
+ begin
34
+ g = MonosaccharideCompositionWithoutLinkage.beBorn(GraphManager.toGraph(w))
35
+ return GraphManager.toWURCS(g)
36
+ rescue WURCSException, GraphManagerException => e
37
+ puts e.message
38
+ end
39
+ end
40
+
41
+ java_import 'org.glycoinfo.subsumption.generator.CompositionWithLinkage'
42
+ def compositionWithLinkage(w) #出来てる
43
+ g = CompositionWithLinkage.beBorn(GraphManager.toGraph(w))
44
+ return GraphManager.toWURCS(g)
45
+ end
46
+
47
+ java_import 'org.glycoinfo.subsumption.generator.BaseCompositionWithLinkage'
48
+ def baseCompositionWithLinkage(w) #出来てる
49
+ g = nil
50
+ begin
51
+ g = BaseCompositionWithLinkage.beBorn(GraphManager.toGraph(w))
52
+ return GraphManager.toWURCS(g)
53
+ rescue WURCSException => e
54
+ puts e.message
55
+ rescue GraphManagerException => e
56
+ puts e.message
57
+ end
58
+ end
59
+
60
+ java_import 'org.glycoinfo.subsumption.generator.BaseComposition'
61
+ def baseComposition(w)
62
+ g = nil
63
+ begin
64
+ g = BaseComposition.beBorn(GraphManager.toGraph(w))
65
+ return GraphManager.toWURCS(g)
66
+ rescue WURCSException => e
67
+ puts e.message
68
+ rescue GraphManagerException => e
69
+ puts e.message
70
+ end
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,22 @@
1
+ # lib/my_gem.rb
2
+ require 'java'
3
+ require_relative '../jar/slf4j-api.jar'
4
+ module GlycoBook
5
+ class WurcsFrameWork
6
+ require_relative '../jar/wurcsframework.jar'
7
+ java_import 'org.glycoinfo.WURCSFramework.util.validation.WURCSValidator'
8
+ java_import 'org.slf4j.Logger'
9
+ def validator(w)
10
+ validator = WURCSValidator.new
11
+ validator.start(w)
12
+ reports = {}
13
+ reports["VALIDATOR"] = ["WURCSFramework-1.2.13"]
14
+ reports["WARNING"] = validator.getReport().hasWarning()
15
+ reports["ERROR"] = validator.getReport().hasError()
16
+ reports["UNVERIFIABLE"] = validator.getReport().hasUnverifiable()
17
+ return {"message" => reports,
18
+ "StandardWURCS" => validator.getReport().standard_string(),
19
+ "RESULTS" => validator.getReport().getResults() }
20
+ end
21
+ end
22
+ end
data/lib/glycobook.rb ADDED
@@ -0,0 +1,12 @@
1
+ module GlycoBook
2
+
3
+ end
4
+ require 'glycobook/glycan_builder'
5
+ require 'glycobook/glycan_format_converter'
6
+ require 'glycobook/gly_tou_can'
7
+ require 'glycobook/subsumption'
8
+ require 'glycobook/wurcs_frame_work'
9
+ require 'open-uri'
10
+ require 'net/http'
11
+ require 'fileutils'
12
+ require 'yaml'
@@ -0,0 +1,56 @@
1
+ require 'java'
2
+ require 'json'
3
+ require 'pathname'
4
+ require 'colorize'
5
+
6
+ require_relative 'jar/slf4j-api.jar'
7
+
8
+ java_import 'java.net.URL'
9
+ java_import 'java.net.URLClassLoader'
10
+ java_import 'org.slf4j.Logger'
11
+
12
+ class WurcsVerify
13
+ def initialize
14
+ @wfw_latest_loader = self.create_custom_classloader("jar/wurcsframework-1.2.13.jar")
15
+ @wfw_101_loader = self.create_custom_classloader("jar/wurcsframework-1.0.1.jar")
16
+ @validator_latest = java.lang.Class.forName("org.glycoinfo.WURCSFramework.util.validation.WURCSValidator",true,@wfw_latest_loader)
17
+ @validator_101 = java.lang.Class.forName("org.glycoinfo.WURCSFramework.util.validation.WURCSValidator", true, @wfw_101_loader)
18
+ end
19
+
20
+ def create_custom_classloader(jar_path)
21
+ absolute_path = File.dirname(File.expand_path(__FILE__)) + "/" + jar_path
22
+ url = URL.new("file:#{absolute_path}")
23
+ URLClassLoader.newInstance([url].to_java(URL), java.lang.Thread.currentThread.getContextClassLoader)
24
+ end
25
+
26
+ def validatorVerify(w)
27
+ v_latest = @validator_latest.new_instance
28
+ v_latest.start(w)
29
+
30
+ v_101 = @validator_101.new_instance
31
+ v_101.start(w)
32
+
33
+ ret = {"1.2.13" => self.dovalidator(v_latest),
34
+ "1.0.1" => self.dovalidator101(v_101) }
35
+ return ret
36
+ end
37
+
38
+ def dovalidator(validator)
39
+ reports = { "VALIDATOR" => ["WURCSFramework-1.2.13"],
40
+ "WARNING" => validator.getReport().hasWarning(),
41
+ "ERROR" => validator.getReport().hasError(),
42
+ "UNVERIFIABLE" => validator.getReport().hasUnverifiable() }
43
+ return {"message" => reports,
44
+ "StandardWURCS" => validator.getReport().standard_string(),
45
+ "RESULTS" => validator.getReport().getResults() }
46
+ end
47
+ def dovalidator101(validator)
48
+ reports = { "VALIDATOR" => ["WURCSFramework-1.0.1"],
49
+ "WARNING" => validator.getReport().hasWarning(),
50
+ "ERROR" => validator.getReport().hasError(),
51
+ "UNVERIFIABLE" => false }
52
+ return {"message" => reports,
53
+ "StandardWURCS" => validator.getReport().standard_string(),
54
+ "RESULTS" => validator.getReport().getResults() }
55
+ end
56
+ end
metadata ADDED
@@ -0,0 +1,80 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: glycobook
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0.alpha.1
5
+ platform: java
6
+ authors:
7
+ - Akihiro Fujita
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2023-07-31 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: 0.0.2
19
+ name: java
20
+ prerelease: false
21
+ type: :runtime
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.0.2
27
+ - !ruby/object:Gem::Dependency
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: 0.8.0
33
+ name: colorize
34
+ prerelease: false
35
+ type: :runtime
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.8.0
41
+ description: ''
42
+ email:
43
+ - akihirof0005@gmail.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - jar.yml
49
+ - lib/bookinit.rb
50
+ - lib/glycobook.rb
51
+ - lib/glycobook/gly_tou_can.rb
52
+ - lib/glycobook/glycan_builder.rb
53
+ - lib/glycobook/glycan_format_converter.rb
54
+ - lib/glycobook/subsumption.rb
55
+ - lib/glycobook/wurcs_frame_work.rb
56
+ - lib/wurcsverify.rb
57
+ homepage: https://gitlab.com/glycobook/gems/glycobook/
58
+ licenses:
59
+ - LGPL-3.0
60
+ metadata: {}
61
+ post_install_message:
62
+ rdoc_options: []
63
+ require_paths:
64
+ - lib
65
+ required_ruby_version: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ required_rubygems_version: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">"
73
+ - !ruby/object:Gem::Version
74
+ version: 1.3.1
75
+ requirements: []
76
+ rubygems_version: 3.3.25
77
+ signing_key:
78
+ specification_version: 4
79
+ summary: glycobook Gem
80
+ test_files: []