| 401 | } |
| 402 | |
| 403 | void OutputEvalResultToFile( |
| 404 | const TEvalColumnsInfo& evalColumnsInfo, |
| 405 | NPar::ILocalExecutor* executor, |
| 406 | const TVector<TVector<TString>>& outputColumns, // [modelIdx] |
| 407 | const TDataProvider& pool, |
| 408 | IOutputStream* outputStream, |
| 409 | TIntrusivePtr<IPoolColumnsPrinter> poolColumnsPrinter, |
| 410 | std::pair<int, int> testFileWhichOf, |
| 411 | bool writeHeader, |
| 412 | ui64 docIdOffset, |
| 413 | TMaybe<std::pair<size_t, size_t>> evalParameters, // evalPeriod, iterationsLimit |
| 414 | double binClassLogitThreshold) { |
| 415 | |
| 416 | bool needPoolColumnsPrinter; |
| 417 | TVector<THolder<IColumnPrinter>> columnPrinter = InitializeColumnWriter( |
| 418 | evalColumnsInfo, |
| 419 | executor, |
| 420 | outputColumns, |
| 421 | pool, |
| 422 | poolColumnsPrinter, |
| 423 | testFileWhichOf, |
| 424 | docIdOffset, |
| 425 | &needPoolColumnsPrinter, |
| 426 | evalParameters, |
| 427 | binClassLogitThreshold |
| 428 | ); |
| 429 | |
| 430 | if (writeHeader) { |
| 431 | TString delimiter = ""; |
| 432 | for (auto& printer : columnPrinter) { |
| 433 | *outputStream << delimiter; |
| 434 | printer->OutputHeader(outputStream); |
| 435 | delimiter = printer->GetAfterColumnDelimiter(); |
| 436 | } |
| 437 | *outputStream << Endl; |
| 438 | } |
| 439 | for (ui32 docId = 0; docId < pool.ObjectsGrouping->GetObjectCount(); ++docId) { |
| 440 | TString delimiter = ""; |
| 441 | for (auto& printer : columnPrinter) { |
| 442 | *outputStream << delimiter; |
| 443 | printer->OutputValue(outputStream, docId); |
| 444 | delimiter = printer->GetAfterColumnDelimiter(); |
| 445 | } |
| 446 | *outputStream << Endl; |
| 447 | } |
| 448 | } |
| 449 | |
| 450 | void OutputEvalResultToFile( |
| 451 | const TEvalResult& evalResult, |
no test coverage detected