gismap 0.3.0__tar.gz → 0.4.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. {gismap-0.3.0 → gismap-0.4.1}/.github/ISSUE_TEMPLATE.md +1 -1
  2. {gismap-0.3.0 → gismap-0.4.1}/.github/workflows/build.yml +3 -3
  3. {gismap-0.3.0 → gismap-0.4.1}/.github/workflows/docs.yml +1 -1
  4. gismap-0.4.1/.github/workflows/ldb-build.yml +98 -0
  5. gismap-0.4.1/.github/workflows/release.yml +77 -0
  6. {gismap-0.3.0 → gismap-0.4.1}/.run/All tests.run.xml +2 -5
  7. {gismap-0.3.0 → gismap-0.4.1}/CONTRIBUTING.md +5 -5
  8. {gismap-0.3.0 → gismap-0.4.1}/HISTORY.md +25 -4
  9. {gismap-0.3.0 → gismap-0.4.1}/PKG-INFO +26 -11
  10. {gismap-0.3.0 → gismap-0.4.1}/README.md +19 -6
  11. {gismap-0.3.0 → gismap-0.4.1}/binder/interactive.ipynb +2 -0
  12. gismap-0.4.1/binder/postBuild +21 -0
  13. {gismap-0.3.0 → gismap-0.4.1}/citation.cff +2 -2
  14. {gismap-0.3.0 → gismap-0.4.1}/docs/conf.py +1 -1
  15. {gismap-0.3.0 → gismap-0.4.1}/docs/faq.ipynb +11 -11
  16. {gismap-0.3.0 → gismap-0.4.1}/docs/presentation/installation.md +4 -4
  17. {gismap-0.3.0 → gismap-0.4.1}/docs/reference/database.md +15 -0
  18. {gismap-0.3.0 → gismap-0.4.1}/docs/reference/examples.md +16 -0
  19. {gismap-0.3.0 → gismap-0.4.1}/docs/reference/utils.md +10 -0
  20. {gismap-0.3.0 → gismap-0.4.1}/docs/tutorials/cedric.ipynb +14 -1
  21. {gismap-0.3.0 → gismap-0.4.1}/docs/tutorials/egomap.ipynb +28 -6
  22. {gismap-0.3.0 → gismap-0.4.1}/docs/tutorials/examples.md +1 -0
  23. {gismap-0.3.0 → gismap-0.4.1}/docs/tutorials/lab_tutorial.ipynb +62 -30
  24. gismap-0.4.1/docs/tutorials/lamsade.ipynb +61 -0
  25. {gismap-0.3.0 → gismap-0.4.1}/docs/tutorials/lincs.ipynb +6 -2
  26. {gismap-0.3.0 → gismap-0.4.1}/docs/tutorials/lip6.ipynb +3 -3
  27. {gismap-0.3.0 → gismap-0.4.1}/docs/tutorials/toulouse.ipynb +7 -3
  28. {gismap-0.3.0 → gismap-0.4.1}/gismap/__init__.py +1 -0
  29. gismap-0.4.1/gismap/build.py +26 -0
  30. {gismap-0.3.0 → gismap-0.4.1}/gismap/gisgraphs/builder.py +23 -8
  31. {gismap-0.3.0 → gismap-0.4.1}/gismap/gisgraphs/graph.py +15 -0
  32. {gismap-0.3.0 → gismap-0.4.1}/gismap/gisgraphs/widget.py +23 -3
  33. gismap-0.4.1/gismap/lab/egomap.py +63 -0
  34. {gismap-0.3.0 → gismap-0.4.1}/gismap/lab/expansion.py +35 -1
  35. {gismap-0.3.0 → gismap-0.4.1}/gismap/lab/lab_author.py +34 -7
  36. {gismap-0.3.0 → gismap-0.4.1}/gismap/lab/labmap.py +46 -6
  37. {gismap-0.3.0 → gismap-0.4.1}/gismap/lab_examples/cedric.py +19 -6
  38. gismap-0.4.1/gismap/lab_examples/lamsade.py +45 -0
  39. {gismap-0.3.0 → gismap-0.4.1}/gismap/lab_examples/toulouse.py +6 -2
  40. {gismap-0.3.0 → gismap-0.4.1}/gismap/search.py +61 -1
  41. {gismap-0.3.0 → gismap-0.4.1}/gismap/sources/dblp.py +23 -1
  42. gismap-0.4.1/gismap/sources/dblp_ttl.py +187 -0
  43. {gismap-0.3.0 → gismap-0.4.1}/gismap/sources/hal.py +40 -2
  44. gismap-0.4.1/gismap/sources/ldb.py +716 -0
  45. gismap-0.4.1/gismap/sources/models.py +121 -0
  46. {gismap-0.3.0 → gismap-0.4.1}/gismap/sources/multi.py +67 -2
  47. gismap-0.4.1/gismap/utils/common.py +167 -0
  48. {gismap-0.3.0 → gismap-0.4.1}/gismap/utils/logger.py +2 -0
  49. {gismap-0.3.0 → gismap-0.4.1}/gismap/utils/requests.py +3 -1
  50. {gismap-0.3.0 → gismap-0.4.1}/gismap/utils/text.py +1 -1
  51. gismap-0.4.1/gismap/utils/zlist.py +88 -0
  52. {gismap-0.3.0 → gismap-0.4.1}/pyproject.toml +10 -8
  53. {gismap-0.3.0 → gismap-0.4.1}/uv.lock +109 -440
  54. gismap-0.3.0/.github/workflows/release.yml +0 -30
  55. gismap-0.3.0/gismap/lab/egomap.py +0 -41
  56. gismap-0.3.0/gismap/sources/models.py +0 -38
  57. gismap-0.3.0/gismap/utils/common.py +0 -105
  58. {gismap-0.3.0 → gismap-0.4.1}/.coveragerc +0 -0
  59. {gismap-0.3.0 → gismap-0.4.1}/.editorconfig +0 -0
  60. {gismap-0.3.0 → gismap-0.4.1}/.gitattributes +0 -0
  61. {gismap-0.3.0 → gismap-0.4.1}/.gitignore +0 -0
  62. {gismap-0.3.0 → gismap-0.4.1}/.run/Generate docs.run.xml +0 -0
  63. {gismap-0.3.0 → gismap-0.4.1}/AUTHORS.md +0 -0
  64. {gismap-0.3.0 → gismap-0.4.1}/binder/requirements.txt +0 -0
  65. {gismap-0.3.0 → gismap-0.4.1}/binder/runtime.txt +0 -0
  66. {gismap-0.3.0 → gismap-0.4.1}/docs/favicon.ico +0 -0
  67. {gismap-0.3.0 → gismap-0.4.1}/docs/index.md +0 -0
  68. {gismap-0.3.0 → gismap-0.4.1}/docs/logo.png +0 -0
  69. {gismap-0.3.0 → gismap-0.4.1}/docs/presentation/authors.md +0 -0
  70. {gismap-0.3.0 → gismap-0.4.1}/docs/presentation/contributing.md +0 -0
  71. {gismap-0.3.0 → gismap-0.4.1}/docs/presentation/history.md +0 -0
  72. {gismap-0.3.0 → gismap-0.4.1}/docs/presentation/index.md +0 -0
  73. {gismap-0.3.0 → gismap-0.4.1}/docs/presentation/readme.md +0 -0
  74. {gismap-0.3.0 → gismap-0.4.1}/docs/reference/cographs.md +0 -0
  75. {gismap-0.3.0 → gismap-0.4.1}/docs/reference/gismo.md +0 -0
  76. {gismap-0.3.0 → gismap-0.4.1}/docs/reference/index.md +0 -0
  77. {gismap-0.3.0 → gismap-0.4.1}/docs/reference/lab.md +0 -0
  78. {gismap-0.3.0 → gismap-0.4.1}/docs/tutorials/index.md +0 -0
  79. {gismap-0.3.0 → gismap-0.4.1}/gismap/author.py +0 -0
  80. {gismap-0.3.0 → gismap-0.4.1}/gismap/gisgraphs/__init__.py +0 -0
  81. {gismap-0.3.0 → gismap-0.4.1}/gismap/gisgraphs/groups.py +0 -0
  82. {gismap-0.3.0 → gismap-0.4.1}/gismap/gisgraphs/js.py +0 -0
  83. {gismap-0.3.0 → gismap-0.4.1}/gismap/gisgraphs/options.py +0 -0
  84. {gismap-0.3.0 → gismap-0.4.1}/gismap/gisgraphs/style.py +0 -0
  85. {gismap-0.3.0 → gismap-0.4.1}/gismap/gismap.py +0 -0
  86. {gismap-0.3.0 → gismap-0.4.1}/gismap/gismo.py +0 -0
  87. {gismap-0.3.0 → gismap-0.4.1}/gismap/lab/__init__.py +0 -0
  88. {gismap-0.3.0 → gismap-0.4.1}/gismap/lab/filters.py +0 -0
  89. {gismap-0.3.0 → gismap-0.4.1}/gismap/lab_examples/__init__.py +0 -0
  90. {gismap-0.3.0 → gismap-0.4.1}/gismap/lab_examples/lincs.py +0 -0
  91. {gismap-0.3.0 → gismap-0.4.1}/gismap/lab_examples/lip6.py +0 -0
  92. {gismap-0.3.0 → gismap-0.4.1}/gismap/sources/__init__.py +0 -0
  93. {gismap-0.3.0 → gismap-0.4.1}/gismap/utils/__init__.py +0 -0
  94. {gismap-0.3.0 → gismap-0.4.1}/tests/__init__.py +0 -0
  95. {gismap-0.3.0 → gismap-0.4.1}/tests/test_gismap.py +0 -0
