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 +7 -0
- data/jar.yml +97 -0
- data/lib/glydevkit/Loggerinit.rb +31 -0
- data/lib/glydevkit/gly_tou_can.rb +16 -0
- data/lib/glydevkit/glycan_builder.rb +73 -0
- data/lib/glydevkit/glycan_format_converter.rb +76 -0
- data/lib/glydevkit/mol_wurcs.rb +106 -0
- data/lib/glydevkit/subsumption.rb +71 -0
- data/lib/glydevkit/wurcs_frame_work.rb +76 -0
- data/lib/glydevkit.rb +14 -0
- data/lib/init.rb +92 -0
- data/lib/wurcsverify.rb +94 -0
- metadata +71 -0
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
|
+
|
data/lib/wurcsverify.rb
ADDED
@@ -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: []
|