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.
- {gismap-0.3.0 → gismap-0.4.1}/.github/ISSUE_TEMPLATE.md +1 -1
- {gismap-0.3.0 → gismap-0.4.1}/.github/workflows/build.yml +3 -3
- {gismap-0.3.0 → gismap-0.4.1}/.github/workflows/docs.yml +1 -1
- gismap-0.4.1/.github/workflows/ldb-build.yml +98 -0
- gismap-0.4.1/.github/workflows/release.yml +77 -0
- {gismap-0.3.0 → gismap-0.4.1}/.run/All tests.run.xml +2 -5
- {gismap-0.3.0 → gismap-0.4.1}/CONTRIBUTING.md +5 -5
- {gismap-0.3.0 → gismap-0.4.1}/HISTORY.md +25 -4
- {gismap-0.3.0 → gismap-0.4.1}/PKG-INFO +26 -11
- {gismap-0.3.0 → gismap-0.4.1}/README.md +19 -6
- {gismap-0.3.0 → gismap-0.4.1}/binder/interactive.ipynb +2 -0
- gismap-0.4.1/binder/postBuild +21 -0
- {gismap-0.3.0 → gismap-0.4.1}/citation.cff +2 -2
- {gismap-0.3.0 → gismap-0.4.1}/docs/conf.py +1 -1
- {gismap-0.3.0 → gismap-0.4.1}/docs/faq.ipynb +11 -11
- {gismap-0.3.0 → gismap-0.4.1}/docs/presentation/installation.md +4 -4
- {gismap-0.3.0 → gismap-0.4.1}/docs/reference/database.md +15 -0
- {gismap-0.3.0 → gismap-0.4.1}/docs/reference/examples.md +16 -0
- {gismap-0.3.0 → gismap-0.4.1}/docs/reference/utils.md +10 -0
- {gismap-0.3.0 → gismap-0.4.1}/docs/tutorials/cedric.ipynb +14 -1
- {gismap-0.3.0 → gismap-0.4.1}/docs/tutorials/egomap.ipynb +28 -6
- {gismap-0.3.0 → gismap-0.4.1}/docs/tutorials/examples.md +1 -0
- {gismap-0.3.0 → gismap-0.4.1}/docs/tutorials/lab_tutorial.ipynb +62 -30
- gismap-0.4.1/docs/tutorials/lamsade.ipynb +61 -0
- {gismap-0.3.0 → gismap-0.4.1}/docs/tutorials/lincs.ipynb +6 -2
- {gismap-0.3.0 → gismap-0.4.1}/docs/tutorials/lip6.ipynb +3 -3
- {gismap-0.3.0 → gismap-0.4.1}/docs/tutorials/toulouse.ipynb +7 -3
- {gismap-0.3.0 → gismap-0.4.1}/gismap/__init__.py +1 -0
- gismap-0.4.1/gismap/build.py +26 -0
- {gismap-0.3.0 → gismap-0.4.1}/gismap/gisgraphs/builder.py +23 -8
- {gismap-0.3.0 → gismap-0.4.1}/gismap/gisgraphs/graph.py +15 -0
- {gismap-0.3.0 → gismap-0.4.1}/gismap/gisgraphs/widget.py +23 -3
- gismap-0.4.1/gismap/lab/egomap.py +63 -0
- {gismap-0.3.0 → gismap-0.4.1}/gismap/lab/expansion.py +35 -1
- {gismap-0.3.0 → gismap-0.4.1}/gismap/lab/lab_author.py +34 -7
- {gismap-0.3.0 → gismap-0.4.1}/gismap/lab/labmap.py +46 -6
- {gismap-0.3.0 → gismap-0.4.1}/gismap/lab_examples/cedric.py +19 -6
- gismap-0.4.1/gismap/lab_examples/lamsade.py +45 -0
- {gismap-0.3.0 → gismap-0.4.1}/gismap/lab_examples/toulouse.py +6 -2
- {gismap-0.3.0 → gismap-0.4.1}/gismap/search.py +61 -1
- {gismap-0.3.0 → gismap-0.4.1}/gismap/sources/dblp.py +23 -1
- gismap-0.4.1/gismap/sources/dblp_ttl.py +187 -0
- {gismap-0.3.0 → gismap-0.4.1}/gismap/sources/hal.py +40 -2
- gismap-0.4.1/gismap/sources/ldb.py +716 -0
- gismap-0.4.1/gismap/sources/models.py +121 -0
- {gismap-0.3.0 → gismap-0.4.1}/gismap/sources/multi.py +67 -2
- gismap-0.4.1/gismap/utils/common.py +167 -0
- {gismap-0.3.0 → gismap-0.4.1}/gismap/utils/logger.py +2 -0
- {gismap-0.3.0 → gismap-0.4.1}/gismap/utils/requests.py +3 -1
- {gismap-0.3.0 → gismap-0.4.1}/gismap/utils/text.py +1 -1
- gismap-0.4.1/gismap/utils/zlist.py +88 -0
- {gismap-0.3.0 → gismap-0.4.1}/pyproject.toml +10 -8
- {gismap-0.3.0 → gismap-0.4.1}/uv.lock +109 -440
- gismap-0.3.0/.github/workflows/release.yml +0 -30
- gismap-0.3.0/gismap/lab/egomap.py +0 -41
- gismap-0.3.0/gismap/sources/models.py +0 -38
- gismap-0.3.0/gismap/utils/common.py +0 -105
- {gismap-0.3.0 → gismap-0.4.1}/.coveragerc +0 -0
- {gismap-0.3.0 → gismap-0.4.1}/.editorconfig +0 -0
- {gismap-0.3.0 → gismap-0.4.1}/.gitattributes +0 -0
- {gismap-0.3.0 → gismap-0.4.1}/.gitignore +0 -0
- {gismap-0.3.0 → gismap-0.4.1}/.run/Generate docs.run.xml +0 -0
- {gismap-0.3.0 → gismap-0.4.1}/AUTHORS.md +0 -0
- {gismap-0.3.0 → gismap-0.4.1}/binder/requirements.txt +0 -0
- {gismap-0.3.0 → gismap-0.4.1}/binder/runtime.txt +0 -0
- {gismap-0.3.0 → gismap-0.4.1}/docs/favicon.ico +0 -0
- {gismap-0.3.0 → gismap-0.4.1}/docs/index.md +0 -0
- {gismap-0.3.0 → gismap-0.4.1}/docs/logo.png +0 -0
- {gismap-0.3.0 → gismap-0.4.1}/docs/presentation/authors.md +0 -0
- {gismap-0.3.0 → gismap-0.4.1}/docs/presentation/contributing.md +0 -0
- {gismap-0.3.0 → gismap-0.4.1}/docs/presentation/history.md +0 -0
- {gismap-0.3.0 → gismap-0.4.1}/docs/presentation/index.md +0 -0
- {gismap-0.3.0 → gismap-0.4.1}/docs/presentation/readme.md +0 -0
- {gismap-0.3.0 → gismap-0.4.1}/docs/reference/cographs.md +0 -0
- {gismap-0.3.0 → gismap-0.4.1}/docs/reference/gismo.md +0 -0
- {gismap-0.3.0 → gismap-0.4.1}/docs/reference/index.md +0 -0
- {gismap-0.3.0 → gismap-0.4.1}/docs/reference/lab.md +0 -0
- {gismap-0.3.0 → gismap-0.4.1}/docs/tutorials/index.md +0 -0
- {gismap-0.3.0 → gismap-0.4.1}/gismap/author.py +0 -0
- {gismap-0.3.0 → gismap-0.4.1}/gismap/gisgraphs/__init__.py +0 -0
- {gismap-0.3.0 → gismap-0.4.1}/gismap/gisgraphs/groups.py +0 -0
- {gismap-0.3.0 → gismap-0.4.1}/gismap/gisgraphs/js.py +0 -0
- {gismap-0.3.0 → gismap-0.4.1}/gismap/gisgraphs/options.py +0 -0
- {gismap-0.3.0 → gismap-0.4.1}/gismap/gisgraphs/style.py +0 -0
- {gismap-0.3.0 → gismap-0.4.1}/gismap/gismap.py +0 -0
- {gismap-0.3.0 → gismap-0.4.1}/gismap/gismo.py +0 -0
- {gismap-0.3.0 → gismap-0.4.1}/gismap/lab/__init__.py +0 -0
- {gismap-0.3.0 → gismap-0.4.1}/gismap/lab/filters.py +0 -0
- {gismap-0.3.0 → gismap-0.4.1}/gismap/lab_examples/__init__.py +0 -0
- {gismap-0.3.0 → gismap-0.4.1}/gismap/lab_examples/lincs.py +0 -0
- {gismap-0.3.0 → gismap-0.4.1}/gismap/lab_examples/lip6.py +0 -0
- {gismap-0.3.0 → gismap-0.4.1}/gismap/sources/__init__.py +0 -0
- {gismap-0.3.0 → gismap-0.4.1}/gismap/utils/__init__.py +0 -0
- {gismap-0.3.0 → gismap-0.4.1}/tests/__init__.py +0 -0
- {gismap-0.3.0 → gismap-0.4.1}/tests/test_gismap.py +0 -0
|
@@ -12,7 +12,7 @@ on:
|
|
|
12
12
|
schedule:
|
|
13
13
|
- cron: '30 5 1,15 * *'
|
|
14
14
|
env:
|
|
15
|
-
NUMBA_DISABLE_JIT:
|
|
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.
|
|
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.
|
|
37
|
+
version: "0.9.27"
|
|
38
38
|
|
|
39
39
|
- name: Run tests
|
|
40
40
|
run: |
|
|
@@ -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="
|
|
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=""PATH"" />
|
|
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
|
-
|
|
33
|
-
official
|
|
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
|
-
-
|
|
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
|
|
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
|
|
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.
|
|
4
|
-
Summary: GisMap
|
|
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:
|
|
12
|
-
Requires-Dist:
|
|
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.
|
|
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
|
-
#
|
|
23
|
+
# GisMap: for researchers, by researchers
|
|
22
24
|
|
|
23
25
|
|
|
24
26
|
[](https://pypi.python.org/pypi/gismap)
|
|
@@ -28,7 +30,7 @@ Description-Content-Type: text/markdown
|
|
|
28
30
|
[](https://opensource.org/licenses/MIT)
|
|
29
31
|
[](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
|
|
68
|
+
Use GisMap to display a collaboration graph (HTML) from a Notebook:
|
|
65
69
|
|
|
66
70
|
```pycon
|
|
67
|
-
>>> from gismap.
|
|
68
|
-
>>>
|
|
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
|
-
#
|
|
1
|
+
# GisMap: for researchers, by researchers
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
[](https://pypi.python.org/pypi/gismap)
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
[](https://opensource.org/licenses/MIT)
|
|
9
9
|
[](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
|
|
46
|
+
Use GisMap to display a collaboration graph (HTML) from a Notebook:
|
|
45
47
|
|
|
46
48
|
```pycon
|
|
47
|
-
>>> from gismap.
|
|
48
|
-
>>>
|
|
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:
|
|
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:
|
|
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 = "
|
|
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
|
|
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,
|
|
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
|
-
"
|
|
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,
|
|
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
|
|
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
|
|
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
|
|
495
|
-
"
|
|
496
|
-
"| HAL
|
|
497
|
-
"| DBLP
|
|
498
|
-
"|
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|