| 52 | |
| 53 | |
| 54 | TDataMetaInfo::TDataMetaInfo( |
| 55 | TMaybe<TDataColumnsMetaInfo>&& columnsInfo, |
| 56 | ERawTargetType targetType, |
| 57 | bool hasAdditionalGroupWeight, |
| 58 | bool hasTimestamp, |
| 59 | bool hasPairs, |
| 60 | bool hasGraph, |
| 61 | bool loadSampleIds, |
| 62 | bool forceUnitAutoPairWeights, |
| 63 | TMaybe<ui32> additionalBaselineCount, |
| 64 | TMaybe<const TVector<TString>*> featureNames, |
| 65 | TMaybe<const THashMap<TString, TTagDescription>*> featureTags, |
| 66 | const TVector<NJson::TJsonValue>& classLabels |
| 67 | ) |
| 68 | : TargetType(targetType) |
| 69 | , ClassLabels(classLabels) |
| 70 | , ColumnsInfo(std::move(columnsInfo)) |
| 71 | { |
| 72 | ColumnsInfo->Validate(); |
| 73 | |
| 74 | FeaturesLayout = TFeaturesLayout::CreateFeaturesLayout(ColumnsInfo->Columns, featureNames, featureTags, hasGraph); |
| 75 | |
| 76 | TargetCount = ColumnsInfo->CountColumns(EColumn::Label); |
| 77 | if (TargetCount) { |
| 78 | CB_ENSURE(TargetType != ERawTargetType::None, "data has target columns, but target type specified as None"); |
| 79 | } else { |
| 80 | CB_ENSURE( |
| 81 | TargetType == ERawTargetType::None, |
| 82 | "data has no target columns, but target type specified as not None" |
| 83 | ); |
| 84 | } |
| 85 | |
| 86 | BaselineCount = additionalBaselineCount ? *additionalBaselineCount : ColumnsInfo->CountColumns(EColumn::Baseline); |
| 87 | |
| 88 | HasGroupId = ColumnsInfo->CountColumns(EColumn::GroupId) != 0; |
| 89 | HasGroupWeight = ColumnsInfo->CountColumns(EColumn::GroupWeight) != 0 || hasAdditionalGroupWeight; |
| 90 | HasSubgroupIds = ColumnsInfo->CountColumns(EColumn::SubgroupId) != 0; |
| 91 | if (loadSampleIds) { |
| 92 | HasSampleId = ColumnsInfo->CountColumns(EColumn::SampleId) != 0; |
| 93 | if (HasSampleId) { |
| 94 | StoreStringColumns = true; |
| 95 | } |
| 96 | } |
| 97 | HasWeights = ColumnsInfo->CountColumns(EColumn::Weight) != 0; |
| 98 | HasTimestamp = ColumnsInfo->CountColumns(EColumn::Timestamp) != 0 || hasTimestamp; |
| 99 | HasPairs = hasPairs; |
| 100 | HasGraph = hasGraph; |
| 101 | ForceUnitAutoPairWeights = forceUnitAutoPairWeights; |
| 102 | |
| 103 | Validate(); |
| 104 | } |
| 105 | |
| 106 | bool TDataMetaInfo::EqualTo(const TDataMetaInfo& rhs, bool ignoreSparsity) const { |
| 107 | if (FeaturesLayout) { |
nothing calls this directly
no test coverage detected