Saltar a contenido

Redes (proyección)

Proyectar el corpus a redes bibliométricas. Networks orquesta los cinco proyectores —acoplamiento bibliográfico, co-citación, co-autoría, colaboración institucional y co-ocurrencia de keywords—, cada uno produciendo un NetworkArtifact listo para analizar o exportar.

Networks

API de alto nivel para construir redes bibliométricas desde un Corpus.

Todos los métodos son estáticos y puros (mismo input → mismo output).

Methods:

Name Description
build

Construye una red bibliométrica según la especificación dada.

quick

Construye las redes principales con configuración razonable.

build staticmethod

build(corpus: Corpus, spec: NetworkSpec) -> NetworkArtifact

Construye una red bibliométrica según la especificación dada.

Parameters:

Name Type Description Default
corpus Corpus

Corpus de origen.

required
spec NetworkSpec

Especificación declarativa de la red.

required

Returns:

Type Description
NetworkArtifact

NetworkArtifact con grafo, métricas y comunidades.

quick staticmethod

quick(
    corpus: Corpus, *, min_weight: int = 1
) -> list[NetworkArtifact]

Construye las redes principales con configuración razonable.

Arma specs para: acoplamiento bibliográfico (full), co-autoría, colaboración institucional y co-ocurrencia de keywords.

Co-citación (Hito 8b): se incluye si el corpus tiene cited_by_id poblado en al menos un paper (es decir, si pasó por el OpenAlexEnricher con la pasada 2). Si cited_by_id está vacío en todo el corpus, la co-citación se omite sin error (avisa por log).

Parameters:

Name Type Description Default
corpus Corpus

Corpus de origen.

required
min_weight int

