You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: LICENSE
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
MIT License
2
2
3
-
Copyright (c) 2021-2024 Aleksandr Serdiukov, Anton Zamyatin, Aleksandr Sinitsyn, Vitalii Dravgelis and Computer Technologies Laboratory ITMO University team.
3
+
Copyright (c) 2021-2026 Aleksandr Serdiukov, Anton Zamyatin, Aleksandr Sinitsyn, Vitalii Dravgelis and Computer Technologies Laboratory ITMO University team.
4
4
5
5
Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
of this software and associated documentation files (the "Software"), to deal
**NOTE: currently only Windows (tested on 10 and 11) and Linux (with `glibc`, common Debain/Ubuntu are OK, Alpine users are out of luck) are supported, native libraries for MacOS are not bundled in these builds. Only AMD64 platform is supported. On Windows you might need to install https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170[additional libraries]**.
8
7
9
-
1. Install Java 19 or newer (older versions won't be able to launch this code);
10
-
1. Make sure that `JAVA_HOME` variable points to the correct installation path (if you have multiple JREs or JDKs);
11
-
1. Download latest "fat" JAR from the https://github.com/ctlab/HiCT_JVM/releases[*Releases* page] in *Assets* section. Latest build will usually be on top, however the most stable implementation is in the build from `master` branch (called "Latest autogenerated build (branch master)"). You can rename it to `hict.jar` for convenience;
12
-
1. Open a terminal and change directory to where the downloaded `hict.jar` is located;
13
-
1. Issue `java -jar hict.jar` command and wait until message `Starting WebUI server on port 8080 ... WebUI Server started` appears;
14
-
1. Open your browser and navigate to the `http://localhost:8080` where HiCT WebUI should now be available.
8
+
== For users of `.jar` distribution
15
9
16
-
=== Startup options
10
+
This section is intended for bioinformatics users who download a ready-to-run fat JAR from GitHub Releases.
11
+
You need to install Java 21+ (this project is built for Java 21 bytecode).
12
+
Download the latest fat JAR from the https://github.com/ctlab/HiCT_JVM/releases[Releases page] (Assets section).
13
+
**NOTE:** prebuilt native bundles are currently provided for *Windows* (tested on 10/11) and *Linux with glibc* (common Debian/Ubuntu-like distributions). Alpine/musl is not supported by these bundled binaries. Current prebuilt artifacts are AMD64-only. On Windows you might need to install https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170[Microsoft Visual C++ Redistributable].
17
14
18
-
Currently, there are multiple environment variables that could be set prior to launching HiCT.
15
+
=== Quick start
19
16
20
-
* `DATA_DIR` -- should be a path to the directory containing `.hict.hdf5`, `.agp` and `fasta` files. These files could be anywhere in subtree of this directory, it is scanned recursively.
21
-
* `VXPORT` -- should be an integer between `1` and `65535` denoting port number which will be served by HiCT API. Note that listening on ports below `4096` usually requires some kind of administrative privileges. If not provided, the default value is `5000`. Startup might fail if the port is already occupied by another service. Be sure to set correct port in Connection -> API Gateway field in HiCT WebUI if changed.
22
-
* `WEBUI_PORT` -- should be an integer between `1` and `65535` denoting port number which will be served by HiCT WebUI. Note that listening on ports below `4096` usually requires some kind of administrative privileges. If not provided, the default value is `8080`. Startup might fail if the port is already occupied by another service.
23
-
* `SERVE_WEBUI` -- should either be `true` or `false` telling whether to start serving HiCT WebUI on the desired port or not. Might be useful during debugging or when WebUI is served by another process. Default is `true`. This option does not have any effect in case WebUI is not packed into the jar file.
24
-
* `TILE_SIZE` -- should be an integer greater than one. Defines the default tile size for visualization. Experimental setting, currently might break WebUI renderer. Default is `256`. The greater the tile size is, the less tiles are shown on screen and therefore less requests are sent to the server, but each request could potentially take longer to process.
17
+
1. Download the latest `-fat.jar` from the Releases page (Assets) and rename it to `hict-fat.jar`.
18
+
2. Place your `.hict.hdf5`, `.mcool`, `.cool`, `.agp`, and `.fasta` files under a single directory.
19
+
3. Run:
20
+
+
21
+
```bash
22
+
java -jar hict-fat.jar start-server
23
+
```
24
+
+
25
+
Directory with files is set using `DATA_DIR` environment variable, by default it scans subtree of the directory in which `hict-fat.jar` is launched from.
Since library naming conventions are different for different platform and libraries, there is currently a mechanism to try and load each library under a different name. This CAN produce errors on server startup, you can ignore them if `Starting WebUI server on port 8080 ... WebUI Server started` message appeared in console.
206
+
Typical asynchronous conversion sequence used by WebUI/integrations:
58
207
59
-
If, however, server works but maps are not displayed in WebUI and an error sign displays at the bottom right corner of WebUI, you should check console for error output.
* Download converted artifact when status is `DONE`.
60
215
61
-
== Obtaining `.hict.hdf5` files
216
+
Recommended size limits:
62
217
63
-
Currently, it's necessary to use https://github.com/ctlab/HiCT_Utils[`HiCT_Utils` package] for the file format conversion, there are plans to simplify this process.
218
+
* Keep upload limits explicit at ingress/proxy and app gateway.
219
+
* For JVM safety, avoid unbounded request bodies in production; set max request size and timeouts.
220
+
* For very large matrices, prefer direct local file conversion (CLI) and then load resulting artifacts through `DATA_DIR`.
64
221
65
-
== Building `HiCT_JVM` from source
222
+
== Scaffolding API behavior notes
223
+
224
+
Scaffolding operations are served as POST endpoints and return updated assembly information:
225
+
226
+
* `/reverse_selection_range`
227
+
* `/move_selection_range`
228
+
* `/split_contig_at_bin`
229
+
* `/group_contigs_into_scaffold`
230
+
* `/ungroup_contigs_from_scaffold`
231
+
* `/move_selection_to_debris`
232
+
233
+
Important tile-version expectation:
66
234
67
-
To start building from source, you can run:
235
+
* Tile requests use `GET /get_tile?...&version=<n>`.
236
+
* If the requested version is *older* than server-side tile version, server returns HTTP `204` (no tile body) to force client invalidation.
237
+
* If the requested version is newer, server advances the internal version counter.
238
+
* Practical client rule: after each scaffolding mutation, increment your tile version and refresh visible tile requests.
239
+
240
+
== Startup errors and JHDF5 native library troubleshooting
241
+
242
+
During startup, you may see several native-library load attempts with warnings/errors. This can be expected because different platform-specific library names are tried.
243
+
244
+
If startup completes and API/WebUI are healthy, these warnings can be non-fatal.
245
+
246
+
When native loading actually fails:
247
+
248
+
1. Confirm architecture match (AMD64 JVM + AMD64 native bundle).
249
+
2. Confirm OS compatibility (Linux glibc; not Alpine/musl).
250
+
3. On Linux, ensure native/plugin paths are discoverable, for example:
Commit both `build.gradle.kts` and `gradle.lockfile` together whenever lock state changes.
296
+
72
297
Current progress on modifying HDF5 and JHDF5 configuration resides in https://github.com/AxisAlexNT/jhdf5-with-plugins-configuration-snapshot[my personal repository]. Modified configuration is necessary to rebuild native libraries (HDF5, HDF5 plugins and JHDF5 should all be build as dynamic libraries). However, prebuilt native libraries for AMD64 Windows and Linux platforms are already present in `HiCT_JVM` repository. Missing platforms are Linux on `armv7` and `aarch64` and MacOS (both `amd64` and `aarch64` variants).
298
+
299
+
== Conversion tools (CLI + API)
300
+
301
+
A native converter module is now available in JVM codebase with two services:
0 commit comments