class VowpalWabbit < Formula desc "Online learning algorithm" homepage "https://github.com/VowpalWabbit/vowpal_wabbit" url "https://github.com/VowpalWabbit/vowpal_wabbit/archive/9.0.1.tar.gz" sha256 "50c0a766c3f0f4a4ba29ac1db8949ee352e0d7e4f2df819fb410f8a34e3ea051" license "BSD-3-Clause" revision 1 head "https://github.com/VowpalWabbit/vowpal_wabbit.git", branch: "master" bottle do sha256 cellar: :any, arm64_monterey: "d886521fdaef5d2daa2f0dab504da171d0dd1c950111d356cf35ba8a3899912d" sha256 cellar: :any, arm64_big_sur: "bb3190c175aa514d44821dc26e6695c5926e0e7126b364de0da6b0c6ffa1a89d" sha256 cellar: :any, monterey: "b0284e529a60679747b913c259a11640e8d023736fb1265cf7e497f94d5c7bc7" sha256 cellar: :any, big_sur: "cfe1a99a1bc9423715ea88106a4fd0d8e629cb8d5880cb021ed625db7a1534a9" sha256 cellar: :any, catalina: "c4c1a470990c185adbdfa258eff56b573da2079ab658812aa640d35a1038caa2" sha256 cellar: :any_skip_relocation, x86_64_linux: "3491bdfa71e72e98c38fbe4f50c1a54eabc02f706f4cb0b598855a75d78fb1a5" end depends_on "cmake" => :build depends_on "flatbuffers" => :build depends_on "rapidjson" => :build depends_on "spdlog" => :build depends_on "boost" depends_on "fmt" depends_on "zlib" def install ENV.cxx11 # The project provides a Makefile, but it is a basic wrapper around cmake # that does not accept *std_cmake_args. # The following should be equivalent, while supporting Homebrew's standard args. mkdir "build" do system "cmake", "..", *std_cmake_args, "-DBUILD_TESTS=OFF", "-DRAPIDJSON_SYS_DEP=ON", "-DFMT_SYS_DEP=ON", "-DSPDLOG_SYS_DEP=ON", "-DBUILD_FLATBUFFERS=ON" system "make", "install" end bin.install Dir["utl/*"] rm bin/"active_interactor.py" rm bin/"vw-validate.html" rm bin/"clang-format" rm_r bin/"flatbuffer" rm_r bin/"dump_options" end test do (testpath/"house_dataset").write <<~EOS 0 | price:.23 sqft:.25 age:.05 2006 1 2 'second_house | price:.18 sqft:.15 age:.35 1976 0 1 0.5 'third_house | price:.53 sqft:.32 age:.87 1924 EOS system bin/"vw", "house_dataset", "-l", "10", "-c", "--passes", "25", "--holdout_off", "--audit", "-f", "house.model", "--nn", "5" system bin/"vw", "-t", "-i", "house.model", "-d", "house_dataset", "-p", "house.predict" (testpath/"csoaa.dat").write <<~EOS 1:1.0 a1_expect_1| a 2:1.0 b1_expect_2| b 3:1.0 c1_expect_3| c 1:2.0 2:1.0 ab1_expect_2| a b 2:1.0 3:3.0 bc1_expect_2| b c 1:3.0 3:1.0 ac1_expect_3| a c 2:3.0 d1_expect_2| d EOS system bin/"vw", "--csoaa", "3", "csoaa.dat", "-f", "csoaa.model" system bin/"vw", "-t", "-i", "csoaa.model", "-d", "csoaa.dat", "-p", "csoaa.predict" (testpath/"ect.dat").write <<~EOS 1 ex1| a 2 ex2| a b 3 ex3| c d e 2 ex4| b a 1 ex5| f g EOS system bin/"vw", "--ect", "3", "-d", "ect.dat", "-f", "ect.model" system bin/"vw", "-t", "-i", "ect.model", "-d", "ect.dat", "-p", "ect.predict" (testpath/"train.dat").write <<~EOS 1:2:0.4 | a c 3:0.5:0.2 | b d 4:1.2:0.5 | a b c 2:1:0.3 | b c 3:1.5:0.7 | a d EOS (testpath/"test.dat").write <<~EOS 1:2 3:5 4:1:0.6 | a c d 1:0.5 2:1:0.4 3:2 4:1.5 | c d EOS system bin/"vw", "-d", "train.dat", "--cb", "4", "-f", "cb.model" system bin/"vw", "-t", "-i", "cb.model", "-d", "test.dat", "-p", "cb.predict" end end