NEWS
SemNeT 2.1.1
- UPDATE: 'pf' gains 'method' for the distance between responses ('"chebyshev"', the default and the distance before 2.1.0, '"euclidean"', '"manhattan"', '"cosine"', '"hamming"', '"jaccard"', or '"paulsen"', the response-order distance of 2.1.0); the distance is a modeling choice, and only '"paulsen"' needs response order (the others also accept a binary matrix)
- ADD: 'pf' 'q' and 'r' arguments (Pathfinder parameters; defaults 'NULL', meaning n - 1, and 'Inf' are the previous behavior, computed with MST-Pathfinder); other settings use the general Pathfinder definition, and the documentation suggests an 'r' for each distance
- FIX: 'cn' returned the wrong nodes whenever the network had isolated words: the largest component was found on a network without its isolates but indexed into the full one, so the returned nodes (and their edges) were not the largest component
- FIX: 'convert2igraph' treated a node whose signed edges cancel (e.g., +1 and -1) as unconnected; it now requires a symmetric network, keeps the matrix form with a single edge, and documents that it drops nodes without edges
- FIX: 'forward_flow' with 'type = "free"' now treats '""', '" "', and '"NA"' as missing (as the fluency format and the documentation already did), returns participants in their input order, and stops on missing or infinite 'embeddings' (it previously set them to 0)
- FIX: 'bootstrap_SemNeT' node bootstrap of raw responses with 'cn', 'nrw', or 'pf' dropped response positions instead of words; raw responses are converted to ordered responses (words) first
- FIX: 'permutation_SemNeT' stopped when a permuted sample had a response every participant gave and 'sim' was '"cor"' or '"phi"'; such responses are now dropped from both samples
- FIX: 'random_network_test' left undefined ('NaN') random-network measures in the mean, which turned its p-value into the minimum possible; they are now left out with a warning. Each input network now has its own random networks (they previously shared one set of seeds), 'type' ('"arithmetic"' or '"harmonic"' ASPL) is added, and the random-network mean and standard deviation are no longer rounded to 4 digits
- FIX: ‘random_walk' no longer lets a draw fall past a node’s last neighbor because of rounding, and a single level of steps no longer gives a row named '"Steps"'
- FIX: 'response_analysis' no longer rounds p-values to 3 decimals (they are kept to 3 significant digits)
- FIX: 'bad_response' ignores whitespace around responses ('" "', '" "', '" NA"')
- FIX: Louvain aggregation ('q') counted the self-loops of an aggregated community twice
- UPDATE: 'cc' requires a symmetric network, and 'type = "global"' returns 'NaN' for a network without connected triples ('na.rm' then only affects the per-node attribute)
- UPDATE: 'cn' requires a whole-number 'window' smaller than the mean number of responses (Goni et al., 2011), and warns and returns an empty network when no pair co-occurs significantly; the documentation states that only the largest component is returned
- UPDATE: 'finalize', 'bootstrap_SemNeT', and 'permutation_SemNeT' require 'minimum_cases' of at least 1; messages no longer suggest that 'finalize' removes responses everyone gave
- UPDATE: 'seed' must be a whole number (a fraction below 1 silently meant random results)
- UPDATE: 'compare_networks' restores the graphical parameters and, for 'placement = "match"', requires the same node names
- UPDATE: legacy 'CN' accepts 'cutoff'
- UPDATE: ‘plot.bootstrap_SemNeT' draws a bootstrap confidence interval of each group’s value below its boxplot ('ci', 'ci_level', 'ci_type'; not drawn for node bootstraps)
- ADD: ‘plot.permutation_SemNeT' plots each measure’s permutation null distribution as a raincloud plot with the observed difference, the central range of the null distribution below the boxplot ('null_range', 'level'), and the p-value in each panel title
- FIX: the Shiny app's ‘cores' input had no effect because the background task’s worker reported one available core; ‘cores' is now capped at the machine’s cores instead
- ADD: the Shiny app's Permutation tab has a "Generate Permutation Plot" button ('plot.permutation_SemNeT')
- UPDATE: the Shiny app's Export tab only shows the download buttons of results that have finished
- UPDATE: the Shiny app's Permutation tab tests all measures (ASPL, CC, and Q) by default; the measures are checkboxes
- ADD: the Shiny app's Load Data tab has a "Random Seed" input (0 for none), passed to every analysis that uses randomness (network measures' modularity, random networks, bootstrap, permutation, and random walks) for reproducible results
- UPDATE: the Shiny app's Bootstrap and Permutation tabs show the same tables as ‘print.bootstrap_test_SemNeT' and 'print.permutation_SemNeT' (header, run settings, network sizes, comparison, table, and notes); the Spreading Activation tab shows each node’s activation at the selected time step
- ADD: ‘cc' 'type': '"average"' (default; the average of the nodes’ local clustering coefficients, as before) or '"global"' (3 x triangles / connected triples; 'igraph::transitivity(type = "global")'); the weighted (and signed) global coefficient is the ratio of the summed triangle intensities (Onnela et al., 2005) to the number of connected triples; 'semantic_network_measures' and 'random_network_test' pass it on as 'cc_type'
- REMOVE: 'tmfg' 'depend' argument (an asymmetric matrix is an error; the documented rule was never what the code did); the legacy 'TMFG' ignores 'depend' with a warning
SemNeT 2.1.0 (2026-10-14)
- FIX: group tests in 'bootstrap_test_SemNeT' and 'test.bootSemNeT' inflated statistics by 'sqrt(iter)' (Tu, Chodorow, Brooks, Ezrina, & Valian, under review); recompute any results
- UPDATE: 'bootstrap_test_SemNeT' now returns bootstrap intervals of within-iteration group contrasts ('ci_level', 'adjust', 'ci_type', 'power', 'legacy' arguments)
- UPDATE: 'bootstrap_test_SemNeT' node bootstraps are summarized descriptively (no interval or p-value)
- UPDATE: 'bootstrap_test_SemNeT' legacy parametric tests need 'legacy = TRUE' and always warn
- UPDATE: 'bootstrap_SemNeT' '$summary' standard error is no longer divided by 'sqrt(iter)'; observed (full-data) statistics are stored in '$observed'
- ADD: 'bootstrap_test_SemNeT' Wald 'z' and 'p_value' for normal intervals (the default)
- ADD: 'bootstrap_test_SemNeT' 'bias_se' (|bias| / 'se'; above about 0.25 the bootstrap is off-centre from the observed difference), printed as 'bias/se'
- ADD: 'bootstrap_test_SemNeT' and 'permutation_SemNeT' print a note under their summary tables that they should always be run together
- FIX: 'cn' 'alpha' had no effect
- FIX: 'cn' counted co-occurrences on uncleaned responses, so placeholders ('" "', '"NA"') emptied the network
- FIX: 'nrw' counted every adjacent pair twice per participant; pairs are now counted once (counts are numbers of participants)
- FIX: 'pf' dropped zero-distance pairs, leaving identical responses unlinked
- FIX: 'binary2responses' ignored response order in an ordered numeric matrix
- FIX: 'permutation_SemNeT' computed 'q' on the weighted network; all measures are now unweighted
- FIX: 'aspl' per-node averages use distances to the other nodes; weighted 'aspl' rejects negative weights
- FIX: 'similarity' method '"euclid"' returned a distance, which 'tmfg' treated as a similarity; it now returns '1 / (1 + d)'
- FIX: 'tmfg' stops on undefined similarities and on asymmetric input without 'depend = TRUE'
- FIX: 'equate' rejects raw responses and duplicated response names
- FIX: 'forward_flow' treats '""', '" "', and '"NA"' as missing and requires 'min_response' of at least 2
- FIX: 'q' with 'signed = TRUE' weighted the negative term by N / (P - N) instead of N / (P + N) (Gomez et al., 2009); also fixed in {EGAnet}
- FIX: 'cohens_d' pools standard deviations by degrees of freedom (agrees with the equal-variance t-test) and handles groups of one
- FIX: ‘random_walk' 5-unique-node statistic depended on the other network’s walk; isolated start nodes and zero variation handled
- FIX: 'random_network_test' summed weights for edge counts; networks are binarized, p-values are Monte Carlo, and a degree-preserving null is added
- UPDATE: 'cn' gains 'cutoff' for 'enrich = TRUE' (default '0.50', was a hardcoded '0.35') and warns that there is no established value
- UPDATE: 'pf' now uses the response-order distance of Paulsen et al. (1996) and needs response order (raw or ordered responses, not 0/1 data)
- UPDATE: 'semantic_network_measures' defaults to 'weighted = FALSE' (as documented) and gains 'na.rm', 'signed', and 'type' (passed to 'cc', 'q', and 'aspl')
- UPDATE: 'cc' gains 'na.rm' and no longer rounds per-node values; weighted 'cc' divides weights by the largest absolute weight
- UPDATE: 'similarity' stops on missing or infinite values (and non-0/1 data for '"angular"', '"faith"', '"jaccard"', '"rr"'); 'finalize' stops on missing values and non-whole 'minimum_cases'
- UPDATE: 'q' requires a symmetric network and returns 'NaN' for a network without edges
- UPDATE: 'seed = 0' means random results, like 'NULL'
- UPDATE: 'response_analysis' returns 'vocabulary' (Jaccard overlap and rarefied richness) and ignores never-given responses in binary input
- UPDATE: ‘random_walk' no longer reports p-values (they only reflect 'iter'); differences, Monte Carlo intervals, and Cohen’s d are given instead
- UPDATE: 'bootstrap_SemNeT' node bootstrap drops the same nodes from every group in an iteration
- UPDATE: 'bootstrap_SemNeT' retries draws only for correlation similarities ('"cor"', '"phi"'); plot shows the full-data value
- UPDATE: 'permutation_SemNeT' tests several measures at once and returns 'diagnostics'; printed table columns follow 'bootstrap_test_SemNeT' ('null_range' and 'null_sd' in place of 'CI' and 'se')
- UPDATE: 'permutation_SemNeT' gains two-sided options '"two_tailed_centered"' and '"two_tailed_doubled"', tolerates floating-point ties, and aligns samples of different widths or vocabularies
- UPDATE: Shiny Bootstrap tab shows intervals instead of t-test/ANOVA/ANCOVA; labels and captions updated
- ADD: 'aspl' 'type' argument ('"arithmetic"', the default and previous behavior, or '"harmonic"')
- ADD: 'seed' for 'bootstrap_SemNeT' and 'permutation_SemNeT'; each resample gets its own seed, so results do not depend on 'cores' or 'set.seed'
- ADD: 'random_network_test' 'seed' argument
- ADD: ‘bootstrap_test_SemNeT' prints and stores the groups’ full-sample values ('observed_1', 'observed_2' in each 'table'), like 'permutation_SemNeT'
- UPDATE: 'q' seeds now line up between 'bootstrap_SemNeT' and 'permutation_SemNeT': 'permutation_SemNeT' scores the observed data (first permutation) with 'seed' itself, as 'bootstrap_SemNeT' does for its full-data networks, so their empirical 'q' differences match (they previously used different Louvain seeds, which changes 'q' slightly); 'bootstrap_SemNeT' gives each iteration one community-detection seed shared by all groups
- ADD: 'print' methods for 'bootstrap_test_SemNeT' and 'permutation_SemNeT'
SemNeT 2.0.0 (2026-09-12)
- FIX: 'equate' compared vocabulary size rather than shared words
- FIX: duplicated group names passed via '...' silently hid results
- FIX: weighted 'CC' returned 'NaN' for negative weights
- FIX: 'ASPL' zeroed unreachable pairs, understating ASPL in disconnected networks
- FIX: 'TMFG' with 4 nodes iterated backwards and fewer than 4 nodes gave silent 'NA's
- FIX: 'NRW' rejected valid ordered response matrices
- FIX: 'test.bootSemNeT' errored when all three measures were requested
- FIX: 'permSemNeT' dropped 'NRW' 'threshold' ('thresold' typo), 'CN' 'enrich', and passed 'threshold' as 'window'
- FIX: several '1:n' ranges ran backwards on empty or size-1 inputs
- FIX: ‘q' is reproducible via 'seed' (it depended on R’s global RNG through 'igraph::cluster_louvain')
- FIX: 'forward_flow' 'type = "free"' mismatched or crashed on numeric participant IDs (GitHub Issue #10)
- FIX: Shiny Spreading Activation all-zero output and BRM upload failure (GitHub Issue #11)
- FIX: Shiny app called unexported functions ('responses2binary', 'read_uploaded_file') that failed under 'library(SemNeT)'
- FIX: Shiny background analyses ran sequentially and froze the app; they now run in the background with a live progress bar
- FIX: Shiny progress bar jumped around with 'cores > 1', and 'cores' above 1 failed inside background workers
- UPDATE: full rebuild of the package's internals and the Shiny app; every pre-2.0.0 exported name still works
- UPDATE: 'TMFG', 'ASPL', 'CC', 'CN', 'NRW', 'PF', and 'Q' are now lowercase ('tmfg', 'aspl', ...); the old names remain as wrappers
- UPDATE: 'bootSemNeT', 'test.bootSemNeT', 'randwalk', 'randnet.test', 'sim.fluency', 'response.analysis', 'semnetmeas', and 'compare_nets' are now 'bootstrap_SemNeT', 'bootstrap_test_SemNeT', 'random_walk', 'random_network_test', 'simulate_fluency', 'response_analysis', 'semantic_network_measures', and 'compare_networks'; the old names remain as wrappers
- UPDATE: 'bootSemNeT', 'randwalk', and 'randnet.test' default to sequential processing instead of auto-detecting cores
- UPDATE: 'finalize' arguments renamed from 'rmat' and 'minCase' to 'data' and 'minimum_cases'
- UPDATE: Shiny maximum ‘cores' is the host’s core count minus one
- UPDATE: 'bootstrap_SemNeT' and 'permutation_SemNeT' no longer hold every resampled network in memory ('keep_networks' argument); 'random_network_test' reduces each random network immediately
- UPDATE: dropped 'pbapply', 'dplyr', 'plyr', 'magrittr', 'scales', and 'philentropy'; added 'future', 'future.apply', and 'progressr'; 'ggplot2' is now 'Suggests'
- UPDATE: compiled C code (Louvain, signed modularity, xoshiro256++) vendored from {EGAnet}; 'NeedsCompilation' is now 'yes'
- UPDATE: one file per exported function, a consistent 'bootstrap_SemNeT' result schema, vectorized loops, and removal of dead code
- ADD: 'permutation_SemNeT' (the old 'permSemNeT' was internal and undocumented)
- ADD: 'forward_flow' is back, using user-supplied word embeddings (no network access)
- ADD: 'responses2binary' and 'read_uploaded_file' are exported
- ADD: 'find_textcleaner_objects' and a Load Data picker in the Shiny app for {SemNetCleaner} objects
SemNeT 1.4.4 (2023-08-12)
- FIX: minor fix to get back on CRAN
- TODO: major refactor for the entire package to increase future reliability
SemNeT 1.4.3 (2021-09-04)
- FIX: switching to different network estimations in Shiny app
SemNeT 1.4.2 (2021-06-22)
- FIX: bug in reset of Shiny application
- FIX: name ordering of 'bootSemNeT' plots
- FIX: p-value bug in random networks tests
- ADD: t-tests to 'test.bootSemNeT' and Shiny app
SemNeT 1.4.1 (2020-12-04)
- FIX: unequal nodes and edges in 'test.bootSemNeT' (GitHub Issue #3)
- FIX: 'PF' remove zeros bug (when there were no zero distances, then an empty matrix was given)
- UPDATE: tooltips added to network estimation methods in Shiny
- UPDATE: associated Shiny packages messages suppressed on Shiny startup
- UPDATE: message for Shiny results output
- UPDATE: 'test.bootSemNeT' no longer uses number of nodes in ANCOVA
- UPDATE: added minimum number ('type = "num"') and proportion ('type = "prop"') of co-occurrences argument to 'NRW'
- UPDATE: Shiny with new 'NRW' arguments
- UPDATE: Shiny now provides effect sizes for partial eta squared in Bootstrap Network Analyses tab
SemNeT 1.4.0 (2020-09-26)
- FIX: ‘randwalk' bug with ’steps' and 'reps' argument
- FIX: Shiny 'Clear Results' for new analyses
- FIX: output for animation plots in Shiny
- UPDATE: output names for 'randwalk'
- UPDATE: Shiny interface is condensed and more step-by-step progressive
- UPDATE: Shiny includes random walk analysis
- UPDATE: Shiny includes spreading activation analysis (thanks to Cythina Siew)
- UPDATE: progress bar for some Shiny analyses
- UPDATE: S3method for animation plots
- UPDATE: citations added to Shiny analyses
- UPDATE: ANOVAs controlling for the number of nodes and edges is now the statistical test in 'test.bootSemNeT'
- ADD: animation plot for spreading activation analysis in Shiny
- ADD: permutation test to SemNeT ('permSemNeT) and Shiny
- ADD: functions to convert data into other softwares format: SNAFU ('convert2snafu') and igraph ('convert2igraph')
SemNeT 1.3.0 (2020-06-09)
- FIX: output of two-way ANOVA in 'test.bootSemNeT'
- FIX: 'groups' argument in 'test.bootSemNeT'
- UPDATE: added integration of SemNetCleaner output into 'SemNeTShiny'
- UPDATE: 'compare.nets' has changed to 'compare_nets'
- UPDATE: 'cosine' was added to internal functions to remove archived package from dependencies
- ADD: Several semantic network estimation methods (see 'CN', 'NRW', and 'PF') -- these are included in the Shiny app
- MOVE: 'equate' and 'finalize' moved from SemNetCleaner to SemNeT
- REMOVE: foreach and doParallel dependencies were removed (all parallelization is through the pbapply package)
- REMOVE: SemNetCleaner dependency was removed to allow SemNeT to operate independently -- all necessary functions from SemNetCleaner have been moved to internal functions
- CHANGE: 'partboot' is now 'bootSemNeT'
- CHANGE: 'plot.partboot' is now 'plot.bootSemNeT'
- CHANGE: 'partboot.test' is now 'test.bootSemNeT'
SemNeT 1.2.0 (2020-03-22)
- FIX: 'groups' argument in 'org.plot'
- UPDATE: moved several functions to internal to clean up package
- ADD: Shiny app
- ADD: binary responses matrices from animals verbal fluency data associated with the 'SemNetCleaner' package (open.animals)
SemNeT 1.1.3 (2020-02-07)
- added extended ANOVA capabilities to 'partboot.test' (e.g., two-way ANOVA)
SemNeT 1.1.2 (2019-10-28)
- fixed bug for weighted modularity in 'semnetmeas'
- updated citation (PsyArXiv)
- changed y-axis in plots for 'partboot' to read as integers (as added black dot for mean in the scatterplots under the raincloud)
- added vignette for analyzing semantic networks
- added data for plots in vignette
SemNeT 1.1.1 (2019-09-27)
SemNeT 1.1.0
- bug fixes
- changed 'semnetmeas' to allow calculation of any combination of measures
- 'partboot', 'partboot.test', 'plot.partboot', 'randnet.test', and 'compare.nets' now handle groups greater than 2
SemNeT 1.0.0 (2019-08-05)
- serious, and I mean serious, revamp of functions (all for the better)
- moved most functions over to 'SemNetCleaner' and now only consists of methods and measures for semantic network analysis
- added a 'sim.fluency' function for toy examples in CRAN checks
- added two datasets 'one.result' and 'two.result' for toy examples in CRAN checks
- 'partboot.plot' changed to 'plot.partboot' and added to S3 methods
- 'partboot.test' now outputs a list for each network measure
SemNeT 0.9.9
- animals.database: a database for animals was added
- animals.misnomer: common misnomers for animals was added
- textcleaner: added database functionality, which makes the cleaning process more accurate, efficient, and reproducible
- several wrapper functions added to aid textcleaning from a database
SemNeT 0.1.2
- autoConverge: significantly improved interface
- separated all function files into individual files
- semnetcleaner (changed to textcleaner): added argument to input participants by row or column; ids now included for output; added output to show what spellcheck changed
- destr: improved functionality to allow selection of separating character
- randwalk: added a function to simulate random walks on the network to examine spontaenous spreading activation
- bin2resp: a function to change cleaned binary response data back into character data for each participant
SemNeT 0.1.1
- cosine: added cosine similarity
- semnetboot: changed name to partboot and added the cosine similarity
- semnetmeas: moved from NetworkToolbox
- plot.partboot: a function that generates "raindrop" plots for bootstrapped data
- org.plot: an organization function for plot.partboot (not for individual use)
- convert2cytoscape: added a function to convert a network matrix into a sparse matrix for Cytoscape visualization
- added new examples with corresponding data files
SemNeT 0.1.0
- autoConverge: created an automated converge function to eliminate the manual converge process
- autoDeStr: created an automated de-string function to eliminate most manual de-stringing
- fine-tuned most functions
- semnetboot: moved from package NetworkToolbox