Skip to content

Commit b73954d

Browse files
committed
feat: use swagger-ui in API
1 parent 7b57ce5 commit b73954d

File tree

11 files changed

+459
-1899
lines changed

11 files changed

+459
-1899
lines changed

Dockerfile-server

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,14 @@ COPY cmd/mb3server/main.go ./cmd/mb3server
55
COPY pkg ./pkg
66
COPY go.mod .
77

8+
RUN wget https://github.com/swagger-api/swagger-ui/archive/refs/tags/v5.20.2.tar.gz && \
9+
tar -xf v5.20.2.tar.gz && \
10+
mv swagger-ui-5.20.2/dist ./swagger-ui && \
11+
sed -i 's/url: \".*\"/url: \"\.\/openapi.yml\"/' swagger-ui/swagger-initializer.js && \
12+
mv swagger-ui cmd/mb3server/swagger-ui
13+
14+
COPY api/openapi.yml ./cmd/mb3server/swagger-ui/openapi.yml
15+
816
ENV CGO_ENABLED=0
917
RUN go get -d -v ./...
1018

cmd/mb3server/main.go

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,22 @@
1010
package main
1111

1212
import (
13+
"embed"
14+
"io/fs"
1315
"log"
1416
"net/http"
1517
"strconv"
1618

17-
"github.com/MassBank/MassBank3/pkg/config"
18-
1919
mb3server "github.com/MassBank/MassBank3/cmd/mb3server/src"
20+
"github.com/MassBank/MassBank3/pkg/config"
21+
"github.com/go-chi/chi/v5"
2022
)
2123

