Skip to content
Snippets Groups Projects
Commit 78f6b25e authored by Enrique Garcia's avatar Enrique Garcia
Browse files

update notebook content

parent 9efef565
No related branches found
No related tags found
1 merge request!12update notebook content
Pipeline #134889 passed
%% Cell type:markdown id:b0fcf1bf tags:
<h1><center> <font size="36"> How to harvest metadata from Zenodo </font> </center></h1>
---------------------
#### Notebook outline
- Zenodo OAI-PMH protocol
- Zenodo REST API
- Explore the REST API answer (payload) with the `request` library
- Using `eossr` library
- Using `PyZenodo3` library
- Pros and cons of both methods
---------------------
%% Cell type:markdown id:2529eacc tags:
## TL;DR: Pros and cons of each method
- Using AOI-PMH for harvesting;
+ $+$ More efficient harvest:
- faster,
- thought for large and continues queries of a repository.
- No token needed to harvest and fetch entries.
+ $-$ Metadata representation of files is provided by the data provider.
- Using the REST API;
+ $+$ Access to the full entry/record/community information.
+ $-$ An [access token](https://zenodo.org/account/settings/applications/) is needed to communicate with the REST API.
+ $-$ Harvest not optimised for large searches.
%% Cell type:markdown id:2193adc5 tags:
## OAI-PMH protocol
%% Cell type:markdown id:9bb7e516 tags:
#### - First have a lookg to a nice [tutorial to the protocol](https://indico.cern.ch/event/5710/sessions/108048/attachments/988151/1405129/Simeon_tutorial.pdf).
%% Cell type:markdown id:1bcf7733 tags:
The [OAI-PMH protocol](https://www.openarchives.org/pmh/) uses a base URL + special syntax ('verbs') to query and find metadata representation(s) of a data provider.
In the case of zenodo the base URL is: https://zenodo.org/oai2d.
For example;
- to retrieve all the entries (`verb=ListRecords`)
- belonging to escape2020 community (`set=user-escape2020`)
- in the OAI DataCite metadata representation (`metadataPrefix=oai_datacite`)
https://zenodo.org/oai2d?verb=ListRecords&set=user-escape2020&metadataPrefix=oai_datacite
Ex2:
- To obtain a single entry (`verb=GetRecord`)
- of a certain zenodo record - identified by the entry_id (`identifier=oai:zenodo.org:4105896`)
- in the Dublin Core metadata representation (`metadataPrefix=oai_dc`)
https://zenodo.org/oai2d?verb=GetRecord&metadataPrefix=oai_dc&identifier=oai:zenodo.org:4105896
%% Cell type:markdown id:26eba497 tags:
## Example with the OAI-PMH protocol: A python OAI-Harvester
%% Cell type:markdown id:145835bd tags:
```
pip install oaiharvest
oai-harvest -h
# Examples of usage
oai-harvest https://zenodo.org/oai2d -s "user-escape2020" -d oai_dc
oai-harvest https://zenodo.org/oai2d -s "user-escape2020" -d oai_datacite4
oai-harvest https://zenodo.org/oai2d -s "user-escape2020" -d datacite3
# Example of output
$ oai-harvest https://zenodo.org/oai2d -s "user-escape2020" -d datacite3
$ cd datacite3
$ ls
oai:zenodo.org:1689986.oai_dc.xml oai:zenodo.org:3884963.oai_dc.xml
oai:zenodo.org:2533132.oai_dc.xml oai:zenodo.org:3967386.oai_dc.xml
oai:zenodo.org:2542652.oai_dc.xml oai:zenodo.org:4012169.oai_dc.xml
oai:zenodo.org:2542664.oai_dc.xml oai:zenodo.org:4028908.oai_dc.xml
oai:zenodo.org:3356656.oai_dc.xml oai:zenodo.org:4044010.oai_dc.xml
oai:zenodo.org:3362435.oai_dc.xml oai:zenodo.org:4055176.oai_dc.xml
oai:zenodo.org:3572655.oai_dc.xml oai:zenodo.org:4105896.oai_dc.xml
oai:zenodo.org:3614662.oai_dc.xml oai:zenodo.org:4311271.oai_dc.xml
oai:zenodo.org:3659184.oai_dc.xml oai:zenodo.org:4419866.oai_dc.xml
oai:zenodo.org:3675081.oai_dc.xml oai:zenodo.org:4601451.oai_dc.xml
oai:zenodo.org:3734091.oai_dc.xml oai:zenodo.org:4687123.oai_dc.xml
oai:zenodo.org:3743489.oai_dc.xml oai:zenodo.org:4786641.oai_dc.xml
oai:zenodo.org:3743490.oai_dc.xml oai:zenodo.org:4790629.oai_dc.xml
oai:zenodo.org:3854976.oai_dc.xml
$ cat <FILE>
```
%% Cell type:markdown id:f9ad3584 tags:
No token is needed to fetch metadata files provided by Zenodo (the provider). However please note that the **metadata schema representation of the records is chosen by the provider !**
No token is needed to fetch metadata files provided by Zenodo (the provider).
However please note that the **metadata schema representation of the records is chosen by the provider !**
Zenodo supports the following schema representations:
- `DataCite` (various version),
- `Dublin Core`,
- `MARC21`,
- However it **does not provide** metadata under the `codemeta.json` schema.
%% Cell type:markdown id:c6a47567 tags:
# Query Zenodo's records through its REST API
%% Cell type:code id:26424a79 tags:
``` python
# pip install request
```
%% Cell type:code id:e7a84906 tags:
``` python
import requests
```
%% Cell type:code id:076bfee8 tags:
``` python
token = ''
```
%% Cell type:markdown id:87f186f9 tags:
We would need to specify some arguments to reduce the search
%% Cell type:code id:5ee3a192 tags:
``` python
parameters = {'access_token': token,
'communities': 'escape2020',
parameters = {'communities': 'escape2020',
'size':100}
```
%% Cell type:markdown id:e268aef2 tags:
**NOTE** No token is needed to fetch/communicate with the REST API.
However, you would need to [create one](https://zenodo.org/account/settings/applications/) if you would like to write or publish through the API.
%% Cell type:code id:ddccf248 tags:
``` python
token = ''
```
%% Cell type:markdown id:4cd8011b tags:
## Example with the `requests` lib - How to recover all ESCAPE2020 community records ?
%% Cell type:code id:fde5ee19 tags:
``` python
escape2020 = requests.get('https://zenodo.org/api/records', params=parameters).json()
escape2020.keys()
```
%% Output
dict_keys(['aggregations', 'hits', 'links'])
%% Cell type:markdown id:9e564b25 tags:
Let's explore the REST API payload to find the desired information.
%% Cell type:code id:2506740f tags:
``` python
# Nice summary of the request we just made
escape2020['aggregations']
```
%% Output
{'access_right': {'buckets': [{'doc_count': 15, 'key': 'open'}],
'doc_count_error_upper_bound': 0,
'sum_other_doc_count': 0},
'file_type': {'buckets': [{'doc_count': 7, 'key': 'zip'},
{'doc_count': 4, 'key': 'pdf'},
{'doc_count': 3, 'key': 'gz'},
{'doc_count': 2, 'key': 'json'},
{'doc_count': 1, 'key': ''},
{'doc_count': 1, 'key': 'md'},
{'doc_count': 1, 'key': 'simg'},
{'doc_count': 1, 'key': 'tar'}],
'doc_count_error_upper_bound': 0,
'sum_other_doc_count': 0},
'keywords': {'buckets': [{'doc_count': 3, 'key': 'ESCAPE'},
{'doc_count': 2, 'key': 'CTA'},
{'doc_count': 2, 'key': 'python'},
{'doc_count': 1, 'key': 'AGN'},
{'doc_count': 1, 'key': 'EOSC'},
{'doc_count': 1,
'key': 'European Open Science Cloud, ESFRI, e-Infrastructures'},
{'doc_count': 1, 'key': 'Horizon Europe'},
{'doc_count': 1, 'key': 'Interoperability'},
{'doc_count': 1, 'key': 'MWL'},
{'doc_count': 1,
'key': 'Machine Learning, Big Data, Aapche Kafka, Gravitational Wave'}],
'doc_count_error_upper_bound': 0,
'sum_other_doc_count': 17},
'type': {'buckets': [{'doc_count': 10,
'key': 'software',
'subtype': {'buckets': [],
'doc_count_error_upper_bound': 0,
'sum_other_doc_count': 0}},
{'doc_count': 3,
'key': 'publication',
'subtype': {'buckets': [{'doc_count': 1, 'key': 'other'},
{'doc_count': 1, 'key': 'report'},
{'doc_count': 1, 'key': 'workingpaper'}],
'doc_count_error_upper_bound': 0,
'sum_other_doc_count': 0}},
{'doc_count': 1,
'key': 'lesson',
'subtype': {'buckets': [],
'doc_count_error_upper_bound': 0,
'sum_other_doc_count': 0}},
{'doc_count': 1,
'key': 'poster',
'subtype': {'buckets': [],
'doc_count_error_upper_bound': 0,
'sum_other_doc_count': 0}}],
'doc_count_error_upper_bound': 0,
'sum_other_doc_count': 0}}
%% Cell type:code id:dd36b4be tags:
``` python
# Total number of entries in the payload
print(escape2020['hits'].keys())
print(escape2020['hits']['total'])
```
%% Output
dict_keys(['hits', 'total'])
15
%% Cell type:code id:0550cffb tags:
``` python
all_entries = escape2020['hits']['hits']
```
%% Cell type:code id:94a4e8c9 tags:
``` python
# The content of the first entry of the payload - It contain all the info that we can also find in Zenodo
all_entries[0]
```
%% Output
{'conceptdoi': '10.5281/zenodo.5176088',
'conceptrecid': '5176088',
'created': '2021-08-16T07:21:15.005975+00:00',
'doi': '10.5281/zenodo.5176089',
'files': [{'bucket': '409f3f8e-cb73-4a10-b718-3b8fc238a616',
'checksum': 'md5:eab8fbaa4c318cbd75629eb6a7719ecb',
'key': 'EOSC_SYMPOSIUM_2021_Report.pdf',
'links': {'self': 'https://zenodo.org/api/files/409f3f8e-cb73-4a10-b718-3b8fc238a616/EOSC_SYMPOSIUM_2021_Report.pdf'},
'size': 1654918,
'type': 'pdf'}],
'id': 5176089,
'links': {'badge': 'https://zenodo.org/badge/doi/10.5281/zenodo.5176089.svg',
'bucket': 'https://zenodo.org/api/files/409f3f8e-cb73-4a10-b718-3b8fc238a616',
'conceptbadge': 'https://zenodo.org/badge/doi/10.5281/zenodo.5176088.svg',
'conceptdoi': 'https://doi.org/10.5281/zenodo.5176088',
'doi': 'https://doi.org/10.5281/zenodo.5176089',
'html': 'https://zenodo.org/record/5176089',
'latest': 'https://zenodo.org/api/records/5176089',
'latest_html': 'https://zenodo.org/record/5176089',
'self': 'https://zenodo.org/api/records/5176089'},
'metadata': {'access_right': 'open',
'access_right_category': 'success',
'communities': [{'id': 'envri'},
{'id': 'eosc_synergy'},
{'id': 'eoscsecretariat'},
{'id': 'escape2020'},
{'id': 'expands'},
{'id': 'ni4os-europe'},
{'id': 'sshoc'}],
'contributors': [{'affiliation': 'Trust-IT Services',
'name': 'Ferguson, Nicholas',
'orcid': '0000-0001-5523-6430',
'type': 'WorkPackageLeader'}],
'creators': [{'affiliation': 'Technopolis Group Belgium',
'name': 'Bertacchini, Veronica'},
{'affiliation': 'Trust-IT Services',
'name': 'Drago, Federico',
'orcid': '0000-0002-1333-4478'},
{'affiliation': 'TU Wien',
'name': 'Flicker, Katharina',
'orcid': '0000-0001-6040-2798'},
{'affiliation': 'KIT', 'name': 'Gebreyesus, Netsanet'},
{'affiliation': 'GÉANT', 'name': 'Grant, Annabel'},
{'affiliation': 'CERN',
'name': 'Jones, Bob',
'orcid': '0000-0001-9092-4589'},
{'affiliation': 'CSC-IT Center for Science', 'name': 'Liinamaa, Iiris'},
{'affiliation': 'CSC-IT Center for Science', 'name': 'Märkälä, Anu'},
{'affiliation': 'Athena Research Center',
'name': 'Marinos-Kouris, Christos'},
{'affiliation': 'GO FAIR Foundation',
'name': 'Meerman, Bert',
'orcid': '0000-0002-0071-2660'},
{'affiliation': 'TU Wien',
'name': 'Saurugger, Bernd',
'orcid': '0000-0001-5730-3983'},
{'affiliation': 'Trust-IT Services',
'name': 'Smith, Zachary',
'orcid': '0000-0002-9984-008X'}],
'description': '<p>The EOSC Symposium 2021 provided a key engagement opportunity for the EOSC community after the European Open Science Cloud finally entered its highly-anticipated implementation phase in 2021. Delivered online to just under 1,000 EOSC stakeholders from over 63 different countries, this was not only the largest EOSC Symposium yet, but it was also an essential opportunity for convergence and alignment on principles and priorities.</p>\n\n<p>The EOSC Association will play an important role in this phase. With already over 210 member and observer organisations from across Europe, the Association represents a single voice for the advocacy and representation of the broader EOSC Stakeholder community in Europe, promoting alignment of EU research policy and priorities.</p>\n\n<p>The Association will continuously develop the EOSC Strategic Research and Innovation Agenda (SRIA) which will influence future EOSC activities at institutional, national and EU level (including the EOSC-related work programmes in Horizon Europe). This living document will adapt to the changing EOSC ecosystem and the needs of EOSC stakeholders. The Association is setting up a series of Advisory Groups (AG) with Task Forces (TF) to engage with the EOSC community around priority areas, namely:</p>\n\n<ul>\n\t<li>Implementation of EOSC</li>\n\t<li>Metadata and Data Quality</li>\n\t<li>Research Careers and Curricula</li>\n\t<li>Sustaining&nbsp;EOSC</li>\n\t<li>Technical Challenges on EOSC</li>\n</ul>\n\n<p>The Symposium was the first opportunity for the Association to present the draft charters of the Task Forces. A key objective of the event was also for the Association to understand what work has been carried out, is in progress, or is planned on the topics of the AGs and TFs. A call for contributions ran throughout May 2021, with a total of 137 applications received. Through presentations, lightning talks, and panels, over 70 community members were able to highlight key findings and recommendations for the AGs and TFs to take into consideration for their work.</p>',
'doi': '10.5281/zenodo.5176089',
'grants': [{'acronym': 'EOSCsecretariat.eu',
'code': '831644',
'funder': {'acronyms': [],
'doi': '10.13039/501100000780',
'links': {'self': 'https://zenodo.org/api/funders/10.13039/501100000780'},
'name': 'European Commission'},
'links': {'self': 'https://zenodo.org/api/grants/10.13039/501100000780::831644'},
'program': 'H2020',
'title': 'EOSCsecretariat.eu'}],
'keywords': ['EOSC', 'Open Science', 'Horizon Europe', 'Interoperability'],
'language': 'eng',
'license': {'id': 'CC-BY-4.0'},
'publication_date': '2021-08-10',
'related_identifiers': [{'identifier': '10.5281/zenodo.5176088',
'relation': 'isVersionOf',
'scheme': 'doi'}],
'relations': {'version': [{'count': 1,
'index': 0,
'is_last': True,
'last_child': {'pid_type': 'recid', 'pid_value': '5176089'},
'parent': {'pid_type': 'recid', 'pid_value': '5176088'}}]},
'resource_type': {'subtype': 'report',
'title': 'Report',
'type': 'publication'},
'title': 'EOSC Symposium 2021 Report'},
'owners': [91736],
'revision': 8,
'stats': {'downloads': 438.0,
'unique_downloads': 374.0,
'unique_views': 475.0,
'version_downloads': 438.0,
'version_unique_downloads': 374.0,
'version_unique_views': 475.0,
'version_views': 494.0,
'version_volume': 724854084.0,
'views': 494.0,
'volume': 724854084.0},
'updated': '2021-08-24T14:27:14.603504+00:00'}
%% Cell type:code id:0b48bcff tags:
``` python
# Example to retrieve entries_ids and titles
for entry in all_entries:
print(f"{entry['id']} \t {entry['metadata']['title']}")
```
%% Output
5176089 EOSC Symposium 2021 Report
5153369 agnpy: Modelling Active Galactic Nuclei radiative processes with python.
5093909 ESCAPE Data Science Summer School 2021
4923992 ESCAPE template project
4786641 ZenodoCI
4601451 gLike: numerical maximization of heterogeneous joint likelihood functions of a common free parameter plus nuisance parameters
4419866 IndexedConv/IndexedConv: v1.3
4044010 EOSC - a tool for enabling Open Science in Europe
3854976 FairRootGroup/DDS
3743489 ESCAPE the maze
3675081 ESFRI cluster projects - Position papers on expectations and planned contributions to the EOSC
3659184 ctapipe_io_mchdf5
3614662 FairRoot
3362435 FairMQ
3356656 A prototype for a real time pipeline for the detection of transient signals and their automatic classification
%% Cell type:code id:e2afd195 tags:
``` python
# Example of all the keywords within each entry
for entry in all_entries:
try:
print(f"{entry['id']} \t {entry['metadata']['keywords']}")
except KeyError:
pass
```
%% Output
5176089 ['EOSC', 'Open Science', 'Horizon Europe', 'Interoperability']
5153369 ['radiative processes', 'blazars', 'radio galaxies', 'AGN', 'jets', 'MWL', 'astropy', 'numpy', 'python']
5093909 ['python', 'lesson']
4923992 ['ESCAPE', 'jupyter-notebook']
4786641 ['ESCAPE']
4419866 ['CTA']
4044010 ['European Open Science Cloud, ESFRI, e-Infrastructures']
3743489 ['ESCAPE']
3659184 ['CTA']
3614662 ['geant4', 'c-plus-plus', 'cmake', 'reconstruction', 'vmc', 'modular', 'analysis', 'simulation']
3356656 ['Machine Learning, Big Data, Aapche Kafka, Gravitational Wave']
%% Cell type:markdown id:e9007eef tags:
#### Let's explore a specific ESCAPE2020 entry, for example `agnpy`.
%% Cell type:code id:75b4de93 tags:
``` python
agnpy = requests.get('https://zenodo.org/api/records/4687123', params=parameters).json()
agnpy.keys()
```
%% Output
dict_keys(['conceptdoi', 'conceptrecid', 'created', 'doi', 'files', 'id', 'links', 'metadata', 'owners', 'revision', 'stats', 'updated'])
%% Cell type:code id:39be15f1 tags:
``` python
agnpy['metadata']
```
%% Output
{'access_right': 'open',
'access_right_category': 'success',
'communities': [{'id': 'escape2020'}],
'creators': [{'affiliation': "Institut de Física d'Altes Energies (IFAE)",
'name': 'Cosimo Nigro'},
{'name': 'Julian Sitarek'},
{'affiliation': 'Minnesota State University Moorhead', 'name': 'Matt Craig'},
{'name': 'Paweł Gliwny'},
{'affiliation': '@sourcery-ai', 'name': 'Sourcery AI'}],
'description': '<p>In this release the major features added are:</p>\n<ul>\n<li><p>an exponential cutoff power-law for the electron spectra;</p>\n</li>\n<li><p>the possibility to compute the gamma-gamma opacity for misaligned sources (<code>viewing angle != 0</code>) for the following targets: point source behind the jet, BLR and the DT.</p>\n</li>\n</ul>',
'doi': '10.5281/zenodo.4687123',
'license': {'id': 'other-open'},
'publication_date': '2021-04-14',
'related_identifiers': [{'identifier': 'https://github.com/cosimoNigro/agnpy/tree/v0.0.10',
'relation': 'isSupplementTo',
'scheme': 'url'},
{'identifier': '10.5281/zenodo.4055175',
'relation': 'isVersionOf',
'scheme': 'doi'}],
'relations': {'version': [{'count': 7,
'index': 3,
'is_last': False,
'last_child': {'pid_type': 'recid', 'pid_value': '5153369'},
'parent': {'pid_type': 'recid', 'pid_value': '4055175'}}]},
'resource_type': {'title': 'Software', 'type': 'software'},
'title': 'cosimoNigro/agnpy: v0.0.10: added EPWL for electrons and off-axis absorption calculation',
'version': 'v0.0.10'}
%% Cell type:code id:1ee7197f tags:
``` python
for file in agnpy['files']:
print(file['links']['self'])
```
%% Output
https://zenodo.org/api/files/a806b549-922e-4025-9453-a5f4c0913fdd/cosimoNigro/agnpy-v0.0.10.zip
%% Cell type:markdown id:bb63887b tags:
We could do a simple `wget` of the previous URL and recover the file updoaded to Zenodo.
Let's see and example with various files uploaded.
%% Cell type:code id:16db6ee0 tags:
``` python
ESCAPE_template = requests.get('https://zenodo.org/api/records/4790629', params=parameters).json()
```
%% Cell type:code id:9feca5e6 tags:
``` python
for file in ESCAPE_template['files']:
print(file['links']['self'])
```
%% Output
https://zenodo.org/api/files/923a2614-a0fa-4927-bb3b-704168f3c768/codemeta.json
https://zenodo.org/api/files/923a2614-a0fa-4927-bb3b-704168f3c768/Singularity
https://zenodo.org/api/files/923a2614-a0fa-4927-bb3b-704168f3c768/Singularity.simg
https://zenodo.org/api/files/923a2614-a0fa-4927-bb3b-704168f3c768/template_project_escape-v2.1.zip
%% Cell type:markdown id:4070d988 tags:
## eossr
All these methods are implemented in the [Zenodo client](https://gitlab.in2p3.fr/escape2020/wp3/eossr/-/blob/master/eossr/api/zenodo.py) (a REST API handler) of the [eossr library](https://gitlab.in2p3.fr/escape2020/wp3/eossr).
The library is also in charge of automatise the project's uploads from GitLab to Zenodo (by the use of the GitLab-CI and the REST API handler).
%% Cell type:code id:6cd7f714 tags:
``` python
# pip install https://gitlab.in2p3.fr/escape2020/wp3/eossr/-/archive/master/eossr-master.zip
```
%% Cell type:code id:0dbbbd64 tags:
``` python
from eossr.api.zenodo import ZenodoAPI
z = ZenodoAPI(access_token=token, sandbox=False)
```
%% Cell type:code id:2037338d tags:
``` python
entries = z.fetch_community_entries(community_name='escape2020',
results_per_query=100)
entries.json()['hits']['total']
```
%% Output
15
%% Cell type:code id:3985383f tags:
``` python
ids = z.fetch_community_entries_per_id(community_name='escape2020',
results_per_query=100)
titles = z.fetch_community_entries_per_title(community_name='escape2020',
results_per_query=100)
for id, title in zip(ids, titles):
print(id, title)
```
%% Output
5176089 EOSC Symposium 2021 Report
5153369 agnpy: Modelling Active Galactic Nuclei radiative processes with python.
5093909 ESCAPE Data Science Summer School 2021
4923992 ESCAPE template project
4786641 ZenodoCI
4601451 gLike: numerical maximization of heterogeneous joint likelihood functions of a common free parameter plus nuisance parameters
4419866 IndexedConv/IndexedConv: v1.3
4044010 EOSC - a tool for enabling Open Science in Europe
3854976 FairRootGroup/DDS
3743489 ESCAPE the maze
3675081 ESFRI cluster projects - Position papers on expectations and planned contributions to the EOSC
3659184 ctapipe_io_mchdf5
3614662 FairRoot
3362435 FairMQ
3356656 A prototype for a real time pipeline for the detection of transient signals and their automatic classification
%% Cell type:markdown id:595ba083 tags:
## PyZenodo3
Another equivalent example with the pyzenodo3 library
%% Cell type:code id:91985172 tags:
``` python
# pip install pyzenodo3
```
%% Cell type:code id:7cd937b9 tags:
``` python
import pyzenodo3
zen = pyzenodo3.Zenodo()
records = zen.search('agnpy')
```
%% Cell type:code id:815578d9 tags:
``` python
records[0].data
```
%% Output
{'conceptdoi': '10.5281/zenodo.5174757',
'conceptrecid': '5174757',
'created': '2021-08-10T07:43:16.545873+00:00',
'doi': '10.5281/zenodo.5174758',
'files': [{'bucket': '4a6752c9-f922-45f5-a6e5-82f9a016ba87',
'checksum': 'md5:516ae662f4d8a251a7d8b9fb41007e56',
'key': 'cosimoNigro/agnpy_paper-v0.1.0.zip',
'links': {'self': 'https://zenodo.org/api/files/4a6752c9-f922-45f5-a6e5-82f9a016ba87/cosimoNigro/agnpy_paper-v0.1.0.zip'},
'size': 45740,
'type': 'zip'}],
'id': 5174758,
'links': {'badge': 'https://zenodo.org/badge/doi/10.5281/zenodo.5174758.svg',
'bucket': 'https://zenodo.org/api/files/4a6752c9-f922-45f5-a6e5-82f9a016ba87',
'conceptbadge': 'https://zenodo.org/badge/doi/10.5281/zenodo.5174757.svg',
'conceptdoi': 'https://doi.org/10.5281/zenodo.5174757',
'doi': 'https://doi.org/10.5281/zenodo.5174758',
'html': 'https://zenodo.org/record/5174758',
'latest': 'https://zenodo.org/api/records/5174758',
'latest_html': 'https://zenodo.org/record/5174758',
'self': 'https://zenodo.org/api/records/5174758'},
'metadata': {'access_right': 'open',
'access_right_category': 'success',
'creators': [{'affiliation': "Institut de Física d'Altes Energies (IFAE), The Barcelona Institute of Science and Technology, Campus UAB, 08193 Bellaterra (Barcelona), Spain",
'name': 'Cosimo Nigro',
'orcid': '0000-0001-8375-1907'},
{'affiliation': 'University of Lodz, Faculty of Physics and Applied Informatics, Department of Astrophysics, 90-236 Lodz, Poland',
'name': 'Julian Sitarek',
'orcid': '0000-0002-1659-5374'},
{'affiliation': 'University of Lodz, Faculty of Physics and Applied Informatics, Department of Astrophysics, 90-236 Lodz, Poland',
'name': 'Paweł Gliwny',
'orcid': '0000-0002-4183-391X'},
{'affiliation': "Laboratoire d'Annecy de Physique des Particules, Univ. Grenoble Alpes, Univ. Savoie Mont Blanc, CNRS, LAPP, 74000 Annecy, France",
'name': 'David Sanchez'},
{'affiliation': 'Minnesota State University Moorhead, Moorhead, Minnesota, US',
'name': 'Matthew Craig',
'orcid': '0000-0002-4183-391X'}],
'description': "This repository contains the scripts to generate the figures included in the paper 'agnpy: an open-source python package modelling the radiative processes of jetted active galactic nuclei'.",
'doi': '10.5281/zenodo.5174758',
'keywords': ['radiative processes',
'blazars',
'radio galaxies',
'AGN',
'jets',
'MWL',
'astropy',
'numpy',
'python'],
'license': {'id': 'other-open'},
'publication_date': '2021-08-10',
'related_identifiers': [{'identifier': 'https://github.com/cosimoNigro/agnpy_paper/tree/v0.1.0',
'relation': 'isSupplementTo',
'scheme': 'url'},
{'identifier': '10.5281/zenodo.5174757',
'relation': 'isVersionOf',
'scheme': 'doi'}],
'relations': {'version': [{'count': 1,
'index': 0,
'is_last': True,
'last_child': {'pid_type': 'recid', 'pid_value': '5174758'},
'parent': {'pid_type': 'recid', 'pid_value': '5174757'}}]},
'resource_type': {'title': 'Software', 'type': 'software'},
'title': 'agnpy: an open-source python package modelling the radiative processes of jetted active galactic nuclei',
'version': '0.1.0'},
'owners': [99841],
'revision': 3,
'stats': {'downloads': 0.0,
'unique_downloads': 0.0,
'unique_views': 12.0,
'version_downloads': 0.0,
'version_unique_downloads': 0.0,
'version_unique_views': 12.0,
'version_views': 13.0,
'version_volume': 0.0,
'views': 13.0,
'volume': 0.0},
'updated': '2021-08-10T13:48:43.185119+00:00'}
%% Cell type:code id:a304d374 tags:
``` python
```
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment