Skip to content

author_stats

src.models.author_stats

Author statistics schema.

Generated by generate_author_stats.pyauthors.json, authors.yml. Variants: systems_authors.yml, security_authors.yml.

ArtifactPaper

Bases: BaseModel

A paper that has an associated artifact evaluation.

Source code in src/models/author_stats.py
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class ArtifactPaper(BaseModel):
    """A paper that has an associated artifact evaluation."""

    title: str = Field(description="Paper title.")
    conference: str = Field(description="Conference abbreviation.")
    year: int = Field(description="Publication year.")
    badges: list[str] = Field(
        description=(
            "Artifact evaluation badges. Canonical values: 'available', "
            "'functional', 'reproduced', 'reusable', 'replicated'."
        ),
    )
    category: Literal["systems", "security"] = Field(description="Research domain.")
    artifact_citations: int = Field(ge=0, description="Citation count for this artifact.")

    model_config = {"extra": "forbid"}

PlainPaper

Bases: BaseModel

A published paper without an artifact evaluation.

Source code in src/models/author_stats.py
32
33
34
35
36
37
38
39
class PlainPaper(BaseModel):
    """A published paper without an artifact evaluation."""

    title: str = Field(description="Paper title.")
    conference: str = Field(description="Conference abbreviation.")
    year: int = Field(description="Publication year.")

    model_config = {"extra": "forbid"}

AuthorStats

Bases: BaseModel

Complete statistics for a single author.

Generated by generate_author_stats.py.

Source code in src/models/author_stats.py
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
class AuthorStats(BaseModel):
    """Complete statistics for a single author.

    Generated by ``generate_author_stats.py``.
    """

    author_id: int | None = Field(
        default=None,
        ge=1,
        description="Stable integer identifier referencing the canonical author_index.",
    )
    name: str = Field(description="Full name in DBLP format (may include disambiguation suffix).")
    display_name: str = Field(description="Name without DBLP disambiguation suffix.")
    affiliation: str = Field(description="Normalized institution affiliation.")
    artifact_count: int = Field(ge=0, description="Total artifacts authored.")
    total_papers: int = Field(ge=0, description="Total papers at tracked conferences.")
    total_papers_by_conf: dict[str, int] = Field(
        description="Mapping of conference name to paper count at that conference.",
    )
    total_papers_by_conf_year: dict[str, dict[str, int]] = Field(
        description="Nested mapping: conference name → { year → count }.",
    )
    artifact_rate: float = Field(ge=0, le=100, description="Percentage of papers with artifacts.")
    repro_rate: float = Field(ge=0, le=100, description="Percentage of artifacts with a reproducibility badge.")
    functional_rate: float = Field(ge=0, le=100, description="Percentage of artifacts with a functional badge.")
    category: Literal["systems", "security", "both", "unknown"] = Field(
        description="Research domain based on conferences published at.",
    )
    conferences: list[str] = Field(description="List of conferences where author has published.")
    years: list[int] = Field(description="Sorted list of years with activity.")
    year_range: str = Field(pattern=r"^\d{4}-\d{4}$", description="Activity range in 'YYYY-YYYY' format.")
    recent_count: int = Field(ge=0, description="Number of papers in the last 3 years.")
    artifact_citations: int = Field(ge=0, description="Total citation count for artifacts.")
    badges_available: int = Field(ge=0, description="Count of 'available' badges across all artifacts.")
    badges_functional: int = Field(ge=0, description="Count of 'functional' badges across all artifacts.")
    badges_reproducible: int = Field(ge=0, description="Count of 'reproduced' badges across all artifacts.")
    papers: list[ArtifactPaper] = Field(
        default_factory=list,
        description="DEPRECATED in YAML output (use paper_ids). Retained in JSON for backward compatibility.",
    )
    papers_without_artifacts: list[PlainPaper] = Field(
        default_factory=list,
        description="DEPRECATED in YAML output (use papers_without_artifact_ids). Retained in JSON.",
    )
    paper_ids: list[int] = Field(
        default_factory=list,
        description="List of paper index IDs for artifact papers. References papers.json.",
    )
    papers_without_artifact_ids: list[int] = Field(
        default_factory=list,
        description="List of paper index IDs for non-artifact papers. References papers.json.",
    )

    model_config = {"extra": "forbid"}