@@ -1,4 +1,4 @@
1
- * Generic Information Search: Mapping and Analysis of Publications version:
1
+ * GisMap version:
2
2
  * Python version:
3
3
  * Operating System:
4
4
 
@@ -12,7 +12,7 @@ on:
12
12
  schedule:
13
13
  - cron: '30 5 1,15 * *'
14
14
  env:
15
- NUMBA_DISABLE_JIT: 1
15
+ NUMBA_DISABLE_JIT: 0
16
16
 
17
17
  jobs:
18
18
  build:
@@ -20,7 +20,7 @@ jobs:
20
20
  timeout-minutes: 30
21
21
  strategy:
22
22
  matrix:
23
- python-version: ["3.10", "3.11", "3.12", "3.13"]
23
+ python-version: ["3.11", "3.12", "3.13", "3.14"]
24
24
  steps:
25
25
 
26
26
  - name: Checkout
@@ -34,7 +34,7 @@ jobs:
34
34
  - name: Set up uv
35
35
  uses: astral-sh/setup-uv@v5
36
36
  with:
37
- version: "0.9.11"
37
+ version: "0.9.27"
38
38
 
39
39
  - name: Run tests
40
40
  run: |
@@ -29,7 +29,7 @@ jobs:
29
29
  - name: Set up uv