Peso mínimo de arista (#159 — build --min-weight). Default 1 = sin filtro (comportamiento anterior intacto). Si es > 1, las aristas con peso < N se filtran en todas las redes.

1

Returns:

Type Description
list[NetworkArtifact]

Lista de 4 o 5 NetworkArtifact (coupling, co-autoría,

list[NetworkArtifact]

institución, co-word y, condicionalmente, co-citación).

NetworkArtifact dataclass

Resultado de proyectar y analizar un corpus con una NetworkSpec.

Agrupa el grafo, las métricas, las comunidades, la asortatividad, el layout y la especificación que lo originó.

Attributes:

Name Type Description
graph _Graph

Grafo NetworkX proyectado.

metrics dict[str, object]

Salida de network_metrics (densidad, componentes, clustering).

communities dict[Any, int] | None

Salida de detect_communities o None si no se calculó.

assortativity dict[str, object] | None

Salida de assortativity o None si no se calculó.

layout dict[Any, Any] | None

Dict nodo→coordenadas o None si no se calculó.

spec NetworkSpec

Especificación que generó este artefacto.

BibliographicCouplingProjector

Acoplamiento bibliográfico: dos papers están acoplados si comparten referencias.

Nodo = paper (id). Peso = nº de referencias compartidas (D1, D2). Scope por defecto: 'full' (corpus completo; ciudadano de primera, crítica #2). No requiere Enricher: las refs ya vienen en references_id (OpenAlex).

Methods:

Name Description
project

Proyecta el acoplamiento bibliográfico sobre la tabla.

project

project(
    table: Table,
    *,
    min_weight: int = MIN_WEIGHT_DEFAULT,
    scope: Literal["full", "seeds_only"] = "full",
) -> _Graph

Proyecta el acoplamiento bibliográfico sobre la tabla.

Parameters:

Name Type Description Default
table Table

Tabla Arrow canónica del Corpus.

required
min_weight int

Umbral mínimo de peso (default 1 = sin filtro).

MIN_WEIGHT_DEFAULT
scope Literal['full', 'seeds_only']

Alcance de la proyección.

'full'

Returns:

Type Description
_Graph

Grafo de acoplamiento con weight en cada arista.

CoCitationProjector

Co-citación: dos papers son co-citados si un tercero los cita a ambos.

Nodo = paper (id). Peso = nº de papers que citan a ambos (D1, D2). Scope por defecto: 'seeds_only' (la más cara; requiere 2º nivel de fetch).

Nota: la co-citación COMPLETA requiere el OpenAlexEnricher (Hito 8) para traer el 2º nivel de citantes. En Hito 2 se proyecta desde cited_by_id de los papers disponibles en el corpus. El resultado es válido para el subset de citantes ya presentes en la tabla.

Methods:

Name Description
project

Proyecta la red de co-citación desde cited_by_id.

project

project(
    table: Table,
    *,
    min_weight: int = MIN_WEIGHT_DEFAULT,
    scope: Literal["full", "seeds_only"] = "seeds_only",
) -> _Graph

Proyecta la red de co-citación desde cited_by_id.

Dos papers P1 y P2 están co-citados si comparten al menos un citante en cited_by_id. El peso es el nº de citantes compartidos (D1).

Para la co-citación completa, el corpus debe haber pasado por el OpenAlexEnricher (Hito 8). Sin enriquecimiento, solo se usan los citantes ya presentes en la tabla.

Parameters:

Name Type Description Default
table Table

Tabla Arrow canónica del Corpus.

required
min_weight int

Umbral mínimo de peso (default 1 = sin filtro).

MIN_WEIGHT_DEFAULT
scope Literal['full', 'seeds_only']

Alcance de la proyección. Default 'seeds_only'.

'seeds_only'

Returns:

Type Description
_Graph

Grafo de co-citación con weight en cada arista.

AuthorCollaborationProjector

Co-autoría: dos autores están conectados si co-firman un paper.

Nodo = autor (authors_id). Peso = nº de papers co-firmados (D1, D2). Scope por defecto: 'full'.

Methods:

Name Description
project

Proyecta la red de co-autoría sobre la tabla.

project

project(
    table: Table,
    *,
    min_weight: int = MIN_WEIGHT_DEFAULT,
    scope: Literal["full", "seeds_only"] = "full",
) -> _Graph

Proyecta la red de co-autoría sobre la tabla.

Parameters:

Name Type Description Default
table Table

Tabla Arrow canónica del Corpus.

required
min_weight int

Umbral mínimo de peso (default 1 = sin filtro).

MIN_WEIGHT_DEFAULT
scope Literal['full', 'seeds_only']

Alcance de la proyección.

'full'

Returns:

Type Description
_Graph

Grafo de co-autoría con weight en cada arista.

InstitutionCollaborationProjector

Co-autoría institucional: dos instituciones están conectadas si co-aparecen en un paper.

Nodo = institución (institutions_id). Peso = nº de papers con co-aparición (D1, D2). Scope por defecto: 'full'.

Methods:

Name Description
project

Proyecta la red de colaboración institucional sobre la tabla.

project

project(
    table: Table,
    *,
    min_weight: int = MIN_WEIGHT_DEFAULT,
    scope: Literal["full", "seeds_only"] = "full",
) -> _Graph

Proyecta la red de colaboración institucional sobre la tabla.

Parameters:

Name Type Description Default
table Table

Tabla Arrow canónica del Corpus.

required
min_weight int

Umbral mínimo de peso (default 1 = sin filtro).

MIN_WEIGHT_DEFAULT
scope Literal['full', 'seeds_only']

Alcance de la proyección.

'full'

Returns:

Type Description
_Graph

Grafo de colaboración institucional con weight en cada arista.

KeywordCoOccurrenceProjector

Co-ocurrencia de keywords: dos keywords co-ocurren si aparecen en el mismo paper.

Nodo = keyword (keywords_id). Peso = nº de papers donde co-ocurren (D1, D2). Scope por defecto: 'full'.

Methods:

Name Description
project

Proyecta la red de co-ocurrencia de keywords sobre la tabla.

project

project(
    table: Table,
    *,
    min_weight: int = MIN_WEIGHT_DEFAULT,
    scope: Literal["full", "seeds_only"] = "full",
) -> _Graph

Proyecta la red de co-ocurrencia de keywords sobre la tabla.

Parameters:

Name Type Description Default
table Table

Tabla Arrow canónica del Corpus.

required
min_weight int

Umbral mínimo de peso (default 1 = sin filtro).

MIN_WEIGHT_DEFAULT
scope Literal['full', 'seeds_only']

Alcance de la proyección.

'full'

Returns:

Type Description
_Graph

Grafo de co-ocurrencia de keywords con weight en cada arista.