Repository navigation
v3.0.1
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 subtopicsloop with O(1) dict lookups per item.
Bug Fixes
- Fix
plot_evolutioncrash on matplotlib 3.6+: Replace deprecatednonposy='clip'parameter withnonpositive='clip'ingraphUtils.py - Fix GUI crash on invalid input: Replace
exit()calls inScientoPyClass.pywithScientoPyErrorexceptions. 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) acrosspaperUtils.pyandScientoPyGui.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()afterplt.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.jsonand 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_FOLDERomitedPapers->omittedPapersgrapPreprocess->graphPreprocesspageSart->pageStartinstitutionsWithCoutnry->institutionsWithCountrydocuemnts->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 * Npattern
Infrastructure
pyproject.toml: Modern Python packaging with optional[gui]and[dev]extras. Enablespip install .andpip install .[gui]- Entry points: Add
main()functions toscientoPy.pyandpreProcess.pyfor 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