Skip to content

Commit 0c39c31

Browse files
committed
feat: updating for smooth runs and good docs
1 parent 33779b5 commit 0c39c31

8 files changed

Lines changed: 224 additions & 274 deletions

File tree

‎2025-mini-hackathon.md‎

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,18 @@
44

55
1. Choose your team captain !
66
2. Each team member makes an account on [RenkuLab](https://renkulab.io/)
7-
3. The team captain copies the [project quickstart](https://renkulab.io/p/open-pulse-hackathon/quickstart) into their renku user profile
8-
4. Captain adds all his team members (renku users) to that project
9-
5. Team sets up their project: add your own code repository and add your own data (Notes: do any code/data connections before launching a work session.)
10-
6. If you want to launch the quickstart session, you will be prompted to enter the connection secrets (see documents).
11-
7. If you want to launch a session with all the code from all connected code repositories, we recommend launching the standard VSCode interface of Renku and working there.
7+
3. Join all together your project in the open-pulse-hackathon (same name as on discord).
8+
4. Team sets up their project: add your own code repository and add your own data (Notes: do any code/data connections before launching a work session.)
9+
5. If you want to launch the quickstart session, you will be prompted to enter the connection secrets (see documents).
10+
6. If you want to launch a session with all the code from all connected code repositories, we recommend launching the standard VSCode interface of Renku and working there.
1211

1312
![alt text](docs/images/Renku.png)
1413

1514
Here are the [Open Pulse Hackathon Renku Project](https://renkulab.io/g/open-pulse-hackathon) and [the template project](https://renkulab.io/p/open-pulse-hackathon/quickstart)from which you can kick off.
1615

1716
For further Jupyter Hub Documentation you can read [here](https://jupyterhub.readthedocs.io/en/stable/);
1817

19-
You can also clone the repository and work locally via the `uv` setup if you prefer.
18+
You can also clone the repository and work locally via the `uv` setup if you prefer (see README in each of the quickstarts for neoj and tentris).
2019

2120
## How to submit your project?
2221

@@ -34,6 +33,22 @@ You’re also welcome to include supplemental material such as:
3433

3534
During the final session, all projects will be presented and participants will vote using stickers to recognize the
3635

36+
## Data available
37+
38+
Communities that have been crawled through (hence in the graph and metadata available):
39+
40+
- ENAC
41+
- SDSC
42+
- DeepLabCut
43+
- SCALA Graph
44+
- Materials Cloud
45+
- EPFL Center for Imaging
46+
- Imaging Plaza
47+
- 50 top “EPFL” users
48+
- 50 top users among “ETHZ”,“UZH”, “UNINE”, “UNIBE”, “UNIGE” and “UNIL”
49+
50+
Note: Total of ~1M nodes and growing.
51+
3752
## Credits
3853

3954
TBD.

‎README.md‎

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,20 @@ To be extended...
3232

3333
[Link to example](https://dashboard.documentfoundation.org/app/kibana#/dashboard/Overview?_g=()&_a=(description:'Overview%20Panel%20by%20Bitergia',filters:!(('$state':(store:appState),meta:(alias:'Empty%20Commits',disabled:!f,index:git,key:files,negate:!t,params:(query:'0',type:phrase),type:phrase,value:'0'),query:(match:(files:(query:'0',type:phrase)))),('$state':(store:appState),meta:(alias:Bots,disabled:!f,index:git,key:author_bot,negate:!t,params:(query:!t,type:phrase),type:phrase,value:true),query:(match:(author_bot:(query:!t,type:phrase))))),fullScreenMode:!f,options:(darkTheme:!f,useMargins:!t),panels:!((gridData:(h:2,i:'1',w:4,x:0,y:5),id:git_main_numbers,panelIndex:'1',title:Git,type:visualization,version:'6.1.0-3'),(gridData:(h:2,i:'2',w:4,x:4,y:5),id:git_evolution_commits,panelIndex:'2',title:'Git%20Commits',type:visualization,version:'6.1.0-3'),(gridData:(h:2,i:'3',w:4,x:8,y:5),id:git_evolution_authors,panelIndex:'3',title:'Git%20Authors',type:visualization,version:'6.1.0-3'),(gridData:(h:5,i:'5',w:4,x:4,y:0),id:git_commits_organizations,panelIndex:'5',title:Organizations,type:visualization,version:'6.1.0-3'),(gridData:(h:2,i:'6',w:4,x:0,y:7),id:gerrit_main_numbers,panelIndex:'6',title:Gerrit,type:visualization,version:'6.1.0-3'),(gridData:(h:2,i:'7',w:4,x:4,y:7),id:gerrit_evolution_changesets,panelIndex:'7',title:'Gerrit%20Changesets',type:visualization,version:'6.1.0-3'),(gridData:(h:2,i:'8',w:4,x:8,y:7),id:gerrit_evolution_submitters,panelIndex:'8',title:'Gerrit%20Changeset%20Submitters',type:visualization,version:'6.1.0-3'),(gridData:(h:2,i:'96',w:4,x:4,y:11),id:mediawiki_editions,panelIndex:'96',title:'Mediawiki%20Edits',type:visualization,version:'6.1.0-3'),(gridData:(h:2,i:'97',w:4,x:8,y:11),id:mediawiki_editors,panelIndex:'97',title:'Mediawiki%20Editors',type:visualization,version:'6.1.0-3'),(gridData:(h:2,i:'98',w:4,x:0,y:11),id:mediawiki_main_numbers,panelIndex:'98',title:Mediawiki,type:visualization,version:'6.1.0-3'),(gridData:(h:5,i:'111',w:4,x:0,y:0),id:git_overview_top_authors,panelIndex:'111',title:'Git%20Top%20Authors',type:visualization,version:'6.1.0-3'),(gridData:(h:5,i:'112',w:4,x:8,y:0),id:git_overview_top_projects,panelIndex:'112',title:'Git%20Top%20Projects',type:visualization,version:'6.1.0-3'),(gridData:(h:2,i:'113',w:4,x:0,y:9),id:issues_main_metrics,panelIndex:'113',title:'Bugzilla%20Issues',type:visualization,version:'6.1.4'),(gridData:(h:2,i:'114',w:4,x:4,y:9),id:issues_evolutionary,panelIndex:'114',title:'Bugzilla%20Issues',type:visualization,version:'6.1.4'),(gridData:(h:2,i:'115',w:4,x:8,y:9),id:issues_evolutionary_submitters,panelIndex:'115',title:'Bugzilla%20Issue%20Submitters',type:visualization,version:'6.1.4'),(gridData:(h:2,i:'116',w:4,x:0,y:15),id:bd562660-099c-11eb-b2a9-cfa8a0efe987,panelIndex:'116',title:Weblate,type:visualization,version:'6.1.4'),(gridData:(h:2,i:'119',w:4,x:4,y:15),id:'1fe9b9b0-4b9a-11eb-ba3f-e561effddee9',panelIndex:'119',title:'Weblate%20actions',type:visualization,version:'6.1.4'),(gridData:(h:2,i:'120',w:4,x:8,y:15),id:cc367d00-4b97-11eb-ba3f-e561effddee9,panelIndex:'120',title:'Weblate%20contributors',type:visualization,version:'6.1.4'),(gridData:(h:2,i:'121',w:4,x:0,y:13),id:discourse_main_metrics,panelIndex:'121',title:Discourse,type:visualization,version:'6.1.4'),(gridData:(h:2,i:'123',w:4,x:8,y:13),id:discourse_qa_evolutionary_submitters,panelIndex:'123',title:'People%20sending%20Q%26A',type:visualization,version:'6.1.4'),(gridData:(h:2,i:'124',w:4,x:4,y:13),id:discourse_qa_evolutionary,panelIndex:'124',title:'Questions%20and%20Answers',type:visualization,version:'6.1.4')),query:(language:lucene,query:(query_string:(analyze_wildcard:!t,default_field:'*',query:'*'))),timeRestore:!f,title:Overview,uiState:(P-1:(title:Git),P-10:(title:Emails,vis:(legendOpen:!f)),P-100:(title:Meetings),P-101:(title:Representatives%2FCountries),P-102:(title:'-'),P-104:(title:Telegram),P-105:(title:Messages,vis:(legendOpen:!f)),P-106:(title:Participants,vis:(legendOpen:!f)),P-107:(title:'Git%20Pair%20Programming'),P-108:(title:'-'),P-109:(title:Commits,vis:(legendOpen:!f)),P-11:(title:Participants,vis:(legendOpen:!f)),P-110:(title:Authors,vis:(legendOpen:!f)),P-111:(title:'Git%20Top%20Authors',vis:(params:(config:(searchKeyword:''),sort:(columnIndex:!n,direction:!n)))),P-112:(title:'Git%20Top%20Projects',vis:(params:(config:(searchKeyword:''),sort:(columnIndex:!n,direction:!n)))),P-113:(title:'-'),P-114:(title:'-',vis:(legendOpen:!f)),P-115:(title:'Reps%20Activities',vis:(legendOpen:!f)),P-116:(title:'Reps%20Events'),P-117:(title:Reports,vis:(legendOpen:!f)),P-118:(title:Events,vis:(legendOpen:!f)),P-119:(title:Representatives%2FCountries,vis:(legendOpen:!f)),P-12:(title:Issues),P-120:(title:Authors,vis:(legendOpen:!f)),P-121:(title:'-'),P-122:(title:Stars,vis:(legendOpen:!f)),P-123:(title:Pulls,vis:(legendOpen:!f)),P-124:(title:DockerHub),P-13:(title:Issues),P-132:(vis:(params:(config:(searchKeyword:''),sort:(columnIndex:!n,direction:!n)))),P-14:(title:'Issue%20Submitters',vis:(legendOpen:!f)),P-15:(title:Twitter),P-16:(title:Tweets,vis:(legendOpen:!f)),P-17:(title:Users,vis:(legendOpen:!f)),P-18:(title:Stackoverflow),P-19:(title:'Questions%20and%20Answers'),P-2:(title:Commits,vis:(legendOpen:!f)),P-20:(title:Participants),P-22:(title:IRC),P-23:(title:Messages,vis:(legendOpen:!f)),P-24:(title:Participants,vis:(legendOpen:!f)),P-28:(title:Confluence),P-29:(title:Participants,vis:(legendOpen:!f)),P-3:(title:Authors,vis:(legendOpen:!f)),P-30:(title:Editions),P-31:(title:'Github%20Issues'),P-32:(title:'GitHub%20Issues'),P-33:(title:'GitHub%20Issues%20Submitters'),P-34:(title:'GitHub%20Pull%20Requests'),P-35:(title:'Pull%20Requests'),P-36:(title:'Pull%20Request%20Submitters',vis:(legendOpen:!f)),P-37:(title:Jira),P-38:(title:Issues),P-39:(title:Submitters,vis:(legendOpen:!f)),P-40:(title:Issues,vis:(legendOpen:!f)),P-41:(title:Maniphest),P-42:(title:Submitters,vis:(legendOpen:!f)),P-43:(title:Redmine),P-44:(title:Issues),P-45:(title:Submitters,vis:(legendOpen:!f)),P-46:(title:RSS),P-47:(title:Posts),P-48:(title:Authors),P-49:(title:Meetup),P-5:(title:Organizations),P-50:(title:Events),P-51:(title:Participants,vis:(legendOpen:!f)),P-52:(title:Askbot),P-53:(title:'Questions,%20Answers%20and%20Comments',vis:(legendOpen:!f)),P-54:(title:Participants,vis:(legendOpen:!f)),P-55:(title:Discourse),P-56:(title:'Questions%20and%20Answers'),P-57:(title:Participants),P-58:(title:Jenkins),P-59:(title:'Jenkins%20Builds',vis:(legendOpen:!f)),P-6:(title:Gerrit),P-60:(title:'Jenkins%20Active%20Nodes',vis:(legendOpen:!f)),P-62:(title:Hits),P-65:(title:Slack),P-66:(title:'Slack%20Messages'),P-67:(title:'Slack%20Participants'),P-68:(title:'-'),P-69:(title:'-'),P-7:(title:Changesets,vis:(legendOpen:!f)),P-70:(title:'-'),P-71:(title:'-'),P-72:(title:'-'),P-73:(title:'-'),P-74:(title:'-'),P-75:(title:'-'),P-76:(title:'-'),P-77:(title:'-'),P-78:(title:'-'),P-79:(title:'-'),P-8:(title:'Changeset%20Submitters',vis:(legendOpen:!f)),P-80:(title:'-'),P-81:(title:'-'),P-82:(title:'-'),P-83:(title:'-'),P-84:(title:'-'),P-85:(title:'-'),P-86:(title:'-'),P-87:(title:'-'),P-88:(title:'Google%20Hits'),P-89:(title:Hits),P-9:(title:'Mailing%20Lists'),P-90:(title:'Hits%20by%20Keyword'),P-91:(title:'-'),P-92:(spy:(mode:(fill:!f,name:!n)),title:'Apache%20Logs'),P-93:(spy:(mode:(fill:!f,name:!n)),title:'Apache%20Visits'),P-94:(title:'Apache%20Packages'),P-95:(title:'-'),P-96:(title:Editions,vis:(legendOpen:!f)),P-97:(title:Editors,vis:(legendOpen:!f)),P-98:(title:Mediawiki),P-99:(title:'Mozilla%20Club')),viewMode:view))
3434

35-
Link to Grimoire Open Pulse Instance: Waiting for final deployment
3635
Documentation: https://chaoss.community/
3736
CHAOSS Metrics: https://chaoss.community/kbtopic/metrics-and-metrics-models-by-topic/
3837

38+
For entities of interest, you can get more information about them here:
39+
3940
### Community Network
4041

41-
To be extended....
42+
Relationships are structure in a property-graph and accessed via Cypher Queries.
43+
44+
You can explore the graph via the Neo4J User Interface of via the `neo4j-quickstart` notebook or script.
45+
46+
- Code there allows you to run CYPHER queries, remember you can explore [graph patterns (such as shortest path between 2 nodes)](https://neo4j.com/docs/cypher-manual/current/patterns/).
47+
- You can download into a pandas dataframe part of the graph. The Graph being huge, we do not recommend reading the entire thing into Pandas.
48+
- Visualization code is also made available for the graphs.
4249

4350
![alt text](docs/images/Neo4J.png)
4451

@@ -48,24 +55,18 @@ Link to Neo4j Open Pulse Instance:
4855
Documentation: https://neo4j.com/docs/
4956
Cypher Tutorial: https://neo4j.com/docs/cypher-manual/current/appendix/tutorials/
5057

51-
#### CSV Example dataset
5258

53-
As an alternative to the interaction with NEO4j we compiled a subset of the graph in csv format which can be found in `data/community-network`.
54-
55-
Code for loading this csv is available in the `neo4j-quickstart` notebook.
5659

5760
### Repositories Metadata
5861

59-
To be extended....
62+
Metadata and semantic properties are stored in a RDF-compatible database based on the Imaging Plaza Ontology (ORD Project). We can query its results with SPARQL queries.
6063

61-
Mention Federated queries with Wikipedia
64+
You can query the repositories' metadata via the quickstart notebook of the `tentris-quickstart`
65+
You can also combine the queries to tentris about the extracted data with queries to WikiData for more complex information extraction. (see examples in notebook)
6266

6367
![alt text](docs/images/Tentris.png)
6468

6569
Link to Tentris Open Pulse: http://128.178.219.51:7502/ui
6670
Documentation: https://docs.tentris.io/
6771
SPARQL Tutorial: https://sparql.dev/
6872

69-
#### Document based Metadata
70-
71-
As an alternative to SPARQL we compiled the metadata in a much more familiar formar and included a subset in `data/entities-metadata`

‎src/neo4j-quickstart/README.md‎

Lines changed: 56 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,71 @@
11
# QuickStart Neo4J
22

3-
For open pulse project, you will manipulate graph data with Neo4J. The example notebook will guide you on how to download and visualize the graph.
3+
For open pulse project, you will manipulate graph data with Neo4J. The example notebook will guide you on how to download and visualize the graph. Should you prefer scripts, one is also available to you.
44

55
## Working on Renku with Jupyter Notebook
66

77
This set-up provides jupyter notebook support if this is your preferred working method.
88

9-
Please see instructions in `2025-hackathon.md` at the root of the repository for more instructions.
9+
Please see instructions in `2025-mini-hackathon.md` at the root of the repository for more instructions.
1010

1111
## Working locally
1212

13-
We are using uv ([installation instructions here](https://docs.astral.sh/uv/getting-started/installation/)).
13+
### 🚀 Part 1: Create the Environment (In Your Terminal)
1414

15-
1. Create virtual environment: `uv venv`
16-
2. Activate it: `source .venv/bin/activate`
17-
3. Get all predefined dependencies from the `uv.lock` file by running the command: `uv sync`
18-
4. Run the code with `python quickstart.py`
15+
First, install `uv`. Then, run **all** of the following commands in your system terminal (like Terminal, PowerShell, or bash) from the root folder of the `neo4j-quickstart` project.
1916

20-
Note: uv and Jupyter Notebook integration is not covered in this set-up so you will need to work with python scripts only.
17+
**Do not** run these in a notebook cell.
2118

22-
## Build docker
19+
**1. Install `uv` (if not already done):**
20+
Run **one** of these commands in your terminal.
2321

24-
Locally: `docker build -f tools/images/Dockerfile -t neo4j-quickstart .`
22+
* *On macOS / Linux:*
23+
```bash
24+
curl -LsSf [https://astral.sh/uv/install.sh](https://astral.sh/uv/install.sh) | sh
25+
```
26+
* *On Windows (PowerShell):*
27+
```bash
28+
pip install uv
29+
```
2530

26-
Else there is an integrated github CI in the github workflows of this repository.
31+
> **Note:** After installing, you may need to **restart your terminal or VS Code** for the `uv` command to be recognized.
32+
33+
**2. Create the Environment and Install Packages:**
34+
These commands will create a local `.venv` folder, install all project dependencies (including `ipykernel`), and register it as a named kernel for Jupyter/VS Code.
35+
36+
You can go to `src/neo4j-quickstart` and run `uv sync`.
37+
38+
You can then choose to use a python script or a jupyter notebook.
39+
40+
**3. (if you will use Jupyter Notebooks) Register the Kernel:**
41+
Now, run the command for your operating system to make the new environment visible to Jupyter/VS Code.
42+
43+
* *On macOS / Linux:*
44+
```bash
45+
.venv/bin/python -m ipykernel install --user --name="neo4j-env" --display-name="Python (Neo4j)"
46+
```
47+
* *On Windows (PowerShell):*
48+
```bash
49+
.venv\Scripts\python.exe -m ipykernel install --user --name="neo4j-env" --display-name="Python (Neo4j)"
50+
```
51+
52+
---
53+
54+
### 💻 Part 2: Run the Code (In VS Code: Script or Notebook)
55+
56+
SCRIPT :
57+
58+
Run the code with `python quickstart.py`
59+
60+
NOTEBOOK :
61+
62+
Now that your environment is built and registered, you can start the notebook.
63+
64+
1. **Open VS Code:** Open the *entire* `neo4j-quickstart` folder in VS Code (File > Open Folder...).
65+
2. **Open this Notebook:** Open the `.ipynb` notebook file.
66+
3. **Select the Kernel:**
67+
* Click the "Select Kernel" button in the top-right corner of the notebook.
68+
* From the dropdown list, choose **"Python (Neo4j)"**. This is the name you just registered.
69+
* If VS Code prompts you, it may also auto-detect the `.venv` folder. Selecting that also works, but the named kernel is more explicit.
70+
71+
You are now ready to run the cells in the notebook.

‎src/neo4j-quickstart/quickstart.ipynb‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,11 @@
8080
"id": "d3707369",
8181
"metadata": {},
8282
"source": [
83-
"## Neo4J Querrying: Examples of CYPHER queries\n",
83+
"## Neo4J Querrying: Examples of CYPHER queries for Graph Exploring and Graph Patterns\n",
8484
"\n",
85-
"Here is an example of using the Neo4J Downloader to run some custom queries on the graph."
85+
"Here is an example of using the Neo4J Downloader to run some custom queries on the graph.\n",
86+
"\n",
87+
"You can explore [graph patterns (such as shortest path between 2 nodes)](https://neo4j.com/docs/cypher-manual/current/patterns/)."
8688
]
8789
},
8890
{

‎src/neo4j-quickstart/quickstart.py‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,10 @@ def connect_neo4j():
5252
return downloader
5353

5454
# ------------------------------------------------------------------
55-
# EXTRACT CUSTOM SUBSET OF DATA FROM NEO4J WITH CYPHER QUERRIES
55+
# EXAMPLE OF CYPHER QUERIES FOR GRAPH EXPLORING AND GRAPH PATTERNS
56+
57+
# Here is an example of using the Neo4J Downloader to run some custom queries on the graph.
58+
# You can explore graph patterns (such as shortest path between 2 nodes) : (https://neo4j.com/docs/cypher-manual/current/patterns/).
5659
# ------------------------------------------------------------------
5760

5861
downloader = connect_neo4j()

‎src/tentris-quickstart/.env.dist‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
TENTRIS_USER="YOUR_TENTRIS_USER"
2+
TENTRIS_PASSWORD="YOUR_TENTRIS_PASSWORD"

‎src/tentris-quickstart/README.md‎

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
1+
# QuickStart Tentris
2+
3+
For open pulse project, you will manipulate graph data with Tentris. The example notebook will guide you on how to download and visualize the graph. Should you prefer scripts, one is also available to you.
4+
5+
## Working on Renku with Jupyter Notebook
6+
7+
This set-up provides jupyter notebook support if this is your preferred working method.
8+
9+
Please see instructions in `2025-mini-hackathon.md` at the root of the repository for more instructions.
10+
11+
## Working locally
12+
113
### 🚀 Part 1: Create the Environment (In Your Terminal)
214

315
First, install `uv`. Then, run **all** of the following commands in your system terminal (like Terminal, PowerShell, or bash) from the root folder of the `tentris-quickstart` project.
@@ -21,6 +33,12 @@ Run **one** of these commands in your terminal.
2133
**2. Create the Environment and Install Packages:**
2234
These commands will create a local `.venv` folder, install all project dependencies (including `ipykernel`), and register it as a named kernel for Jupyter/VS Code.
2335

36+
Option A:
37+
38+
You can also go to `src/tentris-quickstart` and run `uv sync`.
39+
40+
Option B:
41+
2442
```bash
2543
# 1. Clean up any old environment (optional, but safe)
2644
rm -rf .venv

0 commit comments

Comments
 (0)