106 {
107
108 using namespace internal;
109
110
111
113
114 std::vector<float> vertex_feat;
117 vertex_feat.push_back(getter(vertex).second);
118 }
119 std::vector<int64_t> vertexfeat_dim = {1, static_cast<int64_t>(vertex_feat.size())};
120
121 for (const auto& value : vertex_feat) {
122 if (!std::isfinite(value)) {
123 throw std::runtime_error("Non-finite scalar vertex input before runInference");
124 }
125 }
126
127 FlavorTagInference::Inputs vertex_info (vertex_feat, vertexfeat_dim);
129
130 constexpr std::array<const char*, 4> scalar_input_aliases = {
131 "vertice_features", "vertex_features", "vertice_var", "vertex_var"
132 };
133 for (const char* alias : scalar_input_aliases) {
134 pvnn_input.insert({
alias, vertex_info});
135 }
136
138 auto [sequence_name, sequence_data, sequence_constituents] = loader->getData(vertex);
139 pvnn_input.insert({sequence_name, sequence_data});
140 const std::string legacy_sequence_name = loader->getName();
141 if (legacy_sequence_name != sequence_name) {
142 pvnn_input.insert({legacy_sequence_name, sequence_data});
143 }
144 }
145
146
147
148
149
150 std::feclearexcept(FE_ALL_EXCEPT);
151
152 const FlavorTagInference::InferenceOutput inference_output =
155
156
157
160
161 for (const auto& outNode : pvnn_output_config) {
162 std::string score_name = outNode.name;
163
164 if (outNode.name.find("_phsvertex") != std::string::npos) {
165 score = out_f.at(score_name);
166 }
167 }
168 std::feclearexcept(FE_ALL_EXCEPT);
169
171
172 }
std::map< std::string, Inputs, std::less<> > InputMap
std::map< std::string, float > singleFloat