/* ----------------------------------------------------------------------- *//** * * @file Ordinal_proto.hpp * *//* ----------------------------------------------------------------------- */ #ifndef MADLIB_MODULES_GLM_ORDINAL_PROTO_HPP #define MADLIB_MODULES_GLM_ORDINAL_PROTO_HPP #include "family.hpp" #include "link.hpp" #include namespace madlib { namespace modules { namespace glm { // Use Eigen using namespace dbal; using namespace dbal::eigen_integration; template class OrdinalAccumulator : public DynamicStruct,Container> { public: typedef DynamicStruct Base; MADLIB_DYNAMIC_STRUCT_TYPEDEFS; typedef std::tuple tuple_type; OrdinalAccumulator(Init_type& inInitialization); void bind(ByteStream_type& inStream); OrdinalAccumulator& operator<<(const tuple_type& inTuple); template OrdinalAccumulator& operator<<(const OrdinalAccumulator& inOther); template OrdinalAccumulator& operator=(const OrdinalAccumulator& inOther); void apply(); void reset(); bool empty() const { return this->num_rows == 0; } uint16_type num_features; uint16_type num_categories; uint64_type num_rows; bool_type terminated; double_type loglik; convex::Newton optimizer; Matrix_type vcov; }; // ------------------------------------------------------------------------ class OrdinalResult { public: template OrdinalResult( const OrdinalAccumulator& inState); template OrdinalResult& compute( const OrdinalAccumulator& inState); // native arrays returns to db without copying double loglik; MutableNativeColumnVector coef_alpha; MutableNativeColumnVector std_err_alpha; MutableNativeColumnVector z_stats_alpha; MutableNativeColumnVector p_values_alpha; uint64_t num_rows_processed; MutableNativeColumnVector coef_beta; MutableNativeColumnVector std_err_beta; MutableNativeColumnVector z_stats_beta; MutableNativeColumnVector p_values_beta; }; } // namespace glm } // namespace modules } // namespace madlib #endif // defined(MADLIB_MODULES_GLM_ORDINAL_PROTO_HPP)