30
30
  uses: astral-sh/setup-uv@v5
31
31
  with:
32
- version: "0.9.11"
32
+ version: "0.9.27"
33
33
 
34
34
  - name: Setup Pandoc
35
35
  uses: pandoc/actions/setup@v1
@@ -0,0 +1,98 @@
1
+ name: Build LDB Database
2
+
3
+ on:
4
+ schedule:
5
+ - cron: '0 2 * * 0' # Weekly on Sunday 2 AM UTC
6
+ workflow_dispatch: # Manual trigger
7
+
8
+ jobs:
9
+ build-ldb:
10
+ name: Build and Upload LDB Database
11
+ runs-on: ubuntu-latest
12
+ timeout-minutes: 60 # Build takes ~30 min, allow margin
13
+ permissions:
14
+ contents: write # To upload release assets
15
+
16
+ steps:
17
+ - name: Checkout code
18
+ uses: actions/checkout@v4
19
+
20
+ - name: Set up Python 3.12
21
+ uses: actions/setup-python@v5
22
+ with:
23
+ python-version: "3.12"
24
+
25
+ - name: Install uv
26
+ uses: astral-sh/setup-uv@v5
27
+ with:
28
+ version: "0.9.27"
29
+
30
+ - name: Install dependencies
31
+ run: uv sync --all-extras
32
+
33
+ - name: Build LDB database
34
+ run: |
35
+ echo "Building LDB database from DBLP TTL..."
36
+ uv run python -m gismap.build --no-search
37
+ echo "Build complete."
38
+
39
+ - name: Locate and verify database
40
+ id: locate-db
41
+ run: |
42
+ # Find database in platformdirs location
43
+ DB_PATH=$(uv run python -c "from gismap.sources.ldb import LDB_PARAMETERS; print(LDB_PARAMETERS.io.destination)")
44
+ echo "Database path: $DB_PATH"
45
+
46
+ if [ ! -f "$DB_PATH" ]; then
47
+ echo "ERROR: Database not found at $DB_PATH"
48
+ exit 1
49
+ fi
50
+
51
+ # Get file size
52
+ DB_SIZE=$(stat -c%s "$DB_PATH")
53
+ echo "Database size: $DB_SIZE bytes ($(echo "scale=2; $DB_SIZE / 1073741824" | bc) GB)"
54
+
55
+ # Get counts
56
+ AUTHOR_COUNT=$(uv run python -c "from gismap.sources.ldb import LDB; LDB.load_db(); print(len(LDB.authors))")
57
+ PUBLI_COUNT=$(uv run python -c "from gismap.sources.ldb import LDB; LDB.load_db(); print(len(LDB.publis))")
58
+ echo "Authors: $AUTHOR_COUNT, Publications: $PUBLI_COUNT"
59
+
60
+ echo "db_path=$DB_PATH" >> $GITHUB_OUTPUT
61
+ echo "db_size=$DB_SIZE" >> $GITHUB_OUTPUT
62
+ echo "author_count=$AUTHOR_COUNT" >> $GITHUB_OUTPUT
63
+ echo "publi_count=$PUBLI_COUNT" >> $GITHUB_OUTPUT
64
+
65
+ - name: Find latest release
66
+ id: latest-release
67
+ env:
68
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
69
+ run: |
70
+ LATEST_TAG=$(gh release list --limit 1 --json tagName -q '.[0].tagName')
71
+ if [ -z "$LATEST_TAG" ]; then
72
+ echo "ERROR: No releases found"
73
+ exit 1
74
+ fi
75
+ echo "Latest release: $LATEST_TAG"
76
+ echo "tag=$LATEST_TAG" >> $GITHUB_OUTPUT
77
+
78
+ - name: Upload LDB to release
79
+ env:
80
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
81
+ run: |
82
+ echo "Uploading ldb.pkl.zst to release ${{ steps.latest-release.outputs.tag }}..."
83
+ gh release upload "${{ steps.latest-release.outputs.tag }}" \
84
+ "${{ steps.locate-db.outputs.db_path }}" \
85
+ --clobber
86
+ echo "Upload complete!"
87
+
88
+ - name: Summary
89
+ run: |
90
+ echo "## LDB Build Summary" >> $GITHUB_STEP_SUMMARY
91
+ echo "" >> $GITHUB_STEP_SUMMARY
92
+ echo "| Metric | Value |" >> $GITHUB_STEP_SUMMARY
93
+ echo "|--------|-------|" >> $GITHUB_STEP_SUMMARY
94
+ echo "| Release | ${{ steps.latest-release.outputs.tag }} |" >> $GITHUB_STEP_SUMMARY
95
+ echo "| Authors | ${{ steps.locate-db.outputs.author_count }} |" >> $GITHUB_STEP_SUMMARY
96
+ echo "| Publications | ${{ steps.locate-db.outputs.publi_count }} |" >> $GITHUB_STEP_SUMMARY
97
+ echo "| Database Size | $(echo "scale=2; ${{ steps.locate-db.outputs.db_size }} / 1073741824" | bc) GB |" >> $GITHUB_STEP_SUMMARY
98
+ echo "| Build Date | $(date -u +%Y-%m-%dT%H:%M:%SZ) |" >> $GITHUB_STEP_SUMMARY
@@ -0,0 +1,77 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+
7
+ jobs:
8
+ publish-pypi:
9
+ name: Publish Python Package
10
+ runs-on: ubuntu-latest
11
+ timeout-minutes: 30
12
+ environment:
13
+ name: pypi
14
+ permissions:
15
+ id-token: write # Required for PyPI trusted publishing
16
+
17
+ steps:
18
+ - name: Checkout code
19
+ uses: actions/checkout@v4
20
+
21
+ - name: Install uv
22
+ uses: astral-sh/setup-uv@v5
23
+ with:
24
+ version: "0.9.11" # Pin to specific uv version
25
+
26
+ - name: Build package
27
+ run: uv build --no-sources # Recommended for production builds
28
+
29
+ - name: Publish to PyPI
30
+ run: uv publish -v dist/*
31
+
32
+ build-ldb:
33
+ name: Build LDB Database
34
+ runs-on: ubuntu-latest
35
+ timeout-minutes: 60 # Build takes ~30 min
36
+ permissions:
37
+ contents: write # To upload release assets
38
+
39
+ steps:
40
+ - name: Checkout code
41
+ uses: actions/checkout@v4
42
+
43
+ - name: Set up Python 3.12
44
+ uses: actions/setup-python@v5
45
+ with:
46
+ python-version: "3.12"
47
+
48
+ - name: Install uv
49
+ uses: astral-sh/setup-uv@v5
50
+ with:
51
+ version: "0.9.11"
52
+
53
+ - name: Install dependencies
54
+ run: uv sync --all-extras
55
+
56
+ - name: Build LDB database
57
+ run: |
58
+ echo "Building LDB database from DBLP TTL..."
59
+ uv run python -m gismap.build --no-search
60
+ echo "Build complete."
61
+
62
+ - name: Locate database
63
+ id: locate-db
64
+ run: |
65
+ DB_PATH=$(uv run python -c "from gismap.sources.ldb import LDB_PARAMETERS; print(LDB_PARAMETERS.io.destination)")
66
+ echo "Database path: $DB_PATH"
67
+ echo "db_path=$DB_PATH" >> $GITHUB_OUTPUT
68
+
69
+ - name: Upload LDB to release
70
+ env:
71
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
72
+ run: |
73
+ echo "Uploading ldb.pkl.zst to release ${{ github.event.release.tag_name }}..."
74
+ gh release upload "${{ github.event.release.tag_name }}" \
75
+ "${{ steps.locate-db.outputs.db_path }}" \
76
+ --clobber
77
+ echo "Upload complete!"
@@ -4,11 +4,8 @@
4
4
  <option name="ENV_FILES" value="" />
5
5
  <option name="INTERPRETER_OPTIONS" value="" />
6
6
  <option name="PARENT_ENVS" value="true" />
7
- <envs>
8
- <env name="NUMBA_DISABLE_JIT" value="1" />
9
- </envs>
10
7
  <option name="SDK_HOME" value="" />
11
- <option name="SDK_NAME" value="Python 3.12 (gismap)" />
8
+ <option name="SDK_NAME" value="uv (gismap)" />
12
9
  <option name="WORKING_DIRECTORY" value="" />
13
10
  <option name="IS_MODULE_SDK" value="false" />
14
11
  <option name="ADD_CONTENT_ROOTS" value="true" />
@@ -21,4 +18,4 @@
21
18
  <option name="_new_targetType" value="&quot;PATH&quot;" />
22
19
  <method v="2" />
23
20
  </configuration>
24
- </component>
21
+ </component>
@@ -29,8 +29,8 @@ and "help wanted" is open to whoever wants to implement it.
29
29
 
30
30
  ### Write Documentation
31
31
 
32
- Generic Information Search: Mapping and Analysis of Publications could always use more documentation, whether as part of the
33
- official Generic Information Search: Mapping and Analysis of Publications docs, in docstrings, or even on the web in blog posts,
32
+ GisMap could always use more documentation, whether as part of the
33
+ official GisMap docs, in docstrings, or even on the web in blog posts,
34
34
  articles, and such.
35
35
 
36
36
  ### Submit Feedback
@@ -50,7 +50,7 @@ Ready to contribute? Here's how to set up `gismap` for local development.
50
50
 
51
51
  1. Fork the `gismap` repo on GitHub.
52
52
 
53
- 2. Clone your fork locally::
53
+ 2. Clone your fork locally:
54
54
  ```console
55
55
  $ git clone git@github.com:your_name_here/gismap.git
56
56
  ```
@@ -61,7 +61,7 @@ Ready to contribute? Here's how to set up `gismap` for local development.
61
61
  $ uv sync --all-extras
62
62
  ```
63
63
 
64
- 4. Create a branch for local development::
64
+ 4. Create a branch for local development:
65
65
  ```console
66
66
  $ git checkout -b name-of-your-bugfix-or-feature
67
67
  ```
@@ -73,7 +73,7 @@ Ready to contribute? Here's how to set up `gismap` for local development.
73
73
  $ uv run pytest
74
74
  ```
75
75
 
76
- 6. Commit your changes and push your branch to GitHub::
76
+ 6. Commit your changes and push your branch to GitHub:
77
77
  ```bash
78
78
  $ git add .
79
79
  $ git commit -m "Your detailed description of your changes."
@@ -2,14 +2,35 @@
2
2
 
3
3
  ## Pipeline
4
4
 
5
- - Offline DBLP
6
- - anHALyze: tools to spot HAL issues (bad author metada, DBLP comparison, widget)
5
+ - anHALyze: tools to spot HAL issues (bad author metadata, DBLP comparison, widget)
7
6
  - EgoConf: find your conferences journals
8
7
  - Easier access to graph customization
9
8
  - Additional graph option (e.g. time filtering and coloring, default group checks...)
10
9
  - Custom CSS (e.g. transparent background)
11
10
  - Gismo integration
12
11
 
12
+ ## 0.4.1 (2026-02-02): Python 3.14 support
13
+
14
+ - Add Python 3.14 compatibility (requires gismo>=0.5.4).
15
+ - Drop Python 3.10 support (now requires 3.11+).
16
+ - LDB search engine fine-tuned.
17
+ - Various typo fixes.
18
+
19
+ ## 0.4.0 (2026-01-27): Local DB
20
+
21
+ New DB: LDB (Local DB). All the strengths of DBLP, None of its weaknesses.
22
+
23
+ - Convert the whole DBLP relational DB into a Gismap compatible local object.
24
+ - Introduces new compressed list format (Zlist) to keep the DB in memory.
25
+ - Use Bag-of-Factors to enable approximate search.
26
+ - You can build your own dataset or just rely on the one we provide and update.
27
+
28
+ Also, Lamsade added to the gallery.
29
+
30
+ ## 0.3.1 (2025-11-27): Bug fixes
31
+
32
+ - Fix BS4 dependency issue.
33
+ - Errors in readme
13
34
 
14
35
  ## 0.3.0 (2025-11-25): Bigger, faster, prettier
15
36
 
@@ -42,7 +63,7 @@
42
63
  - New lab structure: EgoMap shows the people that revolves around you!
43
64
  - New lab method: expansion, which adds *moons* (neighbor researchers).
44
65
  - Add filters when building authors and publications.
45
- - Physic engine changed fo better visualization.
66
+ - Physic engine changed for better visualization.
46
67
  - Multi-source handling fine-tuned.
47
68
  - Better display (size and theme).
48
69
 
@@ -51,5 +72,5 @@
51
72
 
52
73
  - First release on PyPI.
53
74
  - Online DBLP and HAL DB implemented.
54
- - Lab stuctures implemented.
75
+ - Lab structures implemented.
55
76
  - Early version of collaboration graph available.
@@ -1,24 +1,26 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gismap
3
- Version: 0.3.0
4
- Summary: GisMap leverages DBLP and HAL databases to provide cartography tools for you and your lab.
3
+ Version: 0.4.1
4
+ Summary: GisMap: for researchers, by researchers. Research cartography tools leveraging DBLP and HAL.
5
5
  Project-URL: Repository, https://github.com/balouf/gismap
6
6
  Project-URL: Documentation, https://balouf.github.io/gismap
7
7
  Author-email: Fabien Mathieu <fabien.mathieu@normalesup.org>
8
8
  Maintainer-email: Fabien Mathieu <fabien.mathieu@normalesup.org>
9
9
  License-Expression: MIT
10
10
  License-File: AUTHORS.md
11
- Requires-Python: >=3.10
12
- Requires-Dist: bof>=0.3.5
11
+ Requires-Python: <3.15,>=3.11
12
+ Requires-Dist: beautifulsoup4>=4.14.3
13
+ Requires-Dist: bof>=0.4.2
13
14
  Requires-Dist: distinctipy>=1.3.4
14
15
  Requires-Dist: domonic>=0.9.13
15
- Requires-Dist: gismo>=0.5.2
16
+ Requires-Dist: gismo>=0.5.4
16
17
  Requires-Dist: ipykernel>=6.30.1
17
18
  Requires-Dist: ipywidgets>=8.1.8
19
+ Requires-Dist: platformdirs>=4.5.1
18
20
  Requires-Dist: tqdm>=4.67.1
19
21
  Description-Content-Type: text/markdown
20
22
 
21
- # Generic Information Search: Mapping and Analysis of Publications
23
+ # GisMap: for researchers, by researchers
22
24
 
23
25
 
24
26
  [![PyPI Status](https://img.shields.io/pypi/v/gismap.svg)](https://pypi.python.org/pypi/gismap)
@@ -28,7 +30,7 @@ Description-Content-Type: text/markdown
28
30
  [![License: MIT](https://img.shields.io/badge/license-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
29
31
  [![Code Coverage](https://codecov.io/gh/balouf/gismap/branch/main/graphs/badge.svg)](https://codecov.io/gh/balouf/gismap/tree/main)
30
32
 
31
- GisMap leverages DBLP and HAL databases to provide cartography tools for you and your lab.
33
+ GisMap (Generic Information Search: Mapping and Analysis of Publications) leverages DBLP and HAL databases to provide cartography tools for you and your lab.
32
34
 
33
35
  - Free software: MIT
34
36
  - Documentation: <https://balouf.github.io/gismap/>.
@@ -39,6 +41,7 @@ GisMap leverages DBLP and HAL databases to provide cartography tools for you and
39
41
  - Can be used by all researchers in Computer Science (DBLP endpoint) or based in France (HAL endpoint).
40
42
  - Aggregate publications from multiple databases, including multiple author keys inside the same database.
41
43
  - Automatically keeps track of a Lab/Department members and publications.
44
+ - DBLP database can be used locally (LDB endpoint) to improve speed and reliability.
42
45
  - Builds interactive collaboration graphs.
43
46
 
44
47
  ## Test GisMap online!
@@ -52,6 +55,7 @@ For example:
52
55
  - [Tutorial: Making EgoMaps](https://mybinder.org/v2/gh/balouf/gismap/HEAD?urlpath=%2Fdoc%2Ftree%2Fdocs%2Ftutorials%2Fegomap.ipynb)
53
56
  - [Jupyter Lab instance with GisMap installed](https://mybinder.org/v2/gh/balouf/gismap/HEAD)
54
57
 
58
+ **WARNING**: don't use LDB on `binder`, which does not provide enough memory yet. Only HAL and legacy DBLP work on binder.
55
59
 
56
60
  ## Quickstart
57
61
 
@@ -61,17 +65,28 @@ Install GisMap:
61
65
  $ pip install gismap
62
66
  ```
63
67
 
64
- Use GisMap to produce a collaboration graph (HTML):
68
+ Use GisMap to display a collaboration graph (HTML) from a Notebook:
65
69
 
66
70
  ```pycon
67
- >>> from gismap.sources.hal import HAL
68
- >>> from gismap.lab import ListLab
69
- >>> lab = ListLab(["Fabien Mathieu", "François Baccelli", "Ludovic Noirie", "Céline Comte", "Sébastien Tixeuil"], dbs="hal")
71
+ >>> from gismap.lab import ListMap
72
+ >>> lab = ListMap(["Fabien Mathieu", "François Baccelli", "Ludovic Noirie", "Céline Comte", "Sébastien Tixeuil"], dbs="hal")
70
73
  >>> lab.update_authors()
71
74
  >>> lab.update_publis()
72
75
  >>> lab.show_html()
73
76
  ```
74
77
 
78
+ If you are not using Jupyter Lab/Notebook, rich display will not work.
79
+ Instead, save the HTML and display it on your browser:
80
+
81
+ ```pycon
82
+ >>> from gismap.lab import ListMap
83
+ >>> lab = ListMap(["Fabien Mathieu", "François Baccelli", "Ludovic Noirie", "Céline Comte", "Sébastien Tixeuil"], dbs="hal")
84
+ >>> lab.update_authors()
85
+ >>> lab.update_publis()
86
+ >>> lab.save_html("my_graph")
87
+ ```
88
+
89
+
75
90
  ## Credits
76
91
 
77
92
  This package was created with [Cookiecutter][CC] and the [Package Helper 3][PH3] project template.
@@ -1,4 +1,4 @@
1
- # Generic Information Search: Mapping and Analysis of Publications
1
+ # GisMap: for researchers, by researchers
2
2
 
3
3
 
4
4
  [![PyPI Status](https://img.shields.io/pypi/v/gismap.svg)](https://pypi.python.org/pypi/gismap)
@@ -8,7 +8,7 @@
8
8
  [![License: MIT](https://img.shields.io/badge/license-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
9
9
  [![Code Coverage](https://codecov.io/gh/balouf/gismap/branch/main/graphs/badge.svg)](https://codecov.io/gh/balouf/gismap/tree/main)
10
10
 
11
- GisMap leverages DBLP and HAL databases to provide cartography tools for you and your lab.
11
+ GisMap (Generic Information Search: Mapping and Analysis of Publications) leverages DBLP and HAL databases to provide cartography tools for you and your lab.
12
12
 
13
13
  - Free software: MIT
14
14
  - Documentation: <https://balouf.github.io/gismap/>.
@@ -19,6 +19,7 @@ GisMap leverages DBLP and HAL databases to provide cartography tools for you and
19
19
  - Can be used by all researchers in Computer Science (DBLP endpoint) or based in France (HAL endpoint).
20
20
  - Aggregate publications from multiple databases, including multiple author keys inside the same database.
21
21
  - Automatically keeps track of a Lab/Department members and publications.
22
+ - DBLP database can be used locally (LDB endpoint) to improve speed and reliability.
22
23
  - Builds interactive collaboration graphs.
23
24
 
24
25
  ## Test GisMap online!
@@ -32,6 +33,7 @@ For example:
32
33
  - [Tutorial: Making EgoMaps](https://mybinder.org/v2/gh/balouf/gismap/HEAD?urlpath=%2Fdoc%2Ftree%2Fdocs%2Ftutorials%2Fegomap.ipynb)
33
34
  - [Jupyter Lab instance with GisMap installed](https://mybinder.org/v2/gh/balouf/gismap/HEAD)
34
35
 
36
+ **WARNING**: don't use LDB on `binder`, which does not provide enough memory yet. Only HAL and legacy DBLP work on binder.
35
37
 
36
38
  ## Quickstart
37
39
 
@@ -41,17 +43,28 @@ Install GisMap:
41
43
  $ pip install gismap
42
44
  ```
43
45
 
44
- Use GisMap to produce a collaboration graph (HTML):
46
+ Use GisMap to display a collaboration graph (HTML) from a Notebook:
45
47
 
46
48
  ```pycon
47
- >>> from gismap.sources.hal import HAL
48
- >>> from gismap.lab import ListLab
49
- >>> lab = ListLab(["Fabien Mathieu", "François Baccelli", "Ludovic Noirie", "Céline Comte", "Sébastien Tixeuil"], dbs="hal")
49
+ >>> from gismap.lab import ListMap
50
+ >>> lab = ListMap(["Fabien Mathieu", "François Baccelli", "Ludovic Noirie", "Céline Comte", "Sébastien Tixeuil"], dbs="hal")
50
51
  >>> lab.update_authors()
51
52
  >>> lab.update_publis()
52
53
  >>> lab.show_html()
53
54
  ```
54
55
 
56
+ If you are not using Jupyter Lab/Notebook, rich display will not work.
57
+ Instead, save the HTML and display it on your browser:
58
+
59
+ ```pycon
60
+ >>> from gismap.lab import ListMap
61
+ >>> lab = ListMap(["Fabien Mathieu", "François Baccelli", "Ludovic Noirie", "Céline Comte", "Sébastien Tixeuil"], dbs="hal")
62
+ >>> lab.update_authors()
63
+ >>> lab.update_publis()
64
+ >>> lab.save_html("my_graph")
65
+ ```
66
+
67
+
55
68
  ## Credits
56
69
 
57
70
  This package was created with [Cookiecutter][CC] and the [Package Helper 3][PH3] project template.
@@ -31,8 +31,10 @@
31
31
  "- Choose your DB:\n",
32
32
  " - HAL for French researchers (fast DB);\n",
33
33
  " - DBLP for CS researchers (slow DB);\n",
34
+ " - Note that MyBinder does not have enough memory for using the current version of LDB.\n",
34
35
  "- The size slider will complete your map with *moons* if necessary and feasible.\n",
35
36
  "\n",
37
+ "\n",
36
38
  "You can save the result!\n",
37
39
  "\n",
38
40
  "Just execute the cell above to proceed."
@@ -0,0 +1,21 @@
1
+ #!/bin/bash
2
+ set -ex
3
+
4
+ # Create gismap data directory (Linux path from platformdirs)
5
+ mkdir -p ~/.local/share/gismap
6
+
7
+ # Download LDB from the pinned release
8
+ # UPDATE THIS URL when releasing new versions
9
+ LDB_URL="https://github.com/balouf/gismap/releases/download/v0.4.0/ldb.pkl.zst"
10
+
11
+ echo "Downloading LDB database for Binder image..."
12
+ curl -L -o ~/.local/share/gismap/ldb.pkl.zst "$LDB_URL"
13
+
14
+ # Verify download
15
+ if [ ! -f ~/.local/share/gismap/ldb.pkl.zst ]; then
16
+ echo "ERROR: Failed to download ldb.pkl.zst"
17
+ exit 1
18
+ fi
19
+
20
+ ls -lh ~/.local/share/gismap/ldb.pkl.zst
21
+ echo "LDB database successfully embedded in Binder image"
@@ -1,6 +1,6 @@
1
1
 
2
2
  cff-version: 1.2.0
3
- title: Generic Information Search: Mapping and Analysis of Publications
3
+ title: GisMap
4
4
  message: >-
5
5
  If you use this software, please cite it using the
6
6
  metadata from this file.
@@ -11,5 +11,5 @@ authors:
11
11
  email: fabien.mathieu@normalesup.org
12
12
  repository-code: "https://github.com/balouf/gismap/"
13
13
  url: "https://balouf.github.io/gismap/"
14
- abstract: GISMAP leverages DBLP and HAL databases to provide cartography tools for you and your lab.
14
+ abstract: "GisMap: for researchers, by researchers. Generic Information Search: Mapping and Analysis of Publications. Leverages DBLP and HAL databases to provide research cartography tools."
15
15
  license: MIT
@@ -87,7 +87,7 @@ source_suffix = [".rst", ".md"]
87
87
  master_doc = "index"
88
88
 
89
89
  # General information about the project.
90
- project = "Generic Information Search: Mapping and Analysis of Publications"
90
+ project = "GisMap"
91
91
  copyright = "2025, Fabien Mathieu"
92
92
  author = "Fabien Mathieu"
93
93
 
@@ -54,7 +54,7 @@
54
54
  "source": [
55
55
  "The internal structure of GisMap interleaves simple concepts, like author, DB, publication, and lab.\n",
56
56
  "\n",
57
- "- An `Author` is a reseacher that has published papers. Internally, it's just a name.\n",
57
+ "- An `Author` is a researcher that has published papers. Internally, it's just a name.\n",
58
58
  "- A `DB` is where the information comes from, like the [HAL portal](https://hal.science/) or\n",
59
59
  "the [The DBLP Computer Science Bibliography](https://dblp.org/).\n",
60
60
  "- A DB should provide a method to search authors and retrieve author's publications.\n",
@@ -181,12 +181,12 @@
181
181
  "metadata": {},
182
182
  "outputs": [],
183
183
  "source": [
184
- "from gismap import HALAuthor, DBLPAuthor\n",
184
+ "from gismap import HALAuthor, LDBAuthor\n",
185
185
  "\n",
186
186
  "fd = LabAuthor.from_sources(\n",
187
187
  " [\n",
188
188
  " HALAuthor(name=\"François Durand\", key=\"fradurand\"),\n",
189
- " DBLPAuthor(name=\"François Durand\", key=\"38/11269\"),\n",
189
+ " LDBAuthor(name=\"François Durand\", key=\"38/11269\"),\n",
190
190
  " ]\n",
191
191
  ")\n",
192
192
  "fd.sources"
@@ -207,7 +207,7 @@
207
207
  "metadata": {},
208
208
  "outputs": [],
209
209
  "source": [
210
- "fd = LabAuthor(\"François Durand (hal: fradurand, dblp: 38/11269)\")\n",
210
+ "fd = LabAuthor(\"François Durand (hal: fradurand, ldb: 38/11269)\")\n",
211
211
  "fd.sources"
212
212
  ]
213
213
  },
@@ -220,7 +220,7 @@
220
220
  "\n",
221
221
  "- The parenthesis notation can also be used to specify other metadata (URL, image, group) with the same \"key: value, ...\"format\n",
222
222
  "- For proper parsing, a name should contain no parenthesis, a key should not contain \",\" or \":\", and a value should not contain \",\"\n",
223
- "- You can enter mutiple keys for the same DB, e.g. \"My name (hal: key1, hal: key2)\"\n",
223
+ "- You can enter multiple keys for the same DB, e.g. \"My name (hal: key1, hal: key2)\"\n",
224
224
  "\n",
225
225
  ":::"
226
226
  ]
@@ -314,7 +314,7 @@
314
314
  " - The title should have at least 2 words.\n",
315
315
  " - The title should not contain *taboo* words like *Editorial*, *Foreword*, *Brief Announcement*, *Preface*.\n",
316
316
  "\n",
317
- "Feel free to change the existing filters or add new oned to adapt to your need.\n",
317
+ "Feel free to change the existing filters or add new ones to adapt to your needs.\n",
318
318
  "\n",
319
319
  "For example, to build the EgoMap of François Durand, taking account some specificities:"
320
320
  ]
@@ -491,11 +491,11 @@
491
491
  "id": "45",
492
492
  "metadata": {},
493
493
  "source": [
494
- "| Database | Pros | Cons |\n",
495
- "|------------|--------------------------------------|-----------------------------------------------------------------|\n",
496
- "| HAL | Fast; Rich metadata (e.g. abstracts) | France-based research only; Errors and gaps exist |\n",
497
- "| DBLP | Highly accurate; Unified venue names | Computer Science only; Very slow |\n",
498
- "| Local DBLP | Ultra-fast | Not integrated yet! All DBLP cons + No unique search keys |"
494
+ "| Database | Pros | Cons |\n",
495
+ "|----------|---------------------------------------------|---------------------------------------------------|\n",
496
+ "| HAL | Fast; Rich metadata (e.g. abstracts) | France-based research only; Errors and gaps exist |\n",
497
+ "| DBLP | Highly accurate; Unified venue names | Computer Science only; Very slow |\n",
498
+ "| LDB | Fast; Highly accurate; Unified venue names | Computer Science only; 3GB RAM recommended |"
499
499
  ]
500
500
  },
501
501
  {
@@ -2,19 +2,19 @@
2
2
 
3
3
  ## Stable release
4
4
 
5
- To install Generic Information Search: Mapping and Analysis of Publications, run this command in your terminal:
5
+ To install GisMap, run this command in your terminal:
6
6
 
7
7
  ```console
8
8
  $ pip install gismap
9
9
  ```
10
10
 
11
- This is the preferred method to install Generic Information Search: Mapping and Analysis of Publications, as it will always install the most recent stable release.
11
+ This is the preferred method to install GisMap, as it will always install the most recent stable release.
12
12
 
13
13
  If you don't have [pip] installed, this [Python installation guide] can guide
14
14
  you through the process.
15
15
 
16
16
  ````{note}
17
- If you want to use Generic Information Search: Mapping and Analysis of Publications as a dependency in a UV-managed project, add it with
17
+ If you want to use GisMap as a dependency in a UV-managed project, add it with
18
18
  ```console
19
19
  $ uv add gismap
20
20
  ```
@@ -22,7 +22,7 @@ $ uv add gismap
22
22
 
23
23
  ## From sources
24
24
 
25
- The sources for Generic Information Search: Mapping and Analysis of Publications can be downloaded from the [Github repo].
25
+ The sources for GisMap can be downloaded from the [Github repo].
26
26
 
27
27
  You can either clone the public repository:
28
28
 
@@ -12,6 +12,21 @@ Abstract description of GisMap DB interface.
12
12
  :members:
13
13
  ```
14
14
 
15
+ ## LDB (Local DBLP)
16
+
17
+ Interface for *dblp computer science bibliography* (https://dblp.org/) using a local copy of the database.
18
+
19
+ ```{eval-rst}
20
+ .. automodule:: gismap.sources.ldb
21
+ :members:
22
+ ```
23
+
24
+
25
+ ```{eval-rst}
26
+ .. automodule:: gismap.sources.dblp_ttl
27
+ :members:
28
+ ```
29
+
15
30
 
16
31
  ## DBLP (online)
17
32