From a5081c30876a5e919bba53cf119eeb3e5abb1fd4 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Tue, 30 Jul 2024 09:14:29 +0000 Subject: [PATCH] Documentation based on acf2e5307ef059f112cf00c7972b3b7c7afe076c --- _sources/critdd.rst.txt | 53 ++++ _sources/critdd.tests.rst.txt | 45 +++ _sources/developer-guide.md.txt | 8 +- _sources/modules.rst.txt | 7 + _static/basic.css | 6 +- _static/doctools.js | 2 +- _static/documentation_options.js | 3 +- _static/language_data.js | 4 +- _static/searchtools.js | 196 ++++++++----- _static/sphinx_highlight.js | 16 +- api.html | 32 +-- critdd.html | 466 +++++++++++++++++++++++++++++++ critdd.tests.html | 158 +++++++++++ developer-guide.html | 22 +- genindex.html | 247 +++++++++++++++- index.html | 20 +- manual.html | 22 +- modules.html | 186 ++++++++++++ objects.inv | Bin 357 -> 770 bytes py-modindex.html | 154 ++++++++++ search.html | 8 +- searchindex.js | 2 +- 22 files changed, 1513 insertions(+), 144 deletions(-) create mode 100644 _sources/critdd.rst.txt create mode 100644 _sources/critdd.tests.rst.txt create mode 100644 _sources/modules.rst.txt create mode 100644 critdd.html create mode 100644 critdd.tests.html create mode 100644 modules.html create mode 100644 py-modindex.html diff --git a/_sources/critdd.rst.txt b/_sources/critdd.rst.txt new file mode 100644 index 0000000..609a809 --- /dev/null +++ b/_sources/critdd.rst.txt @@ -0,0 +1,53 @@ +critdd package +============== + +Subpackages +----------- + +.. toctree:: + :maxdepth: 4 + + critdd.tests + +Submodules +---------- + +critdd.diagram module +--------------------- + +.. automodule:: critdd.diagram + :members: + :undoc-members: + :show-inheritance: + +critdd.stats module +------------------- + +.. automodule:: critdd.stats + :members: + :undoc-members: + :show-inheritance: + +critdd.tikz module +------------------ + +.. automodule:: critdd.tikz + :members: + :undoc-members: + :show-inheritance: + +critdd.tikz\_2d module +---------------------- + +.. automodule:: critdd.tikz_2d + :members: + :undoc-members: + :show-inheritance: + +Module contents +--------------- + +.. automodule:: critdd + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/critdd.tests.rst.txt b/_sources/critdd.tests.rst.txt new file mode 100644 index 0000000..797be40 --- /dev/null +++ b/_sources/critdd.tests.rst.txt @@ -0,0 +1,45 @@ +critdd.tests package +==================== + +Submodules +---------- + +critdd.tests.readme module +-------------------------- + +.. automodule:: critdd.tests.readme + :members: + :undoc-members: + :show-inheritance: + +critdd.tests.stats module +------------------------- + +.. automodule:: critdd.tests.stats + :members: + :undoc-members: + :show-inheritance: + +critdd.tests.tikz module +------------------------ + +.. automodule:: critdd.tests.tikz + :members: + :undoc-members: + :show-inheritance: + +critdd.tests.two\_d module +-------------------------- + +.. automodule:: critdd.tests.two_d + :members: + :undoc-members: + :show-inheritance: + +Module contents +--------------- + +.. automodule:: critdd.tests + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/developer-guide.md.txt b/_sources/developer-guide.md.txt index 0fa473f..e5ceaf3 100644 --- a/_sources/developer-guide.md.txt +++ b/_sources/developer-guide.md.txt @@ -21,11 +21,9 @@ As soon as you push to the `main` branch, GitHub Actions will take out these uni After locally building the documentation, open `docs/build/index.html` in your browser. ```bash -. venv/bin/activate -pip install -e .[docs] -cd docs/ -sphinx-apidoc --force --output-dir source/ ../critdd -make html +venv/bin/pip install -e .[docs] +venv/bin/sphinx-apidoc --force --output-dir docs/source critdd +venv/bin/sphinx-build -M html docs/source docs/build ``` As soon as you push to the `main` branch, GitHub Actions will build the documentation, push it to the `gh-pages` branch, and publish the result on GitHub Pages: [https://mirkobunse.github.io/critdd](https://mirkobunse.github.io/critdd) diff --git a/_sources/modules.rst.txt b/_sources/modules.rst.txt new file mode 100644 index 0000000..64d683a --- /dev/null +++ b/_sources/modules.rst.txt @@ -0,0 +1,7 @@ +critdd +====== + +.. toctree:: + :maxdepth: 4 + + critdd diff --git a/_static/basic.css b/_static/basic.css index cfc60b8..f316efc 100644 --- a/_static/basic.css +++ b/_static/basic.css @@ -4,7 +4,7 @@ * * Sphinx stylesheet -- basic theme. * - * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -237,6 +237,10 @@ a.headerlink { visibility: hidden; } +a:visited { + color: #551A8B; +} + h1:hover > a.headerlink, h2:hover > a.headerlink, h3:hover > a.headerlink, diff --git a/_static/doctools.js b/_static/doctools.js index d06a71d..4d67807 100644 --- a/_static/doctools.js +++ b/_static/doctools.js @@ -4,7 +4,7 @@ * * Base JavaScript utilities for all Sphinx HTML documentation. * - * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ diff --git a/_static/documentation_options.js b/_static/documentation_options.js index ac431ff..d1f2291 100644 --- a/_static/documentation_options.js +++ b/_static/documentation_options.js @@ -1,5 +1,4 @@ -var DOCUMENTATION_OPTIONS = { - URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), +const DOCUMENTATION_OPTIONS = { VERSION: '0.0.1', LANGUAGE: 'en', COLLAPSE_INDEX: false, diff --git a/_static/language_data.js b/_static/language_data.js index 250f566..367b8ed 100644 --- a/_static/language_data.js +++ b/_static/language_data.js @@ -5,7 +5,7 @@ * This script contains the language-specific data used by searchtools.js, * namely the list of stopwords, stemmer, scorer and splitter. * - * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -13,7 +13,7 @@ var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"]; -/* Non-minified version is copied as a separate JS file, is available */ +/* Non-minified version is copied as a separate JS file, if available */ /** * Porter Stemmer diff --git a/_static/searchtools.js b/_static/searchtools.js index 97d56a7..b08d58c 100644 --- a/_static/searchtools.js +++ b/_static/searchtools.js @@ -4,7 +4,7 @@ * * Sphinx JavaScript utilities for the full-text search. * - * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -57,12 +57,12 @@ const _removeChildren = (element) => { const _escapeRegExp = (string) => string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string -const _displayItem = (item, searchTerms) => { +const _displayItem = (item, searchTerms, highlightTerms) => { const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; - const docUrlRoot = DOCUMENTATION_OPTIONS.URL_ROOT; const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; + const contentRoot = document.documentElement.dataset.content_root; const [docName, title, anchor, descr, score, _filename] = item; @@ -75,28 +75,35 @@ const _displayItem = (item, searchTerms) => { if (dirname.match(/\/index\/$/)) dirname = dirname.substring(0, dirname.length - 6); else if (dirname === "index/") dirname = ""; - requestUrl = docUrlRoot + dirname; + requestUrl = contentRoot + dirname; linkUrl = requestUrl; } else { // normal html builders - requestUrl = docUrlRoot + docName + docFileSuffix; + requestUrl = contentRoot + docName + docFileSuffix; linkUrl = docName + docLinkSuffix; } let linkEl = listItem.appendChild(document.createElement("a")); linkEl.href = linkUrl + anchor; linkEl.dataset.score = score; linkEl.innerHTML = title; - if (descr) + if (descr) { listItem.appendChild(document.createElement("span")).innerHTML = " (" + descr + ")"; + // highlight search terms in the description + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + } else if (showSearchSummary) fetch(requestUrl) .then((responseData) => responseData.text()) .then((data) => { if (data) listItem.appendChild( - Search.makeSearchSummary(data, searchTerms) + Search.makeSearchSummary(data, searchTerms, anchor) ); + // highlight search terms in the summary + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); }); Search.output.appendChild(listItem); }; @@ -109,26 +116,43 @@ const _finishSearch = (resultCount) => { ); else Search.status.innerText = _( - `Search finished, found ${resultCount} page(s) matching the search query.` - ); + "Search finished, found ${resultCount} page(s) matching the search query." + ).replace('${resultCount}', resultCount); }; const _displayNextItem = ( results, resultCount, - searchTerms + searchTerms, + highlightTerms, ) => { // results left, load the summary and display it // this is intended to be dynamic (don't sub resultsCount) if (results.length) { - _displayItem(results.pop(), searchTerms); + _displayItem(results.pop(), searchTerms, highlightTerms); setTimeout( - () => _displayNextItem(results, resultCount, searchTerms), + () => _displayNextItem(results, resultCount, searchTerms, highlightTerms), 5 ); } // search finished, update title and status message else _finishSearch(resultCount); }; +// Helper function used by query() to order search results. +// Each input is an array of [docname, title, anchor, descr, score, filename]. +// Order the results by score (in opposite order of appearance, since the +// `_displayNextItem` function uses pop() to retrieve items) and then alphabetically. +const _orderResultsByScoreThenName = (a, b) => { + const leftScore = a[4]; + const rightScore = b[4]; + if (leftScore === rightScore) { + // same score: sort alphabetically + const leftTitle = a[1].toLowerCase(); + const rightTitle = b[1].toLowerCase(); + if (leftTitle === rightTitle) return 0; + return leftTitle > rightTitle ? -1 : 1; // inverted is intentional + } + return leftScore > rightScore ? 1 : -1; +}; /** * Default splitQuery function. Can be overridden in ``sphinx.search`` with a @@ -152,13 +176,26 @@ const Search = { _queued_query: null, _pulse_status: -1, - htmlToText: (htmlString) => { + htmlToText: (htmlString, anchor) => { const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); - htmlElement.querySelectorAll(".headerlink").forEach((el) => { el.remove() }); + for (const removalQuery of [".headerlink", "script", "style"]) { + htmlElement.querySelectorAll(removalQuery).forEach((el) => { el.remove() }); + } + if (anchor) { + const anchorContent = htmlElement.querySelector(`[role="main"] ${anchor}`); + if (anchorContent) return anchorContent.textContent; + + console.warn( + `Anchored content block not found. Sphinx search tries to obtain it via DOM query '[role=main] ${anchor}'. Check your theme or template.` + ); + } + + // if anchor not specified or not found, fall back to main content const docContent = htmlElement.querySelector('[role="main"]'); - if (docContent !== undefined) return docContent.textContent; + if (docContent) return docContent.textContent; + console.warn( - "Content block not found. Sphinx search tries to obtain it via '[role=main]'. Could you check your theme or template." + "Content block not found. Sphinx search tries to obtain it via DOM query '[role=main]'. Check your theme or template." ); return ""; }, @@ -231,16 +268,7 @@ const Search = { else Search.deferQuery(query); }, - /** - * execute search (requires search index to be loaded) - */ - query: (query) => { - const filenames = Search._index.filenames; - const docNames = Search._index.docnames; - const titles = Search._index.titles; - const allTitles = Search._index.alltitles; - const indexEntries = Search._index.indexentries; - + _parseQuery: (query) => { // stem the search terms and add them to the correct list const stemmer = new Stemmer(); const searchTerms = new Set(); @@ -276,21 +304,38 @@ const Search = { // console.info("required: ", [...searchTerms]); // console.info("excluded: ", [...excludedTerms]); - // array of [docname, title, anchor, descr, score, filename] - let results = []; + return [query, searchTerms, excludedTerms, highlightTerms, objectTerms]; + }, + + /** + * execute search (requires search index to be loaded) + */ + _performSearch: (query, searchTerms, excludedTerms, highlightTerms, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + + // Collect multiple result groups to be sorted separately and then ordered. + // Each is an array of [docname, title, anchor, descr, score, filename]. + const normalResults = []; + const nonMainIndexResults = []; + _removeChildren(document.getElementById("search-progress")); - const queryLower = query.toLowerCase(); + const queryLower = query.toLowerCase().trim(); for (const [title, foundTitles] of Object.entries(allTitles)) { - if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) { + if (title.toLowerCase().trim().includes(queryLower) && (queryLower.length >= title.length/2)) { for (const [file, id] of foundTitles) { - let score = Math.round(100 * queryLower.length / title.length) - results.push([ + const score = Math.round(Scorer.title * queryLower.length / title.length); + const boost = titles[file] === title ? 1 : 0; // add a boost for document titles + normalResults.push([ docNames[file], titles[file] !== title ? `${titles[file]} > ${title}` : title, id !== null ? "#" + id : "", null, - score, + score + boost, filenames[file], ]); } @@ -300,46 +345,47 @@ const Search = { // search for explicit entries in index directives for (const [entry, foundEntries] of Object.entries(indexEntries)) { if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { - for (const [file, id] of foundEntries) { - let score = Math.round(100 * queryLower.length / entry.length) - results.push([ + for (const [file, id, isMain] of foundEntries) { + const score = Math.round(100 * queryLower.length / entry.length); + const result = [ docNames[file], titles[file], id ? "#" + id : "", null, score, filenames[file], - ]); + ]; + if (isMain) { + normalResults.push(result); + } else { + nonMainIndexResults.push(result); + } } } } // lookup as object objectTerms.forEach((term) => - results.push(...Search.performObjectSearch(term, objectTerms)) + normalResults.push(...Search.performObjectSearch(term, objectTerms)) ); // lookup as search terms in fulltext - results.push(...Search.performTermsSearch(searchTerms, excludedTerms)); + normalResults.push(...Search.performTermsSearch(searchTerms, excludedTerms)); // let the scorer override scores with a custom scoring function - if (Scorer.score) results.forEach((item) => (item[4] = Scorer.score(item))); - - // now sort the results by score (in opposite order of appearance, since the - // display function below uses pop() to retrieve items) and then - // alphabetically - results.sort((a, b) => { - const leftScore = a[4]; - const rightScore = b[4]; - if (leftScore === rightScore) { - // same score: sort alphabetically - const leftTitle = a[1].toLowerCase(); - const rightTitle = b[1].toLowerCase(); - if (leftTitle === rightTitle) return 0; - return leftTitle > rightTitle ? -1 : 1; // inverted is intentional - } - return leftScore > rightScore ? 1 : -1; - }); + if (Scorer.score) { + normalResults.forEach((item) => (item[4] = Scorer.score(item))); + nonMainIndexResults.forEach((item) => (item[4] = Scorer.score(item))); + } + + // Sort each group of results by score and then alphabetically by name. + normalResults.sort(_orderResultsByScoreThenName); + nonMainIndexResults.sort(_orderResultsByScoreThenName); + + // Combine the result groups in (reverse) order. + // Non-main index entries are typically arbitrary cross-references, + // so display them after other results. + let results = [...nonMainIndexResults, ...normalResults]; // remove duplicate search results // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept @@ -353,14 +399,19 @@ const Search = { return acc; }, []); - results = results.reverse(); + return results.reverse(); + }, + + query: (query) => { + const [searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms] = Search._parseQuery(query); + const results = Search._performSearch(searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms); // for debugging //Search.lastresults = results.slice(); // a copy // console.info("search results:", Search.lastresults); // print the results - _displayNextItem(results, results.length, searchTerms); + _displayNextItem(results, results.length, searchTerms, highlightTerms); }, /** @@ -458,14 +509,18 @@ const Search = { // add support for partial matches if (word.length > 2) { const escapedWord = _escapeRegExp(word); - Object.keys(terms).forEach((term) => { - if (term.match(escapedWord) && !terms[word]) - arr.push({ files: terms[term], score: Scorer.partialTerm }); - }); - Object.keys(titleTerms).forEach((term) => { - if (term.match(escapedWord) && !titleTerms[word]) - arr.push({ files: titleTerms[word], score: Scorer.partialTitle }); - }); + if (!terms.hasOwnProperty(word)) { + Object.keys(terms).forEach((term) => { + if (term.match(escapedWord)) + arr.push({ files: terms[term], score: Scorer.partialTerm }); + }); + } + if (!titleTerms.hasOwnProperty(word)) { + Object.keys(titleTerms).forEach((term) => { + if (term.match(escapedWord)) + arr.push({ files: titleTerms[term], score: Scorer.partialTitle }); + }); + } } // no match but word was a required one @@ -488,9 +543,8 @@ const Search = { // create the mapping files.forEach((file) => { - if (fileMap.has(file) && fileMap.get(file).indexOf(word) === -1) - fileMap.get(file).push(word); - else fileMap.set(file, [word]); + if (!fileMap.has(file)) fileMap.set(file, [word]); + else if (fileMap.get(file).indexOf(word) === -1) fileMap.get(file).push(word); }); }); @@ -541,8 +595,8 @@ const Search = { * search summary for a given text. keywords is a list * of stemmed words. */ - makeSearchSummary: (htmlText, keywords) => { - const text = Search.htmlToText(htmlText); + makeSearchSummary: (htmlText, keywords, anchor) => { + const text = Search.htmlToText(htmlText, anchor); if (text === "") return null; const textLower = text.toLowerCase(); diff --git a/_static/sphinx_highlight.js b/_static/sphinx_highlight.js index aae669d..8a96c69 100644 --- a/_static/sphinx_highlight.js +++ b/_static/sphinx_highlight.js @@ -29,14 +29,19 @@ const _highlight = (node, addItems, text, className) => { } span.appendChild(document.createTextNode(val.substr(pos, text.length))); + const rest = document.createTextNode(val.substr(pos + text.length)); parent.insertBefore( span, parent.insertBefore( - document.createTextNode(val.substr(pos + text.length)), + rest, node.nextSibling ) ); node.nodeValue = val.substr(0, pos); + /* There may be more occurrences of search term in this node. So call this + * function recursively on the remaining fragment. + */ + _highlight(rest, addItems, text, className); if (isInSVG) { const rect = document.createElementNS( @@ -140,5 +145,10 @@ const SphinxHighlight = { }, }; -_ready(SphinxHighlight.highlightSearchWords); -_ready(SphinxHighlight.initEscapeListener); +_ready(() => { + /* Do not call highlightSearchWords() when we are on the search page. + * It will highlight words from the *previous* search query. + */ + if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords(); + SphinxHighlight.initEscapeListener(); +}); diff --git a/api.html b/api.html index 2b32760..553a661 100644 --- a/api.html +++ b/api.html @@ -1,5 +1,5 @@ - + @@ -15,9 +15,9 @@ - - - + + + @@ -95,14 +95,14 @@
-

API

+

API

-

Regular CD diagrams

+

Regular CD diagrams

A regular CD diagram with n observations and k treatments is created from an (n, k)-shaped matrix, as described in the ../index.md section.

-example.svg +example.svg
-class critdd.Diagram(X, *, treatment_names=None, maximize_outcome=False)
+class critdd.Diagram(X, *, treatment_names=None, maximize_outcome=False)

A regular critical difference diagram.

Parameters:
@@ -115,7 +115,7 @@

Regular CD diagrams
-get_groups(alpha=0.05, adjustment='holm', return_names=False, return_singletons=True)
+get_groups(alpha=0.05, adjustment='holm', return_names=False, return_singletons=True)

Get the groups of indistinguishable treatments.

Parameters:
@@ -134,7 +134,7 @@

Regular CD diagrams
-to_file(path, *args, **kwargs)
+to_file(path, *args, **kwargs)

Store this diagram in a file.

Note

@@ -153,7 +153,7 @@

Regular CD diagrams
-to_str(alpha=0.05, adjustment='holm', **kwargs)
+to_str(alpha=0.05, adjustment='holm', **kwargs)

Get a str object with the Tikz code for this diagram.

Parameters:
@@ -177,12 +177,12 @@

Regular CD diagrams -

2D sequences of CD diagrams

+

2D sequences of CD diagrams

A sequence of m CD diagrams can be arranged in a single, 2-dimensional plot. The API for such a plot is similar to the API of Regular CD diagrams, but requires a tensor input of shape (m, n, k) and an optional list of m diagram names.

-2d_example.svg +2d_example.svg
-class critdd.Diagrams(Xs, *, diagram_names=None, treatment_names=None, maximize_outcome=False)
+class critdd.Diagrams(Xs, *, diagram_names=None, treatment_names=None, maximize_outcome=False)

A sequence of critical difference diagrams, plotted on a single 2-dimensional axis.

Parameters:
@@ -196,7 +196,7 @@

2D sequences of CD diagrams
-to_file(path, *args, **kwargs)
+to_file(path, *args, **kwargs)

Store this diagram in a file.

Note

@@ -215,7 +215,7 @@

2D sequences of CD diagrams
-to_str(alpha=0.05, adjustment='holm', **kwargs)
+to_str(alpha=0.05, adjustment='holm', **kwargs)

Get a str object with the Tikz code for this diagram.

Parameters:
diff --git a/critdd.html b/critdd.html new file mode 100644 index 0000000..b1eecac --- /dev/null +++ b/critdd.html @@ -0,0 +1,466 @@ + + + + + + + critdd package — critdd 0.0.1 documentation + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

critdd package

+
+

Subpackages

+ +
+
+

Submodules

+
+
+

critdd.diagram module

+

A module for assembling critical difference diagrams.

+
+
+class critdd.diagram.AbstractDiagram
+

Bases: ABC

+

Abstract base class for critical difference diagrams in Tikz.

+
+
+to_file(path, *args, **kwargs)
+

Store this diagram in a file.

+
+

Note

+

Storing Tikz code in a “.png” file or “.svg” file is not yet supported.

+
+
+
Parameters:
+
    +
  • path – The file path where this diagram is to be stored. Has to be ending on “.tex”, “.tikz”, “.pdf”, “.png”, or “.svg”.

  • +
  • *args (optional) – See to_str.

  • +
  • **kwargs (optional) – See to_str.

  • +
+
+
+
+ +
+
+abstract to_str(alpha=0.05, adjustment='holm', **kwargs)
+

Get a str object with the Tikz code for this diagram.

+
+
Parameters:
+
    +
  • alpha (optional) – The threshold for rejecting a p value. Defaults to 0.05.

  • +
  • adjustment (optional) – The multiple testing adjustment. Defaults to “holm”. Another possible value is “bonferroni”.

  • +
  • reverse_x (optional) – Whether to reverse the x direction. Defaults to False.

  • +
  • as_document (optional) – Whether to include a \documentclass and a document environment. Defaults to False.

  • +
  • tikzpicture_options (optional) – A dict with options for the tikzpicture environment.

  • +
  • axis_options (optional) – A dict with options for the axis environment.

  • +
  • preamble (optional) – A str with LaTeX commands. Only used if as_document==True. Defaults to None.

  • +
+
+
Returns:
+

A str object with the Tikz code for this diagram.

+
+
+
+ +
+ +
+
+class critdd.diagram.Diagram(X, *, treatment_names=None, maximize_outcome=False)
+

Bases: AbstractDiagram

+

A regular critical difference diagram.

+
+
Parameters:
+
    +
  • X – An (n, k)-shaped matrix of observations, where n is the number of observations and k is the number of treatments.

  • +
  • treatment_names (optional) – The names of the k treatments. Defaults to None.

  • +
  • maximize_outcome (optional) – Whether the ranks represent a maximization (True) or a minimization (False) of the outcome. Defaults to False.

  • +
+
+
+
+
+property average_ranks
+
+ +
+
+get_groups(alpha=0.05, adjustment='holm', return_names=False, return_singletons=True)
+

Get the groups of indistinguishable treatments.

+
+
Parameters:
+
    +
  • alpha (optional) – The threshold for rejecting a p value. Defaults to 0.05.

  • +
  • adjustment (optional) – The multiple testing adjustment. Defaults to “holm”. Another possible value is “bonferroni”.

  • +
  • return_names (optional) – Whether to represent the treatments in the groups by their names (True) or by their indices (False). Defaults to False.

  • +
  • return_singletons (optional) – Whether to return groups with single elements. Defaults to True.

  • +
+
+
Returns:
+

A list of statistically indistinguishable groups.

+
+
+
+ +
+
+property maximize_outcome
+
+ +
+
+to_str(alpha=0.05, adjustment='holm', **kwargs)
+

Get a str object with the Tikz code for this diagram.

+
+
Parameters:
+
    +
  • alpha (optional) – The threshold for rejecting a p value. Defaults to 0.05.

  • +
  • adjustment (optional) – The multiple testing adjustment. Defaults to “holm”. Another possible value is “bonferroni”.

  • +
  • reverse_x (optional) – Whether to reverse the x direction. Defaults to False.

  • +
  • as_document (optional) – Whether to include a \documentclass and a document environment. Defaults to False.

  • +
  • tikzpicture_options (optional) – A dict with options for the tikzpicture environment.

  • +
  • axis_options (optional) – A dict with options for the axis environment.

  • +
  • preamble (optional) – A str with LaTeX commands. Only used if as_document==True. Defaults to None.

  • +
+
+
Returns:
+

A str object with the Tikz code for this diagram.

+
+
+
+ +
+ +
+
+class critdd.diagram.Diagrams(Xs, *, diagram_names=None, treatment_names=None, maximize_outcome=False)
+

Bases: AbstractDiagram

+

A sequence of critical difference diagrams, plotted on a single 2-dimensional axis.

+
+
Parameters:
+
    +
  • Xs – Observations, given either as a list of length m of (n, k)-shaped matrices or as an (m, n, k)-shaped tensor, where m is the number of diagrams, n is the number of observations, and k is the number of treatments.

  • +
  • diagram_names (optional) – The names of the m diagrams. Defaults to None.

  • +
  • treatment_names (optional) – The names of the k treatments. Defaults to None.

  • +
  • maximize_outcome (optional) – Whether the ranks represent a maximization (True) or a minimization (False) of the outcome. Defaults to False.

  • +
+
+
+
+
+property maximize_outcome
+
+ +
+
+to_str(alpha=0.05, adjustment='holm', **kwargs)
+

Get a str object with the Tikz code for this diagram.

+
+
Parameters:
+
    +
  • alpha (optional) – The threshold for rejecting a p value. Defaults to 0.05.

  • +
  • adjustment (optional) – The multiple testing adjustment. Defaults to “holm”. Another possible value is “bonferroni”.

  • +
  • reverse_x (optional) – Whether to reverse the x direction. Defaults to False.

  • +
  • as_document (optional) – Whether to include a \documentclass and a document environment. Defaults to False.

  • +
  • tikzpicture_options (optional) – A dict with options for the tikzpicture environment.

  • +
  • axis_options (optional) – A dict with options for the axis environment.

  • +
  • preamble (optional) – A str with LaTeX commands. Only used if as_document==True. Defaults to None.

  • +
+
+
Returns:
+

A str object with the Tikz code for this diagram.

+
+
+
+ +
+
+property treatment_names
+
+ +
+ +
+
+

critdd.stats module

+

A module for Friedman hypothesis tests.

+

These hypothesis tests are implemented in analogy to the hypothesis tests that are implemented in scipy.stats.

+
+
+class critdd.stats.ChiSquareFriedmanResult(pvalue, statistic, n_df, average_ranks, n, maximize_outcome)
+

Bases: tuple

+
+
+property average_ranks
+
+ +
+
+property maximize_outcome
+
+ +
+
+property n
+
+ +
+
+property n_df
+
+ +
+
+property pvalue
+
+ +
+
+property statistic
+
+ +
+ +
+
+class critdd.stats.FDistributedFriedmanResult(pvalue, statistic, chi_square_result, n_df_1, n_df_2)
+

Bases: tuple

+
+
+property chi_square_result
+
+ +
+
+property n_df_1
+
+ +
+
+property n_df_2
+
+ +
+
+property pvalue
+
+ +
+
+property statistic
+
+ +
+ +
+
+critdd.stats.adjust_pairwise_tests(P, adjustment)
+
+ +
+
+critdd.stats.chi_square_distributed(X, *, maximize_outcome=False)
+

This version of the Friedman test uses a Chi-square-distributed test statistic.

+
+ +
+
+critdd.stats.f_distributed(X, *, maximize_outcome=False)
+

This version of the Friedman test uses an F-distributed test statistic.

+
+ +
+
+critdd.stats.friedman(X, *, maximize_outcome=False)
+

Calculate the Friedman hypothesis test.

+

The Friedman test tests the null hypothesis that n observations have the same distribution across all k treatments. This version of the test uses an F-distributed test statistic.

+
+
Parameters:
+
    +
  • X – An (n, k)-shaped matrix of observations.

  • +
  • maximize_outcome – Whether the ranks represent a maximization (True) or a minimization (False) of the outcome. Defaults to False.

  • +
+
+
Returns:
+

An FDistributedFriedmanResult with properties pvalue (the p value), statistic (the test statistic), chi_square_result (a ChiSquareFriedmanResult), n_df_1 (first number of degrees of freedom), and n_df_2 (second number of degrees of freedom). The chi_square_result has additional properties average_ranks (the average ranks of the treatments), n (the number of observations), and maximize_outcome.

+
+
Return type:
+

r

+
+
+
+ +
+
+critdd.stats.pairwise_tests(X)
+
+ +
+
+

critdd.tikz module

+

A module for the Tikz export.

+
+
+exception critdd.tikz.ExportException(path)
+

Bases: Exception

+
+ +
+
+critdd.tikz.requires_document(path)
+

Determine whether an export requires as_document=True.

+
+ +
+
+critdd.tikz.to_file(path, tikz_code)
+

Export the tikz_code to a file.

+
+ +
+
+critdd.tikz.to_str(average_ranks, groups, treatment_names, *, reverse_x=False, as_document=False, tikzpicture_options={}, axis_options={}, preamble=None, title=None)
+

Return a string with Tikz code.

+
+ +
+
+

critdd.tikz_2d module

+

A module for the Tikz export of 2-dimensional axes.

+
+
+critdd.tikz_2d.to_str(average_ranks, groups, treatment_names, diagram_names, *, reverse_x=False, as_document=False, tikzpicture_options={}, axis_options={}, preamble=None)
+

Return a string with Tikz code.

+
+ +
+
+

Module contents

+

critdd: critical difference diagrams with Python and Tikz.

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/critdd.tests.html b/critdd.tests.html new file mode 100644 index 0000000..f4d41ea --- /dev/null +++ b/critdd.tests.html @@ -0,0 +1,158 @@ + + + + + + + critdd.tests package — critdd 0.0.1 documentation + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

critdd.tests package

+
+

Submodules

+
+
+

critdd.tests.readme module

+
+
+

critdd.tests.stats module

+
+
+class critdd.tests.stats.TestFriedman(methodName='runTest')
+

Bases: TestCase

+
+
+test_catalysts_example()
+
+ +
+
+test_random_rejection()
+
+ +
+
+test_trees_example()
+
+ +
+ +
+
+

critdd.tests.tikz module

+
+
+class critdd.tests.tikz.TestTikz(methodName='runTest')
+

Bases: TestCase

+
+
+test_tikz()
+
+ +
+ +
+
+

critdd.tests.two_d module

+
+
+

Module contents

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/developer-guide.html b/developer-guide.html index 67feca3..fa37bff 100644 --- a/developer-guide.html +++ b/developer-guide.html @@ -1,5 +1,5 @@ - + @@ -15,9 +15,9 @@ - - - + + + @@ -79,10 +79,10 @@
-

Developer guide

+

Developer guide

Before you push to the main branch, please test the code and the documentation locally.

-

Unit testing

+

Unit testing

Run tests locally with the unittest package.

python -m venv venv
 venv/bin/pip install --upgrade pip setuptools wheel
@@ -93,13 +93,11 @@ 

Unit testingmain branch, GitHub Actions will take out these unit tests, too.

-

Documentation

+

Documentation

After locally building the documentation, open docs/build/index.html in your browser.

-
. venv/bin/activate
-pip install -e .[docs]
-cd docs/
-sphinx-apidoc --force --output-dir source/ ../critdd
-make html
+
venv/bin/pip install -e .[docs]
+venv/bin/sphinx-apidoc --force --output-dir docs/source critdd
+venv/bin/sphinx-build -M html docs/source docs/build
 

As soon as you push to the main branch, GitHub Actions will build the documentation, push it to the gh-pages branch, and publish the result on GitHub Pages: https://mirkobunse.github.io/critdd

diff --git a/genindex.html b/genindex.html index a712645..c53c925 100644 --- a/genindex.html +++ b/genindex.html @@ -1,5 +1,5 @@ - + @@ -14,9 +14,9 @@ - - - + + + @@ -75,19 +75,139 @@

Index

- D + A + | C + | D + | E + | F | G + | M + | N + | P + | R + | S | T
+

A

+ + + +
+ +

C

+ + + +
    +
  • + critdd.tests.stats + +
  • +
  • + critdd.tests.tikz + +
  • +
  • + critdd.tikz + +
  • +
  • + critdd.tikz_2d + +
  • +
+

D

+
+ +

E

+ + +
+ +

F

+ + +
@@ -96,17 +216,122 @@

G

+
+ +

M

+ + +
+ +

N

+ + + +
+ +

P

+ + + +
+ +

R

+ + +
+ +

S

+ +

T

@@ -114,9 +339,21 @@

T

  • to_str() (critdd.Diagram method)
  • +
  • treatment_names (critdd.diagram.Diagrams property) +
  • diff --git a/index.html b/index.html index 2e9996c..b3182fc 100644 --- a/index.html +++ b/index.html @@ -1,5 +1,5 @@ - + @@ -15,9 +15,9 @@ - - - + + + @@ -77,15 +77,15 @@
    -

    Quickstart

    +

    Quickstart

    This Python package generates Tikz code for publication-ready vector graphics.

    Critical difference (CD) diagrams are a powerful tool to compare outcomes of multiple treatments over multiple observations. In machine learning research, for instance, we often compare the performance (= outcome) of multiple methods (= treatments) over multiple data sets (= observations).

    Regular CD diagrams: statistically indistinguishable methods are connected.

    -example.svg +example.svg

    2D sequences: sequences of multiple CD diagrams can be arranged in a single, 2-dimensional plot.

    -2d_example.svg +2d_example.svg
    -

    Installation

    +

    Installation

    pip install 'critdd @ git+https://github.com/mirkobunse/critdd'
     
    @@ -99,7 +99,7 @@

    Installation -

    Usage

    +

    Usage

    Basically, you use this package as follows:

    from critdd import Diagram
     import pandas as pd
    @@ -135,7 +135,7 @@ 

    Usage

    -

    Advanced usage: 2D diagrams

    +

    Advanced usage: 2D diagrams

    In the following, we create a 2-dimensional plot that represents a sequence of CD diagrams. During the process, we customize the style of the plot.

    from critdd import Diagrams # Diagrams is the 2D version of Diagram
     import numpy as np
    diff --git a/manual.html b/manual.html
    index 49c00cf..af722ae 100644
    --- a/manual.html
    +++ b/manual.html
    @@ -1,5 +1,5 @@
     
    -
    +
     
       
     
    @@ -15,9 +15,9 @@
       
             
             
    -        
    -        
    -        
    +        
    +        
    +        
         
         
         
    @@ -83,29 +83,29 @@
                
    -

    Manual

    +

    Manual

    This manual provides you with more background information on CD diagrams.

    -

    Reading a CD diagram

    +

    Reading a CD diagram

    Let’s take a look at the treatments clf1 to clf5. Their position represents their mean ranks across all outcomes of the observations, where low ranks indicate that a treatment wins more often than its competitors with higher ranks. Two or more treatments are connected with each other if we can not tell their outcomes apart, in the sense of statistical significance. For the above example, we can not tell from the data whether clf3 and clf5 are actually different from each other. We can tell, however, that both of them are different from all of the other treatments. This example above is adapted from github.com/hfawaz/cd-diagram.

    -example.svg +example.svg
    -

    Hypothesis testing

    +

    Hypothesis testing

    A diagram like the one above concisely represents multiple hypothesis tests that are conducted over the observed outcomes. Before anything is plotted at all, the Friedman test tells us whether there are significant differences at all. If this test fails, we have not sufficient data to tell any of the treatments apart and we must abort. If, however, the test sucessfully rejects this possibility we can proceed with the post-hoc analysis. In this second step, a Wilcoxon signed-rank test tells us whether each pair of treatments exhibits a significant difference.

    -

    Multiple testing

    +

    Multiple testing

    Since we are testing multiple hypotheses, we must adjust the Wilcoxon test with Holm’s method or with Bonferroni’s method. For each group of treatments which we can not distinguish from the Holm-adjusted (or Bonferroni-adjusted) Wilcoxon test, we add a thick line to the diagram.

    Whether we choose Holm’s method or Bonferroni’s method for the adjustment depends on our personal requirements. Holm’s method has the advantage of a greater statistical power than Bonferroni’s method, i.e., this adjustment is capable of rejecting more null hypotheses that indeed should be rejected. However, its disadvantage is that the rejection of each null hypothesis depends on the outcome of other null hypotheses. If this property is not desired, one should instead use Bonferroni’s method, which ensures that each pair-wise hypothesis test is independent from all others.

    -

    Cautions

    +

    Cautions

    The hypothesis tests underneath the CD diagram do not account for variances of the outcomes. It is therefore important that these outcomes are reliable in the sense that each of them is obtained from a sufficiently large sample. Ideally, they come from a cross validation or from a repeated stratified split. Moreover, all treatments must have been evaluated on the same set of observations.

    The adjustments by Holm and Bonferroni can lead to different indistinguishable groups. For more information, see the Multiple testing section above.

    -

    Citing

    +

    Citing

    CD diagrams have originally been proposed in the following article:

    @article{demsar2006statistical,
       title={Statistical comparisons of classifiers over multiple data sets},
    diff --git a/modules.html b/modules.html
    new file mode 100644
    index 0000000..64354f3
    --- /dev/null
    +++ b/modules.html
    @@ -0,0 +1,186 @@
    +
    +
    +
    +  
    +
    +  
    +  critdd — critdd 0.0.1 documentation
    +      
    +      
    +
    +  
    +  
    +  
    +        
    +        
    +        
    +        
    +        
    +    
    +    
    +     
    +
    +
    + 
    +  
    + + +
    + + +
    +
    + + + + \ No newline at end of file diff --git a/objects.inv b/objects.inv index 4b710875385820e2a8c220097079825e98710328..5ad05d3ee2dd10791270b8fbec7b03cc44eb743c 100644 GIT binary patch delta 666 zcmV;L0%iT>0)hsRbbqZ^O>f&U488kT7}%~c)*gE+mKNw?K(_WSC=%nS@mD1(OZw|4 zOLlB$aU!|CDJ0+HBPl5|lL9%9tK&mna-Bi^BWBi=Y%$NiIpgAcyoeg}QqWY=yhgB$ zDiz;NlSRv_`{PcgC)J<&Nmh+KRE zDK)Y(hiMunw@iiiOwFTNeL-}B5-8?SASq}Lo`X|JQ3V_h8=w5#iq{WKB|J+3Jg3DU zP&z}8zFoyn*?)Q038zivI%hEp3E`VLc&a_k^eko7UZGI15VGf`fk?5|2z=sR7^g_s zRuE;i5_uy1x-{E-ayKX0{Y+%xl8- zAvRYsFLQGa-@$cfCSLQe1(U_1*nLi%Kn=BW-Wra8<`1w<8LbjO^&`5+6xV5<4pk}f z>A;|B`wyod<6E_cO8C&i+@OS)OxG_2&uwn2>)x*Zh~^372O#%6uonj5m&JS##0vR? zsXJbD-+u@3$`jCW*t|Q?aYH@F#ZdWZps783C>{;S$+R5QY|?28O~geWZ4>H zYm8DTM8V-;ff-#xRzq8>!@ShXs0(ZOdlA32U^{aTB}V4>X`1!poW%wHvg^n+|3cR4 zxM&?sv>Tku?*=yLQDf@2C+d;hU|${0fhvYc6cbR%wnLz^In1l`uj4v;5Qgvm3ZcCw(Cgj`d)Y%Fr9WVqb*4tDF*sV9f4@mg zsOblry~+DNj}DFsCL-2H13G|{{cungnB|j%-qdY$_Tf=hLT#{GQ#|Y7Q_qv(D7GGN zDAAwajiq~dj$tp(J16IR=it4A;4=5GpR5Xgd-uOG@3F^DjB=IahzInlB;|8+5=ft9 zeNUm%$sm>7k19LIHI#EGGyxI@dS}e53G%hi}U$i&0W*9fvZEYq9s@;k?%g$Tw8_*=K%lR8M<&Jyh diff --git a/py-modindex.html b/py-modindex.html new file mode 100644 index 0000000..7c5939d --- /dev/null +++ b/py-modindex.html @@ -0,0 +1,154 @@ + + + + + + Python Module Index — critdd 0.0.1 documentation + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    +
      +
    • + +
    • +
    • +
    +
    +
    +
    +
    + + +

    Python Module Index

    + +
    + c +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
     
    + c
    + critdd +
        + critdd.diagram +
        + critdd.stats +
        + critdd.tests.stats +
        + critdd.tests.tikz +
        + critdd.tikz +
        + critdd.tikz_2d +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/search.html b/search.html index 30c105a..c1bf35b 100644 --- a/search.html +++ b/search.html @@ -1,5 +1,5 @@ - + @@ -15,9 +15,9 @@ - - - + + + diff --git a/searchindex.js b/searchindex.js index c1df3f0..62cc877 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["api", "developer-guide", "index", "manual"], "filenames": ["api.md", "developer-guide.md", "index.md", "manual.md"], "titles": ["API", "Developer guide", "Quickstart", "Manual"], "terms": {"A": [0, 3], "n": [0, 2], "observ": [0, 2, 3], "k": [0, 2], "treatment": [0, 2, 3], "i": [0, 2, 3], "creat": [0, 2], "from": [0, 2, 3], "an": [0, 2], "shape": [0, 2], "matrix": [0, 2], "describ": 0, "index": [0, 1, 2], "md": 0, "section": [0, 3], "class": 0, "critdd": [0, 1, 2], "x": [0, 2], "treatment_nam": [0, 2], "none": 0, "maximize_outcom": [0, 2], "fals": [0, 2], "critic": [0, 2], "differ": [0, 2, 3], "paramet": 0, "where": [0, 3], "number": [0, 3], "option": 0, "The": [0, 3], "name": [0, 2], "default": 0, "whether": [0, 3], "rank": [0, 2, 3], "repres": [0, 2, 3], "maxim": 0, "true": [0, 2], "minim": 0, "outcom": [0, 2, 3], "get_group": [0, 2], "alpha": [0, 2], "0": [0, 2], "05": [0, 2], "adjust": [0, 2, 3], "holm": [0, 2, 3], "return_nam": 0, "return_singleton": 0, "get": 0, "group": [0, 2, 3], "indistinguish": [0, 2, 3], "threshold": 0, "reject": [0, 3], "p": 0, "valu": [0, 2], "multipl": [0, 2], "test": 0, "anoth": 0, "possibl": [0, 3], "bonferroni": [0, 3], "indic": [0, 3], "return": 0, "singl": [0, 2], "element": 0, "list": [0, 2], "statist": [0, 2, 3], "to_fil": [0, 2], "path": 0, "arg": 0, "kwarg": 0, "store": 0, "thi": [0, 2, 3], "file": [0, 2], "tikz": [0, 2], "code": [0, 1, 2], "png": 0, "svg": 0, "yet": 0, "support": 0, "ha": [0, 3], "end": 0, "tex": [0, 2], "pdf": [0, 2], "see": [0, 3], "to_str": 0, "str": 0, "object": 0, "reverse_x": [0, 2], "revers": 0, "direct": 0, "as_docu": 0, "includ": 0, "documentclass": 0, "document": [0, 2], "environ": 0, "tikzpicture_opt": 0, "dict": 0, "tikzpictur": 0, "axis_opt": [0, 2], "axi": 0, "preambl": [0, 2], "latex": 0, "command": [0, 2], "onli": 0, "us": [0, 2, 3], "m": [0, 1], "can": [0, 2, 3], "arrang": [0, 2], "2": [0, 2], "dimension": [0, 2], "plot": [0, 2, 3], "similar": 0, "requir": [0, 3], "tensor": 0, "input": 0, "diagram_nam": [0, 2], "given": 0, "either": 0, "length": 0, "matric": 0, "befor": [1, 2, 3], "you": [1, 2, 3], "push": 1, "main": [1, 2], "branch": 1, "pleas": 1, "local": 1, "run": [1, 2], "unittest": 1, "packag": [1, 2], "python": [1, 2], "venv": 1, "bin": 1, "pip": [1, 2], "instal": 1, "upgrad": [1, 2], "setuptool": [1, 2], "wheel": [1, 2], "e": [1, 3], "As": 1, "soon": 1, "github": [1, 2, 3], "action": 1, "take": [1, 3], "out": 1, "too": 1, "after": 1, "build": 1, "open": 1, "doc": [1, 2], "html": [1, 2], "your": 1, "browser": 1, "activ": 1, "cd": [1, 2], "sphinx": 1, "apidoc": 1, "forc": [1, 2], "output": 1, "dir": 1, "sourc": [1, 2], "make": 1, "gh": 1, "page": [1, 3], "publish": 1, "result": 1, "http": [1, 2], "mirkobuns": [1, 2], "io": 1, "gener": 2, "public": 2, "readi": 2, "vector": 2, "graphic": 2, "ar": [2, 3], "power": [2, 3], "tool": 2, "compar": 2, "over": [2, 3], "In": [2, 3], "machin": [2, 3], "learn": [2, 3], "research": [2, 3], "instanc": 2, "we": [2, 3], "often": [2, 3], "perform": 2, "method": [2, 3], "data": [2, 3], "set": [2, 3], "regular": 2, "connect": [2, 3], "sequenc": 2, "git": 2, "com": [2, 3], "updat": 2, "To": 2, "exist": 2, "reinstal": 2, "dep": 2, "troubleshoot": 2, "start": 2, "23": 2, "1": [2, 3], "have": [2, 3], "explicitli": 2, "If": [2, 3], "receiv": 2, "nameerror": 2, "defin": 2, "need": 2, "execut": 2, "follow": [2, 3], "basic": 2, "import": [2, 3], "panda": 2, "pd": 2, "download": 2, "exampl": [2, 3], "_url": 2, "raw": 2, "githubusercont": 2, "hfawaz": [2, 3], "master": 2, "csv": 2, "df": 2, "read_csv": 2, "pivot": 2, "dataset_nam": 2, "column": 2, "classifier_nam": 2, "accuraci": 2, "datafram": 2, "to_numpi": 2, "inspect": 2, "averag": 2, "average_rank": 2, "each": [2, 3], "export": 2, "titl": [2, 3], "dure": 2, "process": 2, "custom": 2, "style": 2, "version": 2, "numpi": 2, "np": 2, "2d_exampl": 2, "construct": 2, "uniqu": 2, "collect": 2, "diagram_df": 2, "dataset": 2, "loss": 2, "ensur": [2, 3], "fix": 2, "order": 2, "append": 2, "two_dimensional_diagram": 2, "stack": 2, "join": 2, "color": 2, "begin": 2, "definecolor": 2, "color1": 2, "84b818": 2, "color2": 2, "d18b12": 2, "color3": 2, "1bb5b5": 2, "color4": 2, "f85a3e": 2, "color5": 2, "4b6cfc": 2, "cycl": 2, "marker": 2, "mark": 2, "diamond": 2, "triangl": 2, "semithick": 2, "squar": 2, "pentagon": 2, "width": 2, "axisdefaultwidth": 2, "height": 2, "75": 2, "axisdefaultheight": 2, "provid": 3, "more": 3, "background": 3, "inform": 3, "let": 3, "": 3, "look": 3, "clf1": 3, "clf5": 3, "Their": 3, "posit": 3, "mean": 3, "across": 3, "all": 3, "low": 3, "win": 3, "than": 3, "its": 3, "competitor": 3, "higher": 3, "two": 3, "other": 3, "tell": 3, "apart": 3, "sens": 3, "signific": 3, "For": 3, "abov": 3, "clf3": 3, "actual": 3, "howev": 3, "both": 3, "them": 3, "adapt": 3, "like": 3, "one": 3, "concis": 3, "conduct": 3, "anyth": 3, "friedman": 3, "u": 3, "fail": 3, "suffici": 3, "ani": 3, "must": 3, "abort": 3, "sucessfulli": 3, "proce": 3, "post": 3, "hoc": 3, "analysi": 3, "second": 3, "step": 3, "wilcoxon": 3, "sign": 3, "pair": 3, "exhibit": 3, "sinc": 3, "hypothes": 3, "which": 3, "distinguish": 3, "add": 3, "thick": 3, "line": 3, "choos": 3, "depend": 3, "our": 3, "person": 3, "advantag": 3, "greater": 3, "capabl": 3, "null": 3, "inde": 3, "should": 3, "disadvantag": 3, "properti": 3, "desir": 3, "instead": 3, "wise": 3, "independ": 3, "underneath": 3, "do": 3, "account": 3, "varianc": 3, "It": 3, "therefor": 3, "reliabl": 3, "obtain": 3, "larg": 3, "sampl": 3, "ideal": 3, "thei": 3, "come": 3, "cross": 3, "valid": 3, "repeat": 3, "stratifi": 3, "split": 3, "moreov": 3, "been": 3, "evalu": 3, "same": 3, "lead": 3, "origin": 3, "propos": 3, "articl": 3, "demsar2006statist": 3, "comparison": 3, "classifi": 3, "author": 3, "dem": 3, "v": 3, "janez": 3, "journal": 3, "volum": 3, "7": 3, "30": 3, "year": 3, "2006": 3, "favor": 3, "nemenyi": 3, "later": 3, "argu": 3, "appropri": 3, "assess": 3, "pairwis": 3, "benavoli2016should": 3, "realli": 3, "base": 3, "benavoli": 3, "alessio": 3, "corani": 3, "giorgio": 3, "mangili": 3, "francesca": 3, "17": 3, "152": 3, "161": 3, "2016": 3}, "objects": {"critdd": [[0, 0, 1, "", "Diagram"], [0, 0, 1, "", "Diagrams"]], "critdd.Diagram": [[0, 1, 1, "", "get_groups"], [0, 1, 1, "", "to_file"], [0, 1, 1, "", "to_str"]], "critdd.Diagrams": [[0, 1, 1, "", "to_file"], [0, 1, 1, "", "to_str"]]}, "objtypes": {"0": "py:class", "1": "py:method"}, "objnames": {"0": ["py", "class", "Python class"], "1": ["py", "method", "Python method"]}, "titleterms": {"api": 0, "regular": 0, "cd": [0, 3], "diagram": [0, 2, 3], "2d": [0, 2], "sequenc": 0, "develop": 1, "guid": 1, "unit": 1, "test": [1, 3], "document": 1, "quickstart": 2, "instal": 2, "usag": 2, "advanc": 2, "manual": 3, "read": 3, "hypothesi": 3, "multipl": 3, "caution": 3, "cite": 3}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 58}, "alltitles": {"API": [[0, "api"]], "Regular CD diagrams": [[0, "regular-cd-diagrams"]], "2D sequences of CD diagrams": [[0, "d-sequences-of-cd-diagrams"]], "Developer guide": [[1, "developer-guide"]], "Unit testing": [[1, "unit-testing"]], "Documentation": [[1, "documentation"]], "Quickstart": [[2, "quickstart"]], "Installation": [[2, "installation"]], "Usage": [[2, "usage"]], "Advanced usage: 2D diagrams": [[2, "advanced-usage-2d-diagrams"]], "Manual": [[3, "manual"]], "Reading a CD diagram": [[3, "reading-a-cd-diagram"]], "Hypothesis testing": [[3, "hypothesis-testing"]], "Multiple testing": [[3, "multiple-testing"]], "Cautions": [[3, "cautions"]], "Citing": [[3, "citing"]]}, "indexentries": {"diagram (class in critdd)": [[0, "critdd.Diagram"]], "diagrams (class in critdd)": [[0, "critdd.Diagrams"]], "get_groups() (critdd.diagram method)": [[0, "critdd.Diagram.get_groups"]], "to_file() (critdd.diagram method)": [[0, "critdd.Diagram.to_file"]], "to_file() (critdd.diagrams method)": [[0, "critdd.Diagrams.to_file"]], "to_str() (critdd.diagram method)": [[0, "critdd.Diagram.to_str"]], "to_str() (critdd.diagrams method)": [[0, "critdd.Diagrams.to_str"]]}}) \ No newline at end of file +Search.setIndex({"alltitles": {"2D sequences of CD diagrams": [[0, "d-sequences-of-cd-diagrams"]], "API": [[0, null]], "Advanced usage: 2D diagrams": [[4, "advanced-usage-2d-diagrams"]], "Cautions": [[5, "cautions"]], "Citing": [[5, "citing"]], "Developer guide": [[3, null]], "Documentation": [[3, "documentation"]], "Hypothesis testing": [[5, "hypothesis-testing"]], "Installation": [[4, "installation"]], "Manual": [[5, null]], "Module contents": [[1, "module-critdd"], [2, "module-contents"]], "Multiple testing": [[5, "multiple-testing"]], "Quickstart": [[4, null]], "Reading a CD diagram": [[5, "reading-a-cd-diagram"]], "Regular CD diagrams": [[0, "regular-cd-diagrams"]], "Submodules": [[1, "submodules"], [2, "submodules"]], "Subpackages": [[1, "subpackages"]], "Unit testing": [[3, "unit-testing"]], "Usage": [[4, "usage"]], "critdd": [[6, null]], "critdd package": [[1, null]], "critdd.diagram module": [[1, "module-critdd.diagram"]], "critdd.stats module": [[1, "module-critdd.stats"]], "critdd.tests package": [[2, null]], "critdd.tests.readme module": [[2, "critdd-tests-readme-module"]], "critdd.tests.stats module": [[2, "module-critdd.tests.stats"]], "critdd.tests.tikz module": [[2, "module-critdd.tests.tikz"]], "critdd.tests.two_d module": [[2, "critdd-tests-two-d-module"]], "critdd.tikz module": [[1, "module-critdd.tikz"]], "critdd.tikz_2d module": [[1, "module-critdd.tikz_2d"]]}, "docnames": ["api", "critdd", "critdd.tests", "developer-guide", "index", "manual", "modules"], "envversion": {"sphinx": 62, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2}, "filenames": ["api.md", "critdd.rst", "critdd.tests.rst", "developer-guide.md", "index.md", "manual.md", "modules.rst"], "indexentries": {"abstractdiagram (class in critdd.diagram)": [[1, "critdd.diagram.AbstractDiagram", false]], "adjust_pairwise_tests() (in module critdd.stats)": [[1, "critdd.stats.adjust_pairwise_tests", false]], "average_ranks (critdd.diagram.diagram property)": [[1, "critdd.diagram.Diagram.average_ranks", false]], "average_ranks (critdd.stats.chisquarefriedmanresult property)": [[1, "critdd.stats.ChiSquareFriedmanResult.average_ranks", false]], "chi_square_distributed() (in module critdd.stats)": [[1, "critdd.stats.chi_square_distributed", false]], "chi_square_result (critdd.stats.fdistributedfriedmanresult property)": [[1, "critdd.stats.FDistributedFriedmanResult.chi_square_result", false]], "chisquarefriedmanresult (class in critdd.stats)": [[1, "critdd.stats.ChiSquareFriedmanResult", false]], "critdd": [[1, "module-critdd", false]], "critdd.diagram": [[1, "module-critdd.diagram", false]], "critdd.stats": [[1, "module-critdd.stats", false]], "critdd.tests.stats": [[2, "module-critdd.tests.stats", false]], "critdd.tests.tikz": [[2, "module-critdd.tests.tikz", false]], "critdd.tikz": [[1, "module-critdd.tikz", false]], "critdd.tikz_2d": [[1, "module-critdd.tikz_2d", false]], "diagram (class in critdd)": [[0, "critdd.Diagram", false]], "diagram (class in critdd.diagram)": [[1, "critdd.diagram.Diagram", false]], "diagrams (class in critdd)": [[0, "critdd.Diagrams", false]], "diagrams (class in critdd.diagram)": [[1, "critdd.diagram.Diagrams", false]], "exportexception": [[1, "critdd.tikz.ExportException", false]], "f_distributed() (in module critdd.stats)": [[1, "critdd.stats.f_distributed", false]], "fdistributedfriedmanresult (class in critdd.stats)": [[1, "critdd.stats.FDistributedFriedmanResult", false]], "friedman() (in module critdd.stats)": [[1, "critdd.stats.friedman", false]], "get_groups() (critdd.diagram method)": [[0, "critdd.Diagram.get_groups", false]], "get_groups() (critdd.diagram.diagram method)": [[1, "critdd.diagram.Diagram.get_groups", false]], "maximize_outcome (critdd.diagram.diagram property)": [[1, "critdd.diagram.Diagram.maximize_outcome", false]], "maximize_outcome (critdd.diagram.diagrams property)": [[1, "critdd.diagram.Diagrams.maximize_outcome", false]], "maximize_outcome (critdd.stats.chisquarefriedmanresult property)": [[1, "critdd.stats.ChiSquareFriedmanResult.maximize_outcome", false]], "module": [[1, "module-critdd", false], [1, "module-critdd.diagram", false], [1, "module-critdd.stats", false], [1, "module-critdd.tikz", false], [1, "module-critdd.tikz_2d", false], [2, "module-critdd.tests.stats", false], [2, "module-critdd.tests.tikz", false]], "n (critdd.stats.chisquarefriedmanresult property)": [[1, "critdd.stats.ChiSquareFriedmanResult.n", false]], "n_df (critdd.stats.chisquarefriedmanresult property)": [[1, "critdd.stats.ChiSquareFriedmanResult.n_df", false]], "n_df_1 (critdd.stats.fdistributedfriedmanresult property)": [[1, "critdd.stats.FDistributedFriedmanResult.n_df_1", false]], "n_df_2 (critdd.stats.fdistributedfriedmanresult property)": [[1, "critdd.stats.FDistributedFriedmanResult.n_df_2", false]], "pairwise_tests() (in module critdd.stats)": [[1, "critdd.stats.pairwise_tests", false]], "pvalue (critdd.stats.chisquarefriedmanresult property)": [[1, "critdd.stats.ChiSquareFriedmanResult.pvalue", false]], "pvalue (critdd.stats.fdistributedfriedmanresult property)": [[1, "critdd.stats.FDistributedFriedmanResult.pvalue", false]], "requires_document() (in module critdd.tikz)": [[1, "critdd.tikz.requires_document", false]], "statistic (critdd.stats.chisquarefriedmanresult property)": [[1, "critdd.stats.ChiSquareFriedmanResult.statistic", false]], "statistic (critdd.stats.fdistributedfriedmanresult property)": [[1, "critdd.stats.FDistributedFriedmanResult.statistic", false]], "test_catalysts_example() (critdd.tests.stats.testfriedman method)": [[2, "critdd.tests.stats.TestFriedman.test_catalysts_example", false]], "test_random_rejection() (critdd.tests.stats.testfriedman method)": [[2, "critdd.tests.stats.TestFriedman.test_random_rejection", false]], "test_tikz() (critdd.tests.tikz.testtikz method)": [[2, "critdd.tests.tikz.TestTikz.test_tikz", false]], "test_trees_example() (critdd.tests.stats.testfriedman method)": [[2, "critdd.tests.stats.TestFriedman.test_trees_example", false]], "testfriedman (class in critdd.tests.stats)": [[2, "critdd.tests.stats.TestFriedman", false]], "testtikz (class in critdd.tests.tikz)": [[2, "critdd.tests.tikz.TestTikz", false]], "to_file() (critdd.diagram method)": [[0, "critdd.Diagram.to_file", false]], "to_file() (critdd.diagram.abstractdiagram method)": [[1, "critdd.diagram.AbstractDiagram.to_file", false]], "to_file() (critdd.diagrams method)": [[0, "critdd.Diagrams.to_file", false]], "to_file() (in module critdd.tikz)": [[1, "critdd.tikz.to_file", false]], "to_str() (critdd.diagram method)": [[0, "critdd.Diagram.to_str", false]], "to_str() (critdd.diagram.abstractdiagram method)": [[1, "critdd.diagram.AbstractDiagram.to_str", false]], "to_str() (critdd.diagram.diagram method)": [[1, "critdd.diagram.Diagram.to_str", false]], "to_str() (critdd.diagram.diagrams method)": [[1, "critdd.diagram.Diagrams.to_str", false]], "to_str() (critdd.diagrams method)": [[0, "critdd.Diagrams.to_str", false]], "to_str() (in module critdd.tikz)": [[1, "critdd.tikz.to_str", false]], "to_str() (in module critdd.tikz_2d)": [[1, "critdd.tikz_2d.to_str", false]], "treatment_names (critdd.diagram.diagrams property)": [[1, "critdd.diagram.Diagrams.treatment_names", false]]}, "objects": {"": [[1, 0, 0, "-", "critdd"]], "critdd": [[0, 1, 1, "", "Diagram"], [0, 1, 1, "", "Diagrams"], [1, 0, 0, "-", "diagram"], [1, 0, 0, "-", "stats"], [1, 0, 0, "-", "tikz"], [1, 0, 0, "-", "tikz_2d"]], "critdd.Diagram": [[0, 2, 1, "", "get_groups"], [0, 2, 1, "", "to_file"], [0, 2, 1, "", "to_str"]], "critdd.Diagrams": [[0, 2, 1, "", "to_file"], [0, 2, 1, "", "to_str"]], "critdd.diagram": [[1, 1, 1, "", "AbstractDiagram"], [1, 1, 1, "", "Diagram"], [1, 1, 1, "", "Diagrams"]], "critdd.diagram.AbstractDiagram": [[1, 2, 1, "", "to_file"], [1, 2, 1, "", "to_str"]], "critdd.diagram.Diagram": [[1, 3, 1, "", "average_ranks"], [1, 2, 1, "", "get_groups"], [1, 3, 1, "", "maximize_outcome"], [1, 2, 1, "", "to_str"]], "critdd.diagram.Diagrams": [[1, 3, 1, "", "maximize_outcome"], [1, 2, 1, "", "to_str"], [1, 3, 1, "", "treatment_names"]], "critdd.stats": [[1, 1, 1, "", "ChiSquareFriedmanResult"], [1, 1, 1, "", "FDistributedFriedmanResult"], [1, 4, 1, "", "adjust_pairwise_tests"], [1, 4, 1, "", "chi_square_distributed"], [1, 4, 1, "", "f_distributed"], [1, 4, 1, "", "friedman"], [1, 4, 1, "", "pairwise_tests"]], "critdd.stats.ChiSquareFriedmanResult": [[1, 3, 1, "", "average_ranks"], [1, 3, 1, "", "maximize_outcome"], [1, 3, 1, "", "n"], [1, 3, 1, "", "n_df"], [1, 3, 1, "", "pvalue"], [1, 3, 1, "", "statistic"]], "critdd.stats.FDistributedFriedmanResult": [[1, 3, 1, "", "chi_square_result"], [1, 3, 1, "", "n_df_1"], [1, 3, 1, "", "n_df_2"], [1, 3, 1, "", "pvalue"], [1, 3, 1, "", "statistic"]], "critdd.tests": [[2, 0, 0, "-", "stats"], [2, 0, 0, "-", "tikz"]], "critdd.tests.stats": [[2, 1, 1, "", "TestFriedman"]], "critdd.tests.stats.TestFriedman": [[2, 2, 1, "", "test_catalysts_example"], [2, 2, 1, "", "test_random_rejection"], [2, 2, 1, "", "test_trees_example"]], "critdd.tests.tikz": [[2, 1, 1, "", "TestTikz"]], "critdd.tests.tikz.TestTikz": [[2, 2, 1, "", "test_tikz"]], "critdd.tikz": [[1, 5, 1, "", "ExportException"], [1, 4, 1, "", "requires_document"], [1, 4, 1, "", "to_file"], [1, 4, 1, "", "to_str"]], "critdd.tikz_2d": [[1, 4, 1, "", "to_str"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "property", "Python property"], "4": ["py", "function", "Python function"], "5": ["py", "exception", "Python exception"]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:property", "4": "py:function", "5": "py:exception"}, "terms": {"": 5, "0": [0, 1, 4], "05": [0, 1, 4], "1": [4, 5], "152": 5, "161": 5, "17": 5, "1bb5b5": 4, "2": [0, 1, 4], "2006": 5, "2016": 5, "23": 4, "2d_exampl": 4, "30": 5, "4b6cfc": 4, "7": 5, "75": 4, "84b818": 4, "A": [0, 1, 5], "As": 3, "For": 5, "If": [4, 5], "In": [4, 5], "It": 5, "The": [0, 1, 5], "Their": 5, "These": 1, "To": 4, "_url": 4, "abc": 1, "abort": 5, "abov": 5, "abstract": 1, "abstractdiagram": [1, 6], "account": 5, "accuraci": 4, "across": [1, 5], "action": 3, "actual": 5, "adapt": 5, "add": 5, "addit": 1, "adjust": [0, 1, 4, 5], "adjust_pairwise_test": [1, 6], "advantag": 5, "after": 3, "alessio": 5, "all": [1, 5], "alpha": [0, 1, 4], "an": [0, 1, 4], "analogi": 1, "analysi": 5, "ani": 5, "anoth": [0, 1], "anyth": 5, "apart": 5, "apidoc": 3, "append": 4, "appropri": 5, "ar": [1, 4, 5], "arg": [0, 1], "argu": 5, "arrang": [0, 4], "articl": 5, "as_docu": [0, 1], "assembl": 1, "assess": 5, "author": 5, "averag": [1, 4], "average_rank": [1, 4, 6], "ax": 1, "axi": [0, 1], "axis_opt": [0, 1, 4], "axisdefaultheight": 4, "axisdefaultwidth": 4, "background": 5, "base": [1, 2, 5], "basic": 4, "been": 5, "befor": [3, 4, 5], "begin": 4, "benavoli": 5, "benavoli2016should": 5, "bin": 3, "bonferroni": [0, 1, 5], "both": 5, "branch": 3, "browser": 3, "build": 3, "calcul": 1, "can": [0, 4, 5], "capabl": 5, "cd": 4, "chi": 1, "chi_square_distribut": [1, 6], "chi_square_result": [1, 6], "chisquarefriedmanresult": [1, 6], "choos": 5, "class": [0, 1, 2], "classifi": 5, "classifier_nam": 4, "clf1": 5, "clf3": 5, "clf5": 5, "code": [0, 1, 3, 4], "collect": 4, "color": 4, "color1": 4, "color2": 4, "color3": 4, "color4": 4, "color5": 4, "column": 4, "com": [4, 5], "come": 5, "command": [0, 1, 4], "compar": 4, "comparison": 5, "competitor": 5, "concis": 5, "conduct": 5, "connect": [4, 5], "construct": 4, "content": 6, "corani": 5, "creat": [0, 4], "critdd": [0, 3, 4], "critic": [0, 1, 4], "cross": 5, "csv": 4, "custom": 4, "cycl": 4, "d18b12": 4, "data": [4, 5], "datafram": 4, "dataset": 4, "dataset_nam": 4, "default": [0, 1], "defin": 4, "definecolor": 4, "degre": 1, "dem": 5, "demsar2006statist": 5, "dep": 4, "depend": 5, "describ": 0, "desir": 5, "determin": 1, "df": 4, "diagram": 6, "diagram_df": 4, "diagram_nam": [0, 1, 4], "diamond": 4, "dict": [0, 1], "differ": [0, 1, 4, 5], "dimension": [0, 1, 4], "dir": 3, "direct": [0, 1], "disadvantag": 5, "distinguish": 5, "distribut": 1, "do": 5, "doc": [3, 4], "document": [0, 1, 4], "documentclass": [0, 1], "download": 4, "dure": 4, "e": [3, 5], "each": [4, 5], "either": [0, 1], "element": [0, 1], "end": [0, 1], "ensur": [4, 5], "environ": [0, 1], "evalu": 5, "exampl": [4, 5], "except": 1, "execut": 4, "exhibit": 5, "exist": 4, "explicitli": 4, "export": [1, 4], "exportexcept": [1, 6], "f": 1, "f85a3e": 4, "f_distribut": [1, 6], "fail": 5, "fals": [0, 1, 4], "favor": 5, "fdistributedfriedmanresult": [1, 6], "file": [0, 1, 4], "first": 1, "fix": 4, "follow": [4, 5], "forc": [3, 4], "francesca": 5, "freedom": 1, "friedman": [1, 5, 6], "from": [0, 4, 5], "gener": 4, "get": [0, 1], "get_group": [0, 1, 4, 6], "gh": 3, "giorgio": 5, "git": 4, "github": [3, 4, 5], "githubusercont": 4, "given": [0, 1], "graphic": 4, "greater": 5, "group": [0, 1, 4, 5], "ha": [0, 1, 5], "have": [1, 4, 5], "height": 4, "hfawaz": [4, 5], "higher": 5, "hoc": 5, "holm": [0, 1, 4, 5], "howev": 5, "html": [3, 4], "http": [3, 4], "hypothes": 5, "hypothesi": 1, "i": [0, 1, 4, 5], "ideal": 5, "implement": 1, "import": [4, 5], "includ": [0, 1], "inde": 5, "independ": 5, "index": [0, 3, 4], "indic": [0, 1, 5], "indistinguish": [0, 1, 4, 5], "inform": 5, "input": 0, "inspect": 4, "instal": 3, "instanc": 4, "instead": 5, "io": 3, "its": 5, "janez": 5, "join": 4, "journal": 5, "k": [0, 1, 4], "kwarg": [0, 1], "larg": 5, "later": 5, "latex": [0, 1], "lead": 5, "learn": [4, 5], "length": [0, 1], "let": 5, "like": 5, "line": 5, "list": [0, 1, 4], "local": 3, "look": 5, "loss": 4, "low": 5, "m": [0, 1, 3], "machin": [4, 5], "main": [3, 4], "mangili": 5, "mark": 4, "marker": 4, "master": 4, "matric": [0, 1], "matrix": [0, 1, 4], "maxim": [0, 1], "maximize_outcom": [0, 1, 4, 6], "md": 0, "mean": 5, "method": [4, 5], "methodnam": 2, "minim": [0, 1], "mirkobuns": [3, 4], "modul": 6, "more": 5, "moreov": 5, "multipl": [0, 1, 4], "must": 5, "n": [0, 1, 4, 6], "n_df": [1, 6], "n_df_1": [1, 6], "n_df_2": [1, 6], "name": [0, 1, 4], "nameerror": 4, "need": 4, "nemenyi": 5, "none": [0, 1], "np": 4, "null": [1, 5], "number": [0, 1, 5], "numpi": 4, "object": [0, 1], "observ": [0, 1, 4, 5], "obtain": 5, "often": [4, 5], "one": 5, "onli": [0, 1], "open": 3, "option": [0, 1], "order": 4, "origin": 5, "other": 5, "our": 5, "out": 3, "outcom": [0, 1, 4, 5], "output": 3, "over": [4, 5], "p": [0, 1], "packag": [3, 4, 6], "page": [3, 5], "pair": 5, "pairwis": 5, "pairwise_test": [1, 6], "panda": 4, "paramet": [0, 1], "path": [0, 1], "pd": 4, "pdf": [0, 1, 4], "pentagon": 4, "perform": 4, "person": 5, "pip": [3, 4], "pivot": 4, "pleas": 3, "plot": [0, 1, 4, 5], "png": [0, 1], "posit": 5, "possibl": [0, 1, 5], "post": 5, "power": [4, 5], "preambl": [0, 1, 4], "proce": 5, "process": 4, "properti": [1, 5], "propos": 5, "provid": 5, "public": 4, "publish": 3, "push": 3, "pvalu": [1, 6], "python": [1, 3, 4], "r": 1, "rank": [0, 1, 4, 5], "raw": 4, "read_csv": 4, "readi": 4, "readm": [1, 6], "realli": 5, "receiv": 4, "regular": [1, 4], "reinstal": 4, "reject": [0, 1, 5], "reliabl": 5, "repeat": 5, "repres": [0, 1, 4, 5], "requir": [0, 1, 5], "requires_docu": [1, 6], "research": [4, 5], "result": 3, "return": [0, 1], "return_nam": [0, 1], "return_singleton": [0, 1], "revers": [0, 1], "reverse_x": [0, 1, 4], "run": [3, 4], "runtest": 2, "same": [1, 5], "sampl": 5, "scipi": 1, "second": [1, 5], "section": [0, 5], "see": [0, 1, 5], "semithick": 4, "sens": 5, "sequenc": [1, 4], "set": [4, 5], "setuptool": [3, 4], "shape": [0, 1, 4], "should": 5, "sign": 5, "signific": 5, "similar": 0, "sinc": 5, "singl": [0, 1, 4], "soon": 3, "sourc": [3, 4], "sphinx": 3, "split": 5, "squar": [1, 4], "stack": 4, "start": 4, "stat": 6, "statist": [0, 1, 4, 5, 6], "step": 5, "store": [0, 1], "str": [0, 1], "stratifi": 5, "string": 1, "style": 4, "submodul": 6, "subpackag": 6, "sucessfulli": 5, "suffici": 5, "support": [0, 1], "svg": [0, 1], "take": [3, 5], "tell": 5, "tensor": [0, 1], "test": [0, 1, 6], "test_catalysts_exampl": [1, 2], "test_random_reject": [1, 2], "test_tikz": [1, 2], "test_trees_exampl": [1, 2], "testcas": 2, "testfriedman": [1, 2], "testtikz": [1, 2], "tex": [0, 1, 4], "than": 5, "thei": 5, "them": 5, "therefor": 5, "thi": [0, 1, 4, 5], "thick": 5, "threshold": [0, 1], "tikz": [0, 4, 6], "tikz_2d": 6, "tikz_cod": 1, "tikzpictur": [0, 1], "tikzpicture_opt": [0, 1], "titl": [1, 4, 5], "to_fil": [0, 1, 4, 6], "to_numpi": 4, "to_str": [0, 1, 6], "too": 3, "tool": 4, "treatment": [0, 1, 4, 5], "treatment_nam": [0, 1, 4, 6], "triangl": 4, "troubleshoot": 4, "true": [0, 1, 4], "tupl": 1, "two": 5, "two_d": [1, 6], "two_dimensional_diagram": 4, "type": 1, "u": 5, "underneath": 5, "uniqu": 4, "unittest": 3, "updat": 4, "upgrad": [3, 4], "us": [0, 1, 4, 5], "v": 5, "valid": 5, "valu": [0, 1, 4], "varianc": 5, "vector": 4, "venv": 3, "version": [1, 4], "volum": 5, "we": [4, 5], "wheel": [3, 4], "where": [0, 1, 5], "whether": [0, 1, 5], "which": 5, "width": 4, "wilcoxon": 5, "win": 5, "wise": 5, "x": [0, 1, 4], "year": 5, "yet": [0, 1], "you": [3, 4, 5], "your": 3}, "titles": ["API", "critdd package", "critdd.tests package", "Developer guide", "Quickstart", "Manual", "critdd"], "titleterms": {"2d": [0, 4], "advanc": 4, "api": 0, "caution": 5, "cd": [0, 5], "cite": 5, "content": [1, 2], "critdd": [1, 2, 6], "develop": 3, "diagram": [0, 1, 4, 5], "document": 3, "guid": 3, "hypothesi": 5, "instal": 4, "manual": 5, "modul": [1, 2], "multipl": 5, "packag": [1, 2], "quickstart": 4, "read": 5, "readm": 2, "regular": 0, "sequenc": 0, "stat": [1, 2], "submodul": [1, 2], "subpackag": 1, "test": [2, 3, 5], "tikz": [1, 2], "tikz_2d": 1, "two_d": 2, "unit": 3, "usag": 4}}) \ No newline at end of file