catboost 1.25.1 → 1.26.0

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.
Files changed (289) hide show
  1. package/DEPLOYMENT.md +22 -15
  2. package/README.md +37 -27
  3. package/binding.gyp +5 -7
  4. package/build_scripts/bootstrap.js +2 -1
  5. package/build_scripts/out/build.js +46 -68
  6. package/build_scripts/out/build_model.js +1 -1
  7. package/build_scripts/out/{build_ya.js → build_native.js} +1 -1
  8. package/build_scripts/out/ci.js +5 -5
  9. package/build_scripts/out/config.js +32 -18
  10. package/build_scripts/out/install.js +5 -3
  11. package/build_scripts/out/package_prepublish.js +1 -1
  12. package/build_scripts/out/packaging.js +1 -19
  13. package/build_scripts/out/run_tests.js +1 -1
  14. package/build_scripts/out/test.js +8 -3
  15. package/config.json +18 -11
  16. package/inc/catboost/libs/model_interface/c_api.h +349 -3
  17. package/lib/catboost.d.ts +65 -21
  18. package/package.json +4 -4
  19. package/src/api_helpers.cpp +100 -24
  20. package/src/api_helpers.h +8 -7
  21. package/src/api_module.cpp +1 -2
  22. package/src/model.cpp +483 -83
  23. package/src/model.h +24 -9
  24. package/inc/contrib/libs/cxxsupp/system_stl/include/stlfwd +0 -14
  25. package/inc/util/charset/recode_result.h +0 -9
  26. package/inc/util/charset/unicode_table.h +0 -123
  27. package/inc/util/charset/unidata.h +0 -421
  28. package/inc/util/charset/utf8.h +0 -384
  29. package/inc/util/charset/wide.h +0 -843
  30. package/inc/util/charset/wide_specific.h +0 -22
  31. package/inc/util/datetime/base.h +0 -669
  32. package/inc/util/datetime/constants.h +0 -7
  33. package/inc/util/datetime/cputimer.h +0 -124
  34. package/inc/util/datetime/parser.h +0 -292
  35. package/inc/util/datetime/systime.h +0 -47
  36. package/inc/util/datetime/uptime.h +0 -8
  37. package/inc/util/digest/city.h +0 -88
  38. package/inc/util/digest/fnv.h +0 -73
  39. package/inc/util/digest/multi.h +0 -14
  40. package/inc/util/digest/murmur.h +0 -57
  41. package/inc/util/digest/numeric.h +0 -86
  42. package/inc/util/digest/sequence.h +0 -48
  43. package/inc/util/draft/date.h +0 -129
  44. package/inc/util/draft/datetime.h +0 -184
  45. package/inc/util/draft/enum.h +0 -136
  46. package/inc/util/draft/holder_vector.h +0 -102
  47. package/inc/util/draft/ip.h +0 -131
  48. package/inc/util/draft/matrix.h +0 -108
  49. package/inc/util/draft/memory.h +0 -40
  50. package/inc/util/folder/dirent_win.h +0 -46
  51. package/inc/util/folder/dirut.h +0 -121
  52. package/inc/util/folder/filelist.h +0 -81
  53. package/inc/util/folder/fts.h +0 -108
  54. package/inc/util/folder/iterator.h +0 -109
  55. package/inc/util/folder/lstat_win.h +0 -20
  56. package/inc/util/folder/path.h +0 -225
  57. package/inc/util/folder/pathsplit.h +0 -113
  58. package/inc/util/folder/tempdir.h +0 -42
  59. package/inc/util/generic/adaptor.h +0 -134
  60. package/inc/util/generic/algorithm.h +0 -765
  61. package/inc/util/generic/array_ref.h +0 -282
  62. package/inc/util/generic/array_size.h +0 -24
  63. package/inc/util/generic/benchmark/vector_count_ctor/f.h +0 -9
  64. package/inc/util/generic/bitmap.h +0 -1115
  65. package/inc/util/generic/bitops.h +0 -459
  66. package/inc/util/generic/bt_exception.h +0 -24
  67. package/inc/util/generic/buffer.h +0 -232
  68. package/inc/util/generic/cast.h +0 -176
  69. package/inc/util/generic/deque.h +0 -24
  70. package/inc/util/generic/explicit_type.h +0 -42
  71. package/inc/util/generic/fastqueue.h +0 -55
  72. package/inc/util/generic/flags.h +0 -244
  73. package/inc/util/generic/function.h +0 -103
  74. package/inc/util/generic/fwd.h +0 -171
  75. package/inc/util/generic/guid.h +0 -61
  76. package/inc/util/generic/hash.h +0 -2032
  77. package/inc/util/generic/hash_primes.h +0 -140
  78. package/inc/util/generic/hash_set.h +0 -490
  79. package/inc/util/generic/hide_ptr.h +0 -3
  80. package/inc/util/generic/intrlist.h +0 -876
  81. package/inc/util/generic/is_in.h +0 -53
  82. package/inc/util/generic/iterator.h +0 -137
  83. package/inc/util/generic/iterator_range.h +0 -105
  84. package/inc/util/generic/lazy_value.h +0 -66
  85. package/inc/util/generic/list.h +0 -22
  86. package/inc/util/generic/map.h +0 -44
  87. package/inc/util/generic/mapfindptr.h +0 -60
  88. package/inc/util/generic/maybe.h +0 -713
  89. package/inc/util/generic/maybe_traits.h +0 -164
  90. package/inc/util/generic/mem_copy.h +0 -55
  91. package/inc/util/generic/noncopyable.h +0 -38
  92. package/inc/util/generic/object_counter.h +0 -53
  93. package/inc/util/generic/ptr.h +0 -1113
  94. package/inc/util/generic/queue.h +0 -57
  95. package/inc/util/generic/refcount.h +0 -162
  96. package/inc/util/generic/reserve.h +0 -11
  97. package/inc/util/generic/scope.h +0 -65
  98. package/inc/util/generic/serialized_enum.h +0 -406
  99. package/inc/util/generic/set.h +0 -42
  100. package/inc/util/generic/singleton.h +0 -136
  101. package/inc/util/generic/size_literals.h +0 -65
  102. package/inc/util/generic/stack.h +0 -18
  103. package/inc/util/generic/store_policy.h +0 -120
  104. package/inc/util/generic/strbase.h +0 -612
  105. package/inc/util/generic/strbuf.h +0 -552
  106. package/inc/util/generic/strfcpy.h +0 -17
  107. package/inc/util/generic/string.h +0 -1572
  108. package/inc/util/generic/string_hash.h +0 -21
  109. package/inc/util/generic/string_ut.h +0 -1175
  110. package/inc/util/generic/type_name.h +0 -34
  111. package/inc/util/generic/typelist.h +0 -114
  112. package/inc/util/generic/typetraits.h +0 -325
  113. package/inc/util/generic/utility.h +0 -132
  114. package/inc/util/generic/va_args.h +0 -400
  115. package/inc/util/generic/variant.h +0 -631
  116. package/inc/util/generic/variant_traits.h +0 -171
  117. package/inc/util/generic/vector.h +0 -119
  118. package/inc/util/generic/xrange.h +0 -258
  119. package/inc/util/generic/yexception.h +0 -212
  120. package/inc/util/generic/yexception_ut.h +0 -14
  121. package/inc/util/generic/ylimits.h +0 -92
  122. package/inc/util/generic/ymath.h +0 -206
  123. package/inc/util/memory/addstorage.h +0 -93
  124. package/inc/util/memory/alloc.h +0 -27
  125. package/inc/util/memory/blob.h +0 -296
  126. package/inc/util/memory/mmapalloc.h +0 -8
  127. package/inc/util/memory/pool.h +0 -432
  128. package/inc/util/memory/segmented_string_pool.h +0 -194
  129. package/inc/util/memory/segpool_alloc.h +0 -118
  130. package/inc/util/memory/smallobj.h +0 -141
  131. package/inc/util/memory/tempbuf.h +0 -111
  132. package/inc/util/network/address.h +0 -136
  133. package/inc/util/network/endpoint.h +0 -61
  134. package/inc/util/network/hostip.h +0 -16
  135. package/inc/util/network/init.h +0 -60
  136. package/inc/util/network/interface.h +0 -17
  137. package/inc/util/network/iovec.h +0 -65
  138. package/inc/util/network/ip.h +0 -116
  139. package/inc/util/network/nonblock.h +0 -8
  140. package/inc/util/network/pair.h +0 -9
  141. package/inc/util/network/poller.h +0 -58
  142. package/inc/util/network/pollerimpl.h +0 -707
  143. package/inc/util/network/sock.h +0 -608
  144. package/inc/util/network/socket.h +0 -421
  145. package/inc/util/random/common_ops.h +0 -130
  146. package/inc/util/random/easy.h +0 -47
  147. package/inc/util/random/entropy.h +0 -21
  148. package/inc/util/random/fast.h +0 -101
  149. package/inc/util/random/init_atfork.h +0 -3
  150. package/inc/util/random/lcg_engine.h +0 -66
  151. package/inc/util/random/mersenne.h +0 -46
  152. package/inc/util/random/mersenne32.h +0 -50
  153. package/inc/util/random/mersenne64.h +0 -50
  154. package/inc/util/random/normal.h +0 -38
  155. package/inc/util/random/random.h +0 -30
  156. package/inc/util/random/shuffle.h +0 -39
  157. package/inc/util/str_stl.h +0 -266
  158. package/inc/util/stream/aligned.h +0 -99
  159. package/inc/util/stream/buffer.h +0 -119
  160. package/inc/util/stream/buffered.h +0 -225
  161. package/inc/util/stream/debug.h +0 -53
  162. package/inc/util/stream/direct_io.h +0 -43
  163. package/inc/util/stream/file.h +0 -108
  164. package/inc/util/stream/format.h +0 -444
  165. package/inc/util/stream/fwd.h +0 -100
  166. package/inc/util/stream/hex.h +0 -8
  167. package/inc/util/stream/holder.h +0 -44
  168. package/inc/util/stream/input.h +0 -273
  169. package/inc/util/stream/labeled.h +0 -19
  170. package/inc/util/stream/length.h +0 -100
  171. package/inc/util/stream/mem.h +0 -255
  172. package/inc/util/stream/multi.h +0 -32
  173. package/inc/util/stream/null.h +0 -61
  174. package/inc/util/stream/output.h +0 -304
  175. package/inc/util/stream/pipe.h +0 -112
  176. package/inc/util/stream/printf.h +0 -25
  177. package/inc/util/stream/str.h +0 -207
  178. package/inc/util/stream/tee.h +0 -28
  179. package/inc/util/stream/tempbuf.h +0 -21
  180. package/inc/util/stream/tokenizer.h +0 -214
  181. package/inc/util/stream/trace.h +0 -60
  182. package/inc/util/stream/walk.h +0 -35
  183. package/inc/util/stream/zerocopy.h +0 -91
  184. package/inc/util/stream/zerocopy_output.h +0 -57
  185. package/inc/util/stream/zlib.h +0 -173
  186. package/inc/util/string/ascii.h +0 -236
  187. package/inc/util/string/builder.h +0 -39
  188. package/inc/util/string/cast.h +0 -347
  189. package/inc/util/string/cstriter.h +0 -14
  190. package/inc/util/string/escape.h +0 -70
  191. package/inc/util/string/hex.h +0 -59
  192. package/inc/util/string/join.h +0 -194
  193. package/inc/util/string/printf.h +0 -13
  194. package/inc/util/string/reverse.h +0 -16
  195. package/inc/util/string/split.h +0 -1080
  196. package/inc/util/string/strip.h +0 -257
  197. package/inc/util/string/strspn.h +0 -65
  198. package/inc/util/string/subst.h +0 -56
  199. package/inc/util/string/type.h +0 -50
  200. package/inc/util/string/util.h +0 -195
  201. package/inc/util/string/vector.h +0 -132
  202. package/inc/util/system/align.h +0 -50
  203. package/inc/util/system/atexit.h +0 -22
  204. package/inc/util/system/atomic.h +0 -51
  205. package/inc/util/system/atomic_gcc.h +0 -90
  206. package/inc/util/system/atomic_ops.h +0 -189
  207. package/inc/util/system/atomic_win.h +0 -114
  208. package/inc/util/system/backtrace.h +0 -39
  209. package/inc/util/system/byteorder.h +0 -186
  210. package/inc/util/system/compat.h +0 -84
  211. package/inc/util/system/compiler.h +0 -620
  212. package/inc/util/system/condvar.h +0 -71
  213. package/inc/util/system/context.h +0 -181
  214. package/inc/util/system/context_aarch64.h +0 -8
  215. package/inc/util/system/context_i686.h +0 -9
  216. package/inc/util/system/context_x86.h +0 -12
  217. package/inc/util/system/context_x86_64.h +0 -7
  218. package/inc/util/system/cpu_id.h +0 -159
  219. package/inc/util/system/daemon.h +0 -28
  220. package/inc/util/system/datetime.h +0 -98
  221. package/inc/util/system/defaults.h +0 -149
  222. package/inc/util/system/demangle.h +0 -5
  223. package/inc/util/system/demangle_impl.h +0 -23
  224. package/inc/util/system/direct_io.h +0 -71
  225. package/inc/util/system/dynlib.h +0 -119
  226. package/inc/util/system/env.h +0 -32
  227. package/inc/util/system/error.h +0 -95
  228. package/inc/util/system/event.h +0 -122
  229. package/inc/util/system/execpath.h +0 -17
  230. package/inc/util/system/fasttime.h +0 -6
  231. package/inc/util/system/fhandle.h +0 -27
  232. package/inc/util/system/file.h +0 -210
  233. package/inc/util/system/file_lock.h +0 -34
  234. package/inc/util/system/filemap.h +0 -383
  235. package/inc/util/system/flock.h +0 -35
  236. package/inc/util/system/fs.h +0 -156
  237. package/inc/util/system/fs_win.h +0 -29
  238. package/inc/util/system/fstat.h +0 -46
  239. package/inc/util/system/getpid.h +0 -12
  240. package/inc/util/system/guard.h +0 -179
  241. package/inc/util/system/hi_lo.h +0 -139
  242. package/inc/util/system/hostname.h +0 -10
  243. package/inc/util/system/hp_timer.h +0 -36
  244. package/inc/util/system/info.h +0 -12
  245. package/inc/util/system/interrupt_signals.h +0 -22
  246. package/inc/util/system/madvise.h +0 -30
  247. package/inc/util/system/maxlen.h +0 -32
  248. package/inc/util/system/mem_info.h +0 -18
  249. package/inc/util/system/mincore.h +0 -38
  250. package/inc/util/system/mktemp.h +0 -11
  251. package/inc/util/system/mlock.h +0 -43
  252. package/inc/util/system/mutex.h +0 -67
  253. package/inc/util/system/nice.h +0 -3
  254. package/inc/util/system/pipe.h +0 -90
  255. package/inc/util/system/platform.h +0 -246
  256. package/inc/util/system/progname.h +0 -13
  257. package/inc/util/system/protect.h +0 -25
  258. package/inc/util/system/rusage.h +0 -26
  259. package/inc/util/system/rwlock.h +0 -78
  260. package/inc/util/system/sanitizers.h +0 -122
  261. package/inc/util/system/sem.h +0 -41
  262. package/inc/util/system/shellcommand.h +0 -472
  263. package/inc/util/system/shmat.h +0 -32
  264. package/inc/util/system/sigset.h +0 -78
  265. package/inc/util/system/spin_wait.h +0 -10
  266. package/inc/util/system/spinlock.h +0 -121
  267. package/inc/util/system/src_location.h +0 -25
  268. package/inc/util/system/src_root.h +0 -68
  269. package/inc/util/system/sys_alloc.h +0 -43
  270. package/inc/util/system/sysstat.h +0 -52
  271. package/inc/util/system/tempfile.h +0 -34
  272. package/inc/util/system/thread.h +0 -167
  273. package/inc/util/system/tls.h +0 -307
  274. package/inc/util/system/types.h +0 -119
  275. package/inc/util/system/unaligned_mem.h +0 -67
  276. package/inc/util/system/user.h +0 -5
  277. package/inc/util/system/utime.h +0 -6
  278. package/inc/util/system/valgrind.h +0 -48
  279. package/inc/util/system/winint.h +0 -43
  280. package/inc/util/system/yassert.h +0 -121
  281. package/inc/util/system/yield.h +0 -4
  282. package/inc/util/thread/factory.h +0 -65
  283. package/inc/util/thread/fwd.h +0 -30
  284. package/inc/util/thread/lfqueue.h +0 -406
  285. package/inc/util/thread/lfstack.h +0 -188
  286. package/inc/util/thread/pool.h +0 -388
  287. package/inc/util/thread/singleton.h +0 -42
  288. package/inc/util/ysafeptr.h +0 -427
  289. package/inc/util/ysaveload.h +0 -700