24+
// Embed the swagger-ui directory
25+
26+
//go:embed swagger-ui
27+
var swaggerContent embed.FS
28+
2229
func main() {
2330
log.Printf("Server started")
2431
mb3server.ServerConfig = config.GetServerConfig()
@@ -30,5 +37,18 @@ func main() {
3037

3138
router := mb3server.NewRouter(DefaultApiController)
3239

40+
addSwaggerEndpoint(router)
41+
3342
log.Fatal(http.ListenAndServe(":"+strconv.FormatUint(uint64(mb3server.ServerConfig.ServerPort), 10), router))
43+
44+
}
45+
46+
func addSwaggerEndpoint(router chi.Router) {
47+
// Create a subdirectory filesystem for swagger-ui
48+
fsys, err := fs.Sub(swaggerContent, "swagger-ui")
49+
if err != nil {
50+
panic("failed to create sub filesystem: " + err.Error())
51+
}
52+
53+
router.Handle("/swagger-ui/*", http.StripPrefix("/swagger-ui/", http.FileServer(http.FS(fsys))))
3454
}

go.mod

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,36 @@ require (
1414
gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22
1515
)
1616

17+
require (
18+
github.com/bytedance/sonic v1.11.6 // indirect
19+
github.com/bytedance/sonic/loader v0.1.1 // indirect
20+
github.com/cloudwego/base64x v0.1.4 // indirect
21+
github.com/cloudwego/iasm v0.2.0 // indirect
22+
github.com/gabriel-vasile/mimetype v1.4.3 // indirect
23+
github.com/gin-contrib/sse v0.1.0 // indirect
24+
github.com/go-playground/validator/v10 v10.20.0 // indirect
25+
github.com/goccy/go-json v0.10.2 // indirect
26+
github.com/json-iterator/go v1.1.12 // indirect
27+
github.com/klauspost/cpuid/v2 v2.2.7 // indirect
28+
github.com/mattn/go-isatty v0.0.20 // indirect
29+
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
30+
github.com/modern-go/reflect2 v1.0.2 // indirect
31+
github.com/pelletier/go-toml/v2 v2.2.2 // indirect
32+
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
33+
github.com/ugorji/go/codec v1.2.12 // indirect
34+
golang.org/x/arch v0.8.0 // indirect
35+
google.golang.org/protobuf v1.34.1 // indirect
36+
gopkg.in/yaml.v3 v3.0.1 // indirect
37+
)
38+
1739
require (
1840
github.com/Microsoft/go-winio v0.5.2 // indirect
1941
github.com/ProtonMail/go-crypto v0.0.0-20221026131551-cf6655e29de4 // indirect
2042
github.com/acomagu/bufpipe v1.0.3 // indirect
2143
github.com/cloudflare/circl v1.1.0 // indirect
2244
github.com/deckarep/golang-set/v2 v2.6.0
2345
github.com/emirpasic/gods v1.18.1 // indirect
46+
github.com/gin-gonic/gin v1.10.0
2447
github.com/go-git/gcfg v1.5.0 // indirect
2548
github.com/go-git/go-billy/v5 v5.4.0 // indirect
2649
github.com/go-playground/locales v0.14.1 // indirect
@@ -29,9 +52,10 @@ require (
2952
github.com/imdario/mergo v0.3.13 // indirect
3053
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
3154
github.com/kevinburke/ssh_config v1.2.0 // indirect
32-
github.com/klauspost/compress v1.13.6 // indirect
55+
github.com/klauspost/compress v1.17.0 // indirect
3356
github.com/leodido/go-urn v1.4.0 // indirect
3457
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe // indirect
58+
github.com/openapi-ui/go-openapi-ui v0.2.0
3559
github.com/pjbgf/sha1cd v0.2.3 // indirect
3660
github.com/pkg/errors v0.9.1 // indirect
3761
github.com/sergi/go-diff v1.1.0 // indirect
@@ -41,11 +65,11 @@ require (
4165
github.com/xdg-go/scram v1.1.1 // indirect
4266
github.com/xdg-go/stringprep v1.0.3 // indirect
4367
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect
44-
golang.org/x/crypto v0.3.0 // indirect
45-
golang.org/x/net v0.2.0 // indirect
68+
golang.org/x/crypto v0.23.0 // indirect
69+
golang.org/x/net v0.25.0 // indirect
4670
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 // indirect
47-
golang.org/x/sys v0.3.0 // indirect
48-
golang.org/x/text v0.4.0 // indirect
71+
golang.org/x/sys v0.20.0 // indirect
72+
golang.org/x/text v0.15.0 // indirect
4973
gopkg.in/go-playground/validator.v9 v9.31.0 // indirect
5074
gopkg.in/warnings.v0 v0.1.2 // indirect
5175
)

go.sum

Lines changed: 67 additions & 0 deletions
Large diffs are not rendered by default.

pkg/config/config.go

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,12 @@ type ToolConfig struct {
1515
GitRepo string
1616
GitBranch string
1717
DataDir string
18-
Init bool
18+
Init bool
1919
}
2020

2121
type ServerConfig struct {
2222
database.DBConfig
23-
ServerPort uint
24-
CdkDepictUrl string
23+
ServerPort uint
2524
}
2625

2726
const (
@@ -35,9 +34,8 @@ const (
3534
mbGitRepoDefault = "https://github.com/MassBank/MassBank-data"
3635
mbGitBranchDefault = "main"
3736
mbDataDirectoryDefault = ""
38-
mbDbInitDefault = "true"
37+
mbDbInitDefault = "true"
3938
serverPortDefault = "8080"
40-
cdkdepictUrlDefault = "http://cdkdepict"
4139
)
4240

4341
var toolConfig *ToolConfig = nil
@@ -64,9 +62,9 @@ func GetToolConfig() ToolConfig {
6462
flag.Parse()
6563
if len(toolConfig.GitRepo) > 0 && len(toolConfig.DataDir) > 0 {
6664
println("Git repo and data directory are set. Using data directory as default and git repo as fallback.")
67-
} else if(len(toolConfig.GitRepo) > 0) {
65+
} else if len(toolConfig.GitRepo) > 0 {
6866
println("Git repo is set. Using git repo as data source.")
69-
} else if(len(toolConfig.DataDir) > 0) {
67+
} else if len(toolConfig.DataDir) > 0 {
7068
println("Data directory is set. Using data directory as data source.")
7169
}
7270
return *toolConfig
@@ -85,8 +83,6 @@ func GetServerConfig() *ServerConfig {
8583
panic(errors.New("Could not read port variable: DB_PORT=" + serverPortEnv))
8684
}
8785
serverConfig.ServerPort = uint(serverPort)
88-
serverConfig.CdkDepictUrl = getEnv("CDKDEPICT_URL", cdkdepictUrlDefault)
89-
flag.StringVar(&serverConfig.CdkDepictUrl, "cdkdepict_url", serverConfig.CdkDepictUrl, "Base URL of the CDK Depict api server. Overwrites environment variable CDKDEPICT_URL")
9086
flag.UintVar(&serverConfig.ServerPort, "server_port", serverConfig.ServerPort, "Listen on this port. Overwrites environment variable SERVER_PORT")
9187
flag.Parse()
9288
return serverConfig

pkg/database/testdata_test.go

Lines changed: 51 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -150,9 +150,8 @@ var mbTestRecords = map[string]massbank.MassBank2{
150150
"Natural Product",
151151
"Fungal metabolite",
152152
},
153-
Formula: toPtr("C10H10O3"),
154-
CdkDepict: nil,
155-
Mass: toPtr(178.062990),
153+
Formula: toPtr("C10H10O3"),
154+
Mass: toPtr(178.062990),
156155

157156
Smiles: toPtr("CC1CC2=C(C(=CC=C2)O)C(=O)O1"),
158157
InChI: toPtr("InChI=1S/C10H10O3/c1-6-5-7-3-2-4-8(11)9(7)10(12)13-6/h2-4,6,11H,5H2,1H3"),
@@ -437,11 +436,10 @@ var mbTestRecords = map[string]massbank.MassBank2{
437436
"N/A",
438437
"Environmental Standard",
439438
},
440-
Formula: toPtr("C11H11N5"),
441-
CdkDepict: nil,
442-
Mass: toPtr(213.1014454),
443-
Smiles: toPtr("CN1C(N)=NC2=C1C=CC1=NC=C(C)N=C21"),
444-
InChI: toPtr("InChI=1S/C11H11N5/c1-6-5-13-7-3-4-8-10(9(7)14-6)15-11(12)16(8)2/h3-5H,1-2H3,(H2,12,15)"),
439+
Formula: toPtr("C11H11N5"),
440+
Mass: toPtr(213.1014454),
441+
Smiles: toPtr("CN1C(N)=NC2=C1C=CC1=NC=C(C)N=C21"),
442+
InChI: toPtr("InChI=1S/C11H11N5/c1-6-5-13-7-3-4-8-10(9(7)14-6)15-11(12)16(8)2/h3-5H,1-2H3,(H2,12,15)"),
445443
Link: &[]massbank.DatabaseProperty{
446444
{
447445
Database: "CAS",
@@ -690,11 +688,10 @@ var mbTestRecords = map[string]massbank.MassBank2{
690688
"N/A",
691689
"Environmental Standard",
692690
},
693-
Formula: toPtr("C12H14N4O4S"),
694-
CdkDepict: nil,
695-
Mass: toPtr(310.0736),
696-
Smiles: toPtr("c1(NS(c2ccc(N)cc2)(=O)=O)cc(nc(n1)OC)OC"),
697-
InChI: toPtr("InChI=1S/C12H14N4O4S/c1-19-11-7-10(14-12(15-11)20-2)16-21(17,18)9-5-3-8(13)4-6-9/h3-7H,13H2,1-2H3,(H,14,15,16)"),
691+
Formula: toPtr("C12H14N4O4S"),
692+
Mass: toPtr(310.0736),
693+
Smiles: toPtr("c1(NS(c2ccc(N)cc2)(=O)=O)cc(nc(n1)OC)OC"),
694+
InChI: toPtr("InChI=1S/C12H14N4O4S/c1-19-11-7-10(14-12(15-11)20-2)16-21(17,18)9-5-3-8(13)4-6-9/h3-7H,13H2,1-2H3,(H,14,15,16)"),
698695
Link: &[]massbank.DatabaseProperty{
699696
{
700697
Database: "CAS",
@@ -960,11 +957,10 @@ var mbTestRecords = map[string]massbank.MassBank2{
960957
"N/A",
961958
"Environmental Transformation Products",
962959
},
963-
Formula: toPtr("C12H14F3NO"),
964-
CdkDepict: nil,
965-
Mass: toPtr(245.102700),
966-
Smiles: toPtr("CC(CC1=CC(=CC=C1)C(F)(F)F)NC(C)=O"),
967-
InChI: toPtr("InChI=1S/C12H14F3NO/c1-8(16-9(2)17)6-10-4-3-5-11(7-10)12(13,14)15/h3-5,7-8H,6H2,1-2H3,(H,16,17)"),
960+
Formula: toPtr("C12H14F3NO"),
961+
Mass: toPtr(245.102700),
962+
Smiles: toPtr("CC(CC1=CC(=CC=C1)C(F)(F)F)NC(C)=O"),
963+
InChI: toPtr("InChI=1S/C12H14F3NO/c1-8(16-9(2)17)6-10-4-3-5-11(7-10)12(13,14)15/h3-5,7-8H,6H2,1-2H3,(H,16,17)"),
968964
Link: &[]massbank.DatabaseProperty{
969965
{
970966
Database: "CAS",
@@ -1227,11 +1223,10 @@ var mbTestRecords = map[string]massbank.MassBank2{
12271223

12281224
"N/A",
12291225
},
1230-
Formula: toPtr("C7H8S"),
1231-
CdkDepict: nil,
1232-
Mass: toPtr(124.034670),
1233-
Smiles: toPtr("CSc(c1)cccc1"),
1234-
InChI: toPtr("InChI=1S/C7H8S/c1-8-7-5-3-2-4-6-7/h2-6H,1H3"),
1226+
Formula: toPtr("C7H8S"),
1227+
Mass: toPtr(124.034670),
1228+
Smiles: toPtr("CSc(c1)cccc1"),
1229+
InChI: toPtr("InChI=1S/C7H8S/c1-8-7-5-3-2-4-6-7/h2-6H,1H3"),
12351230
Link: &[]massbank.DatabaseProperty{
12361231
{
12371232
Database: "INCHIKEY",
@@ -1450,11 +1445,10 @@ var mbTestRecords = map[string]massbank.MassBank2{
14501445

14511446
"N/A",
14521447
},
1453-
Formula: toPtr("C10H18N2O3"),
1454-
CdkDepict: nil,
1455-
Mass: toPtr(214.131740),
1456-
Smiles: toPtr("OC(=O)CCCCCC(N1)C(C)NC(=O)1"),
1457-
InChI: toPtr("InChI=1S/C10H18N2O3/c1-7-8(12-10(15)11-7)5-3-2-4-6-9(13)14/h7-8H,2-6H2,1H3,(H,13,14)(H2,11,12,15)/t7-,8+/m0/s1"),
1448+
Formula: toPtr("C10H18N2O3"),
1449+
Mass: toPtr(214.131740),
1450+
Smiles: toPtr("OC(=O)CCCCCC(N1)C(C)NC(=O)1"),
1451+
InChI: toPtr("InChI=1S/C10H18N2O3/c1-7-8(12-10(15)11-7)5-3-2-4-6-9(13)14/h7-8H,2-6H2,1H3,(H,13,14)(H2,11,12,15)/t7-,8+/m0/s1"),
14581452
Link: &[]massbank.DatabaseProperty{
14591453
{
14601454
Database: "CAS",
@@ -1720,11 +1714,10 @@ var mbTestRecords = map[string]massbank.MassBank2{
17201714

17211715
"Non-natural product",
17221716
},
1723-
Formula: toPtr("C17H17ClFNO4"),
1724-
CdkDepict: nil,
1725-
Mass: toPtr(353.083000),
1726-
Smiles: toPtr("CC(=C1C(=O)N(C(=O)O1)c2cc(c(cc2F)Cl)OC3CCCC3)C"),
1727-
InChI: toPtr("InChI=1S/C17H17ClFNO4/c1-9(2)15-16(21)20(17(22)24-15)13-8-14(11(18)7-12(13)19)23-10-5-3-4-6-10/h7-8,10H,3-6H2,1-2H3"),
1717+
Formula: toPtr("C17H17ClFNO4"),
1718+
Mass: toPtr(353.083000),
1719+
Smiles: toPtr("CC(=C1C(=O)N(C(=O)O1)c2cc(c(cc2F)Cl)OC3CCCC3)C"),
1720+
InChI: toPtr("InChI=1S/C17H17ClFNO4/c1-9(2)15-16(21)20(17(22)24-15)13-8-14(11(18)7-12(13)19)23-10-5-3-4-6-10/h7-8,10H,3-6H2,1-2H3"),
17281721
Link: &[]massbank.DatabaseProperty{
17291722
{
17301723
Database: "CAS",
@@ -1899,11 +1892,10 @@ var mbTestRecords = map[string]massbank.MassBank2{
18991892

19001893
"Flavonoid",
19011894
},
1902-
Formula: toPtr("C21H18O13"),
1903-
CdkDepict: nil,
1904-
Mass: toPtr(478.074740),
1905-
Smiles: toPtr("OC(=O)C(O1)C(O)C(O)C(O)C1OC(C(=O)3)=C(Oc(c4)c(c(O)cc(O)4)3)c(c2)cc(O)c(O)c2"),
1906-
InChI: toPtr("InChI=1S/C21H18O13/c22-7-4-10(25)12-11(5-7)32-17(6-1-2-8(23)9(24)3-6)18(13(12)26)33-21-16(29)14(27)15(28)19(34-21)20(30)31/h1-5,14-16,19,21-25,27-29H,(H,30,31)/t14-,15-,16+,19-,21+/m0/s1"),
1895+
Formula: toPtr("C21H18O13"),
1896+
Mass: toPtr(478.074740),
1897+
Smiles: toPtr("OC(=O)C(O1)C(O)C(O)C(O)C1OC(C(=O)3)=C(Oc(c4)c(c(O)cc(O)4)3)c(c2)cc(O)c(O)c2"),
1898+
InChI: toPtr("InChI=1S/C21H18O13/c22-7-4-10(25)12-11(5-7)32-17(6-1-2-8(23)9(24)3-6)18(13(12)26)33-21-16(29)14(27)15(28)19(34-21)20(30)31/h1-5,14-16,19,21-25,27-29H,(H,30,31)/t14-,15-,16+,19-,21+/m0/s1"),
19071899
Link: &[]massbank.DatabaseProperty{
19081900
{
19091901
Database: "CAS",
@@ -2112,11 +2104,10 @@ var mbTestRecords = map[string]massbank.MassBank2{
21122104

21132105
"Oxidized fatty acids",
21142106
},
2115-
Formula: toPtr("C18H32O3"),
2116-
CdkDepict: nil,
2117-
Mass: toPtr(296.451000),
2118-
Smiles: toPtr("O=C(O)CCCCCCCC=CC=CC(O)CCCCC"),
2119-
InChI: toPtr("InChI=1S/C18H32O3/c1-2-3-11-14-17(19)15-12-9-7-5-4-6-8-10-13-16-18(20)21/h7,9,12,15,17,19H,2-6,8,10-11,13-14,16H2,1H3,(H,20,21)"),
2107+
Formula: toPtr("C18H32O3"),
2108+
Mass: toPtr(296.451000),
2109+
Smiles: toPtr("O=C(O)CCCCCCCC=CC=CC(O)CCCCC"),
2110+
InChI: toPtr("InChI=1S/C18H32O3/c1-2-3-11-14-17(19)15-12-9-7-5-4-6-8-10-13-16-18(20)21/h7,9,12,15,17,19H,2-6,8,10-11,13-14,16H2,1H3,(H,20,21)"),
21202111
Link: &[]massbank.DatabaseProperty{
21212112
{
21222113
Database: "INCHIKEY",
@@ -2317,11 +2308,10 @@ var mbTestRecords = map[string]massbank.MassBank2{
23172308

23182309
"N/A",
23192310
},
2320-
Formula: toPtr("C15H20O3"),
2321-
CdkDepict: nil,
2322-
Mass: toPtr(248.141245),
2323-
Smiles: toPtr("C/C/1=C\\CC[C@@]2([C@@H](O2)[C@@H]3[C@@H](CC1)C(=C)C(=O)O3)C"),
2324-
InChI: toPtr("InChI=1S/C15H20O3/c1-9-5-4-8-15(3)13(18-15)12-11(7-6-9)10(2)14(16)17-12/h5,11-13H,2,4,6-8H2,1,3H3/b9-5+/t11-,12-,13-,15+/m0/s1"),
2311+
Formula: toPtr("C15H20O3"),
2312+
Mass: toPtr(248.141245),
2313+
Smiles: toPtr("C/C/1=C\\CC[C@@]2([C@@H](O2)[C@@H]3[C@@H](CC1)C(=C)C(=O)O3)C"),
2314+
InChI: toPtr("InChI=1S/C15H20O3/c1-9-5-4-8-15(3)13(18-15)12-11(7-6-9)10(2)14(16)17-12/h5,11-13H,2,4,6-8H2,1,3H3/b9-5+/t11-,12-,13-,15+/m0/s1"),
23252315
Link: &[]massbank.DatabaseProperty{
23262316
{
23272317
Database: "CAS",
@@ -2469,12 +2459,11 @@ var mbTestRecords = map[string]massbank.MassBank2{
24692459

24702460
"Natural Product",
24712461
},
2472-
Formula: toPtr("C27H29N5O4"),
2473-
CdkDepict: nil,
2474-
Mass: toPtr(487.221940),
2475-
Smiles: toPtr("CC(C)[C@H]1C2=NC3=CC=CC=C3C(=O)N2[C@@H](C(=O)N1)C[C@@]4([C@@H]5NC(C(=O)N5C6=CC=CC=C64)(C)C)O"),
2476-
InChI: toPtr("InChI=1S/C27H29N5O4/c1-14(2)20-21-28-17-11-7-5-9-15(17)23(34)31(21)19(22(33)29-20)13-27(36)16-10-6-8-12-18(16)32-24(27)30-26(3,4)25(32)35/h5-12,14,19-20,24,30,36H,13H2,1-4H3,(H,29,33)/t19-,20+,24-,27-/m1/s1"),
2477-
Link: nil,
2462+
Formula: toPtr("C27H29N5O4"),
2463+
Mass: toPtr(487.221940),
2464+
Smiles: toPtr("CC(C)[C@H]1C2=NC3=CC=CC=C3C(=O)N2[C@@H](C(=O)N1)C[C@@]4([C@@H]5NC(C(=O)N5C6=CC=CC=C64)(C)C)O"),
2465+
InChI: toPtr("InChI=1S/C27H29N5O4/c1-14(2)20-21-28-17-11-7-5-9-15(17)23(34)31(21)19(22(33)29-20)13-27(36)16-10-6-8-12-18(16)32-24(27)30-26(3,4)25(32)35/h5-12,14,19-20,24,30,36H,13H2,1-4H3,(H,29,33)/t19-,20+,24-,27-/m1/s1"),
2466+
Link: nil,
24782467
},
24792468
Species: massbank.SpeciesProperties{
24802469
Name: nil,
@@ -2585,11 +2574,10 @@ var mbTestRecords = map[string]massbank.MassBank2{
25852574
"Ceramide",
25862575
"Ganglioside",
25872576
},
2588-
Formula: toPtr("C86H152N4O39"),
2589-
CdkDepict: nil,
2590-
Mass: toPtr(1865.003370),
2591-
Smiles: toPtr("CCCCCCCCCCCCCCCCCCCC(=O)N[C@@H](CO[C@H]1[C@@H]([C@H]([C@@H]([C@H](O1)CO)O[C@H]2[C@@H]([C@H]([C@H]([C@H](O2)CO)O[C@H]3[C@@H]([C@H]([C@H]([C@H](O3)CO)O)O[C@H]4[C@@H]([C@H]([C@H]([C@H](O4)CO)O)O[C@@]5(C[C@@H]([C@H]([C@@H](O5)C([C@@H](CO)O)O)NC(=O)C)O)C(=O)O)O)NC(=O)C)O[C@@]6(C[C@@H]([C@H]([C@@H](O6)C([C@@H](CO)O)O)NC(=O)C)O)C(=O)O)O)O)O)[C@@H](/C=C/CCCCCCCCCCCCC)O"),
2592-
InChI: toPtr("InChI=1S/C86H152N4O39/c1-6-8-10-12-14-16-18-20-21-22-23-25-27-29-31-33-35-37-60(105)90-50(51(100)36-34-32-30-28-26-24-19-17-15-13-11-9-7-2)46-118-80-69(111)68(110)72(58(44-95)121-80)123-82-71(113)78(129-86(84(116)117)39-53(102)62(88-48(4)98)76(127-86)65(107)55(104)41-92)73(59(45-96)122-82)124-79-63(89-49(5)99)74(66(108)56(42-93)119-79)125-81-70(112)77(67(109)57(43-94)120-81)128-85(83(114)115)38-52(101)61(87-47(3)97)75(126-85)64(106)54(103)40-91/h34,36,50-59,61-82,91-96,100-104,106-113H,6-33,35,37-46H2,1-5H3,(H,87,97)(H,88,98)(H,89,99)(H,90,105)(H,114,115)(H,116,117)/b36-34+/t50-,51+,52-,53-,54+,55+,56+,57+,58+,59+,61+,62+,63+,64?,65?,66-,67-,68+,69+,70+,71+,72+,73-,74+,75+,76+,77-,78+,79-,80+,81-,82-,85-,86-/m0/s1"),
2577+
Formula: toPtr("C86H152N4O39"),
2578+
Mass: toPtr(1865.003370),
2579+
Smiles: toPtr("CCCCCCCCCCCCCCCCCCCC(=O)N[C@@H](CO[C@H]1[C@@H]([C@H]([C@@H]([C@H](O1)CO)O[C@H]2[C@@H]([C@H]([C@H]([C@H](O2)CO)O[C@H]3[C@@H]([C@H]([C@H]([C@H](O3)CO)O)O[C@H]4[C@@H]([C@H]([C@H]([C@H](O4)CO)O)O[C@@]5(C[C@@H]([C@H]([C@@H](O5)C([C@@H](CO)O)O)NC(=O)C)O)C(=O)O)O)NC(=O)C)O[C@@]6(C[C@@H]([C@H]([C@@H](O6)C([C@@H](CO)O)O)NC(=O)C)O)C(=O)O)O)O)O)[C@@H](/C=C/CCCCCCCCCCCCC)O"),
2580+
InChI: toPtr("InChI=1S/C86H152N4O39/c1-6-8-10-12-14-16-18-20-21-22-23-25-27-29-31-33-35-37-60(105)90-50(51(100)36-34-32-30-28-26-24-19-17-15-13-11-9-7-2)46-118-80-69(111)68(110)72(58(44-95)121-80)123-82-71(113)78(129-86(84(116)117)39-53(102)62(88-48(4)98)76(127-86)65(107)55(104)41-92)73(59(45-96)122-82)124-79-63(89-49(5)99)74(66(108)56(42-93)119-79)125-81-70(112)77(67(109)57(43-94)120-81)128-85(83(114)115)38-52(101)61(87-47(3)97)75(126-85)64(106)54(103)40-91/h34,36,50-59,61-82,91-96,100-104,106-113H,6-33,35,37-46H2,1-5H3,(H,87,97)(H,88,98)(H,89,99)(H,90,105)(H,114,115)(H,116,117)/b36-34+/t50-,51+,52-,53-,54+,55+,56+,57+,58+,59+,61+,62+,63+,64?,65?,66-,67-,68+,69+,70+,71+,72+,73-,74+,75+,76+,77-,78+,79-,80+,81-,82-,85-,86-/m0/s1"),
25932581
Link: &[]massbank.DatabaseProperty{
25942582
{
25952583
Database: "INCHIKEY",
@@ -3026,11 +3014,10 @@ var mbTestRecords = map[string]massbank.MassBank2{
30263014
"Natural Product",
30273015
"Lipid Standard",
30283016
},
3029-
Formula: toPtr("C22H32O3"),
3030-
CdkDepict: nil,
3031-
Mass: toPtr(344.235140),
3032-
Smiles: toPtr("CC\\C=C/C\\C=C/C\\C=C/CC(O)\\C=C\\C=C/C\\C=C/CCC(O)=O"),
3033-
InChI: toPtr("InChI=1S/C22H32O3/c1-2-3-4-5-6-7-9-12-15-18-21(23)19-16-13-10-8-11-14-17-20-22(24)25/h3-4,6-7,10-16,19,21,23H,2,5,8-9,17-18,20H2,1H3,(H,24,25)/b4-3-,7-6-,13-10-,14-11-,15-12-,19-16+"),
3017+
Formula: toPtr("C22H32O3"),
3018+
Mass: toPtr(344.235140),
3019+
Smiles: toPtr("CC\\C=C/C\\C=C/C\\C=C/CC(O)\\C=C\\C=C/C\\C=C/CCC(O)=O"),
3020+
InChI: toPtr("InChI=1S/C22H32O3/c1-2-3-4-5-6-7-9-12-15-18-21(23)19-16-13-10-8-11-14-17-20-22(24)25/h3-4,6-7,10-16,19,21,23H,2,5,8-9,17-18,20H2,1H3,(H,24,25)/b4-3-,7-6-,13-10-,14-11-,15-12-,19-16+"),
30343021
Link: &[]massbank.DatabaseProperty{
30353022
{
30363023
Database: "CHEBI",

0 commit comments

Comments
 (0)