123456789101112131415161718192021222324252627282930313233343536373839 |
- #include "builder.h"
- #include "common.h"
- #include <library/cpp/codecs/static/static_codec_info.pb.h>
- #include <library/cpp/codecs/codecs.h>
- #include <util/generic/yexception.h>
- #include <util/string/subst.h>
- namespace NCodecs {
- TStaticCodecInfo BuildStaticCodec(const TVector<TString>& trainingData, const TCodecBuildInfo& info) {
- TStaticCodecInfo result;
- TCodecPtr codec = ICodec::GetInstance(info.CodecName);
- Y_ENSURE_EX(codec, TCodecException() << "empty codec is not allowed");
- codec->LearnX(trainingData.begin(), trainingData.end(), info.SampleSizeMultiplier);
- {
- TStringOutput sout{*result.MutableStoredCodec()};
- ICodec::Store(&sout, codec);
- }
- auto& debugInfo = *result.MutableDebugInfo();
- debugInfo.SetStoredCodecHash(DataSignature(result.GetStoredCodec()));
- debugInfo.SetCodecName(info.CodecName);
- debugInfo.SetSampleSizeMultiplier(info.SampleSizeMultiplier);
- debugInfo.SetTimestamp(info.Timestamp);
- debugInfo.SetRevisionInfo(info.RevisionInfo);
- debugInfo.SetTrainingSetComment(info.TrainingSetComment);
- debugInfo.SetTrainingSetResId(info.TrainingSetResId);
- return result;
- }
- TString GetStandardFileName(const TStaticCodecInfo& info) {
- TString cName = info.GetDebugInfo().GetCodecName();
- SubstGlobal(cName, ':', '.');
- return TStringBuilder() << cName << "." << info.GetDebugInfo().GetTimestamp() << ".codec_info";
- }
- }
|