Release date: 2026-01-06
The default value for chart_level parameter has been
changed from "summary" to "term".
Rationale: The solution-term level format (Fiss,
2011 notation) is the standard for academic publications, where each
column represents one prime implicant (configuration). The previous
default ("summary") aggregated all configurations at each
threshold into a single column, which obscured the distinction between
different sufficient paths.
Column header format updated: - Old format:
thrY=6_M1 - New format: thrY = 6 (M1)
(consistent with the paper format)
Affected functions: - generate_report()
— default chart_level is now "term" -
generate_cross_threshold_chart() — default
chart_level is now "term"
Migration: If you prefer the previous behavior
(threshold-level summary), explicitly specify
chart_level = "summary":
generate_report(result, "report.md", chart_level = "summary")
generate_cross_threshold_chart(result, conditions, chart_level = "summary")Release date: 2026-01-03
Added support for solution-term level configuration charts following Fiss (2011) notation. This feature allows generating charts where each column represents a single prime implicant (configuration), which is the standard format for academic publications.
New parameter for
generate_report():
chart_level — Character. Either "summary"
(default) or "term".
"summary": Threshold-level summaries where each column
represents one threshold, showing all conditions that appear in any
configuration at that threshold."term": Solution-term level (Fiss-style) where each
column represents one prime implicant (sufficient configuration).
Recommended for academic publications.New functions:
generate_cross_threshold_chart() — Generate
configuration charts from sweep results with chart_level
option.parse_solution_terms() — Internal function to parse
solution expressions into individual terms.get_condition_status() — Internal function to determine
condition presence/absence in a term.generate_term_level_chart() — Internal function for
term-level chart generation.generate_threshold_level_chart() — Internal function
for threshold-level chart generation.Example:
# Threshold-level summary (default)
generate_report(result, "report.md", chart_level = "summary")
# Solution-term level (Fiss-style, recommended for publications)
generate_report(result, "report.md", chart_level = "term")When the solution is X3 + X1*X2, the term-level chart
will show two separate columns (thrY=7_M1 for
X3 and thrY=7_M2 for X1*X2),
while the summary-level chart shows one column (thrY=7)
with all three conditions marked.
Release date: 2026-01-03
Fixed non-working code examples in all vignettes (Tutorial and Reproducible, both EN/JA):
Yvar/Xvars to
outcome/conditionsctSweepM() examples to use
sweep_list parameter instead of old
sweep_vars/sweep_rangedat parameter to all
generate_report() exampleshead(res$summary) to
summary(res) for consistency with S3 methodsoutcome, conditions)dat parameter to generate_report()
examplestest_quick.R — Minimal verification script (6
tests)test_tutorial_code.R — Comprehensive verification
script (11 tests)Release date: 2026-01-01
When multiple logically equivalent solutions (M1, M2, M3…) exist, configuration charts now automatically include a note explaining that M1 is displayed.
New parameters for
generate_report():
solution_note — Logical. If TRUE (default), adds note
when multiple solutions existsolution_note_style — "simple" (default)
or "detailed" (includes EPIs)solution_note_lang — "en" (default) or
"ja" for JapaneseNew parameters for
config_chart_from_paths():
n_sol — Number of equivalent solutions (triggers note
if > 1)solution_note — Logical. Whether to add solution
notesolution_note_style — "simple" or
"detailed"epi_list — Character vector of EPIs for detailed
notesNew exported functions:
generate_solution_note() — Generate solution note
textidentify_epi() — Identify Essential Prime Implicants
from multiple solutionsExample output (simple):
*Note: 2 logically equivalent solutions were identified. This table presents configurations based on M1.*
Example output (detailed with EPIs):
*Note: 3 logically equivalent solutions were identified (M1-M3). This table presents configurations based on M1. All solutions share the essential prime implicants: A·B and C.*
Example (Japanese):
*注: 論理的に等価な2つの解が得られた。本表はM1に基づく構成を示す。*
Release date: 2025-12-31
Configuration charts are now automatically included in reports
generated by generate_report().
New parameters for
generate_report():
include_chart — Logical. If TRUE (default), includes
Fiss-style configuration chartschart_symbol_set — Symbol set: "unicode"
(default), "ascii", or "latex"Example:
# Generate report with configuration charts (default)
generate_report(result, "my_report.md", format = "full")
# Generate report without charts
generate_report(result, "my_report.md", include_chart = FALSE)
# Generate report with LaTeX symbols (for PDF/academic papers)
generate_report(result, "my_report.md", chart_symbol_set = "latex")generate_config_chart() — Generate chart from QCA
solution objectconfig_chart_from_paths() — Generate chart from path
strings (e.g., “AB~C”)config_chart_multi_solutions() — Generate separate
charts for multiple solutionsFeatures:
"unicode" (● / ⊗),
"ascii" (O / X), "latex" (\(\bullet\) / \(\otimes\))Fixed incorrect use of “Core Conditions” terminology:
| Old (incorrect) | New (correct) | Meaning |
|---|---|---|
extract_mode = "core" |
extract_mode = "essential" |
Mode for extracting shared terms |
core_terms |
essential_terms |
Terms in ALL solutions |
peripheral_terms |
selective_terms |
Terms in SOME solutions |
Migration: Change extract_mode = "core"
to extract_mode = "essential".
docs/TSQCA_Terminology_Guide_EN.md — English
terminology guidedocs/TSQCA_Terminology_Guide_JA.md — Japanese
terminology guideREADME_JP.md — Japanese READMEFixed incorrect use of “Core Conditions” terminology. The terms that appear in ALL equivalent solutions (M1, M2, M3…) are now correctly called Essential Prime Implicants (EPI), following standard Boolean minimization terminology.
Changed terms:
| Old (incorrect) | New (correct) | Meaning |
|---|---|---|
extract_mode = "core" |
extract_mode = "essential" |
Mode for extracting shared terms |
core_terms |
essential_terms |
Terms in ALL solutions |
peripheral_terms |
selective_terms |
Terms in SOME solutions |
| “Core Conditions” | “Essential Prime Implicants (EPI)” | Report labels |
| “Peripheral Terms” | “Selective Prime Implicants (SPI)” | Report labels |
Why this matters:
The term “Core Conditions” in QCA literature (Fiss, 2011) refers to conditions appearing in both parsimonious AND intermediate solutions—a comparison between solution types. This is distinct from terms shared across multiple equivalent solutions of the same type, which are properly called “Essential Prime Implicants” in Boolean algebra terminology.
Migration:
If you used extract_mode = "core" in previous versions,
change to extract_mode = "essential". The output structure
is identical; only the names have changed for methodological
accuracy.
Added functions for generating Fiss-style configuration charts (Table 5 format) commonly used in QCA publications.
New functions:
generate_config_chart() — Generate configuration chart
from QCA solution objectconfig_chart_from_paths() — Generate chart from path
strings (e.g., “AB~C”)config_chart_multi_solutions() — Generate separate
charts for multiple solutionsFeatures:
"unicode" (● / ⊗),
"ascii" (O / X), "latex" (\(\bullet\) / \(\otimes\))Example:
# From QCA solution object
chart <- generate_config_chart(sol, symbol_set = "unicode")
cat(chart)
# From path strings
paths <- c("A*B*~C", "A*D")
chart <- config_chart_from_paths(paths)
cat(chart)result$detailsgenerate_report() for dtSweep and
ctSweepM resultsotSweep_result,
dtSweep_result, ctSweepS_result,
ctSweepM_result inherit from tsqca_resultprint() methods for all result types
summary() methods for all result types
$summary, $details, and
$params components still worksreturn_details = FALSE, returns plain data.frame
without S3 classYvar to outcome and
Xvars to conditions in all sweep functions
Yvar, Xvars) are still
supported with deprecation warningsoutcome = "~Y")
truthTable() convention for
negationotSweep(),
dtSweep(), ctSweepS(),
ctSweepM()generate_report() now displays “(negated)” indicator
when analyzing negated outcomesYvar → outcome (recommended)Xvars → conditions (recommended)$params now includes:
outcome: New argument name (also stores ~Y
notation if negated)conditions: New argument namenegate_outcome: Boolean indicating if outcome was
negated# Old syntax (still works, but shows deprecation warning)
result <- otSweep(dat, Yvar = "Y", Xvars = c("X1", "X2"), ...)
# New syntax (recommended)
result <- otSweep(dat, outcome = "Y", conditions = c("X1", "X2"), ...)
# Negated outcome (new feature)
result <- otSweep(dat, outcome = "~Y", conditions = c("X1", "X2"), ...)extract_mode parameter to all sweep functions
(otSweep(), dtSweep(),
ctSweepS(), ctSweepM()) with three options:
"first" (default): Returns only the first solution
(M1), maintaining backward compatibility"all": Returns all intermediate solutions concatenated
(e.g., “M1: AB; M2: AC”)"essential": Returns essential prime implicants common
to all solutions, plus peripheral and unique termsget_n_solutions() helper function to count the
number of intermediate solutionsgenerate_report() function for automatic markdown
report generation with two formats:
"full": Comprehensive report including all analysis
details, solution formulas, and fit measures"simple": Condensed format designed for journal
manuscript supplementary materials$params for full reproducibilityincl.cut, n.cut, pri.cut,
dir.exp, include)return_details default from FALSE
to TRUE for better integration with
generate_report()n.cut default from 2 to
1 to align with QCA package conventionspri.cut default from 0.5 to
0 to align with QCA package conventionsreturn_details = TRUE, results are now accessed
via $summary (e.g.,
result$summary$expression)n_solutions column when using
extract_mode = "all" or "essential"selective_terms and unique_terms
columns when using extract_mode = "essential"ctSweepS(): Single-condition X sweep (CTS-QCA)ctSweepM(): Multi-condition X sweep (MCTS-QCA)otSweep(): Outcome Y sweep (OTS-QCA)dtSweep(): Two-dimensional X and Y sweep (DTS-QCA)qca_bin(),
qca_extract()