glycobook 0.1.0.alpha.1-java

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 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: []