pub-analyzer 0.4.3__py3-none-any.whl → 0.5.1__py3-none-any.whl

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.

Potentially problematic release.


This version of pub-analyzer might be problematic. Click here for more details.

@@ -1,91 +0,0 @@
1
- // This document was generated using Pub Analyzer version {{ version }}.
2
- //
3
- // Pub Analyzer is a tool designed to retrieve, process and present in a concise and understandable
4
- // way the scientific production of a researcher, including detailed information about their articles,
5
- // citations, collaborations and other relevant metrics.
6
- //
7
- // See more here: https://pub-analyzer.com
8
-
9
- // Packages
10
- //
11
- // This document uses the Cetz package to render plots and graphs. For more information
12
- // on how to edit the plots see: https://typst.app/universe/package/cetz/
13
-
14
- #import "@preview/cetz:0.2.2": canvas, plot, chart, palette
15
-
16
- // Colors
17
- //
18
- // The following variables control all colors used in the document.
19
- // You can modify the color codes by specifying the four RGB(A) components or by
20
- // using the hexadecimal code.
21
- //
22
- // See more here: https://typst.app/docs/reference/visualize/color/#definitions-rgb
23
-
24
- #let SUCCESS = rgb("#909d63")
25
- #let ERROR = rgb("#bc5653")
26
-
27
- #let CATEGORY_1 = rgb("#42a2f8")
28
- #let CATEGORY_2 = rgb("#82d452")
29
- #let CATEGORY_3 = rgb("#929292")
30
- #let CATEGORY_4 = rgb("#f0bb40")
31
- #let CATEGORY_5 = rgb("#eb4025")
32
- #let CATEGORY_6 = rgb("#c33375")
33
-
34
- #let PALETTE = (CATEGORY_1, CATEGORY_2, CATEGORY_3, CATEGORY_4, CATEGORY_5, CATEGORY_6)
35
-
36
- // Page Layout
37
- #set page("us-letter")
38
- #set page(flipped: true)
39
-
40
- #set heading(numbering: "1.")
41
- #set page(footer: grid(
42
- columns: (1fr, 1fr),
43
- align(left)[Made with #link("https://pub-analyzer.com")[_pub-analyzer_] version {{ version }}],
44
- align(right)[#counter(page).display("1")],
45
- )
46
- )
47
-
48
- // Text config
49
- #set text(size: 10pt)
50
- #set par(justify: true)
51
-
52
- // Override reference
53
- #show ref: it => {
54
- let el = it.element
55
- if el != none and el.func() == heading {
56
- // Override heading references.
57
- numbering(
58
- el.numbering,
59
- ..counter(heading).at(el.location())
60
- )
61
- } else {
62
- // Other references as usual.
63
- it
64
- }
65
- }
66
-
67
- // Title
68
- #grid(
69
- columns: (1fr),
70
- row-gutter: 11pt,
71
-
72
- [#align(center, text(size: 17pt, weight: "bold")[{{ report.author.display_name }}])],
73
- {% if report.author.last_known_institutions %}
74
- {% set last_known_institution = report.author.last_known_institutions[0] %}
75
- [#align(center, text(size: 15pt, weight: "thin")[{{ last_known_institution.display_name }}])],
76
- {% endif %}
77
- )
78
-
79
- {% include 'author_summary.typ' %}
80
-
81
- {% include 'works.typ' %}
82
-
83
- {% include 'works_extended.typ' %}
84
-
85
- {% include 'sources.typ' %}
86
-
87
- #pagebreak()
88
-
89
- = Bibliography
90
-
91
- Priem, J., Piwowar, H., & Orr, R. (2022). OpenAlex: A fully-open index of scholarly works, authors, venues, institutions, and concepts. ArXiv. https://arxiv.org/abs/2205.01833
@@ -1,22 +0,0 @@
1
- // Sources
2
- = Sources.
3
-
4
- #table(
5
- columns: (auto, 3fr, 2fr, auto, auto, auto, auto, auto),
6
- inset: 8pt,
7
- align: horizon,
8
- // Headers
9
- [], [*Name*], [*Publisher or institution*], [*Type*], [*ISSN-L*], [*Impact factor*], [*h-index*], [*Is OA*],
10
-
11
- // Content
12
- {% for source in report.sources_summary.sources %}
13
- [3.{{ loop.index }}. #label("source_{{ source.id.path.rpartition("/")[2] }}")],
14
- [#underline([#link("{{ source.homepage_url }}")[#"{{ source.display_name }}"]])],
15
- [{{ source.host_organization_name or "-" }}],
16
- [{{source.type }}],
17
- [{{ source.issn_l or "-" }}],
18
- [{{ source.summary_stats.two_yr_mean_citedness|round(3) }}],
19
- [{{ source.summary_stats.h_index }}],
20
- [{% if source.is_oa %}#text(rgb(SUCCESS))[True]{% else %}#text(rgb(ERROR))[False]{% endif %}],
21
- {% endfor %}
22
- )
@@ -1,154 +0,0 @@
1
- // Works
2
- = Works.
3
-
4
- #let works_metrics_card(title: "Title", graph, body) = {
5
- grid(
6
- rows: (18pt, 175pt, 60pt),
7
- columns: 100%,
8
-
9
- [
10
- #block(width: 100%, height: 100%)[
11
- #align(center + horizon)[#text(style: "italic")[#title]]
12
- ]
13
- ],
14
- [
15
- #block(width: 100%, height: 100%)[
16
- #align(center + horizon)[#graph]
17
- ]
18
- ],
19
- [
20
- #block(width: 100%, height: 100%, inset: (x: 0pt, y: 10pt))[#body]
21
- ],
22
- )
23
- }
24
-
25
- #grid(
26
- columns: (1fr, 1fr, 1fr),
27
- column-gutter: 15pt,
28
- [
29
- #let graph = {
30
- canvas(length: 35%, {
31
- chart.piechart(
32
- (
33
- {{ report.citation_summary.type_a_count }}, // Type A
34
- {{ report.citation_summary.type_b_count }} // Type B
35
- ),
36
- radius: 1,
37
- slice-style: (PALETTE.at(0), PALETTE.at(1)),
38
- outer-label: (content: "%", radius: 115%),
39
- )
40
- })
41
- }
42
-
43
- #works_metrics_card(title: "Citation metrics", graph)[
44
- #grid(
45
- rows: auto, row-gutter: 10pt,
46
- columns: (1fr, 1fr),
47
-
48
- grid.cell(colspan: 2)[
49
- *Count:* {{ report.citation_summary.type_a_count + report.citation_summary.type_b_count }}
50
- ],
51
- [#box(height: 7pt, width: 7pt, fill: PALETTE.at(0)) *Type A:* {{ report.citation_summary.type_a_count }}],
52
- [#box(height: 7pt, width: 7pt, fill: PALETTE.at(1)) *Type B:* {{ report.citation_summary.type_b_count }}],
53
- )
54
- ]
55
- ],
56
- [
57
- #let graph = {
58
- canvas(length: 35%, {
59
- chart.columnchart(
60
- size: (2.45, 2.0),
61
- y-grid: false,
62
- bar-style: palette.new(
63
- base: (stroke: none, fill: none),
64
- colors: PALETTE
65
- ),
66
- (
67
- {% for work_type in report.works_type_summary[:4] %}
68
- ("{{ work_type.type_name[:2]|capitalize }}", {{ work_type.count }}),
69
- {% endfor %}
70
- )
71
- )
72
- })
73
- }
74
- #works_metrics_card(title: "Work Type", graph)[
75
- #grid(
76
- rows: auto, row-gutter: 10pt,
77
- columns: (1fr, 1fr),
78
- column-gutter: 5pt,
79
-
80
- grid.cell(colspan: 2)[
81
- *Count:* {{ report.open_access_summary.model_dump().items()|sum(attribute="1") }}
82
- ],
83
-
84
- {% for work_type in report.works_type_summary[:4] %}
85
- [
86
- #box(height: 7pt, width: 7pt, fill: PALETTE.at({{ loop.index0 }})) *{{ work_type.type_name|capitalize }}:* {{ work_type.count }}
87
- ],
88
- {% endfor %}
89
- )
90
- ]
91
- ],
92
- [
93
- #let graph = {
94
- canvas(length: 35%, {
95
- chart.piechart(
96
- (
97
- {{report.open_access_summary.diamond}}, // diamond
98
- {{report.open_access_summary.gold}}, // Gold
99
- {{report.open_access_summary.green}}, // Green
100
- {{report.open_access_summary.hybrid}}, // Hybrid
101
- {{report.open_access_summary.bronze}}, // Bronze
102
- {{report.open_access_summary.closed}}, // Closed
103
- ),
104
- radius: 1,
105
- inner-radius: .4,
106
- slice-style: (PALETTE.at(0), PALETTE.at(3), PALETTE.at(1), PALETTE.at(4), PALETTE.at(5), PALETTE.at(2)),
107
- outer-label: (content: "%", radius: 115%),
108
- )
109
- })
110
- }
111
- #works_metrics_card(title: "Open Access", graph)[
112
- #grid(
113
- rows: auto, row-gutter: 10pt,
114
- columns: (1fr, 1fr, 1fr),
115
- column-gutter: 5pt,
116
-
117
- grid.cell(colspan: 3)[
118
- *Count:* {{ report.open_access_summary.model_dump().items()|sum(attribute="1") }}
119
- ],
120
-
121
- [#box(height: 7pt, width: 7pt, fill: PALETTE.at(0)) *Diamond:* {{report.open_access_summary.diamond}}],
122
- [#box(height: 7pt, width: 7pt, fill: PALETTE.at(3)) *Gold:* {{report.open_access_summary.gold}}],
123
- [#box(height: 7pt, width: 7pt, fill: PALETTE.at(1)) *Green:* {{report.open_access_summary.green}}],
124
- [#box(height: 7pt, width: 7pt, fill: PALETTE.at(5)) *Bronze:* {{report.open_access_summary.bronze}}],
125
- [#box(height: 7pt, width: 7pt, fill: PALETTE.at(2)) *Closed:* {{report.open_access_summary.closed}}],
126
- [#box(height: 7pt, width: 7pt, fill: PALETTE.at(4)) *Hybrid:* {{report.open_access_summary.hybrid}}],
127
- )
128
- ]
129
- ],
130
- )
131
-
132
- #align(center, text(11pt)[Works from {{ report.works[0].work.publication_year }} to {{ report.works[-1].work.publication_year }}])
133
- #table(
134
- columns: (auto, 3fr, auto, auto, auto, auto, auto, auto, auto),
135
- inset: 8pt,
136
- align: horizon,
137
- // Headers
138
- [], [*Title*], [*Type*], [*DOI*], [*Publication Date*], [*Cited by count*], [*Type A*], [*Type B*], [*OA*],
139
-
140
- // Content
141
- {% for work in report.works %}
142
- [#underline([#link(label("work_{{ loop.index }}"))[@work_{{ loop.index }}]])],
143
- [#"{{ work.work.title.replace('"', '\\"') }}"],
144
- [{{ work.work.type }}],
145
- [{% if work.work.ids.doi %}#underline([#link("{{ work.work.ids.doi }}")[DOI]]){% else %}-{% endif %}],
146
- [{{ work.work.publication_date }}],
147
- [{{ work.citation_summary.type_a_count + work.citation_summary.type_b_count }}],
148
- [{{ work.citation_summary.type_a_count }}],
149
- [{{ work.citation_summary.type_b_count }}],
150
- [{{ work.work.open_access.oa_status.value }}],
151
-
152
- {% endfor %}
153
- )
154
- #pagebreak()
@@ -1,109 +0,0 @@
1
- {% for work in report.works %}
2
-
3
- {% if not loop.first %}
4
- #pagebreak()
5
- {% endif %}
6
-
7
- == #text()[#"{{ work.work.title.replace('"', '\\"') }}"] <work_{{ loop.index }}>
8
-
9
- #linebreak()
10
-
11
- {% if work.work.abstract %}
12
- #text()[#"{{ work.work.abstract.replace('"', '\\"')|truncate(1000) }}"]
13
-
14
- #linebreak()
15
-
16
- {% endif %}
17
-
18
- // Cards
19
- #grid(
20
- columns: (1fr, 1fr, 1fr),
21
- column-gutter: 30pt,
22
- [
23
- #align(center)[_Authorships_]
24
- #parbreak()
25
- {% for authorship in work.work.authorships[:10] %}
26
- - *{{ authorship.author_position }}:* #underline([#link("{{ authorship.author.orcid or authorship.author.id }}")[#text({% if authorship.author.display_name == report.author.display_name %}rgb(SUCCESS){% endif %})[{{ authorship.author.display_name }}]]])
27
- {% endfor %}
28
- {% if work.work.authorships|length > 10 %}
29
- - *...*
30
- {% endif %}
31
- ],
32
- [
33
- #align(center)[_Open Access_]
34
- #parbreak()
35
- - *Status:* {{ work.work.open_access.oa_status.value }}
36
- {% if work.work.open_access.oa_url %}- *URL:* #underline([#link("{{ work.work.open_access.oa_url }}")[{{ work.work.open_access.oa_url }}]]){% endif %}
37
- ],
38
- [
39
- #align(center)[_Citation_]
40
- #parbreak()
41
- - *Count:* {{ work.citation_summary.type_a_count + work.citation_summary.type_b_count }}
42
- - *Type A:* {{ work.citation_summary.type_a_count }}
43
- - *Type B:* {{ work.citation_summary.type_b_count }}
44
- ],
45
- )
46
-
47
- #linebreak()
48
-
49
- // Cited by Table
50
- {% if work.cited_by %}
51
- #align(center, text(11pt)[_Cited by_])
52
- #table(
53
- columns: (auto, 3fr, auto, auto, auto, auto, auto),
54
- inset: 8pt,
55
- align: horizon,
56
- // Headers
57
- [], [*Title*], [*Type*], [*DOI*], [*Cite Type*], [*Publication Date*], [*Cited by count*],
58
-
59
- // Content
60
- {% for cited_by_work in work.cited_by %}
61
- [{{ loop.index }}],
62
- [#"{{ cited_by_work.work.title.replace('"', '\\"') }}"],
63
- [{{ cited_by_work.work.type }}],
64
- [{% if cited_by_work.work.ids.doi %}#underline([#link("{{ cited_by_work.work.ids.doi }}")[DOI]]){% else %}-{% endif %}],
65
- [{% if cited_by_work.citation_type.value == 0 %}#text(rgb(SUCCESS))[Type A]{% else %}#text(rgb(ERROR))[Type B]{% endif %}],
66
- [{{ cited_by_work.work.publication_date }}],
67
- [{{ cited_by_work.work.cited_by_count }}],
68
- {% endfor %}
69
- )
70
- {% endif %}
71
-
72
- // Sources Table
73
- {% if work.work.locations %}
74
- #align(center, text(11pt)[_Sources_])
75
- #table(
76
- columns: (auto, 3fr, 2fr, auto, auto, auto, auto, auto),
77
- inset: 8pt,
78
- align: horizon,
79
- // Headers
80
- [], [*Name*], [*Publisher or institution*], [*Type*], [*ISSN-L*], [*Is OA*], [*License*], [*Version*],
81
-
82
- // Content
83
- {% for location in work.work.locations %}
84
- {% if location.source %}
85
- [#underline([#link(label("source_{{ location.source.id.path.rpartition("/")[2] }}"))[{{ loop.index }}]])],
86
- [#underline([#link("{{ location.landing_page_url }}")[#"{{ location.source.display_name }}"]])],
87
- [{{ location.source.host_organization_name or "-" }}],
88
- [{{ location.source.type }}],
89
- [{{ location.source.issn_l or "-" }}],
90
- [{% if location.is_oa %}#text(rgb(SUCCESS))[True]{% else %}#text(rgb(ERROR))[False]{% endif %}],
91
- [{{ location.license or "-" }}],
92
- [{{ location.version.name or "-" }}],
93
- {% else %}
94
- [{{ loop.index }}],
95
- [#underline([#link("{{ location.landing_page_url }}")[#"{{ location.landing_page_url }}"]])],
96
- [-],
97
- [-],
98
- [-],
99
- [{% if location.is_oa %}#text(rgb(SUCCESS))[True]{% else %}#text(rgb(ERROR))[False]{% endif %}],
100
- [{{ location.license or "-" }}],
101
- [{{ location.version.name or "-" }}],
102
- {% endif %}
103
- {% endfor %}
104
- )
105
- {% endif %}
106
-
107
- {% endfor %}
108
-
109
- #pagebreak()