From dc2a219057166a41841b3330ae5c0e9416d0d710 Mon Sep 17 00:00:00 2001 From: juntongni Date: Sun, 28 Jul 2024 17:18:46 +0800 Subject: [PATCH] Update doc --- docs/_build/doctrees/environment.pickle | Bin 24689 -> 42861 bytes docs/_build/doctrees/index.doctree | Bin 3215 -> 3631 bytes docs/_build/doctrees/installation.doctree | Bin 3841 -> 3813 bytes docs/_build/doctrees/quickstart.doctree | Bin 5395 -> 5383 bytes docs/_build/html/.buildinfo | 2 +- docs/_build/html/_sources/index.rst.txt | 18 +- docs/_build/html/_sources/installation.md.txt | 2 +- docs/_build/html/_static/basic.css | 6 +- docs/_build/html/_static/doctools.js | 2 +- .../html/_static/documentation_options.js | 3 +- docs/_build/html/_static/language_data.js | 4 +- docs/_build/html/_static/searchtools.js | 190 +++++++----------- docs/_build/html/_static/sphinx_highlight.js | 16 +- docs/_build/html/genindex.html | 22 +- docs/_build/html/index.html | 54 +++-- docs/_build/html/installation.html | 41 ++-- docs/_build/html/objects.inv | Bin 377 -> 367 bytes docs/_build/html/quickstart.html | 38 ++-- docs/_build/html/search.html | 22 +- docs/_build/html/searchindex.js | 122 ++++++++++- docs/index.rst | 6 +- 21 files changed, 322 insertions(+), 226 deletions(-) diff --git a/docs/_build/doctrees/environment.pickle b/docs/_build/doctrees/environment.pickle index 3ad4db7a85c479ac861b8a51c051ecc56d51e6c1..b9a37352ac7ed227f4de0c681ed30bc986c41ae7 100644 GIT binary patch literal 42861 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 literal 24689 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 diff --git a/docs/_build/doctrees/index.doctree b/docs/_build/doctrees/index.doctree index 43a7a03aed843393c6fbc8f8c93fb5d1de501651..80f5227af046c7cb24f84ae538211fd71cbe4533 100644 GIT binary patch delta 585 zcmaKp&uY|A6vn;nq@y#jLUB_Z#}*Z5P>7%l5meNLmN+4(Q~%UauF0MGV)JLrO=`QC zsv98~DVXa<3Vnnk@ey44DlUBiPsE}ix;Px};dk%(zWZ&>@3yp8+J_UfpR@@(d%@^S z5lh4O!qHHKBg5Wsz~jJK>n?@-=|`HMXO%LS_~&*5_S zwVJ37G|Zq*FJ3S7>F!JPU=5U&H=d`Svq~!Bq!NJJL`aUiCPP2h`jU@?!o3XlGd#%f z(AMFERq>aI)6pt!)tdj8 z*0J*DReQ;BdBUZr#98@lH4tmuPxpR|3{|_#))VIrv%|819vb@!$ delta 298 zcmZ24(=W-|z&f>sXCrGZqpqp5RZM7cYEf~Fd$3bXKxJ}9Vo`2DQGQlxatTnZD6t?T zI43hVCM7?)IA-%E##xN@8h$-InR&$}i8(omC7JnoQ`)BZ^>7uIW+rC?1&d0+e1U?* zFi<4$V^E|%>%M{C$D9;ocxtJY%?2MG^0RKett=O0nnDr ziYYye`co#yvwI13^zaq~-Je&Q8()!@Uz9tgWAk2i1xChMo9}UaW@7A^e3|>TOm0S2 gaSvx+Vs2_lWdYDNwNo;3JBu?Efppg9TRfqR0Qc{80ssI2 diff --git a/docs/_build/doctrees/installation.doctree b/docs/_build/doctrees/installation.doctree index 484c0aa0b39775ea6a10aed254f2b1478baf6009..0d2b0cc413d2d205993a538bc2d9e165f4474ffd 100644 GIT binary patch delta 195 zcmZpadn(J)z&iETMiw_l13UfD;?$yI{hZ9a^t9Bxbp3$JC|tkmR^Vtx0b z#Da|AoXlMPl>Fpk{mtc!u}q8&lhatTCcCr9L0Fq_uzX>he2>jT#GA2)w-~4|uQWHl zA}zltcZxUTW(#%&M#jyXBRM`ZF?lmi_T~Q1_;K<99?{83JaUZhCpYp)Gk%ynmq(tF saq?as3!un19wYI0J%Z)=MJdVorFkW~xtV#TC8@hUG{MadaP+Il4wC0qrSB^mj73dN}DVmIuE5B+b+Zk}XONwS-2WLrPd4N+mi?F^o1s&h)FW7)UzC!ZUz%5VWHWS1lX?Wp^NUiF y^GowebaONFN=s6Ur)15a+$5yLvH_-JkB}ncyvg^3Or_=mg|O;azgbuK79#+k*-Uo; diff --git a/docs/_build/html/.buildinfo b/docs/_build/html/.buildinfo index 6914967..a0d505d 100644 --- a/docs/_build/html/.buildinfo +++ b/docs/_build/html/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 9fc46237014b323953bec2db0824f101 +config: 4ec3bd3c41e66b7a2e925c66e399cf70 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/_build/html/_sources/index.rst.txt b/docs/_build/html/_sources/index.rst.txt index 1d5df6f..eea0344 100644 --- a/docs/_build/html/_sources/index.rst.txt +++ b/docs/_build/html/_sources/index.rst.txt @@ -4,8 +4,22 @@ Welcome to GraphSlim's documentation! A comprehensive package for graph sparsification, coarsening and condensation based on PyG. .. toctree:: - :maxdepth: 2 + :maxdepth: 1 + :caption: Installation installation + +.. toctree:: + :maxdepth: 1 + :caption: Usage + quickstart - packageref/index + +.. toctree:: + :maxdepth: 1 + :caption: Package API + + API/dataset + API/evaluation + API/method + diff --git a/docs/_build/html/_sources/installation.md.txt b/docs/_build/html/_sources/installation.md.txt index b68092e..5f22e88 100644 --- a/docs/_build/html/_sources/installation.md.txt +++ b/docs/_build/html/_sources/installation.md.txt @@ -8,6 +8,6 @@ pip install graphslim ```shell git clone https://github.com/Emory-Melody/GraphSlim.git cd GraphSlim/graphslim -pip install -r requirements_torch2+.txt +pip install -r requirements.txt python setup.py ``` \ No newline at end of file diff --git a/docs/_build/html/_static/basic.css b/docs/_build/html/_static/basic.css index f316efc..cfc60b8 100644 --- a/docs/_build/html/_static/basic.css +++ b/docs/_build/html/_static/basic.css @@ -4,7 +4,7 @@ * * Sphinx stylesheet -- basic theme. * - * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -237,10 +237,6 @@ a.headerlink { visibility: hidden; } -a:visited { - color: #551A8B; -} - h1:hover > a.headerlink, h2:hover > a.headerlink, h3:hover > a.headerlink, diff --git a/docs/_build/html/_static/doctools.js b/docs/_build/html/_static/doctools.js index 4d67807..d06a71d 100644 --- a/docs/_build/html/_static/doctools.js +++ b/docs/_build/html/_static/doctools.js @@ -4,7 +4,7 @@ * * Base JavaScript utilities for all Sphinx HTML documentation. * - * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ diff --git a/docs/_build/html/_static/documentation_options.js b/docs/_build/html/_static/documentation_options.js index 7e4c114..b57ae3b 100644 --- a/docs/_build/html/_static/documentation_options.js +++ b/docs/_build/html/_static/documentation_options.js @@ -1,4 +1,5 @@ -const DOCUMENTATION_OPTIONS = { +var DOCUMENTATION_OPTIONS = { + URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), VERSION: '', LANGUAGE: 'en', COLLAPSE_INDEX: false, diff --git a/docs/_build/html/_static/language_data.js b/docs/_build/html/_static/language_data.js index 367b8ed..250f566 100644 --- a/docs/_build/html/_static/language_data.js +++ b/docs/_build/html/_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-2024 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2023 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, if available */ +/* Non-minified version is copied as a separate JS file, is available */ /** * Porter Stemmer diff --git a/docs/_build/html/_static/searchtools.js b/docs/_build/html/_static/searchtools.js index b08d58c..184a177 100644 --- a/docs/_build/html/_static/searchtools.js +++ b/docs/_build/html/_static/searchtools.js @@ -4,7 +4,7 @@ * * Sphinx JavaScript utilities for the full-text search. * - * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2023 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, highlightTerms) => { +const _displayItem = (item, searchTerms) => { 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,35 +75,28 @@ const _displayItem = (item, searchTerms, highlightTerms) => { if (dirname.match(/\/index\/$/)) dirname = dirname.substring(0, dirname.length - 6); else if (dirname === "index/") dirname = ""; - requestUrl = contentRoot + dirname; + requestUrl = docUrlRoot + dirname; linkUrl = requestUrl; } else { // normal html builders - requestUrl = contentRoot + docName + docFileSuffix; + requestUrl = docUrlRoot + 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, anchor) + Search.makeSearchSummary(data, searchTerms) ); - // 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); }; @@ -116,43 +109,26 @@ const _finishSearch = (resultCount) => { ); else Search.status.innerText = _( - "Search finished, found ${resultCount} page(s) matching the search query." - ).replace('${resultCount}', resultCount); + `Search finished, found ${resultCount} page(s) matching the search query.` + ); }; const _displayNextItem = ( results, resultCount, - searchTerms, - highlightTerms, + searchTerms ) => { // 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, highlightTerms); + _displayItem(results.pop(), searchTerms); setTimeout( - () => _displayNextItem(results, resultCount, searchTerms, highlightTerms), + () => _displayNextItem(results, resultCount, searchTerms), 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 @@ -176,26 +152,15 @@ const Search = { _queued_query: null, _pulse_status: -1, - htmlToText: (htmlString, anchor) => { + htmlToText: (htmlString) => { const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); - 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 + htmlElement.querySelectorAll(".headerlink").forEach((el) => { + el.remove() + }); const docContent = htmlElement.querySelector('[role="main"]'); - if (docContent) return docContent.textContent; - + if (docContent !== undefined) return docContent.textContent; console.warn( - "Content block not found. Sphinx search tries to obtain it via DOM query '[role=main]'. Check your theme or template." + "Content block not found. Sphinx search tries to obtain it via '[role=main]'. Could you check your theme or template." ); return ""; }, @@ -268,7 +233,16 @@ const Search = { else Search.deferQuery(query); }, - _parseQuery: (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; + // stem the search terms and add them to the correct list const stemmer = new Stemmer(); const searchTerms = new Set(); @@ -304,38 +278,21 @@ const Search = { // console.info("required: ", [...searchTerms]); // console.info("excluded: ", [...excludedTerms]); - 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 = []; - + // array of [docname, title, anchor, descr, score, filename] + let results = []; _removeChildren(document.getElementById("search-progress")); - const queryLower = query.toLowerCase().trim(); + const queryLower = query.toLowerCase(); for (const [title, foundTitles] of Object.entries(allTitles)) { - if (title.toLowerCase().trim().includes(queryLower) && (queryLower.length >= title.length/2)) { + if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length / 2)) { for (const [file, id] of foundTitles) { - 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([ + let score = Math.round(100 * queryLower.length / title.length) + results.push([ docNames[file], titles[file] !== title ? `${titles[file]} > ${title}` : title, id !== null ? "#" + id : "", null, - score + boost, + score, filenames[file], ]); } @@ -345,47 +302,46 @@ 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, isMain] of foundEntries) { - const score = Math.round(100 * queryLower.length / entry.length); - const result = [ + for (const [file, id] of foundEntries) { + let score = Math.round(100 * queryLower.length / entry.length) + results.push([ 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) => - normalResults.push(...Search.performObjectSearch(term, objectTerms)) + results.push(...Search.performObjectSearch(term, objectTerms)) ); // lookup as search terms in fulltext - normalResults.push(...Search.performTermsSearch(searchTerms, excludedTerms)); + results.push(...Search.performTermsSearch(searchTerms, excludedTerms)); // let the scorer override scores with a custom scoring function - 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]; + 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; + }); // remove duplicate search results // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept @@ -399,19 +355,14 @@ const Search = { return acc; }, []); - return results.reverse(); - }, - - query: (query) => { - const [searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms] = Search._parseQuery(query); - const results = Search._performSearch(searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms); + results = results.reverse(); // for debugging //Search.lastresults = results.slice(); // a copy // console.info("search results:", Search.lastresults); // print the results - _displayNextItem(results, results.length, searchTerms, highlightTerms); + _displayNextItem(results, results.length, searchTerms); }, /** @@ -509,18 +460,14 @@ const Search = { // add support for partial matches if (word.length > 2) { const escapedWord = _escapeRegExp(word); - if (!terms.hasOwnProperty(word)) { Object.keys(terms).forEach((term) => { - if (term.match(escapedWord)) - arr.push({ files: terms[term], score: Scorer.partialTerm }); + if (term.match(escapedWord) && !terms[word]) + 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 }); + if (term.match(escapedWord) && !titleTerms[word]) + arr.push({files: titleTerms[word], score: Scorer.partialTitle}); }); - } } // no match but word was a required one @@ -543,8 +490,9 @@ const Search = { // create the mapping files.forEach((file) => { - if (!fileMap.has(file)) fileMap.set(file, [word]); - else if (fileMap.get(file).indexOf(word) === -1) fileMap.get(file).push(word); + if (fileMap.has(file) && fileMap.get(file).indexOf(word) === -1) + fileMap.get(file).push(word); + else fileMap.set(file, [word]); }); }); @@ -595,8 +543,8 @@ const Search = { * search summary for a given text. keywords is a list * of stemmed words. */ - makeSearchSummary: (htmlText, keywords, anchor) => { - const text = Search.htmlToText(htmlText, anchor); + makeSearchSummary: (htmlText, keywords) => { + const text = Search.htmlToText(htmlText); if (text === "") return null; const textLower = text.toLowerCase(); diff --git a/docs/_build/html/_static/sphinx_highlight.js b/docs/_build/html/_static/sphinx_highlight.js index 8a96c69..0f5fb86 100644 --- a/docs/_build/html/_static/sphinx_highlight.js +++ b/docs/_build/html/_static/sphinx_highlight.js @@ -29,19 +29,14 @@ 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( - rest, + document.createTextNode(val.substr(pos + text.length)), 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( @@ -145,10 +140,5 @@ const SphinxHighlight = { }, }; -_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(); -}); +_ready(SphinxHighlight.highlightSearchWords); +_ready(SphinxHighlight.initEscapeListener); diff --git a/docs/_build/html/genindex.html b/docs/_build/html/genindex.html index 948997d..b58e0af 100644 --- a/docs/_build/html/genindex.html +++ b/docs/_build/html/genindex.html @@ -1,5 +1,5 @@ - + @@ -14,9 +14,9 @@ - - - + + + @@ -41,10 +41,20 @@ diff --git a/docs/_build/html/index.html b/docs/_build/html/index.html index e49ae9a..f046199 100644 --- a/docs/_build/html/index.html +++ b/docs/_build/html/index.html @@ -1,5 +1,5 @@ - + @@ -15,9 +15,9 @@ - - - + + + @@ -43,10 +43,20 @@ @@ -74,26 +84,28 @@
-

Welcome to GraphSlim’s documentation!

+

Welcome to GraphSlim’s documentation!

A comprehensive package for graph sparsification, coarsening and condensation based on PyG.

+
+

Usage

+ - +
+
diff --git a/docs/_build/html/installation.html b/docs/_build/html/installation.html index 61f8604..7b678b5 100644 --- a/docs/_build/html/installation.html +++ b/docs/_build/html/installation.html @@ -1,5 +1,5 @@ - + @@ -15,14 +15,12 @@ - - - + + + - - - + @@ -44,16 +42,17 @@
@@ -79,18 +78,19 @@
-

Installation

+

Installation

-

Install from pip

+

Install from pip

pip install graphslim
 
-

Install source code

+

Install source code +

git clone https://github.com/Emory-Melody/GraphSlim.git
 cd GraphSlim/graphslim
-pip install -r requirements_torch2+.txt
+pip install -r requirements.txt
 python setup.py 
 
@@ -100,10 +100,7 @@

Install source code - - -

+