Commit ffbb2cb3 authored by Manuel Günther's avatar Manuel Günther

Switched to new bob version.

parent 369fc058
language: python
matrix:
include:
- python: 2.6
- python: 2.7
env:
- secure: HYFSm84gCi+EnE3hDeRfPFojhfPx7RS7xfP2cYs+tzOvE2DdL62D4ZA/bnBTCbIl4FyOKxS/3biLYu40d8UIjDYvMgx8xaT/byJB6iw4my9vnzkFl2NcbBNQA0NvoU8lBrS/zXrbz3U/JMLNDXlGDFx/GTMmvAYt2Hrttq9kxD4=
- secure: Yfaf3JfZ7QWuEqOmExFD81KD0SDiAIB84x122zCYpcHCyqqAjWQw2v7+YBBR3F3m0sdMhrVuj/gBkmccEU/M3KLYR8jm9DiPfeenW2mdJwUBdcmM+9DCeYtnkZx8DYo3Uxpxi0WkvXmED6l6mkWHyPVSi3que9h1t3aOv/zt+2I=
- python: 3.2
env:
- NUMPYSPEC===1.8.0
- python: 3.3
env:
- NUMPYSPEC===1.8.0
before_install:
- sudo add-apt-repository -y ppa:biometrics/bob
- sudo apt-get update -qq
- sudo apt-get install -qq --force-yes libboost-all-dev libblitz1-dev libhdf5-serial-dev libatlas-dev libatlas-base-dev liblapack-dev
- if [ -n "${NUMPYSPEC}" ]; then sudo apt-get install -qq gfortran; fi
- if [ -n "${NUMPYSPEC}" ]; then pip install --upgrade pip setuptools; fi
- if [ -n "${NUMPYSPEC}" ]; then pip install --find-links http://wheels.astropy.org/ --find-links http://wheels2.astropy.org/ --use-wheel numpy$NUMPYSPEC; fi
- pip install --find-links http://wheels.astropy.org/ --find-links http://wheels2.astropy.org/ --use-wheel matplotlib==1.3.0 sphinx nose==1.3.0 jinja2==2.6 coveralls
install:
- python bootstrap.py
- ./bin/buildout
script:
- ./bin/python -c 'from bob.db.voxforge import get_config; print(get_config())'
- ./bin/coverage run --source=bob.db.voxforge ./bin/nosetests -sv
- ./bin/sphinx-build -b doctest doc sphinx
- ./bin/sphinx-build -b html doc sphinx
after_success:
- coveralls
- ./src/bob.extension/scripts/upload-sphinx.sh
include README.rst bootstrap.py buildout.cfg COPYING
recursive-include xbob *.lst
recursive-include doc *.py *.rst
recursive-include bob *.lst
......@@ -23,8 +23,23 @@ http://www.voxforge.org/
"""
from .query import Database
from xbob.db.verification.filelist.models import File, Client
from bob.db.verification.filelist.models import File, Client
__all__ = dir()
def get_config():
"""Returns a string containing the configuration information.
"""
import pkg_resources
packages = pkg_resources.require(__name__)
this = packages[0]
deps = packages[1:]
retval = "%s: %s (%s)\n" % (this.key, this.version, this.location)
retval += " - python dependencies:\n"
for d in deps: retval += " - %s: %s (%s)\n" % (d.key, d.version, d.location)
return retval.strip()
# gets sphinx autodoc done right - don't remove it
__all__ = [_ for _ in dir() if not _.startswith('_')]
......@@ -22,7 +22,7 @@
import os
import sys
from bob.db.driver import Interface as BaseInterface
from bob.db.base.driver import Interface as BaseInterface
def dumplist(args):
"""Dumps lists of files based on your criteria"""
......@@ -37,7 +37,7 @@ def dumplist(args):
output = sys.stdout
if args.selftest:
from bob.db.utils import null
from bob.db.base.utils import null
output = null()
for f in r:
......@@ -63,7 +63,7 @@ def checkfiles(args):
# report
output = sys.stdout
if args.selftest:
from bob.db.utils import null
from bob.db.base.utils import null
output = null()
if bad:
......@@ -81,7 +81,7 @@ class Interface(BaseInterface):
def version(self):
import pkg_resources # part of setuptools
return pkg_resources.require('xbob.db.%s' % self.name())[0].version
return pkg_resources.require('bob.db.%s' % self.name())[0].version
def files(self):
return ()
......
......@@ -17,16 +17,16 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import xbob.db.verification.filelist
import bob.db.verification.filelist
class Database(xbob.db.verification.filelist.Database):
class Database(bob.db.verification.filelist.Database):
"""Wrapper class for the subVoxforge database for speaker recognition (http://www.voxforge.org/).
this class defines a simple protocol for training, dev and and by splitting the audio files of the database in three main parts.
"""
def __init__(self):
def __init__(self, original_directory = None, original_extension = None):
# call base class constructor
from pkg_resources import resource_filename
lists = resource_filename(__name__, 'lists')
xbob.db.verification.filelist.Database.__init__(self, lists)
bob.db.verification.filelist.Database.__init__(self, lists, original_directory = original_directory, original_extension = original_extension)
#!/usr/bin/env python
# vim: set fileencoding=utf-8 :
# Laurent El Shafey <laurent.el-shafey@idiap.ch>
# Fri Aug 23 16:27:27 CEST 2013
#
# Copyright (C) 2011-2014 Idiap Research Institute, Martigny, Switzerland
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, version 3 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
"""A few checks on the protocols of a subset of the VoxForge database
"""
import bob.db.voxforge
def test_query():
db = bob.db.voxforge.Database()
assert len(db.client_ids()) == 30 # 10 client ids for world, dev and eval
assert len(db.client_ids(groups='world')) == 10 # 10 client ids for world
assert len(db.client_ids(groups='optional_world_1')) == 10 # 10 client ids for optional world 1
assert len(db.client_ids(groups='optional_world_2')) == 10 # 10 client ids for optional world 2
assert len(db.client_ids(groups='dev')) == 10 # 10 client ids for dev
assert len(db.client_ids(groups='eval')) == 10 # 10 client ids for eval
assert len(db.model_ids()) == 30 # 30 model ids for world, dev and eval
assert len(db.model_ids(groups='world')) == 10 # 10 model ids for world
assert len(db.model_ids(groups='optional_world_1')) == 10 # 10 model ids for optional world 1
assert len(db.model_ids(groups='optional_world_2')) == 10 # 10 model ids for optional world 2
assert len(db.model_ids(groups='dev')) == 10 # 10 model ids for dev
assert len(db.model_ids(groups='eval')) == 10 # 10 model ids for eval
assert len(db.objects(groups='world')) == 3148 # 3148 samples in the world set
assert len(db.objects(groups='dev', purposes='enrol')) == 1304 # 1304 samples for enrollment in the dev set
assert len(db.objects(groups='dev', purposes='enrol', model_ids='Dcoetzee')) == 240 # 240 samples to enroll model 'Dcoetzee' in the dev set
assert len(db.objects(groups='dev', purposes='enrol', model_ids='rortiz')) == 0 # 0 samples to enroll model 'rortiz' (it is an eval model)
assert len(db.objects(groups='dev', purposes='probe')) == 300 # 300 samples as probes in the dev set
assert len(db.objects(groups='eval', purposes='enrol')) == 1509 # 1509 samples for enrollment in the eval set
assert len(db.objects(groups='eval', purposes='enrol', model_ids='rortiz')) == 120 # 120 samples to enroll model 'rortiz' in the eval set
assert len(db.objects(groups='eval', purposes='enrol', model_ids='Dcoetzee')) == 0 # 0 samples to enroll model 'Dcoetzee' (it is a dev model)
assert len(db.objects(groups='eval', purposes='probe')) == 300 # 300 samples as probes in the eval set
; vim: set fileencoding=utf-8 :
; Elie Khoury <Elie.Khoury@idiap.ch>
; Thu Aug 22 20:38:47 CEST 2013
; Manuel Guenther <manuel.guenther@idiap.ch>
; Thu Sep 4 18:24:14 CEST 2014
[buildout]
parts = scripts
develop = .
eggs = bob>=1.2.0
xbob.db.verification.filelist
xbob.db.voxforge
vanity
parts = scripts
eggs = bob.db.voxforge
extensions = bob.buildout
mr.developer
auto-checkout = *
develop = src/bob.extension
src/bob.blitz
src/bob.core
src/bob.io.base
src/bob.db.base
src/bob.db.verification.utils
src/bob.db.verification.filelist
.
; options for bob.buildout extension
debug = true
verbose = true
newest = false
; Look at this directory to find bob
prefixes = /idiap/group/torch5spro/releases/bob-1.2.0/install/linux-x86_64-release
[sources]
bob.extension = git https://github.com/bioidiap/bob.extension
bob.blitz = git https://github.com/bioidiap/bob.blitz
bob.core = git https://github.com/bioidiap/bob.core
bob.io.base = git https://github.com/bioidiap/bob.io.base
bob.db.base = git https://github.com/bioidiap/bob.db.base
bob.db.verification.utils = git https://github.com/bioidiap/bob.db.verification.utils
bob.db.verification.filelist = git https://github.com/bioidiap/bob.db.verification.filelist
[scripts]
recipe = xbob.buildout:scripts
recipe = bob.buildout:scripts
dependent-scripts=true
#!/usr/bin/env python
# vim: set fileencoding=utf-8 :
# Andre Anjos <andre.anjos@idiap.ch>
# Mon 13 Aug 2012 12:38:15 CEST
#
# Copyright (C) 2011-2012 Idiap Research Institute, Martigny, Switzerland
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, version 3 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import sys, os
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#sys.path.insert(0, os.path.abspath('.'))
# -- General configuration -----------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
#needs_sphinx = '1.0'
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
extensions = [
'sphinx.ext.todo',
'sphinx.ext.coverage',
'sphinx.ext.pngmath',
'sphinx.ext.ifconfig',
'sphinx.ext.autodoc',
'sphinx.ext.autosummary',
'sphinx.ext.doctest',
'sphinx.ext.intersphinx',
]
# The viewcode extension appeared only on Sphinx >= 1.0.0
import sphinx
if sphinx.__version__ >= "1.0":
extensions.append('sphinx.ext.viewcode')
# Always includes todos
todo_include_todos = True
# If we are on OSX, the 'dvipng' path maybe different
dvipng_osx = '/opt/local/libexec/texlive/binaries/dvipng'
if os.path.exists(dvipng_osx): pngmath_dvipng = dvipng_osx
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# The suffix of source filenames.
source_suffix = '.rst'
# The encoding of source files.
#source_encoding = 'utf-8-sig'
# The master toctree document.
master_doc = 'index'
# General information about the project.
project = u'BANCA Database (Bob API)'
import time
copyright = u'%s, Idiap Research Institute' % time.strftime('%Y')
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
from bob.db.voxforge.driver import Interface
version = Interface().version()
# The full version, including alpha/beta/rc tags.
release = version
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#language = None
# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
#today = ''
# Else, today_fmt is used as the format for a strftime call.
#today_fmt = '%B %d, %Y'
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
exclude_patterns = ['**/links.rst']
# The reST default role (used for this markup: `text`) to use for all documents.
#default_role = None
# If true, '()' will be appended to :func: etc. cross-reference text.
#add_function_parentheses = True
# If true, the current module name will be prepended to all description
# unit titles (such as .. function::).
#add_module_names = True
# If true, sectionauthor and moduleauthor directives will be shown in the
# output. They are ignored by default.
#show_authors = False
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
# A list of ignored prefixes for module index sorting.
#modindex_common_prefix = []
# -- Options for HTML output ---------------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
if sphinx.__version__ >= "1.0":
html_theme = 'nature'
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
#html_theme_options = {}
# Add any paths that contain custom themes here, relative to this directory.
#html_theme_path = []
# The name for this set of Sphinx documents. If None, it defaults to
# "<project> v<release> documentation".
#html_title = None
# A shorter title for the navigation bar. Default is the same as html_title.
#html_short_title = 'bob'
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
html_logo = ''
# The name of an image file (within the static path) to use as favicon of the
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large.
html_favicon = ''
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
#html_static_path = ['_static']
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
#html_last_updated_fmt = '%b %d, %Y'
# If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities.
#html_use_smartypants = True
# Custom sidebar templates, maps document names to template names.
#html_sidebars = {}
# Additional templates that should be rendered to pages, maps page names to
# template names.
#html_additional_pages = {}
# If false, no module index is generated.
#html_domain_indices = True
# If false, no index is generated.
#html_use_index = True
# If true, the index is split into individual pages for each letter.
#html_split_index = False
# If true, links to the reST sources are added to the pages.
#html_show_sourcelink = True
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
#html_show_sphinx = True
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
#html_show_copyright = True
# If true, an OpenSearch description file will be output, and all pages will
# contain a <link> tag referring to it. The value of this option must be the
# base URL from which the finished HTML is served.
#html_use_opensearch = ''
# This is the file name suffix for HTML files (e.g. ".xhtml").
#html_file_suffix = None
# Output file base name for HTML help builder.
htmlhelp_basename = 'bobdbdoc'
# -- Options for LaTeX output --------------------------------------------------
# The paper size ('letter' or 'a4').
latex_paper_size = 'a4'
# The font size ('10pt', '11pt' or '12pt').
latex_font_size = '10pt'
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title, author, documentclass [howto/manual]).
latex_documents = [
('index', 'bobdbman.tex', u'Bob',
u'Biometrics Group, Idiap Research Institute', 'manual'),
]
# The name of an image file (relative to this directory) to place at the top of
# the title page.
latex_logo = ''
# For "manual" documents, if this is true, then toplevel headings are parts,
# not chapters.
#latex_use_parts = False
# If true, show page references after internal links.
#latex_show_pagerefs = False
# If true, show URL addresses after external links.
#latex_show_urls = False
# Additional stuff for the LaTeX preamble.
#latex_preamble = ''
# Documents to append as an appendix to all manuals.
#latex_appendices = []
# If false, no module index is generated.
#latex_domain_indices = True
# Included after all input documents
rst_epilog = ''
# -- Options for manual page output --------------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
('index', 'bob', u'BANCA (Bob API) Documentation', [u'Idiap Research Institute'], 1)
]
# We want to remove all private (i.e. _. or __.__) members
# that are not in the list of accepted functions
accepted_private_functions = ['__call__']
def member_function_test(app, what, name, obj, skip, options):
# test if we have a private function
if len(name) > 1 and name[0] == '_':
# test if this private function should be allowed
if name not in accepted_private_functions:
# omit privat functions that are not in the list of accepted private functions
return True
else:
# test if the method is documented
if not hasattr(obj, '__doc__') or not obj.__doc__:
return True
# Skips selected members in auto-generated documentation. Unfortunately, old
# versions of Boost.Python will not generate a __self__ member for static
# methods and that screws-up Sphinx processing.
if sphinx.__version__ < "1.0":
# We have to remove objects that do not have a __self__ attribute set
import types
if isinstance(obj, types.BuiltinFunctionType) and \
not hasattr(obj, '__self__') and what == 'class':
app.warn("Skipping %s %s (no __self__)" % (what, name))
return True
return False
# Default processing flags for sphinx
autoclass_content = 'both'
autodoc_member_order = 'bysource'
autodoc_default_flags = ['members', 'undoc-members', 'special-members', 'inherited-members', 'show-inheritance']
def setup(app):
app.connect('autodoc-skip-member', member_function_test)
.. vim: set fileencoding=utf-8 :
.. @author: Manuel Guenther <Manuel.Guenther@idiap.ch>
.. @date: Thu Dec 6 12:28:25 CET 2012
==============
User's Guide
==============
.. todo::
Write users guide.
.. vim: set fileencoding=utf-8 :
.. @author: Manuel Guenther <Manuel.Guenther@idiap.ch>
.. @date: Tue Aug 26 09:42:18 CEST 2014
=======================================
BANCA Database Verification Protocols
=======================================
.. todolist::
Documentation
-------------
.. toctree::
:maxdepth: 2
guide
py_api
Indices and tables
------------------
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`
.. vim: set fileencoding=utf-8 :
.. Laurent El Shafey <laurent.el-shafey@idiap.ch>
.. Tue 28 Aug 2012 18:09:40 CEST
================
BANCA Database
================
.. automodule:: bob.db.banca
......@@ -17,7 +17,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# This script will download the audio files used in the protocol.
# This script will download the audio files used in the protocol.
# It will first download the tgz files, and then decompress them.
if [ "$#" -ne 1 ]; then
......@@ -38,5 +38,5 @@ while read filename; do
mv $basefilename $directory/.
rm $filename
fi
done < xbob/db/voxforge/lists/list_of_tgz_files.lst # where the list of files is stored
done < bob/db/voxforge/lists/list_of_tgz_files.lst # where the list of files is stored
......@@ -21,12 +21,12 @@ from setuptools import setup, find_packages
setup(
name='xbob.db.voxforge',
version='0.1.0',
name='bob.db.voxforge',
version='2.0.0a0',
description='Speaker verification protocol on a subset of the VoxForge database',
url='http://pypi.python.org/pypi/xbob.db.voxforge',
url='http://pypi.python.org/pypi/bob.db.voxforge',
license='GPLv3',
keywords = "Speaker Recognition, Speaker verification, Gaussian Mixture Model, ISV, UBM-GMM, I-Vector, Audio processing, Database, Voxforge",
keywords = "Speaker Recognition, Speaker verification, Audio processing, Database, Voxforge",
author='Elie Khoury',
author_email='Elie.Khoury@idiap.ch',
long_description=open('README.rst').read(),
......@@ -37,26 +37,20 @@ setup(
install_requires=[
'setuptools',
'bob',
'xbob.db.verification.filelist',
'bob.db.verification.filelist',
],
namespace_packages = [
'xbob',
'xbob.db',
'bob',
'bob.db',
],
entry_points = {
# declare database to bob
'bob.db': [
'voxforge = xbob.db.voxforge.driver:Interface',
],
# declare tests to bob
'bob.test': [
'voxforge = xbob.db.voxforge.test:VoxforgeDatabaseTest',
],
},
'voxforge = bob.db.voxforge.driver:Interface',
],
},
classifiers = [
'Development Status :: 4 - Beta',
......@@ -67,5 +61,5 @@ setup(
'Programming Language :: Python :: 3',
'Topic :: Scientific/Engineering :: Artificial Intelligence',
'Topic :: Database :: Front-Ends',
],
],
)
#!/usr/bin/env python
# vim: set fileencoding=utf-8 :
# Laurent El Shafey <laurent.el-shafey@idiap.ch>
# Fri Aug 23 16:27:27 CEST 2013
#
# Copyright (C) 2011-2014 Idiap Research Institute, Martigny, Switzerland
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, version 3 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
"""A few checks on the protocols of a subset of the VoxForge database
"""
import os, sys
import unittest
from .query import Database
class VoxforgeDatabaseTest(unittest.TestCase):
"""Performs various tests on the protocols of a subset of the VoxForge database."""
def test01_query(self):
from pkg_resources import resource_filename
#db = Database(example_data, use_dense_probe_file_list = False)
db = Database()
self.assertEqual(len(db.client_ids()), 30) # 10 client ids for world, dev and eval
self.assertEqual(len(db.client_ids(groups='world')), 10) # 10 client ids for world
self.assertEqual(len(db.client_ids(groups='optional_world_1')), 10) # 10 client ids for optional world 1
self.assertEqual(len(db.client_ids(groups='optional_world_2')), 10) # 10 client ids for optional world 2
self.assertEqual(len(db.client_ids(groups='dev')), 10) # 10 client ids for dev
self.assertEqual(len(db.client_ids(groups='eval')), 10) # 10 client ids for eval
self.assertEqual(len(db.model_ids()), 30) # 30 model ids for world, dev and eval
self.assertEqual(len(db.model_ids(groups='world')), 10) # 10 model ids for world
self.assertEqual(len(db.model_ids(groups='optional_world_1')), 10) # 10 model ids for optional world 1
self.assertEqual(len(db.model_ids(groups='optional_world_2')), 10) # 10 model ids for optional world 2
self.assertEqual(len(db.model_ids(groups='dev')), 10) # 10 model ids for dev
self.assertEqual(len(db.model_ids(groups='eval')), 10) # 10 model ids for eval
self.assertEqual(len(db.objects(groups='world')), 3148) # 3148 samples in the world set
self.assertEqual(len(db.objects(groups='dev', purposes='enrol')), 1304) # 1304 samples for enrollment in the dev set
self.assertEqual(len(db.objects(groups='dev', purposes='enrol', model_ids='Dcoetzee')), 240) # 240 samples to enroll model 'Dcoetzee' in the dev set
self.assertEqual(len(db.objects(groups='dev', purposes='enrol', model_ids='rortiz')), 0) # 0 samples to enroll model 'rortiz' (it is an eval model)
self.assertEqual(len(db.objects(groups='dev', purposes='probe')), 300) # 300 samples as probes in the dev set
self.assertEqual(len(db.objects(groups='eval', purposes='enrol')), 1509) # 1509 samples for enrollment in the eval set
self.assertEqual(len(db.objects(groups='eval', purposes='enrol', model_ids='rortiz')), 120) # 120 samples to enroll model 'rortiz' in the eval set
self.assertEqual(len(db.objects(groups='eval', purposes='enrol', model_ids='Dcoetzee')), 0) # 0 samples to enroll model 'Dcoetzee' (it is a dev model)
self.assertEqual(len(db.objects(groups='eval', purposes='probe')), 300) # 300 samples as probes in the eval set
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment