public function test_scenario2()
 {
     $data = array(array('filename' => 'data/iris_anomalous.csv', 'rows' => 1));
     foreach ($data as $item) {
         print "I create a data source uploading a " . $item["filename"] . " file\n";
         $source = self::$api->create_source($item["filename"], $options = array('name' => 'local_test_source'));
         $this->assertEquals(BigMLRequest::HTTP_CREATED, $source->code);
         $this->assertEquals(1, $source->object->status->code);
         print "check local source is ready\n";
         $resource = self::$api->_check_resource($source->resource, null, 20000, 30);
         $this->assertEquals(BigMLRequest::FINISHED, $resource["status"]);
         print "create dataset with local source\n";
         $dataset = self::$api->create_dataset($source->resource);
         $this->assertEquals(BigMLRequest::HTTP_CREATED, $dataset->code);
         $this->assertEquals(BigMLRequest::QUEUED, $dataset->object->status->code);
         print "check the dataset is ready " . $dataset->resource . " \n";
         $resource = self::$api->_check_resource($dataset->resource, null, 20000, 30);
         $this->assertEquals(BigMLRequest::FINISHED, $resource["status"]);
         print "I create an anomaly detector with (\\d+) anomalies from a dataset\n";
         $anomaly = self::$api->create_anomaly($dataset->resource, array('seed' => 'BigML', 'top_n' => $item["rows"]));
         print "I wait until the anomaly detector is ready\n";
         $resource = self::$api->_check_resource($anomaly->resource, null, 3000, 30);
         $this->assertEquals(BigMLRequest::FINISHED, $resource["status"]);
         print "I create a dataset with only the anomalies\n";
         $local_anomaly = new Anomaly($anomaly->resource, self::$api);
         $new_dataset = self::$api->create_dataset($dataset->resource, array('lisp_filter' => $local_anomaly->anomalies_filter()));
         $this->assertEquals(BigMLRequest::HTTP_CREATED, $new_dataset->code);
         $this->assertEquals(BigMLRequest::QUEUED, $new_dataset->object->status->code);
         print "check the dataset is ready " . $new_dataset->resource . " \n";
         $resource = self::$api->_check_resource($new_dataset->resource, null, 20000, 30);
         $this->assertEquals(BigMLRequest::FINISHED, $resource["status"]);
         $dataset = self::$api->get_dataset($new_dataset->resource);
         print "I check the anomaly detector stems from the original dataset\n";
         $this->assertEquals($dataset->object->rows, $item["rows"]);
     }
 }
 public function test_scenario7()
 {
     $data = array(array('filename' => 'data/tiny_kdd.csv', 'data_input' => array("000020" => 255.0, "000004" => 183.0, "000016" => 4.0, "000024" => 0.04, "000025" => 0.01, "000026" => 0.0, "000019" => 0.25, "000017" => 4.0, "000018" => 0.25, "00001e" => 0.0, "000005" => 8654.0, "000009" => 0, "000023" => 0.01, "00001f" => 123.0), 'score' => 0.68782));
     foreach ($data as $item) {
         print "I create a data source uploading a " . $item["filename"] . " file\n";
         $source = self::$api->create_source($item["filename"], $options = array('name' => 'local_test_source'));
         $this->assertEquals(BigMLRequest::HTTP_CREATED, $source->code);
         $this->assertEquals(1, $source->object->status->code);
         print "check local source is ready\n";
         $resource = self::$api->_check_resource($source->resource, null, 20000, 30);
         $this->assertEquals(BigMLRequest::FINISHED, $resource["status"]);
         print "create dataset with local source\n";
         $dataset = self::$api->create_dataset($source->resource);
         $this->assertEquals(BigMLRequest::HTTP_CREATED, $dataset->code);
         $this->assertEquals(BigMLRequest::QUEUED, $dataset->object->status->code);
         print "check the dataset is ready " . $dataset->resource . " \n";
         $resource = self::$api->_check_resource($dataset->resource, null, 20000, 30);
         $this->assertEquals(BigMLRequest::FINISHED, $resource["status"]);
         print "Then I create an anomaly detector from a dataset\n";
         $anomaly = self::$api->create_anomaly($dataset->resource);
         print "I wait until the anomaly detector is ready\n";
         $resource = self::$api->_check_resource($anomaly->resource, null, 3000, 30);
         $this->assertEquals(BigMLRequest::FINISHED, $resource["status"]);
         $local_anomaly = new Anomaly($anomaly->resource, self::$api);
         $anomaly_score = self::$api->create_anomaly_score($anomaly->resource, $item["data_input"]);
         $this->assertEquals(BigMLRequest::HTTP_CREATED, $anomaly_score->code);
         $this->assertEquals(round($item['score'], 5), round($anomaly_score->object->score, 5));
         $local_anomaly_score = $local_anomaly->anomaly_score($item["data_input"], false);
         $this->assertEquals(round($item['score'], 5), round($local_anomaly_score, 5));
     }
 }