Skip to content

v3.0.1

Choose a tag to compare

@github-actions github-actions released this 08 Apr 18:12
· 23 commits to master since this release

ScientoPy v3.0.1 — Release Notes

Highlights

ScientoPy 3.0.1 focuses on performance, code quality, and developer infrastructure. It includes significant optimizations to the duplicate removal and topic matching algorithms, a comprehensive test suite integrated into CI, and numerous bug fixes and usability improvements.


Performance

  • Duplicate removal optimized from O(n^2) to O(n): Replaced list.remove() in the inner loop with set-based marking and single-pass list rebuild. Added DOI lookup dictionary for non-adjacent duplicate detection. Large datasets (10k+ papers) will see major speedups.
  • Topic matching optimized from O(n^3) to O(n): Built exact-match dictionary and pre-compiled regex patterns for topic lookup, replacing the nested papers x items x topics x subtopics loop with O(1) dict lookups per item.

Bug Fixes

  • Fix plot_evolution crash on matplotlib 3.6+: Replace deprecated nonposy='clip' parameter with nonpositive='clip' in graphUtils.py
  • Fix GUI crash on invalid input: Replace exit() calls in ScientoPyClass.py with ScientoPyError exceptions. The GUI now shows an error dialog instead of terminating the application.
  • Fix bare except: clauses: Replace with specific exception types (KeyError, TypeError, FileNotFoundError, PermissionError) across paperUtils.py and ScientoPyGui.py
  • Fix BibTeX citation parsing: Replace fragile character-by-character \cite{} parsing with regex. Handle missing \begin{document} or \begin{thebibliography} markers gracefully.
  • Fix year validation: Add range check (1900-2100) in addition to isdigit() when loading papers
  • Fix event loop conflict on Windows: Remove redundant plt.show() after plt.show(block=False) (fixed in v3.0.0)
  • Fix Unicode error on Windows: Add encoding="utf-8" to CSV file reads (fixed in v3.0.0)

Usability

  • Status bar: Shows operation status ("Preprocessing complete -- 5,548 papers", "Analysis complete -- 10 topics found", errors)
  • Dataset folder validation: Checks that the folder exists and contains CSV/TXT files before starting preprocess, with actionable error messages
  • Keyboard shortcuts: Ctrl+O (browse dataset), Ctrl+R (run current tab), Ctrl+1/2/3/4 (switch tabs)
  • Remember analysis parameters: Criterion, graph type, year range, topics length, skip first, window width, and checkbox states are saved to scientopy_config.json and restored on next launch
  • Improved error messages: Grammatical fixes, specific exception types with suggestions for resolution

Code Quality

  • Fix typos across codebase:
    • DEFUALT_DATA_IN_FOLDER -> DEFAULT_DATA_IN_FOLDER
    • omitedPapers -> omittedPapers
    • grapPreprocess -> graphPreprocess
    • pageSart -> pageStart
    • institutionsWithCoutnry -> institutionsWithCountry
    • docuemnts -> documents
  • Remove dead code: Python 2 version check, commented-out plot code, debug print statements
  • Clean up color/marker arrays: Replace 100-line repeated arrays with base * N pattern

Infrastructure

  • pyproject.toml: Modern Python packaging with optional [gui] and [dev] extras. Enables pip install . and pip install .[gui]
  • Entry points: Add main() functions to scientoPy.py and preProcess.py for use as console scripts
  • Unit tests: 19 pytest tests covering globalVar constants, sourcesStatics, removeDuplicates, normalizeOpenAccess, and ScientoPyError
  • CI test job: Unit and behavioral tests (92 total) now run on every push and PR across Ubuntu, Windows, and macOS. Build job depends on tests passing.

Full changelog: v3.0.0...v3.0.1