| 919 | } |
| 920 | |
| 921 | int LGBM_DatasetGetSubset( |
| 922 | const DatasetHandle handle, |
| 923 | const int32_t* used_row_indices, |
| 924 | int32_t num_used_row_indices, |
| 925 | const char* parameters, |
| 926 | DatasetHandle* out) { |
| 927 | API_BEGIN(); |
| 928 | auto param = Config::Str2Map(parameters); |
| 929 | Config config; |
| 930 | config.Set(param); |
| 931 | if (config.num_threads > 0) { |
| 932 | omp_set_num_threads(config.num_threads); |
| 933 | } |
| 934 | auto full_dataset = reinterpret_cast<const Dataset*>(handle); |
| 935 | CHECK(num_used_row_indices > 0); |
| 936 | const int32_t lower = 0; |
| 937 | const int32_t upper = full_dataset->num_data() - 1; |
| 938 | Common::CheckElementsIntervalClosed(used_row_indices, lower, upper, num_used_row_indices, "Used indices of subset"); |
| 939 | if (!std::is_sorted(used_row_indices, used_row_indices + num_used_row_indices)) { |
| 940 | Log::Fatal("used_row_indices should be sorted in Subset"); |
| 941 | } |
| 942 | auto ret = std::unique_ptr<Dataset>(new Dataset(num_used_row_indices)); |
| 943 | ret->CopyFeatureMapperFrom(full_dataset); |
| 944 | ret->CopySubset(full_dataset, used_row_indices, num_used_row_indices, true); |
| 945 | *out = ret.release(); |
| 946 | API_END(); |
| 947 | } |
| 948 | |
| 949 | int LGBM_DatasetSetFeatureNames( |
| 950 | DatasetHandle handle, |
no test coverage detected