The goal of birddog is sniffing out emergence and trajectories in
scientific and patent literature.
Install the stable version from CRAN:
install.packages("birddog")
library(birddog)
Or the development version from GitHub:
# install.packages("remotes")
# remotes::install_github("roneyfraga/birddog")
install.packages("birddog", repos = c('https://roneyfraga.r-universe.dev', 'https://cloud.r-project.org'))
library(birddog)
read_openalex() – OpenAlex API or CSV exportsread_wos() – Web of Science BibTeX, RIS, plain-text, tab-delimitedsniff_network() – direct citation or bibliographic coupling networkssniff_components() – identify connected componentssniff_groups() – community detection (fast greedy, Louvain, Leiden,
walktrap, edge betweenness)sniff_groups_attributes() – group-level summary statistics and
horizon plotssniff_groups_keywords() – keyword frequency per groupsniff_groups_terms() – NLP-based phrase extractionsniff_groups_hubs() – hub classification (Zi-Pi, Guimera and Amaral
2005)sniff_groups_cumulative_citations() – per-document citation growthsniff_groups_influence() – directed citation influence between
groups: cross-citation matrix, debt / audience / Salton / surprise
indices, net flow, and source / broker / sink rolesplot_groups_influence_matrix() – directed influence heatmap, the
asymmetric twin of the confluence matrixplot_groups_influence_network() – net-influence spine (who, on
balance, leads whom)sniff_cct() – measures the pace of change (Kayal 1999)sniff_entropy() – normalized Shannon entropy for keyword diversity
(Shannon 1948; Pielou 1966)sniff_groups_cumulative() – cumulative clusterization over timesniff_groups_lineage() – Jaccard similarity DAG across yearsplot_groups_lineage_2d() / plot_groups_lineage_3d() – node-based
lineage plotssniff_trajectory_dag() / plot_trajectory_dag() – temporal DAG of
cluster-year nodes across the whole history
(plot_trajectory_dag_interactive() for the plotly view);
similarity = "coupling" routes the DAG by shared references instead
of document overlapsniff_trajectory_braid() – decompose the DAG into trajectories: one
central per final group (tr::cNgN) plus the absorbed tributaries
that merge into it (trN)sniff_trajectory_channel() – sibling detector that routes one global
optimal-path backbone per final group (potential-routed), an
alternative decomposition of the same DAGsubset() – focus a flow on a watershed or a predicate while it stays
a valid flow (subset(flow, target = "tr::c1g1"))is_flow() / validate_flow() – test and validate the birddog_flow
object contractsniff_trajectory_coherence() – score how content-coherent a flow’s
partition is, with a silhouette over an independent content signalsniff_trajectory_comparison() – compare two detectors head-to-head
by content coherence, reporting the contested nodessniff_trajectory_dynamics() – per-trajectory dynamic-state
indicators and life-cycle classification (emergence index, staying
power, reach), with optional CCT, entropy, hubs and community lenses
joined insniff_trajectory_cct() – per-year citation cycle time (renewal pace)
along each trajectorysniff_trajectory_entropy() – per-year keyword diversity (Pielou’s
J’) along each trajectorysniff_trajectory_hubs() – hub roles aggregated to each trajectory
(provincial vs bridging)sniff_trajectory_community() – community breadth (distinct authors)
of each trajectorysniff_trajectory_emergence_owners() – the authors who own each
living trajectory’s emergencesniff_trajectory_self_sufficiency() – per-trajectory
endogenous-growth index (1 - imported / size)sniff_trajectory_destination() – track where a dying trajectory’s
papers go, naming the trajectory that absorbed itsniff_trajectory_formation() – the inverse of destination: which
trajectories fed into a target (its feeders)sniff_trajectory_contribution() – documents an intermediate
trajectory contributes to a target in a given yearsniff_trajectory_confluence() – render-ready confluence forest of
the soft DAG (how the central trajectories form)plot_trajectory_dynamics() /
plot_trajectory_dynamics_interactive() – strategic map of trajectory
dynamic statesplot_trajectory_confluence() /
plot_trajectory_confluence_interactive() /
plot_trajectory_confluence_matrix() – braided-river confluence of
the central trajectoriesplot_trajectory_formation() – confluence of feeders into a target
trajectory (cumulative river timeline)plot_trajectory_dispersion() – timeline of the stagnant trajectory
and the one that absorbed itplot_trajectory_lines_2d() / plot_trajectory_lines_3d() –
variable-width trajectory line plots on a time layoutsniff_key_route() – key-route search (Liu and Lu 2012) with SPC
weightssniff_groups_stm_prepare() / sniff_groups_stm_run() – structural
topic modeling within groupsThe vignettes are available online here: