glydevkit 0.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: f35fa57e6677d427e287dd2a019ab2894b6a6d65671c065f5457eebfd7eb8d28
4
+ data.tar.gz: dc0234344840c9d9970a9b9c90ec595982536252bd486dd6abc338ab8c20dddf
5
+ SHA512:
6
+ metadata.gz: 179c8854710c3459b13259e026c2a49e06a7b67ed0649ec38ac9e3e111e73aa59b8cab39646df21dcd44d714ef810c80a961e740e0e406ff2e4b146e57b065ec
7
+ data.tar.gz: 8af420af02a32a1c1dc32de58fba405efe972150876eec903f2849c30bb6d65c4dccc2950e400d86a6ec1dd16f2a69e9c2a3241019b45931c3a62056f0930ab3
data/jar.yml ADDED
@@ -0,0 +1,97 @@
1
+ ---
2
+ libraries:
3
+ - name: batik-all
4
+ info: "https://xmlgraphics.apache.org/batik/download.html"
5
+ version: 1.16
6
+ url: "https://repo1.maven.org/maven2/org/apache/xmlgraphics/batik-all/1.16/batik-all-1.16.jar"
7
+ file: "jar/batik-all.jar"
8
+
9
+ - name: glycanbuilder2
10
+ info: "https://gitlab.com/glycoinfo/glycanbuilder2"
11
+ version: 1.23.1
12
+ url: "https://raw.githubusercontent.com/glycoinfo/MavenRepository/master/org/eurocarbdb/glycanbuilder/glycanbuilder2/1.23.1/glycanbuilder2-1.23.1.jar"
13
+ file: "jar/glycanbuilder2.jar"
14
+
15
+ - name: wurcsframework
16
+ info: "https://gitlab.com/glycoinfo/wurcsframework"
17
+ version: 1.2.14
18
+ url: "https://gitlab.com/glycoinfo/wurcsframework/-/package_files/87428121/download"
19
+ file: "jar/wurcsframework.jar"
20
+
21
+ - name: wurcsframework-1.2.14
22
+ info: "https://gitlab.com/glycoinfo/wurcsframework"
23
+ version: 1.2.14
24
+ url: "https://gitlab.com/glycoinfo/wurcsframework/-/package_files/87428121/download"
25
+ file: "jar/wurcsframework-1.2.14.jar"
26
+
27
+ - name: wurcsframework-1.2.15
28
+ info: "https://gitlab.com/glycoinfo/wurcsframework"
29
+ version: 1.2.15
30
+ url: "https://gitlab.com/glycoinfo/wurcsframework/-/package_files/110116881/download"
31
+ file: "jar/wurcsframework-1.2.15.jar"
32
+
33
+ - name: wurcsframework-1.2.16
34
+ info: "https://gitlab.com/glycoinfo/wurcsframework"
35
+ version: 1.2.16
36
+ url: "https://gitlab.com/glycoinfo/wurcsframework/-/package_files/119628420/download"
37
+ file: "jar/wurcsframework-1.2.16.jar"
38
+
39
+ - name: wurcsframework-1.3.0
40
+ info: "https://gitlab.com/glycoinfo/wurcsframework"
41
+ version: 1.3.0
42
+ url: "https://gitlab.com/glycoinfo/wurcsframework/-/package_files/125589992/download"
43
+ file: "jar/wurcsframework-1.3.0.jar"
44
+
45
+ - name: wurcsframework-1.3.1
46
+ info: "https://gitlab.com/glycoinfo/wurcsframework"
47
+ version: 1.3.1
48
+ url: "https://gitlab.com/glycoinfo/wurcsframework/-/package_files/127116856/download"
49
+ file: "jar/wurcsframework-1.3.1.jar"
50
+
51
+ - name: slf4j-api
52
+ info: "https://www.slf4j.org/index.html"
53
+ version: 2.0.9
54
+ url: https://repo1.maven.org/maven2/org/slf4j/slf4j-api/2.0.9/slf4j-api-2.0.9.jar
55
+ file: "jar/slf4j-api.jar"
56
+
57
+ - name: slf4j-simple
58
+ info: "https://www.slf4j.org/index.html"
59
+ version: 2.0.9
60
+ url: "https://repo1.maven.org/maven2/org/slf4j/slf4j-simple/2.0.9/slf4j-simple-2.0.9.jar"
61
+ file: "jar/slf4j-simple.jar"
62
+
63
+ - name: subsumption
64
+ info: "https://gitlab.glyco.info/glycosmos/subsumption/subsumption"
65
+ version: 0.10.0
66
+ url: "https://gitlab.glyco.info/glycosmos/subsumption/subsumption/-/package_files/758/download"
67
+ file: "jar/subsumption.jar"
68
+
69
+ - name: archetype
70
+ info: "https://gitlab.glyco.info/glycosmos/glytoucangroup/archetype/lib"
71
+ version: 0.1.4
72
+ url: "https://gitlab.glyco.info/glycosmos/glytoucangroup/archetype/lib/-/package_files/489/download"
73
+ file: "jar/archetype.jar"
74
+
75
+ - name: glycanformatconverter
76
+ info: "https://gitlab.com/glycoinfo/glycanformatconverter"
77
+ version: 2.10.0
78
+ url: "https://gitlab.com/glycoinfo/glycanformatconverter/-/package_files/81149971/download"
79
+ file: "jar/glycanformatconverter.jar"
80
+
81
+ - name: MolecularFramework
82
+ info: "https://github.com/glycoinfo/MolecularFramework"
83
+ version: 1.0.0
84
+ url: "https://raw.githubusercontent.com/glycoinfo/MavenRepository/master/org/eurocarbdb/MolecularFramework/1.0.0/MolecularFramework-1.0.0.jar"
85
+ file: "jar/MolecularFramework.jar"
86
+
87
+ - name: TheChemistryDevelopmentKit
88
+ info: https://github.com/cdk/cdk
89
+ version: 2.9
90
+ url: https://github.com/cdk/cdk/releases/download/cdk-2.9/cdk-2.9.jar
91
+ file: jar/cdk.jar
92
+
93
+ - name: MolWURCS
94
+ info: https://gitlab.com/glycoinfo/molwurcs
95
+ version: 0.10.2
96
+ url: https://gitlab.com/glycoinfo/molwurcs/-/package_files/89942780/download
97
+ file: jar/MolWURCS.jar
@@ -0,0 +1,31 @@
1
+ require 'java'
2
+ require 'logger'
3
+ require_relative '../jar/slf4j-api.jar'
4
+ require_relative '../jar/slf4j-simple.jar'
5
+
6
+ java_import 'org.slf4j.LoggerFactory'
7
+
8
+ class JRubySLF4JLogger < Logger
9
+ def initialize(name)
10
+ super(STDOUT) # STDOUT is dummy
11
+ @java_logger = LoggerFactory.getLogger(name)
12
+ end
13
+ def add(severity, message, progname, &block)
14
+
15
+ message = block.call if block
16
+ message = message.to_s
17
+
18
+ case severity
19
+ when 0 # Logger::DEBUG
20
+ @java_logger.info(message)
21
+ when 1 # Logger::INFO
22
+ @java_logger.info(message)
23
+ when 2 # Logger::WARN
24
+ @java_logger.info(message)
25
+ when 3, 4# Logger::ERROR, Logger::FATAL
26
+ @java_logger.error(message)
27
+ else
28
+ @java_logger.info(message)
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,16 @@
1
+ require 'java'
2
+
3
+ require_relative '../jar/archetype.jar'
4
+ require_relative '../jar/wurcsframework.jar'
5
+
6
+ java_import 'org.glytoucan.Archetype'
7
+ java_import 'org.glycoinfo.WURCSFramework.wurcs.graph.WURCSGraph'
8
+ java_import 'org.glycoinfo.WURCSFramework.util.WURCSException'
9
+
10
+ module GlyDevKit
11
+ class GlyTouCan
12
+ def archetype(w)
13
+ Hash[Archetype.beBorn(w)]
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,73 @@
1
+ require 'java'
2
+
3
+ require_relative '../jar/glycanbuilder2.jar'
4
+ require_relative '../jar/wurcsframework.jar'
5
+ require_relative "../jar/batik-all.jar"
6
+
7
+ java_import 'java.io.ByteArrayOutputStream'
8
+ java_import 'java.util.Base64'
9
+ java_import 'javax.imageio.ImageIO'
10
+ java_import 'org.eurocarbdb.application.glycanbuilder.BuilderWorkspace'
11
+ java_import 'org.eurocarbdb.application.glycanbuilder.massutil.MassOptions'
12
+ java_import 'org.eurocarbdb.application.glycanbuilder.renderutil.GlycanRendererAWT'
13
+ java_import 'org.eurocarbdb.application.glycanbuilder.util.GraphicOptions'
14
+ java_import 'org.glycoinfo.application.glycanbuilder.converterWURCS2.WURCS2Parser'
15
+
16
+ java_import 'org.eurocarbdb.application.glycanbuilder.renderutil.SVGUtils'
17
+
18
+ java_import 'java.util.LinkedList'
19
+
20
+ module GlyDevKit
21
+ class GlycanBuilder
22
+ def generatePng(w,scale)
23
+ naki = "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"
24
+
25
+ workspace = BuilderWorkspace.new(GlycanRendererAWT.new)
26
+ workspace.initData()
27
+ workspace.setNotation(GraphicOptions::NOTATION_SNFG)
28
+ parser= WURCS2Parser.new
29
+ begin
30
+ glycan = parser.readGlycan(w, MassOptions.new)
31
+ image = workspace.getGlycanRenderer().getImage(glycan, true, false, true,scale)
32
+ stream = ByteArrayOutputStream.new
33
+ ImageIO.write(image, "png", stream)
34
+ base = Base64.getEncoder().encodeToString(stream.toByteArray())
35
+ return base
36
+ #return "<img src=\"data:image/png;base64,#{base}\">"
37
+ rescue Exception, StackOverflowError => e
38
+ return naki
39
+ end
40
+
41
+ end
42
+
43
+ def generateSvg(wurcs)
44
+ workspace = BuilderWorkspace.new(GlycanRendererAWT.new)
45
+ workspace.init_data
46
+ workspace.set_notation(GraphicOptions::NOTATION_SNFG)
47
+
48
+ begin
49
+ glycan = WURCS2Parser.new.read_glycan(wurcs, MassOptions.new)
50
+ glycans = LinkedList.new
51
+ glycans.add(glycan)
52
+
53
+ SVGUtils.get_vector_graphics(workspace.get_glycan_renderer, glycans, false, true)
54
+ rescue Exception, StackOverflowError => e
55
+ return "<pre>#{e.to_s}</pre>"
56
+ end
57
+ end
58
+
59
+
60
+
61
+ def showImage(w,format,scale)
62
+ if format == "png"
63
+ base = self.generatePng(w,scale)
64
+ IRuby.html "<img src=\"data:image/png;base64,#{base}\">"
65
+ elsif format == "svg"
66
+ scale = 300 * scale
67
+ IRuby.html self.generateSvg(w).sub(/\<svg /,"<svg width=\"#{scale.to_s}px\"")
68
+ else
69
+ IRuby.html "#{format} is not supported"
70
+ end
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,76 @@
1
+ require 'java'
2
+
3
+ require_relative '../jar/glycanformatconverter.jar'
4
+ require_relative '../jar/wurcsframework.jar'
5
+ require_relative "../jar/MolecularFramework.jar"
6
+
7
+ java_import 'org.glycoinfo.GlycanFormatconverter.io.GlycoCT.WURCSToGlycoCT'
8
+ java_import 'org.glycoinfo.GlycanFormatconverter.io.IUPAC.IUPACStyleDescriptor'
9
+ java_import 'org.glycoinfo.GlycanFormatconverter.io.WURCS.WURCSImporter'
10
+ java_import 'org.glycoinfo.GlycanFormatconverter.util.ExporterEntrance'
11
+
12
+ module GlyDevKit
13
+ class GlycanFormatConverter
14
+
15
+ def wurcs2iupac(wurcs,style)
16
+ ret = {}
17
+ ret["input"] = wurcs
18
+
19
+ begin
20
+ wi = WURCSImporter.new
21
+ gc = wi.start(wurcs)
22
+ ee = ExporterEntrance.new(gc)
23
+
24
+ if style == "condensed"
25
+ iupaccondensed = ee.toIUPAC(IUPACStyleDescriptor::CONDENSED)
26
+ ret["IUPACcondensed"] = iupaccondensed
27
+ elsif style == "extended"
28
+ iupacextended = ee.toIUPAC(IUPACStyleDescriptor::GREEK)
29
+ ret["IUPACextended"] = iupacextended
30
+ else
31
+ glycam = ee.toIUPAC(IUPACStyleDescriptor::GLYCANWEB)
32
+ ret["GLYCAM"] = glycam
33
+ end
34
+
35
+ rescue GlyCoExporterException, GlycanException, TrivialNameException, WURCSException => e
36
+ logger.error("{}", e)
37
+ ret["message"] = e.to_s
38
+ rescue Exception => e
39
+ logger.error("{}", e)
40
+ ret["message"] = e.to_s
41
+ end
42
+ return ret
43
+ end
44
+
45
+ def wurcs2glycoct(wurcs)
46
+ ret = {}
47
+ ret["input"] = wurcs
48
+ begin
49
+ converter = WURCSToGlycoCT.new
50
+ converter.start(wurcs)
51
+ message = converter.getErrorMessages
52
+ if message.empty?
53
+ ret["GlycoCT"] = converter.getGlycoCT
54
+ ret["message"] = ""
55
+ else
56
+ ret["GlycoCT"] = ""
57
+ ret["message"] = message
58
+ end
59
+ rescue Exception => e
60
+ ret["GlycoCT"] = ""
61
+ ret["message"] = e.to_s
62
+ end
63
+ return ret
64
+ end
65
+
66
+ def wurcs2glycam(wurcs)
67
+ wi = WURCSImporter.new
68
+ ee = ExporterEntrance.new(wi.start(wurcs))
69
+ begin
70
+ ee.toIUPAC(IUPACStyleDescriptor::GLYCANWEB)
71
+ rescue => e
72
+ e.printStackTrace()
73
+ end
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,106 @@
1
+ require "java"
2
+
3
+ require_relative '../jar/cdk.jar'
4
+ require_relative '../jar/MolWURCS.jar'
5
+
6
+ java_import 'org.glycoinfo.MolWURCS.io.formats.ChemFormatType'
7
+ java_import 'org.openscience.cdk.exception.CDKException'
8
+ java_import 'org.openscience.cdk.interfaces.IAtomContainerSet'
9
+ java_import 'org.openscience.cdk.io.IChemObjectWriter'
10
+ java_import 'org.openscience.cdk.io.ISimpleChemObjectReader'
11
+ java_import 'org.openscience.cdk.silent.AtomContainerSet'
12
+ java_import 'org.openscience.cdk.DefaultChemObjectBuilder'
13
+ java_import 'org.openscience.cdk.io.SDFWriter'
14
+ java_import 'org.openscience.cdk.smiles.SmiFlavor'
15
+ java_import 'org.openscience.cdk.smiles.SmilesGenerator'
16
+ java_import 'org.openscience.cdk.silent.SilentChemObjectBuilder'
17
+ java_import 'java.nio.file.Files'
18
+ java_import 'java.nio.file.Paths'
19
+ java_import 'java.lang.System'
20
+ java_import 'java.util.ArrayList'
21
+ java_import 'java.io.StringWriter'
22
+ java_import 'java.io.IOException'
23
+ java_import 'java.io.StringReader'
24
+
25
+ module GlyDevKit
26
+ class MolWURCS
27
+ # @param [String] w String of WURCS
28
+ # @param [String] format: smiles or sdf
29
+ # @return [String] string with specified molecular descriptor
30
+ def wurcs2mol(w,format)
31
+ mols = read_wurcs(w)
32
+ return {"flag": false,"wurcs": w, "message": "WURCS strings that could not be parsed to the atomic level"} if mols.nil?
33
+
34
+ case format
35
+ when "sdf"
36
+ {"wurcs": w}.merge(export_to_sdf(mols))
37
+ when "smiles"
38
+ {"wurcs": w}.merge(export_to_smiles(mols))
39
+ else
40
+ {"flag": false,"wurcs": w, "#{format}": "", "message": "Undefined format"}
41
+ end
42
+ end
43
+
44
+ private
45
+
46
+ # Reads WURCS and returns a molecule set
47
+ def read_wurcs(w)
48
+ begin
49
+ reader = ChemFormatType::WURCS.createReader
50
+ reader.setReader(StringReader.new(w))
51
+ return nil unless reader.accepts(AtomContainerSet.java_class)
52
+ mols = reader.read(AtomContainerSet.new)
53
+ reader.close
54
+ mols
55
+ rescue CDKException, IOException => e
56
+ e.printStackTrace
57
+ nil
58
+ end
59
+ end
60
+
61
+ # Exports molecule set to SDF format
62
+ def export_to_sdf(mols)
63
+ string_writer = StringWriter.new
64
+ begin
65
+ writer = SDFWriter.new(string_writer)
66
+ write_molecule_set(mols, writer)
67
+ {"sdf": string_writer.to_s}
68
+ rescue CDKException, IOException => e
69
+ e.printStackTrace
70
+ {"flag": false,"sdf": "", "message": e.message}
71
+ end
72
+ end
73
+
74
+ # Exports molecule set to SMILES format
75
+ def export_to_smiles(mols)
76
+ smiles_gen = SmilesGenerator.new(SmiFlavor::Isomeric)
77
+ string_writer = StringWriter.new
78
+ begin
79
+ mols.atomContainers.each do |mol|
80
+ smiles = smiles_gen.create(mol)
81
+ string_writer.write(smiles)
82
+ end
83
+ smiles = string_writer.toString
84
+ if (smiles == "")
85
+ {"flag": false,"smiles": smiles, "message": "the case of successfully converted to empty characters in the library"}
86
+ else
87
+ {"flag": true,"smiles": smiles}
88
+ end
89
+ rescue CDKException, IOException => e
90
+ e.printStackTrace
91
+ {"flag": false,"smiles": "", "message": e.message}
92
+ end
93
+ end
94
+
95
+ # Writes molecule set using provided writer
96
+ def write_molecule_set(mols, writer)
97
+ if writer.accepts(mols.java_class)
98
+ writer.write(mols)
99
+ elsif writer.accepts(mols.get_atom_container(0).java_class)
100
+ writer.write(mols.get_atom_container(0))
101
+ end
102
+ writer.close
103
+ end
104
+
105
+ end
106
+ end
@@ -0,0 +1,71 @@
1
+ require 'java'
2
+
3
+ require_relative '../jar/subsumption.jar'
4
+ require_relative '../jar/wurcsframework.jar'
5
+
6
+ java_import 'org.glycoinfo.subsumption.manipulation.GraphManager'
7
+ java_import 'org.glycoinfo.WURCSFramework.wurcs.graph.WURCSGraph'
8
+ java_import 'org.glycoinfo.subsumption.util.GraphManagerException'
9
+ java_import 'org.glycoinfo.WURCSFramework.util.WURCSException'
10
+ java_import 'org.glycoinfo.subsumption.generator.Topology'
11
+
12
+ module GlyDevKit
13
+ class Subsumption
14
+
15
+ def topology(w)
16
+ g = nil
17
+ begin
18
+ g = Topology.beBorn(GraphManager.toGraph(w))
19
+ rescue GraphManagerException => e
20
+ e.printStackTrace()
21
+ rescue WURCSException => e
22
+ e.printStackTrace()
23
+ end
24
+ kotae = GraphManager.toWURCS(g)
25
+ return kotae
26
+ end
27
+
28
+ java_import 'org.glycoinfo.subsumption.generator.MonosaccharideCompositionWithoutLinkage'
29
+ def monosaccharideCompositionWithoutLinkage(w)
30
+ g = nil
31
+ begin
32
+ g = MonosaccharideCompositionWithoutLinkage.beBorn(GraphManager.toGraph(w))
33
+ return GraphManager.toWURCS(g)
34
+ rescue WURCSException, GraphManagerException => e
35
+ puts e.message
36
+ end
37
+ end
38
+
39
+ java_import 'org.glycoinfo.subsumption.generator.CompositionWithLinkage'
40
+ def compositionWithLinkage(w) #出来てる
41
+ g = CompositionWithLinkage.beBorn(GraphManager.toGraph(w))
42
+ return GraphManager.toWURCS(g)
43
+ end
44
+
45
+ java_import 'org.glycoinfo.subsumption.generator.BaseCompositionWithLinkage'
46
+ def baseCompositionWithLinkage(w) #出来てる
47
+ g = nil
48
+ begin
49
+ g = BaseCompositionWithLinkage.beBorn(GraphManager.toGraph(w))
50
+ return GraphManager.toWURCS(g)
51
+ rescue WURCSException => e
52
+ puts e.message
53
+ rescue GraphManagerException => e
54
+ puts e.message
55
+ end
56
+ end
57
+
58
+ java_import 'org.glycoinfo.subsumption.generator.BaseCompositionWithoutLinkage'
59
+ def baseComposition(w)
60
+ g = nil
61
+ begin
62
+ g = BaseComposition.beBorn(GraphManager.toGraph(w))
63
+ return GraphManager.toWURCS(g)
64
+ rescue WURCSException => e
65
+ puts e.message
66
+ rescue GraphManagerException => e
67
+ puts e.message
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,76 @@
1
+ require 'java'
2
+
3
+ module GlyDevKit
4
+
5
+ class WurcsFrameWork
6
+
7
+ require_relative '../jar/wurcsframework.jar'
8
+ java_import 'org.glycoinfo.WURCSFramework.util.validation.WURCSValidator'
9
+
10
+ def validator(w)
11
+ validator = WURCSValidator.new
12
+ validator.start(w)
13
+ reports = {}
14
+ reports["VALIDATOR"] = ["WURCSFramework-1.2.14"]
15
+ reports["WARNING"] = validator.getReport().hasWarning()
16
+ reports["ERROR"] = validator.getReport().hasError()
17
+ reports["UNVERIFIABLE"] = validator.getReport().hasUnverifiable()
18
+ return {"message" => reports,
19
+ "StandardWURCS" => validator.getReport().standard_string(),
20
+ "RESULTS" => validator.getReport().getResults() }
21
+ end
22
+
23
+ def to_graph(w)
24
+ g = nil
25
+ wgn = WURCSGraphNormalizer.new
26
+ begin
27
+ factory = WURCSFactory.new(w)
28
+ g = factory.getGraph
29
+ wgn.start(g)
30
+ rescue WURCSException => e
31
+ e.printStackTrace
32
+ end
33
+ return g
34
+ end
35
+
36
+ def get_anomeric_status(a_o_backbone)
37
+ a_o_backbone.get_backbone_carbons.each do |t_o_bc|
38
+ return "archetype_anomer" if t_o_bc.get_descriptor.get_char.chr == 'u'
39
+ return "archetype_anomer" if t_o_bc.get_descriptor.get_char.chr == 'U'
40
+ end
41
+ return "anomer_unknown" if a_o_backbone.get_anomeric_symbol.chr == 'x'
42
+ return "anomer_alpha" if a_o_backbone.get_anomeric_symbol.chr == 'a'
43
+ return "anomer_beta" if a_o_backbone.get_anomeric_symbol.chr == 'b'
44
+ return "openchain" if a_o_backbone.get_anomeric_position != 0
45
+ return nil
46
+ end
47
+
48
+ def get_ring_type(a_o_backbone)
49
+ a_o_backbone.get_backbone_carbons.each do |t_o_bc|
50
+ return "archetype_ringtype" if t_o_bc.get_descriptor.get_char.chr == 'u'
51
+ return "archetype_ringtype" if t_o_bc.get_descriptor.get_char.chr == 'U'
52
+ end
53
+ for edge in a_o_backbone.get_edges
54
+ if edge.is_anomeric && edge.get_modification.is_ring
55
+ ring_start = edge.get_linkages[0].get_backbone_position
56
+ ring_end = edge.get_modification.get_edges[1].get_linkages[0].get_backbone_position
57
+ if (ring_end - ring_start) == 6
58
+ return "octanose"
59
+ elsif (ring_end - ring_start) == 5
60
+ return "septanose"
61
+ elsif (ring_end - ring_start) == 4
62
+ return "pyranose"
63
+ elsif (ring_end - ring_start) == 3
64
+ return "furanose"
65
+ elsif (ring_end - ring_start) == 2
66
+ return "oxetose"
67
+ elsif (ring_end - ring_start) == 1
68
+ return "oxirose"
69
+ end
70
+ end
71
+ end
72
+ return nil
73
+ end
74
+
75
+ end
76
+ end
data/lib/glydevkit.rb ADDED
@@ -0,0 +1,14 @@
1
+ module GlyDevKit
2
+
3
+ end
4
+ require 'glydevkit/Loggerinit'
5
+ require 'glydevkit/glycan_builder'
6
+ require 'glydevkit/glycan_format_converter'
7
+ require 'glydevkit/gly_tou_can'
8
+ require 'glydevkit/subsumption'
9
+ require 'glydevkit/wurcs_frame_work'
10
+ require 'glydevkit/mol_wurcs'
11
+ require 'open-uri'
12
+ require 'net/http'
13
+ require 'fileutils'
14
+ require 'yaml'
data/lib/init.rb ADDED
@@ -0,0 +1,92 @@
1
+ require 'open-uri'
2
+ require 'net/http'
3
+ require 'fileutils'
4
+ require 'yaml'
5
+
6
+ module Init
7
+ def self.load_settings(file_path, flag)
8
+ downloads = []
9
+
10
+ unless Dir.exist?(ENV['HOME'] + "/.glycobook")
11
+ Dir.mkdir(ENV['HOME'] + "/.glycobook")
12
+ end
13
+
14
+ folder_path = File.dirname(__FILE__) + "/jar"
15
+ unless Dir.exist?(folder_path)
16
+ FileUtils.mkdir_p(folder_path)
17
+ end
18
+
19
+ if File.exist?(file_path)
20
+ downloads = YAML.load_file(file_path)
21
+ else
22
+ FileUtils.cp(File.dirname(File.expand_path(__FILE__)) + "/../jar.yml", file_path)
23
+ end
24
+
25
+ if flag
26
+ FileUtils.cp(File.dirname(File.expand_path(__FILE__)) + "/../jar.yml", file_path)
27
+ downloads = YAML.load_file(file_path)
28
+ end
29
+
30
+ downloads
31
+ end
32
+
33
+ def self.run
34
+ puts <<-EOT
35
+ Would you like to resolve Java dependencies? (No/yes)
36
+ EOT
37
+
38
+ case gets.chomp.downcase
39
+ when "yes", "y"
40
+ flag = true
41
+ when "no", "n"
42
+ exit 1
43
+ else
44
+ puts "Invalid input. Exiting..."
45
+ exit 1
46
+ end
47
+
48
+ puts <<-EOT
49
+ Set recommended Java library version? (No/yes)
50
+ EOT
51
+
52
+ case gets.chomp.downcase
53
+ when "yes", "y"
54
+ flag = true
55
+ end
56
+
57
+ downloads = load_settings(ENV['HOME'] + "/.glycobook/jar.yml", flag)
58
+
59
+ # ダウンロードを実行する
60
+ downloads["libraries"].each do |download|
61
+ url = URI(download["url"])
62
+ http = Net::HTTP.new(url.host, url.port)
63
+ http.use_ssl = (url.scheme == 'https')
64
+
65
+ request = Net::HTTP::Get.new(url.request_uri)
66
+ response = http.request(request)
67
+
68
+ if response.code.to_i == 302
69
+ new_location = response['Location']
70
+ url = URI.parse(new_location)
71
+ http = Net::HTTP.new(url.host, url.port)
72
+ http.use_ssl = (url.scheme == 'https')
73
+ request = Net::HTTP::Get.new(url.request_uri)
74
+ response = http.request(request)
75
+ end
76
+
77
+ if response.code.to_i == 200
78
+ begin
79
+ File.open(File.dirname(__FILE__) + "/" + download["file"], 'wb') do |file|
80
+ file.write(response.body)
81
+ puts "Installed " + download["file"]
82
+ end
83
+ rescue StandardError => e
84
+ puts "Failed to save file: #{download["file"]}. Error: #{e.message}"
85
+ end
86
+ else
87
+ puts "Failed to download file: #{download["file"]}"
88
+ end
89
+ end
90
+ end
91
+ end
92
+
@@ -0,0 +1,94 @@
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
+
14
+ @@gtc_version = "1.2.14"
15
+ @@v1215 = "1.2.15"
16
+ @@v1216 = "1.2.16"
17
+ @@v130 = "1.3.0"
18
+ @@v131 = "1.3.1"
19
+
20
+ def initialize
21
+ @wfw_glytoucan_loader = self.create_custom_classloader("jar/wurcsframework-" + @@gtc_version + ".jar")
22
+ @wfw_v131_loader = self.create_custom_classloader("jar/wurcsframework-" + @@v131 + ".jar")
23
+ @wfw_v130_loader = self.create_custom_classloader("jar/wurcsframework-" + @@v130 + ".jar")
24
+ @wfw_v1216_loader = self.create_custom_classloader("jar/wurcsframework-" + @@v1216 + ".jar")
25
+ @wfw_v1215_loader = self.create_custom_classloader("jar/wurcsframework-" + @@v1215 + ".jar")
26
+ @validator_glytoucan = java.lang.Class.forName("org.glycoinfo.WURCSFramework.util.validation.WURCSValidator",true,@wfw_glytoucan_loader)
27
+ @validator_v131 = java.lang.Class.forName("org.glycoinfo.WURCSFramework.util.validation.WURCSValidator", true, @wfw_v131_loader)
28
+ @validator_v130 = java.lang.Class.forName("org.glycoinfo.WURCSFramework.util.validation.WURCSValidator", true, @wfw_v130_loader)
29
+ @validator_v1216 = java.lang.Class.forName("org.glycoinfo.WURCSFramework.util.validation.WURCSValidator", true, @wfw_v1216_loader)
30
+ @validator_v1215 = java.lang.Class.forName("org.glycoinfo.WURCSFramework.util.validation.WURCSValidator", true, @wfw_v1215_loader)
31
+ end
32
+
33
+ def create_custom_classloader(jar_path)
34
+ absolute_path = File.dirname(File.expand_path(__FILE__)) + "/" + jar_path
35
+ url = URL.new("file:#{absolute_path}")
36
+ URLClassLoader.newInstance([url].to_java(URL), java.lang.Thread.currentThread.getContextClassLoader)
37
+ end
38
+
39
+ def validatorVerify(w,style)
40
+ v_glytoucan = @validator_glytoucan.new_instance
41
+ v_glytoucan.start(w)
42
+
43
+ v_131 = @validator_v131.new_instance
44
+ v_131.start(w)
45
+
46
+ v_130 = @validator_v130.new_instance
47
+ v_130.start(w)
48
+
49
+ v_1216 = @validator_v1216.new_instance
50
+ v_1216.start(w)
51
+
52
+ v_1215 = @validator_v1215.new_instance
53
+ v_1215.start(w)
54
+
55
+ if (style == "v3")
56
+ ret = {@@gtc_version => self.dovalidatorv3(v_glytoucan,@@gtc_version),
57
+ @@v131 => self.dovalidatorv3(v_131, @@v131),
58
+ @@v130 => self.dovalidatorv3(v_130, @@v130),
59
+ @@v1215 => self.dovalidatorv3(v_1215, @@v1215),
60
+ @@v1216 => self.dovalidatorv3(v_1216, @@v1216)
61
+ }
62
+ elsif (style == "wfw")
63
+ ret = {@@gtc_version => self.dovalidator(v_glytoucan,@@gtc_version),
64
+ @@v131 => self.dovalidator(v_131, @@v131),
65
+ @@v130 => self.dovalidator(v_130, @@v130),
66
+ @@v1215 => self.dovalidator(v_1215, @@v1215),
67
+ @@v1216 => self.dovalidator(v_1216, @@v1216)
68
+ }
69
+ else
70
+ pp "strange second paramerters"
71
+ end
72
+ return ret
73
+ end
74
+
75
+ def dovalidatorv3(validator,version)
76
+ if validator.getReport().respond_to?(:isStandardized)
77
+ flag = validator.getReport().isStandardized()
78
+ else
79
+ flag = "undef"
80
+ end
81
+ reports = { "VALIDATOR" => ["WURCSFramework-" + version],
82
+ "WARNING" => validator.getReport().hasWarning(),
83
+ "FLAG" => flag,
84
+ "ERROR" => validator.getReport().hasError(),
85
+ "UNVERIFIABLE" => validator.getReport().hasUnverifiable() }
86
+ return {"message" => reports,
87
+ "StandardWURCS" => validator.getReport().standard_string(),
88
+ "RESULTS" => validator.getReport().getResults() }
89
+ end
90
+ def dovalidator(validator,version)
91
+ return {"VALIDATOR" => ["WURCSFramework-" + version],
92
+ "Report" => validator.getReport().getResults()}
93
+ end
94
+ end
metadata ADDED
@@ -0,0 +1,71 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: glydevkit
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.1'
5
+ platform: java
6
+ authors:
7
+ - Akihiro Fujita
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2024-07-07 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
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.0.2
27
+ description: The Glycoscience Development Kit (GlyDevKit) is a JRuby library for glycaninformatics
28
+ email:
29
+ - akihirof0005@gmail.com
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - jar.yml
35
+ - lib/glydevkit.rb
36
+ - lib/glydevkit/Loggerinit.rb
37
+ - lib/glydevkit/gly_tou_can.rb
38
+ - lib/glydevkit/glycan_builder.rb
39
+ - lib/glydevkit/glycan_format_converter.rb
40
+ - lib/glydevkit/mol_wurcs.rb
41
+ - lib/glydevkit/subsumption.rb
42
+ - lib/glydevkit/wurcs_frame_work.rb
43
+ - lib/init.rb
44
+ - lib/wurcsverify.rb
45
+ homepage: https://github.com/akihirof0005/glydevkit/blob/main/README.md
46
+ licenses:
47
+ - LGPL-3.0-only
48
+ metadata:
49
+ source_code_uri: https://github.com/akihirof0005/glydevkit
50
+ homepage_uri: https://github.com/akihirof0005/glydevkit/blob/main/README.md
51
+ changelog_uri: https://github.com/akihirof0005/glycobooks
52
+ post_install_message:
53
+ rdoc_options: []
54
+ require_paths:
55
+ - lib
56
+ required_ruby_version: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ required_rubygems_version: !ruby/object:Gem::Requirement
62
+ requirements:
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ requirements: []
67
+ rubygems_version: 3.5.6
68
+ signing_key:
69
+ specification_version: 4
70
+ summary: The Glycoscience Development Kit (GlyDevKit) is a JRuby library for glycaninformatics
71
+ test_files: []