@@ -41,20 +41,6 @@ var fs_1 = require("fs");
41
41
  var download_1 = require("./download");
42
42
  var path_1 = require("path");
43
43
  var config_1 = require("./config");
44
- function copyHeadersRecursively(srcPath, targetPath) {
45
- for (var _i = 0, _a = fs_1.readdirSync(srcPath); _i < _a.length; _i++) {
46
- var part = _a[_i];
47
- var path = path_1.join(srcPath, part);
48
- var target = path_1.join(targetPath, part);
49
- if (fs_1.lstatSync(path).isDirectory()) {
50
- copyHeadersRecursively(path, target);
51
- continue;
52
- }
53
- if (path_1.extname(path) === '.h') {
54
- download_1.copyFile(path, target);
55
- }
56
- }
57
- }
58
44
  function prepareHeaders() {
59
45
  var incDir = './inc';
60
46
  if (!fs_1.existsSync(incDir)) {
@@ -63,10 +49,6 @@ function prepareHeaders() {
63
49
  var rootPath = '../..';
64
50
  var cApiPath = 'catboost/libs/model_interface/c_api.h';
65
51
  download_1.copyFile(path_1.join(rootPath, cApiPath), path_1.join(incDir, cApiPath));
66
- var stlfwdPath = 'contrib/libs/cxxsupp/system_stl/include/stlfwd';
67
- download_1.copyFile(path_1.join(rootPath, stlfwdPath), path_1.join(incDir, stlfwdPath));
68
- var utilPath = 'util';
69
- copyHeadersRecursively(path_1.join(rootPath, utilPath), path_1.join(incDir, utilPath));
70
52
  }
71
53
  exports.prepareHeaders = prepareHeaders;
72
54
  function generateConfigForVersion(version) {
@@ -75,7 +57,7 @@ function generateConfigForVersion(version) {
75
57
  return __generator(this, function (_b) {
76
58
  switch (_b.label) {
77
59
  case 0:
78
- console.log("Preparing config for verion " + version);
60
+ console.log("Preparing config for version " + version);
79
61
  return [4 /*yield*/, config_1.createConfigForVersion(version)];
80
62
  case 1:
81
63
  _a = _b.sent(), config = _a[0], error = _a[1];
@@ -45,7 +45,7 @@ function allTests() {
45
45
  case 0: return [4 /*yield*/, build_1.compileBindings()];
46
46
  case 1:
47
47
  _a.sent();
48
- return [4 /*yield*/, test_1.test()];
48
+ return [4 /*yield*/, test_1.test(process.argv.indexOf('--have-cuda') > -1)];
49
49
  case 2:
50
50
  _a.sent();
51
51
  return [2 /*return*/];
@@ -38,13 +38,18 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.test = void 0;
40
40
  var common_1 = require("./common");
41
- function test() {
41
+ function test(haveCuda) {
42
42
  var _a;
43
43
  return __awaiter(this, void 0, void 0, function () {
44
- var result;
44
+ var cmd, result;
45
45
  return __generator(this, function (_b) {
46
46
  switch (_b.label) {
47
- case 0: return [4 /*yield*/, common_1.execProcess('node ./lib/tests/model.js')];
47
+ case 0:
48
+ cmd = 'node ./lib/tests/model.js';
49
+ if (haveCuda) {
50
+ cmd += ' --have-cuda';
51
+ }
52
+ return [4 /*yield*/, common_1.execProcess(cmd)];
48
53
  case 1:
49
54
  result = _b.sent();
50
55
  if (result.code !== 0) {
package/config.json CHANGED
@@ -1,27 +1,34 @@
1
1
  {
2
- "linux": [
2
+ "linux-x64": [
3
3
  {
4
- "url": "https:/github.com/catboost/catboost/releases/download/v0.25.1/libcatboostmodel.so",
5
- "sha256": "ebc47ea32da1473220930014e1c705c07e7d60eda356325fabef691cd7ca8ab3",
4
+ "url": "https:/github.com/catboost/catboost/releases/download/v1.2.7/libcatboostmodel-linux-x86_64-1.2.7.so",
5
+ "sha256": "d27a19c49a40626573f5b06c04762f3d9daafb79a667b4ac3b291d6988be5e58",
6
6
  "targetFile": "libcatboostmodel.so"
7
7
  }
8
8
  ],
9
- "mac": [
9
+ "linux-arm64": [
10
10
  {
11
- "url": "https:/github.com/catboost/catboost/releases/download/v0.25.1/libcatboostmodel.dylib",
12
- "sha256": "47e92550090944cdcd0af8157b7dc198fd04cc814d9662c99160bd6b227d63bb",
11
+ "url": "https:/github.com/catboost/catboost/releases/download/v1.2.7/libcatboostmodel-linux-aarch64-1.2.7.so",
12
+ "sha256": "ea9a9b590d6630bdc122b03cda1ae02c9de354a3ad27d3ada432d097eafeea92",
13
+ "targetFile": "libcatboostmodel.so"
14
+ }
15
+ ],
16
+ "darwin-universal2": [
17
+ {
18
+ "url": "https:/github.com/catboost/catboost/releases/download/v1.2.7/libcatboostmodel-darwin-universal2-1.2.7.dylib",
19
+ "sha256": "9a61ede2b7b955d08b29b03e54f3f9a6e4d36b4e006a92ec0b56867cbb5a0eac",
13
20
  "targetFile": "libcatboostmodel.dylib"
14
21
  }
15
22
  ],
16
- "win": [
23
+ "win32-x64": [
17
24
  {
18
- "url": "https:/github.com/catboost/catboost/releases/download/v0.25.1/catboostmodel.dll",
19
- "sha256": "388921ad26d36a5fe865bf446f42a9f9e1e84fed3d2c0e104c4a777880bd6b27",
25
+ "url": "https:/github.com/catboost/catboost/releases/download/v1.2.7/catboostmodel-windows-x86_64-1.2.7.dll",
26
+ "sha256": "9953ad56abe7e8a46f8eb046f38275b1238e4b24a3f76593f3de87a7586f9077",
20
27
  "targetFile": "catboostmodel.dll"
21
28
  },
22
29
  {
23
- "url": "https:/github.com/catboost/catboost/releases/download/v0.25.1/catboostmodel.lib",
24
- "sha256": "b0acab2cf28bfcdd5e5a47be3c0e54a0bbb27f9c6efaff17d4fa2ee0a315b65b",
30
+ "url": "https:/github.com/catboost/catboost/releases/download/v1.2.7/catboostmodel-windows-x86_64-1.2.7.lib",
31
+ "sha256": "1d836f43e74f2165a02590987047a5e017d9be0c4376fed2002b672be0b600e6",
25
32
  "targetFile": "catboostmodel.lib"
26
33
  }
27
34
  ]
@@ -3,6 +3,11 @@
3
3
  #include <stdbool.h>
4
4
  #include <stddef.h>
5
5
 
6
+
7
+ #define CATBOOST_APPLIER_MAJOR 1
8
+ #define CATBOOST_APPLIER_MINOR 2
9
+ #define CATBOOST_APPLIER_FIX 7
10
+
6
11
  #if defined(__cplusplus)
7
12
  extern "C" {
8
13
  #endif
@@ -36,6 +41,8 @@ CATBOOST_API void AddCatFeatures(DataWrapperHandle* dataWrapperHandle, const cha
36
41
 
37
42
  CATBOOST_API void AddTextFeatures(DataWrapperHandle* dataWrapperHandle, const char*** textFeatures, size_t textFeaturesSize);
38
43
 
44
+ CATBOOST_API void AddEmbeddingFeatures(DataWrapperHandle* dataWrapperHandle, const float*** embeddingFeatures, size_t* embeddingDimensions, size_t embeddingFeaturesSize);
45
+
39
46
  CATBOOST_API DataProviderHandle* BuildDataProvider(DataWrapperHandle* dataWrapperHandle);
40
47
 
41
48
  typedef void ModelCalcerHandle;
@@ -46,6 +53,12 @@ enum EApiPredictionType {
46
53
  APT_RMSE_WITH_UNCERTAINTY = 2,
47
54
  APT_PROBABILITY = 3,
48
55
  APT_CLASS = 4,
56
+ APT_MULTI_PROBABILITY = 5,
57
+ };
58
+
59
+ enum ECatBoostApiFormulaEvaluatorType {
60
+ CBA_FET_CPU = 0,
61
+ CBA_FET_GPU = 1,
49
62
  };
50
63
 
51
64
  /**
@@ -90,14 +103,35 @@ CATBOOST_API bool LoadFullModelFromBuffer(
90
103
  size_t binaryBufferSize);
91
104
 
92
105
  /**
93
- * Use CUDA gpu device for model evaluation
106
+ * Use CUDA GPU device for model evaluation
94
107
  */
95
108
  CATBOOST_API bool EnableGPUEvaluation(ModelCalcerHandle* modelHandle, int deviceId);
96
109
 
110
+ /**
111
+ * Get supported formula evaluator types
112
+ * formulaEvaluatorTypes array must be deallocated using free() after use.
113
+ *
114
+ * @param modelHandle model handle
115
+ * @param formulaEvaluatorTypes address of the pointer to an array that will be initialized with formula evaluator types
116
+ * @param formulaEvaluatorTypesCount address of the variable where the size of formulaEvaluatorTypes array will be stored
117
+ * @return true on success, false on error
118
+ */
119
+ CATBOOST_API bool GetSupportedEvaluatorTypes(
120
+ ModelCalcerHandle* modelHandle,
121
+ enum ECatBoostApiFormulaEvaluatorType** formulaEvaluatorTypes,
122
+ size_t* formulaEvaluatorTypesCount);
123
+
124
+
97
125
  /**
98
126
  * Set prediction type for model evaluation
99
127
  */
100
- CATBOOST_API bool SetPredictionType(ModelCalcerHandle* modelHandle, EApiPredictionType predictionType);
128
+ CATBOOST_API bool SetPredictionType(ModelCalcerHandle* modelHandle, enum EApiPredictionType predictionType);
129
+
130
+ /**
131
+ * Set prediction type for model evaluation with string constant
132
+ */
133
+ CATBOOST_API bool SetPredictionTypeString(ModelCalcerHandle* modelHandle, const char* predictionTypeStr);
134
+
101
135
 
102
136
  /**
103
137
  * **Use this method only if you really understand what you want.**
@@ -105,7 +139,7 @@ CATBOOST_API bool SetPredictionType(ModelCalcerHandle* modelHandle, EApiPredicti
105
139
  * Flat here means that float features and categorical feature are in the same float array.
106
140
  * @param calcer model handle
107
141
  * @param docCount number of objects
108
- * @param floatFeatures array of array of float (first dimension is object index, second if feature index)
142
+ * @param floatFeatures array of array of float (first dimension is object index, second is feature index)
109
143
  * @param floatFeaturesSize float values array size
110
144
  * @param result pointer to user allocated results vector
111
145
  * @param resultSize Result size should be equal to modelApproxDimension * docCount
@@ -118,6 +152,73 @@ CATBOOST_API bool CalcModelPredictionFlat(
118
152
  const float** floatFeatures, size_t floatFeaturesSize,
119
153
  double* result, size_t resultSize);
120
154
 
155
+
156
+ /**
157
+ * **Use this method only if you really understand what you want.**
158
+ * Calculate raw model predictions on flat feature vectors
159
+ * taking into consideration only the trees in the range [treeStart; treeEnd)
160
+ * Flat here means that float features and categorical feature are in the same float array.
161
+ * @param calcer model handle
162
+ * @param docCount number of objects
163
+ * @param treeStart the index of the first tree to be used when applying the model (zero-based)
164
+ * @param treeEnd the index of the last tree to be used when applying the model (non-inclusive, zero-based)
165
+ * @param floatFeatures array of array of float (first dimension is object index, second is feature index)
166
+ * @param floatFeaturesSize float values array size
167
+ * @param result pointer to user allocated results vector
168
+ * @param resultSize Result size should be equal to modelApproxDimension * docCount
169
+ * (e.g. for non multiclass models should be equal to docCount)
170
+ * @return false if error occured
171
+ */
172
+ CATBOOST_API bool CalcModelPredictionFlatStaged(
173
+ ModelCalcerHandle* modelHandle,
174
+ size_t docCount,
175
+ size_t treeStart, size_t treeEnd,
176
+ const float** floatFeatures, size_t floatFeaturesSize,
177
+ double* result, size_t resultSize);
178
+
179
+
180
+ /**
181
+ * **Use this method only if you really understand what you want.**
182
+ * Calculate raw model predictions on transposed dataset layout
183
+ * @param calcer model handle
184
+ * @param docCount number of objects
185
+ * @param floatFeatures array of array of float (first dimension is feature index, second is object index)
186
+ * @param floatFeaturesSize float values array size
187
+ * @param result pointer to user allocated results vector
188
+ * @param resultSize Result size should be equal to modelApproxDimension * docCount
189
+ * (e.g. for non multiclass models should be equal to docCount)
190
+ * @return false if error occured
191
+ */
192
+ CATBOOST_API bool CalcModelPredictionFlatTransposed(
193
+ ModelCalcerHandle* modelHandle,
194
+ size_t docCount,
195
+ const float** floatFeatures, size_t floatFeaturesSize,
196
+ double* result, size_t resultSize);
197
+
198
+
199
+ /**
200
+ * **Use this method only if you really understand what you want.**
201
+ * Calculate raw model predictions on transposed dataset layout
202
+ * taking into consideration only the trees in the range [treeStart; treeEnd)
203
+ * @param calcer model handle
204
+ * @param docCount number of objects
205
+ * @param treeStart the index of the first tree to be used when applying the model (zero-based)
206
+ * @param treeEnd the index of the last tree to be used when applying the model (non-inclusive, zero-based)
207
+ * @param floatFeatures array of array of float (first dimension is feature index, second is object index)
208
+ * @param floatFeaturesSize float values array size
209
+ * @param result pointer to user allocated results vector
210
+ * @param resultSize Result size should be equal to modelApproxDimension * docCount
211
+ * (e.g. for non multiclass models should be equal to docCount)
212
+ * @return false if error occured
213
+ */
214
+ CATBOOST_API bool CalcModelPredictionFlatTransposedStaged(
215
+ ModelCalcerHandle* modelHandle,
216
+ size_t docCount,
217
+ size_t treeStart, size_t treeEnd,
218
+ const float** floatFeatures, size_t floatFeaturesSize,
219
+ double* result, size_t resultSize);
220
+
221
+
121
222
  /**
122
223
  * Calculate raw model predictions on float features and string categorical feature values
123
224
  * @param calcer model handle
@@ -139,6 +240,32 @@ CATBOOST_API bool CalcModelPrediction(
139
240
  const char*** catFeatures, size_t catFeaturesSize,
140
241
  double* result, size_t resultSize);
141
242
 
243
+ /**
244
+ * Calculate raw model predictions on float features and string categorical feature values
245
+ * taking into consideration only the trees in the range [treeStart; treeEnd)
246
+ * @param calcer model handle
247
+ * @param docCount object count
248
+ * @param treeStart the index of the first tree to be used when applying the model (zero-based)
249
+ * @param treeEnd the index of the last tree to be used when applying the model (non-inclusive, zero-based)
250
+ * @param floatFeatures array of array of float (first dimension is object index, second is feature index)
251
+ * @param floatFeaturesSize float feature count
252
+ * @param catFeatures array of array of char* categorical value pointers.
253
+ * String pointer should point to zero terminated string.
254
+ * @param catFeaturesSize categorical feature count
255
+ * @param result pointer to user allocated results vector
256
+ * @param resultSize result size should be equal to modelApproxDimension * docCount
257
+ * (e.g. for non multiclass models should be equal to docCount)
258
+ * @return false if error occured
259
+ */
260
+ CATBOOST_API bool CalcModelPredictionStaged(
261
+ ModelCalcerHandle* modelHandle,
262
+ size_t docCount,
263
+ size_t treeStart, size_t treeEnd,
264
+ const float** floatFeatures, size_t floatFeaturesSize,
265
+ const char*** catFeatures, size_t catFeaturesSize,
266
+ double* result, size_t resultSize);
267
+
268
+
142
269
  /**
143
270
  * Calculate raw model predictions on float features and string categorical feature values
144
271
  * @param calcer model handle
@@ -164,6 +291,101 @@ CATBOOST_API bool CalcModelPredictionText(
164
291
  const char*** textFeatures, size_t textFeaturesSize,
165
292
  double* result, size_t resultSize);
166
293
 
294
+
295
+ /**
296
+ * Calculate raw model predictions on float features and string categorical feature values
297
+ * taking into consideration only the trees in the range [treeStart; treeEnd)
298
+ * @param calcer model handle
299
+ * @param docCount object count
300
+ * @param treeStart the index of the first tree to be used when applying the model (zero-based)
301
+ * @param treeEnd the index of the last tree to be used when applying the model (non-inclusive, zero-based)
302
+ * @param floatFeatures array of array of float (first dimension is object index, second is feature index)
303
+ * @param floatFeaturesSize float feature count
304
+ * @param catFeatures array of array of char* categorical value pointers.
305
+ * String pointer should point to zero terminated string.
306
+ * @param catFeaturesSize categorical feature count
307
+ * @param textFeatures array of array of char* text value pointers.
308
+ * String pointer should point to zero terminated string.
309
+ * @param textFeaturesSize text feature count
310
+ * @param result pointer to user allocated results vector
311
+ * @param resultSize result size should be equal to modelApproxDimension * docCount
312
+ * (e.g. for non multiclass models should be equal to docCount)
313
+ * @return false if error occured
314
+ */
315
+ CATBOOST_API bool CalcModelPredictionTextStaged(
316
+ ModelCalcerHandle* modelHandle,
317
+ size_t docCount,
318
+ size_t treeStart, size_t treeEnd,
319
+ const float** floatFeatures, size_t floatFeaturesSize,
320
+ const char*** catFeatures, size_t catFeaturesSize,
321
+ const char*** textFeatures, size_t textFeaturesSize,
322
+ double* result, size_t resultSize);
323
+
324
+
325
+ /**
326
+ * Calculate raw model predictions on float features and string categorical feature values
327
+ * @param calcer model handle
328
+ * @param docCount object count
329
+ * @param floatFeatures array of array of float (first dimension is object index, second is feature index)
330
+ * @param floatFeaturesSize float feature count
331
+ * @param catFeatures array of array of char* categorical value pointers.
332
+ * String pointer should point to zero terminated string.
333
+ * @param catFeaturesSize categorical feature count
334
+ * @param textFeatures array of array of char* text value pointers.
335
+ * String pointer should point to zero terminated string.
336
+ * @param textFeaturesSize text feature count
337
+ * @param embeddingFeatures array of array of array of float (first dimension is object index, second is feature index, third is index in embedding array).
338
+ * String pointer should point to zero terminated string.
339
+ * @param embeddingFeaturesSize embedding feature count
340
+ * @param result pointer to user allocated results vector
341
+ * @param resultSize result size should be equal to modelApproxDimension * docCount
342
+ * (e.g. for non multiclass models should be equal to docCount)
343
+ * @return false if error occured
344
+ */
345
+ CATBOOST_API bool CalcModelPredictionTextAndEmbeddings(
346
+ ModelCalcerHandle* modelHandle,
347
+ size_t docCount,
348
+ const float** floatFeatures, size_t floatFeaturesSize,
349
+ const char*** catFeatures, size_t catFeaturesSize,
350
+ const char*** textFeatures, size_t textFeaturesSize,
351
+ const float*** embeddingFeatures, size_t* embeddingDimensions, size_t embeddingFeaturesSize,
352
+ double* result, size_t resultSize);
353
+
354
+
355
+ /**
356
+ * Calculate raw model predictions on float features and string categorical feature values
357
+ * taking into consideration only the trees in the range [treeStart; treeEnd)
358
+ * @param calcer model handle
359
+ * @param docCount object count
360
+ * @param treeStart the index of the first tree to be used when applying the model (zero-based)
361
+ * @param treeEnd the index of the last tree to be used when applying the model (non-inclusive, zero-based)
362
+ * @param floatFeatures array of array of float (first dimension is object index, second is feature index)
363
+ * @param floatFeaturesSize float feature count
364
+ * @param catFeatures array of array of char* categorical value pointers.
365
+ * String pointer should point to zero terminated string.
366
+ * @param catFeaturesSize categorical feature count
367
+ * @param textFeatures array of array of char* text value pointers.
368
+ * String pointer should point to zero terminated string.
369
+ * @param textFeaturesSize text feature count
370
+ * @param embeddingFeatures array of array of array of float (first dimension is object index, second is feature index, third is index in embedding array).
371
+ * String pointer should point to zero terminated string.
372
+ * @param embeddingFeaturesSize embedding feature count
373
+ * @param result pointer to user allocated results vector
374
+ * @param resultSize result size should be equal to modelApproxDimension * docCount
375
+ * (e.g. for non multiclass models should be equal to docCount)
376
+ * @return false if error occured
377
+ */
378
+ CATBOOST_API bool CalcModelPredictionTextAndEmbeddingsStaged(
379
+ ModelCalcerHandle* modelHandle,
380
+ size_t docCount,
381
+ size_t treeStart, size_t treeEnd,
382
+ const float** floatFeatures, size_t floatFeaturesSize,
383
+ const char*** catFeatures, size_t catFeaturesSize,
384
+ const char*** textFeatures, size_t textFeaturesSize,
385
+ const float*** embeddingFeatures, size_t* embeddingDimensions, size_t embeddingFeaturesSize,
386
+ double* result, size_t resultSize);
387
+
388
+
167
389
  /**
168
390
  * Calculate raw model prediction on float features and string categorical feature values for single object
169
391
  * @param calcer model handle
@@ -184,6 +406,30 @@ CATBOOST_API bool CalcModelPredictionSingle(
184
406
  double* result, size_t resultSize);
185
407
 
186
408
 
409
+ /**
410
+ * Calculate raw model prediction on float features and string categorical feature values for single object
411
+ * taking into consideration only the trees in the range [treeStart; treeEnd)
412
+ * @param calcer model handle
413
+ * @param treeStart the index of the first tree to be used when applying the model (zero-based)
414
+ * @param treeEnd the index of the last tree to be used when applying the model (non-inclusive, zero-based)
415
+ * @param floatFeatures array of float features
416
+ * @param floatFeaturesSize float feature count
417
+ * @param catFeatures array of char* categorical feature value pointers.
418
+ * Each string pointer should point to zero terminated string.
419
+ * @param catFeaturesSize categorical feature count
420
+ * @param result pointer to user allocated results vector (or single double)
421
+ * @param resultSize result size should be equal to modelApproxDimension
422
+ * (e.g. for non multiclass models should be equal to 1)
423
+ * @return false if error occured
424
+ */
425
+ CATBOOST_API bool CalcModelPredictionSingleStaged(
426
+ ModelCalcerHandle* modelHandle,
427
+ size_t treeStart, size_t treeEnd,
428
+ const float* floatFeatures, size_t floatFeaturesSize,
429
+ const char** catFeatures, size_t catFeaturesSize,
430
+ double* result, size_t resultSize);
431
+
432
+
187
433
  /**
188
434
  * Calculate raw model predictions on float features and hashed categorical feature values
189
435
  * @param calcer model handle
@@ -212,6 +458,15 @@ CATBOOST_API bool CalcModelPredictionWithHashedCatFeaturesAndTextFeatures(
212
458
  const char*** textFeatures, size_t textFeaturesSize,
213
459
  double* result, size_t resultSize);
214
460
 
461
+ CATBOOST_API bool CalcModelPredictionWithHashedCatFeaturesAndTextAndEmbeddingFeatures(
462
+ ModelCalcerHandle* modelHandle,
463
+ size_t docCount,
464
+ const float** floatFeatures, size_t floatFeaturesSize,
465
+ const int** catFeatures, size_t catFeaturesSize,
466
+ const char*** textFeatures, size_t textFeaturesSize,
467
+ const float*** embeddingFeatures, size_t* embeddingDimensions, size_t embeddingFeaturesSize,
468
+ double* result, size_t resultSize);
469
+
215
470
  /**
216
471
  * Methods equivalent to the methods above
217
472
  * only returning a prediction for the specific class
@@ -242,6 +497,16 @@ CATBOOST_API bool PredictSpecificClassText(
242
497
  int classId,
243
498
  double* result, size_t resultSize);
244
499
 
500
+ CATBOOST_API bool PredictSpecificClassTextAndEmbeddings(
501
+ ModelCalcerHandle* modelHandle,
502
+ size_t docCount,
503
+ const float** floatFeatures, size_t floatFeaturesSize,
504
+ const char*** catFeatures, size_t catFeaturesSize,
505
+ const char*** textFeatures, size_t textFeaturesSize,
506
+ const float*** embeddingFeatures, size_t* embeddingDimensions, size_t embeddingFeaturesSize,
507
+ int classId,
508
+ double* result, size_t resultSize);
509
+
245
510
  CATBOOST_API bool PredictSpecificClassSingle(
246
511
  ModelCalcerHandle* modelHandle,
247
512
  const float* floatFeatures, size_t floatFeaturesSize,
@@ -266,6 +531,16 @@ CATBOOST_API bool PredictSpecificClassWithHashedCatFeaturesAndTextFeatures(
266
531
  int classId,
267
532
  double* result, size_t resultSize);
268
533
 
534
+ CATBOOST_API bool PredictSpecificClassWithHashedCatFeaturesAndTextAndEmbeddingFeatures(
535
+ ModelCalcerHandle* modelHandle,
536
+ size_t docCount,
537
+ const float** floatFeatures, size_t floatFeaturesSize,
538
+ const int** catFeatures, size_t catFeaturesSize,
539
+ const char*** textFeatures, size_t textFeaturesSize,
540
+ const float*** embeddingFeatures, size_t* embeddingDimensions, size_t embeddingFeaturesSize,
541
+ int classId,
542
+ double* result, size_t resultSize);
543
+
269
544
  /**
270
545
  * Get hash for given string value
271
546
  * @param data we don't expect data to be zero terminated, so pass correct size
@@ -289,12 +564,64 @@ CATBOOST_API int GetIntegerCatFeatureHash(long long val);
289
564
  */
290
565
  CATBOOST_API size_t GetFloatFeaturesCount(ModelCalcerHandle* modelHandle);
291
566
 
567
+ /**
568
+ * Get expected indices of float features used in the model.
569
+ * indices array must be deallocated using free() after use.
570
+ * @param modelHandle model handle
571
+ * @param indices indices of the features
572
+ * @param count indices size
573
+ * @return true on success, false on error
574
+ */
575
+ CATBOOST_API bool GetFloatFeatureIndices(ModelCalcerHandle* modelHandle, size_t** indices, size_t* count);
576
+
292
577
  /**
293
578
  * Get expected categorical feature count for model
294
579
  * @param calcer model handle
295
580
  */
296
581
  CATBOOST_API size_t GetCatFeaturesCount(ModelCalcerHandle* modelHandle);
297
582
 
583
+ /**
584
+ * Get expected indices of category features used in the model.
585
+ * indices array must be deallocated using free() after use.
586
+ * @param modelHandle model handle
587
+ * @param indices indices of the features
588
+ * @param count indices size
589
+ * @return true on success, false on error
590
+ */
591
+ CATBOOST_API bool GetCatFeatureIndices(ModelCalcerHandle* modelHandle, size_t** indices, size_t* count);
592
+
593
+ /**
594
+ * Get expected text feature count for model
595
+ * @param calcer model handle
596
+ */
597
+ CATBOOST_API size_t GetTextFeaturesCount(ModelCalcerHandle* modelHandle);
598
+
599
+ /**
600
+ * Get expected indices of text features used in the model.
601
+ * indices array must be deallocated using free() after use.
602
+ * @param modelHandle model handle
603
+ * @param indices indices of the features
604
+ * @param count indices size
605
+ * @return true on success, false on error
606
+ */
607
+ CATBOOST_API bool GetTextFeatureIndices(ModelCalcerHandle* modelHandle, size_t** indices, size_t* count);
608
+
609
+ /**
610
+ * Get expected embedding feature count for model
611
+ * @param calcer model handle
612
+ */
613
+ CATBOOST_API size_t GetEmbeddingFeaturesCount(ModelCalcerHandle* modelHandle);
614
+
615
+ /**
616
+ * Get expected indices of embedding features used in the model.
617
+ * indices array must be deallocated using free() after use.
618
+ * @param modelHandle model handle
619
+ * @param indices indices of the features
620
+ * @param count indices size
621
+ * @return true on success, false on error
622
+ */
623
+ CATBOOST_API bool GetEmbeddingFeatureIndices(ModelCalcerHandle* modelHandle, size_t** indices, size_t* count);
624
+
298
625
  /**
299
626
  * Get number of trees in model
300
627
  * @param calcer model handle
@@ -307,6 +634,15 @@ CATBOOST_API size_t GetTreeCount(ModelCalcerHandle* modelHandle);
307
634
  */
308
635
  CATBOOST_API size_t GetDimensionsCount(ModelCalcerHandle* modelHandle);
309
636
 
637
+ /**
638
+ * Get number of dimensions for current prediction
639
+ * For default `APT_RAW_FORMULA_VAL`, `APT_EXPONENT`, `APT_PROBABILITY`, `APT_CLASS` prediction type GetPredictionDimensionsCount == GetDimensionsCount
640
+ * For `APT_RMSE_WITH_UNCERTAINTY` - returns 2 (value prediction and predicted uncertainty)
641
+ * @param calcer model handle
642
+ */
643
+ CATBOOST_API size_t GetPredictionDimensionsCount(ModelCalcerHandle* modelHandle);
644
+
645
+
310
646
  /**
311
647
  * Check if model metadata holds some value for provided key
312
648
  * @param calcer model handle
@@ -325,6 +661,16 @@ CATBOOST_API size_t GetModelInfoValueSize(ModelCalcerHandle* modelHandle, const
325
661
  */
326
662
  CATBOOST_API const char* GetModelInfoValue(ModelCalcerHandle* modelHandle, const char* keyPtr, size_t keySize);
327
663
 
664
+
665
+ /**
666
+ * Get names of features used in the model.
667
+ * individual strings in featureNames array and featureNames array itself must be deallocated using free() after use.
668
+ *
669
+ * @return true on success, false on error
670
+ */
671
+ CATBOOST_API bool GetModelUsedFeaturesNames(ModelCalcerHandle* modelHandle, char*** featureNames, size_t* featureCount);
672
+
673
+
328
674
  #if defined(__cplusplus)
329
675
  }
330
676
  #endif