gismap 0.4.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.4.0 → gismap-0.4.1}/.github/ISSUE_TEMPLATE.md +1 -1
- {gismap-0.4.0 → gismap-0.4.1}/.github/workflows/build.yml +2 -2
- {gismap-0.4.0 → gismap-0.4.1}/.github/workflows/docs.yml +0 -1
- {gismap-0.4.0 → gismap-0.4.1}/.github/workflows/ldb-build.yml +2 -2
- {gismap-0.4.0 → gismap-0.4.1}/.github/workflows/release.yml +2 -2
- {gismap-0.4.0 → gismap-0.4.1}/.run/All tests.run.xml +2 -5
- {gismap-0.4.0 → gismap-0.4.1}/CONTRIBUTING.md +5 -5
- {gismap-0.4.0 → gismap-0.4.1}/HISTORY.md +10 -3
- {gismap-0.4.0 → gismap-0.4.1}/PKG-INFO +11 -9
- {gismap-0.4.0 → gismap-0.4.1}/README.md +4 -2
- {gismap-0.4.0 → gismap-0.4.1}/binder/interactive.ipynb +2 -0
- gismap-0.4.1/binder/requirements.txt +1 -0
- {gismap-0.4.0 → gismap-0.4.1}/citation.cff +2 -2
- {gismap-0.4.0 → gismap-0.4.1}/docs/conf.py +1 -1
- {gismap-0.4.0 → gismap-0.4.1}/docs/faq.ipynb +11 -11
- {gismap-0.4.0 → gismap-0.4.1}/docs/presentation/installation.md +4 -4
- {gismap-0.4.0 → gismap-0.4.1}/docs/tutorials/cedric.ipynb +5 -1
- {gismap-0.4.0 → gismap-0.4.1}/docs/tutorials/egomap.ipynb +1 -3
- {gismap-0.4.0 → gismap-0.4.1}/docs/tutorials/lab_tutorial.ipynb +5 -5
- {gismap-0.4.0 → gismap-0.4.1}/docs/tutorials/lamsade.ipynb +5 -0
- {gismap-0.4.0 → gismap-0.4.1}/docs/tutorials/lincs.ipynb +4 -0
- {gismap-0.4.0 → gismap-0.4.1}/docs/tutorials/lip6.ipynb +1 -1
- {gismap-0.4.0 → gismap-0.4.1}/docs/tutorials/toulouse.ipynb +4 -0
- gismap-0.4.1/gismap/build.py +26 -0
- {gismap-0.4.0 → gismap-0.4.1}/gismap/gisgraphs/builder.py +23 -8
- {gismap-0.4.0 → gismap-0.4.1}/gismap/gisgraphs/graph.py +15 -0
- {gismap-0.4.0 → gismap-0.4.1}/gismap/gisgraphs/widget.py +28 -8
- gismap-0.4.1/gismap/lab/egomap.py +63 -0
- {gismap-0.4.0 → gismap-0.4.1}/gismap/lab/expansion.py +35 -1
- {gismap-0.4.0 → gismap-0.4.1}/gismap/lab/lab_author.py +30 -0
- {gismap-0.4.0 → gismap-0.4.1}/gismap/lab/labmap.py +44 -3
- {gismap-0.4.0 → gismap-0.4.1}/gismap/lab_examples/cedric.py +19 -6
- {gismap-0.4.0 → gismap-0.4.1}/gismap/lab_examples/lamsade.py +9 -7
- {gismap-0.4.0 → gismap-0.4.1}/gismap/lab_examples/toulouse.py +6 -2
- {gismap-0.4.0 → gismap-0.4.1}/gismap/search.py +61 -1
- {gismap-0.4.0 → gismap-0.4.1}/gismap/sources/dblp.py +22 -0
- {gismap-0.4.0 → gismap-0.4.1}/gismap/sources/dblp_ttl.py +30 -11
- {gismap-0.4.0 → gismap-0.4.1}/gismap/sources/hal.py +38 -0
- {gismap-0.4.0 → gismap-0.4.1}/gismap/sources/ldb.py +315 -100
- gismap-0.4.1/gismap/sources/models.py +121 -0
- {gismap-0.4.0 → gismap-0.4.1}/gismap/sources/multi.py +65 -0
- {gismap-0.4.0 → gismap-0.4.1}/gismap/utils/common.py +58 -1
- {gismap-0.4.0 → gismap-0.4.1}/gismap/utils/text.py +1 -1
- {gismap-0.4.0 → gismap-0.4.1}/gismap/utils/zlist.py +24 -4
- {gismap-0.4.0 → gismap-0.4.1}/pyproject.toml +10 -10
- {gismap-0.4.0 → gismap-0.4.1}/uv.lock +107 -442
- gismap-0.4.0/binder/requirements.txt +0 -1
- gismap-0.4.0/gismap/build.py +0 -4
- gismap-0.4.0/gismap/lab/egomap.py +0 -41
- gismap-0.4.0/gismap/sources/models.py +0 -38
- {gismap-0.4.0 → gismap-0.4.1}/.coveragerc +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/.editorconfig +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/.gitattributes +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/.gitignore +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/.run/Generate docs.run.xml +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/AUTHORS.md +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/binder/postBuild +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/binder/runtime.txt +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/docs/favicon.ico +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/docs/index.md +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/docs/logo.png +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/docs/presentation/authors.md +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/docs/presentation/contributing.md +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/docs/presentation/history.md +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/docs/presentation/index.md +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/docs/presentation/readme.md +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/docs/reference/cographs.md +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/docs/reference/database.md +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/docs/reference/examples.md +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/docs/reference/gismo.md +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/docs/reference/index.md +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/docs/reference/lab.md +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/docs/reference/utils.md +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/docs/tutorials/examples.md +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/docs/tutorials/index.md +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/gismap/__init__.py +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/gismap/author.py +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/gismap/gisgraphs/__init__.py +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/gismap/gisgraphs/groups.py +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/gismap/gisgraphs/js.py +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/gismap/gisgraphs/options.py +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/gismap/gisgraphs/style.py +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/gismap/gismap.py +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/gismap/gismo.py +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/gismap/lab/__init__.py +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/gismap/lab/filters.py +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/gismap/lab_examples/__init__.py +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/gismap/lab_examples/lincs.py +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/gismap/lab_examples/lip6.py +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/gismap/sources/__init__.py +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/gismap/utils/__init__.py +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/gismap/utils/logger.py +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/gismap/utils/requests.py +0 -0
- {gismap-0.4.0 → gismap-0.4.1}/tests/__init__.py +0 -0
- {gismap-0.4.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
|
|
@@ -33,14 +33,14 @@ jobs:
|
|
|
33
33
|
- name: Build LDB database
|
|
34
34
|
run: |
|
|
35
35
|
echo "Building LDB database from DBLP TTL..."
|
|
36
|
-
uv run python -m gismap.build
|
|
36
|
+
uv run python -m gismap.build --no-search
|
|
37
37
|
echo "Build complete."
|
|
38
38
|
|
|
39
39
|
- name: Locate and verify database
|
|
40
40
|
id: locate-db
|
|
41
41
|
run: |
|
|
42
42
|
# Find database in platformdirs location
|
|
43
|
-
DB_PATH=$(uv run python -c "from gismap.sources.ldb import
|
|
43
|
+
DB_PATH=$(uv run python -c "from gismap.sources.ldb import LDB_PARAMETERS; print(LDB_PARAMETERS.io.destination)")
|
|
44
44
|
echo "Database path: $DB_PATH"
|
|
45
45
|
|
|
46
46
|
if [ ! -f "$DB_PATH" ]; then
|
|
@@ -56,13 +56,13 @@ jobs:
|
|
|
56
56
|
- name: Build LDB database
|
|
57
57
|
run: |
|
|
58
58
|
echo "Building LDB database from DBLP TTL..."
|
|
59
|
-
uv run python -m gismap.build
|
|
59
|
+
uv run python -m gismap.build --no-search
|
|
60
60
|
echo "Build complete."
|
|
61
61
|
|
|
62
62
|
- name: Locate database
|
|
63
63
|
id: locate-db
|
|
64
64
|
run: |
|
|
65
|
-
DB_PATH=$(uv run python -c "from gismap.sources.ldb import
|
|
65
|
+
DB_PATH=$(uv run python -c "from gismap.sources.ldb import LDB_PARAMETERS; print(LDB_PARAMETERS.io.destination)")
|
|
66
66
|
echo "Database path: $DB_PATH"
|
|
67
67
|
echo "db_path=$DB_PATH" >> $GITHUB_OUTPUT
|
|
68
68
|
|
|
@@ -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,13 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
## Pipeline
|
|
4
4
|
|
|
5
|
-
- anHALyze: tools to spot HAL issues (bad author
|
|
5
|
+
- anHALyze: tools to spot HAL issues (bad author metadata, DBLP comparison, widget)
|
|
6
6
|
- EgoConf: find your conferences journals
|
|
7
7
|
- Easier access to graph customization
|
|
8
8
|
- Additional graph option (e.g. time filtering and coloring, default group checks...)
|
|
9
9
|
- Custom CSS (e.g. transparent background)
|
|
10
10
|
- Gismo integration
|
|
11
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
|
+
|
|
12
19
|
## 0.4.0 (2026-01-27): Local DB
|
|
13
20
|
|
|
14
21
|
New DB: LDB (Local DB). All the strengths of DBLP, None of its weaknesses.
|
|
@@ -56,7 +63,7 @@ Also, Lamsade added to the gallery.
|
|
|
56
63
|
- New lab structure: EgoMap shows the people that revolves around you!
|
|
57
64
|
- New lab method: expansion, which adds *moons* (neighbor researchers).
|
|
58
65
|
- Add filters when building authors and publications.
|
|
59
|
-
- Physic engine changed
|
|
66
|
+
- Physic engine changed for better visualization.
|
|
60
67
|
- Multi-source handling fine-tuned.
|
|
61
68
|
- Better display (size and theme).
|
|
62
69
|
|
|
@@ -65,5 +72,5 @@ Also, Lamsade added to the gallery.
|
|
|
65
72
|
|
|
66
73
|
- First release on PyPI.
|
|
67
74
|
- Online DBLP and HAL DB implemented.
|
|
68
|
-
- Lab
|
|
75
|
+
- Lab structures implemented.
|
|
69
76
|
- Early version of collaboration graph available.
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: gismap
|
|
3
|
-
Version: 0.4.
|
|
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: beautifulsoup4>=4.14.
|
|
13
|
-
Requires-Dist: bof>=0.
|
|
11
|
+
Requires-Python: <3.15,>=3.11
|
|
12
|
+
Requires-Dist: beautifulsoup4>=4.14.3
|
|
13
|
+
Requires-Dist: bof>=0.4.2
|
|
14
14
|
Requires-Dist: distinctipy>=1.3.4
|
|
15
15
|
Requires-Dist: domonic>=0.9.13
|
|
16
|
-
Requires-Dist: gismo>=0.5.
|
|
16
|
+
Requires-Dist: gismo>=0.5.4
|
|
17
17
|
Requires-Dist: ipykernel>=6.30.1
|
|
18
18
|
Requires-Dist: ipywidgets>=8.1.8
|
|
19
|
-
Requires-Dist: platformdirs>=4.5.
|
|
19
|
+
Requires-Dist: platformdirs>=4.5.1
|
|
20
20
|
Requires-Dist: tqdm>=4.67.1
|
|
21
21
|
Description-Content-Type: text/markdown
|
|
22
22
|
|
|
23
|
-
#
|
|
23
|
+
# GisMap: for researchers, by researchers
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
[](https://pypi.python.org/pypi/gismap)
|
|
@@ -30,7 +30,7 @@ Description-Content-Type: text/markdown
|
|
|
30
30
|
[](https://opensource.org/licenses/MIT)
|
|
31
31
|
[](https://codecov.io/gh/balouf/gismap/tree/main)
|
|
32
32
|
|
|
33
|
-
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.
|
|
34
34
|
|
|
35
35
|
- Free software: MIT
|
|
36
36
|
- Documentation: <https://balouf.github.io/gismap/>.
|
|
@@ -41,6 +41,7 @@ GisMap leverages DBLP and HAL databases to provide cartography tools for you and
|
|
|
41
41
|
- Can be used by all researchers in Computer Science (DBLP endpoint) or based in France (HAL endpoint).
|
|
42
42
|
- Aggregate publications from multiple databases, including multiple author keys inside the same database.
|
|
43
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.
|
|
44
45
|
- Builds interactive collaboration graphs.
|
|
45
46
|
|
|
46
47
|
## Test GisMap online!
|
|
@@ -54,6 +55,7 @@ For example:
|
|
|
54
55
|
- [Tutorial: Making EgoMaps](https://mybinder.org/v2/gh/balouf/gismap/HEAD?urlpath=%2Fdoc%2Ftree%2Fdocs%2Ftutorials%2Fegomap.ipynb)
|
|
55
56
|
- [Jupyter Lab instance with GisMap installed](https://mybinder.org/v2/gh/balouf/gismap/HEAD)
|
|
56
57
|
|
|
58
|
+
**WARNING**: don't use LDB on `binder`, which does not provide enough memory yet. Only HAL and legacy DBLP work on binder.
|
|
57
59
|
|
|
58
60
|
## Quickstart
|
|
59
61
|
|
|
@@ -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
|
|
|
@@ -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 @@
|
|
|
1
|
+
git+https://github.com/balouf/gismap.git@main#egg=gismap
|
|
@@ -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
|
|
|
@@ -23,7 +23,11 @@
|
|
|
23
23
|
"metadata": {},
|
|
24
24
|
"outputs": [],
|
|
25
25
|
"source": [
|
|
26
|
-
"from gismap.lab_examples.cedric import CedricFull"
|
|
26
|
+
"from gismap.lab_examples.cedric import CedricFull\n",
|
|
27
|
+
"from gismap.utils.logger import logger\n",
|
|
28
|
+
"import logging\n",
|
|
29
|
+
"\n",
|
|
30
|
+
"logger.setLevel(logging.ERROR)"
|
|
27
31
|
]
|
|
28
32
|
},
|
|
29
33
|
{
|
|
@@ -118,9 +118,7 @@
|
|
|
118
118
|
"metadata": {},
|
|
119
119
|
"outputs": [],
|
|
120
120
|
"source": [
|
|
121
|
-
"nidhi = Map(\n",
|
|
122
|
-
" \"Nidhi Hegde (img: https://sites.ualberta.ca/~nidhih/images/circle1.png)\"\n",
|
|
123
|
-
")\n",
|
|
121
|
+
"nidhi = Map(\"Nidhi Hegde (img: https://sites.ualberta.ca/~nidhih/images/circle1.png)\")\n",
|
|
124
122
|
"nidhi.build(target=80)"
|
|
125
123
|
]
|
|
126
124
|
},
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"source": [
|
|
16
16
|
":::note\n",
|
|
17
17
|
"\n",
|
|
18
|
-
"By
|
|
18
|
+
"By default, we query both HAL and LDB. Don't hesitate to adapt depending on the use case.\n",
|
|
19
19
|
":::"
|
|
20
20
|
]
|
|
21
21
|
},
|
|
@@ -217,7 +217,7 @@
|
|
|
217
217
|
" \"Marc-Olivier Buob\",\n",
|
|
218
218
|
" \"Mohamed Lamine Lamali (hal:mohamed-lamine-lamali, ldb: 43/11358)\",\n",
|
|
219
219
|
" ],\n",
|
|
220
|
-
" name=\"Gangsta\"
|
|
220
|
+
" name=\"Gangsta\",\n",
|
|
221
221
|
")\n",
|
|
222
222
|
"lab.update_authors()\n",
|
|
223
223
|
"lab.update_publis()\n",
|
|
@@ -229,7 +229,7 @@
|
|
|
229
229
|
"id": "21",
|
|
230
230
|
"metadata": {},
|
|
231
231
|
"source": [
|
|
232
|
-
"Maps can be saved
|
|
232
|
+
"Maps can be saved with the `dump` method so you don't have to re-update them all the time."
|
|
233
233
|
]
|
|
234
234
|
},
|
|
235
235
|
{
|
|
@@ -249,7 +249,7 @@
|
|
|
249
249
|
"metadata": {},
|
|
250
250
|
"outputs": [],
|
|
251
251
|
"source": [
|
|
252
|
-
"groups = {
|
|
252
|
+
"groups = {\"Gangsta\": {\"color\": \"rgb(255, 0, 255)\"}}\n",
|
|
253
253
|
"lab.show_html(groups=groups)"
|
|
254
254
|
]
|
|
255
255
|
},
|
|
@@ -289,7 +289,7 @@
|
|
|
289
289
|
"source": [
|
|
290
290
|
"Few things about the generated graph:\n",
|
|
291
291
|
"\n",
|
|
292
|
-
"- Authors are represented with their initials unless some picture url is provided (implicitly or
|
|
292
|
+
"- Authors are represented with their initials unless some picture url is provided (implicitly or explicitly).\n",
|
|
293
293
|
"- Comets are singletons (authors with no co-publications with the other nodes). They are hidden by default. For example, if you only show the moons / usual suspects, Bernard becomes a comet and is hidden.\n",
|
|
294
294
|
"- You can hover an author to get her name. If you click, you have a modal with the list of publications.\n",
|
|
295
295
|
"- The width and length of an edge depend on the number of co-publications. If you click you have a modal with the list of co-publications."
|
|
@@ -24,6 +24,11 @@
|
|
|
24
24
|
"outputs": [],
|
|
25
25
|
"source": [
|
|
26
26
|
"from gismap.lab_examples.lamsade import Lamsade\n",
|
|
27
|
+
"from gismap.utils.logger import logger\n",
|
|
28
|
+
"import logging\n",
|
|
29
|
+
"\n",
|
|
30
|
+
"logger.setLevel(logging.ERROR)\n",
|
|
31
|
+
"\n",
|
|
27
32
|
"lamsade = Lamsade()\n",
|
|
28
33
|
"lamsade.update_authors()\n",
|
|
29
34
|
"lamsade.update_publis()\n",
|
|
@@ -32,6 +32,10 @@
|
|
|
32
32
|
"outputs": [],
|
|
33
33
|
"source": [
|
|
34
34
|
"from gismap.lab_examples.lincs import LINCS\n",
|
|
35
|
+
"from gismap.utils.logger import logger\n",
|
|
36
|
+
"import logging\n",
|
|
37
|
+
"\n",
|
|
38
|
+
"logger.setLevel(logging.ERROR)\n",
|
|
35
39
|
"\n",
|
|
36
40
|
"lincs = LINCS()\n",
|
|
37
41
|
"lincs.update_authors()\n",
|
|
@@ -32,6 +32,10 @@
|
|
|
32
32
|
"outputs": [],
|
|
33
33
|
"source": [
|
|
34
34
|
"from gismap.lab_examples.toulouse import SolaceMap as Solace\n",
|
|
35
|
+
"from gismap.utils.logger import logger\n",
|
|
36
|
+
"import logging\n",
|
|
37
|
+
"\n",
|
|
38
|
+
"logger.setLevel(logging.ERROR)\n",
|
|
35
39
|
"\n",
|
|
36
40
|
"solace = Solace()\n",
|
|
37
41
|
"solace.update_authors()\n",
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Build script for creating the LDB (Local DBLP) database.
|
|
3
|
+
|
|
4
|
+
Run as a module to download and process the DBLP dataset:
|
|
5
|
+
|
|
6
|
+
python -m gismap.build
|
|
7
|
+
|
|
8
|
+
This will fetch the DBLP RDF dump from the website and create a compressed local database.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
if __name__ == "__main__":
|
|
12
|
+
import argparse
|
|
13
|
+
from gismap.sources.ldb import LDB
|
|
14
|
+
|
|
15
|
+
parser = argparse.ArgumentParser(
|
|
16
|
+
description="Build LDB database from DBLP TTL dump."
|
|
17
|
+
)
|
|
18
|
+
parser.add_argument(
|
|
19
|
+
"--no-search",
|
|
20
|
+
action="store_true",
|
|
21
|
+
help="Exclude search engine from output (for GitHub assets).",
|
|
22
|
+
)
|
|
23
|
+
args = parser.parse_args()
|
|
24
|
+
|
|
25
|
+
LDB.build_db()
|
|
26
|
+
LDB.dump_db(include_search=not args.no_search)
|
|
@@ -27,22 +27,37 @@ gislink = tags.a(
|
|
|
27
27
|
|
|
28
28
|
def make_vis(lab, **kwargs):
|
|
29
29
|
"""
|
|
30
|
+
Generate HTML visualization of a lab's collaboration network.
|
|
31
|
+
|
|
30
32
|
Parameters
|
|
31
33
|
----------
|
|
32
34
|
lab: :class:`~gismap.lab.labmap.LabMap`
|
|
33
35
|
Lab to display.
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
36
|
+
uid: :class:`str`, optional
|
|
37
|
+
Unique identifier for DOM elements. Auto-generated if not provided.
|
|
38
|
+
vis_url: :class:`str`, optional
|
|
39
|
+
URL to vis-network library.
|
|
40
|
+
groups: :class:`dict`, optional
|
|
41
|
+
Group styling configuration.
|
|
42
|
+
draw_legend: :class:`bool`, optional
|
|
43
|
+
Whether to draw the legend. Defaults to True if multiple groups.
|
|
44
|
+
physics: :class:`dict`, optional
|
|
45
|
+
Physics engine configuration.
|
|
46
|
+
nodes_options: :class:`dict`, optional
|
|
47
|
+
Node styling options.
|
|
48
|
+
edges_options: :class:`dict`, optional
|
|
49
|
+
Edge styling options.
|
|
50
|
+
interaction_options: :class:`dict`, optional
|
|
51
|
+
Interaction settings.
|
|
52
|
+
style: :class:`string.Template`, optional
|
|
53
|
+
CSS template.
|
|
54
|
+
script: :class:`string.Template`, optional
|
|
55
|
+
JavaScript template.
|
|
41
56
|
|
|
42
57
|
Returns
|
|
43
58
|
-------
|
|
44
59
|
:class:`str`
|
|
45
|
-
HTML code.
|
|
60
|
+
HTML code as a string.
|
|
46
61
|
"""
|
|
47
62
|
uid = kwargs.pop("uid", None)
|
|
48
63
|
if uid is None:
|
|
@@ -21,6 +21,21 @@ def initials(name):
|
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
def linkify(name, url):
|
|
24
|
+
"""
|
|
25
|
+
Wrap a name in an HTML link if URL is provided.
|
|
26
|
+
|
|
27
|
+
Parameters
|
|
28
|
+
----------
|
|
29
|
+
name : :class:`str`
|
|
30
|
+
Display text.
|
|
31
|
+
url : :class:`str` or None
|
|
32
|
+
Target URL, or None for no link.
|
|
33
|
+
|
|
34
|
+
Returns
|
|
35
|
+
-------
|
|
36
|
+
:class:`str`
|
|
37
|
+
HTML anchor tag or span.
|
|
38
|
+
"""
|
|
24
39
|
if url:
|
|
25
40
|
return f'<a href="{url}" target="_blank">{name}</a>'
|
|
26
41
|
else:
|