Skip to content

Releases: leifeld/dna

DNA 3.0.10

01 Mar 19:00
Choose a tag to compare


dna-3.0.10.jar is the main DNA application. You need Java 11 or higher to use it, for example the Adoptium OpenJDK 11.

rDNA_3.0.10.tar.gz is the accompanying R package.

sample.dna is a toy database. The password for accessing the database is sample for all coders, including the admin coder.

bibliography.pdf is a bibliography listing 259 publications and theses using DNA.

Release notes:

  • MacOS bug fixed: On MacOS, the dialog windows for opening and saving databases and other files did not show any databases to select (see #244, #263, #267, and #268). This was due to a security issue in MacOS: DNA uses a Java Swing component called JFileChooser to display dialog windows for opening and saving files. MacOS does not trust this file dialog and only shows files to the native file chooser component. The new version therefore detects whether the user is on MacOS and, if so, uses a native AWT FileDialog instead, which uses the system's native file chooser, and thereby fixes the problem.
  • Bug fix in the time window functionality in the dna_network function in rDNA.
  • Bug fix in the way the combine setting in one-mode network export aggregated duplicate statements. This was correct in version 3.0.8 but not anymore in 3.0.9 and has been fixed again.
  • New bibliography with currently 259 publications and theses using DNA. The release comes with a PDF file, but the most recent version is always available here as a Markdown file (accessible from the project landing page as well).

DNA 3.0.9

08 Jan 22:06
Choose a tag to compare


The most important new functions are categorical qualifier variables, local document search, and new rDNA functions for networks, attributes, and barplots.

Important bug fixes include the batch document importer and the multi-statement editor.

The sample.dna database still has the password sample. The next release will have more R functions for data management.

Installation instructions and requirements are the same as for v3.0.7.

New features and bug fixes

  • Added categorical qualifier variables: In the network export (both in DNA and rDNA), it is now possible to use qualifier variables that are not boolean/binary or integer, but short text. For example, if you use the statement type for NPF Story Elements, you can connect two narrators or a narrator with a hero etc not just by co-occurrence in the same statement, but for instance only if they have the same value in another variable like "plot" or "villain" (the short text qualifier variable).
  • Added a document filter and a short-cut to the global search function. In the DNA main window, you can now simply press CTRL+F if a database is open to show the text search function. If you select one or more documents in the table before you open the search window, you can check a box for displaying only those search results that are in the contained in the documents selected in the document table. I.e., you can turn your search into a within-document search. See also #252.
  • New export defaults: Both in DNA and rDNA, I have set up the same sensible default parameter values for network export.
  • Fixed bugs in the batch document importer. In particular, the parsed date was not saved properly in the imported documents and was replaced by the date and time of import instead, and the default regex terms for parsing meta data from file names did not correspond to the ones in DNA 2. The date issue has been fixed, and the regex terms have been replaced with more useful defaults. See #239 for details. However, after thinking about this more, I generally recommend using file names of the form [title: some title] [author: some author] [section: some section].txt (and similar structures for other meta data). These are easy to parse using regex terms, for example (?<=\[title: ).+?(?=\]) for matching the title, (?<=\[author: ).+?(?=\]) for matching the author, and (?<=\[section: ).+?(?=\]) for matching the section. In any case, the batch import of documents should work well now.
  • Bug fix in the multiple statement editor: In the right-click context menu of the statement table, the function for editing multiple statements (i.e., recoding them at once) only worked with the default statement types but produced an error if custom statement types were used. This has been fixed. See #240.
  • Fixed an export bug: If the time window functionality in the network export was used and at least one of the time slices did not have any statements occurring, an error was thrown instead of producing an empty network.
  • Fixed an export bug with normalization: When normalization was used, zeros in the output file were replaced by NaN. They are now proper zeros.
  • The dna_network function has been added to rDNA again. It is now possible to create networks from the R console and retrieve them as matrices just like with the graphical network export in DNA. The resulting network objects have distinct class names for one- and two-mode networks, but are in essence matrix objects (just with additional attributes) and can be treated as such in R. There are as.matrix methods to cast these objects into proper matrix objects. The objects also come with print methods for pretty printing on the console. There is no plotting method yet for these objects. We aim to add this in the next release. But it is of course possible to use any network visualization package to display the data, for example the network, ggraph, or igraph packages.
  • Added fancy progress bars to several functions in rDNA.
  • Added a dna_barplot function to rDNA. The new function creates data necessary for creating barplots like in Leifeld and Haunss (2012, EJPR), Fergie et al. (2019, Addiction) and in some other papers. The data are saved in a dna_barplot object, which is just a data.frame with added attributes and can be treated as such. There is a fancy print method to display it nicely on the R console. The user can print and/or edit the data and then use the autoplot method to create the actual diagram, with several options. This approach should give the user the greatest flexibility to change the data or create custom plots with the data.
  • Added a dna_getAttributes function to rDNA to retrieve all entities and their attribute values and colors from the DNA database. The resulting object is a dna_attributes object, but it is simply a data.frame (just with some additional attributes) and can be treated as such in R. In the future, we will add functions to edit entities and attributes in the database from R.
  • Several other bug fixes. See commit history on GitHub for details.

Further release notes

Please view the installation instructions and requirements for release version 3.0.7 for more details.

Like in previous versions, the password for all coders in the sample database is "sample".

We are aiming to release the next version 3.0.10 in mid to late February 2023, with new rDNA functions for data management in R and some new analysis functions.

DNA 3.0.8

16 Jun 18:57
Choose a tag to compare

Some minor bug fixes since the last release a few days ago. Observe the commit history on 16 June 2022 for details. In particular:

  • Fixed a bug with the retrieval of statements for editing multiple statements in DNA.
  • Fixed some issues in the dna_jar function in rDNA.
  • Fixing a nonsensical warning in dna_saveConnectionProfile.
  • The argument order of dna_openDatabase was changed.

Note that the password for the sample database is still sample for all coders in the file.

DNA 3.0.7

12 Jun 12:51
Choose a tag to compare


DNA 3 is a major rewrite of DNA. It requires Java 11. The sample database requires the password sample for all users. There are not a lot of functions in the rDNA R package yet, so use DNA 2.0 beta 25 for now if you require R. Otherwise DNA 3 is ready for production. There is no manual yet. Work on improving DNA 3 and especially rDNA will continue over the summer.

Installation and requirements

  • DNA 3 requires Java 11 or higher (unlike DNA 2, which required Java 8 or higher). Please update your Java version if you have an old version. On the terminal or command line of your operating system, you can check which Java version you have by typing java --version. The recommended Java version is Adopt OpenJDK 11.
  • You can download the jar file and simply open it with a double-click if you have Java 11 installed on your computer.
  • You can also start DNA from the command line or terminal of your operating system by navigating to the directory where the jar file is stored and typing java -jar dna-3.0.7.jar. Note that DNA will be closed when you close the terminal window.
  • MacOS users occasionally report problems. DNA should in principle work just fine on MacOS. But some users with old MacOS versions (e.g., Catalina) have reported that they can only open DNA from the terminal (see above). Other MacOS users have reported that they first have to allow the DNA jar file to be opened via double-click in their system settings. See here for instructions.
  • On Linux/Unix systems, make sure you give the jar file executable permissions if you want to start it via double-click.
  • rDNA from now on requires a jar file with the same version as rDNA. The new dna_jar function allows you to find the jar file on your computer or download it to your computer. It is recommended that you put the jar file into the inst/java/ sub-directory of your rDNA package folder in your local R library tree. The dna_jar function will attempt to do this for you, but you might just as well put a copy of the jar file there manually.
  • The sample database was updated to the new DNA 3 file format. Please use the password sample to log into the database. This password is valid for all coders present in the sample database.
  • The .graphml files exported by DNA can be read by visone. It is recommended to download the latest visone jar file.
  • If you encounter any issues, please do feel free to open an issue in the issue tracker.

New features of DNA 3.0

  • Cleaner user interface, where many additional functions, such as regex highlighter or document editor, were moved into separate dialog windows which can be opened from the menu.
  • DNA 3 works with three kinds of DNA databases: SQLite, MySQL (and the more recent MariaDB, which is basically a rebranded version of MySQL), and PostgreSQL. MySQL and PostgreSQL are remote databases that can be run on a server on the internet for collaborative coding while SQLite is a file-based local database. All three were in principle supported in DNA 2, but the remote databases never worked very well. DNA 3 now offers full and equal support of all three database formats.
  • The table structure inside the databases has been improved for data safety and performance, and the databases are now accessed in a more secure way, where data loss (e.g., in the event of power outage or internet connection loss) is much less likely because data access is bundled in transactions.
  • DNA 3 provides comprehensive coder management with passwords and coder permissions and allows users to show or hide the documents and statements owned by other users.
  • Database access is in real time, which means changes are written immediately to the database. This means any changes are immediately available to other remote coders as well. (Though they have to refresh their data to see the changes).
  • By default, DNA 3 comes with a new statement type: the NPF Story Element, which operationalises the core aspects of the Narrative Policy Framework.
  • In DNA 3, you can create, edit, and delete statement types at any point in time, even after the database has been initially created.
  • DNA 3 allows you to create and remove new attribute variables for storing additional meta-data about actors, concepts etc. Previously, only type, alias, and notes were hardcoded as attribute variables for each variable.
  • It is possible to rename entities, such as actors or concepts, across all statements in the new attribute manager.
  • DNA 3 has an editor for multiple statements at once to recode them more effectively.
  • DNA 3 has a document editor, also for multiple documents at once, to recode documents more effectively.
  • A message log will keep track of any error messages and any changes you make. You can export log messages to XML or JSON files.
  • DNA 3 offers saving and opening connection profiles. They are like bookmarks for database connections for easier database access without having to re-enter the connection URL, password etc. each time. The details in the connection profiles are encrypted on your hard drive.
  • DNA 2 documents and statements can be imported into DNA 3 databases (but not vice-versa).

Things that don't work yet

While DNA 3 is an improvement over DNA 2 in many ways, the following things have not been added back in yet:

  • The rDNA R package has only a few rudimentary functions as of right now, which allow you to open and close databases and connection profiles, but there are no functions for creating networks and analysing the data in any way yet. This will be added step by step to future versions. If you require analysis in R, it is recommended that you work with DNA 2 for now. You can later convert the data to DNA 3 once rDNA has been updated with more useful functions.
  • There is no manual yet. Some of the details from the DNA 2 manual may still be valid, but don't rely on it. Documentation will be created when time permits, but first rDNA needs to be improved.
  • DNA 3 has the same network export functionality as DNA 2. Eventually, new network export functionalities will be added, and they will permit more powerful analyses.

DNA 2.0 beta 25

11 Sep 22:22
Choose a tag to compare

Changes since the last release:

  • Added a new dna_multiclust function, which applies a dozen clustering and community detection techniques to a discourse network and computes modularity, for a single network or a time-window series of networks. If a time-window series of networks is used, the largest modularity score of all cluster solutions is saved in a separate list and can be plotted as a curve using the new dna_plotModularity function.
  • Removed the dna_timeWindow function because its functionality is replaced by dna_multiclust and dna_plotModularity.
  • Added a new dna_dendrogram function, which computes the cluster solution with the highest modularity using the dna_multiclust function and then plots a dendrogram for this cluster solution. It is also possible to set various colors and other settings for the dendrogram easily.
  • Added a new dna_polarization function, which applies a genetic algorithm to find the extent of polarization in a discourse network or a time-window series of networks. If a time-window series of networks is used to compute polarization, the new dna_plotPolarization function can plot a) a curve for the polarization measure over time and b) convergence diagnostics of the genetic algorithm.
  • Stress majorization is now used as the default network layout in dna_plotNetwork, following changes in the ggraph and graphlayouts packages.
  • Some bugfixes.

DNA 2.0 beta 24

17 Feb 20:54
Choose a tag to compare
DNA 2.0 beta 24 Pre-release

Changes since the last release:

  • Coder management in rDNA using new functions dna_addCoder, dna_removeCoder, and dna_updateCoder.
  • Management of regular expressions in rDNA using new functions dna_addRegex, dna_getRegex, and dna_removeRegex.
  • Settings management in rDNA using new functions dna_getSettings and dna_updateSetting.
  • Added "title" and "id" as additional document-level variables for the DNA network export via GUI and dna_network.
  • Permitting network export without a qualifier variable using dna_network.
  • Added outfile and fileFormat arguments to dna_network to save networks directly to a file from R if desired.
  • Bugfixes in DNA and rDNA.

Install this version of the rDNA package with:

install_github("leifeld/dna/rDNA@v2.0-beta.24", INSTALL_opts = "--no-multiarch")

DNA 2.0 beta 23

06 Feb 13:10
Choose a tag to compare
DNA 2.0 beta 23 Pre-release

Changes since the last release:

  • Additional data management functions for the rDNA package, including dna_getStatements, dna_setStatements, dna_addStatement, dna_removeStatement, dna_getStatementTypes, dna_addStatementType, dna_removeStatementType, dna_renameStatementType, dna_colorStatementType, dna_getVariables, dna_addVariable, dna_removeVariable, dna_renameVariable, and dna_recastVariable.
  • Changes in dna_downloadJar: The function now recognizes the latest stable release version on GitHub and downloads to the R library path by default.
  • Changes in dna_init: The function now selects the latest jar file in the library path automatically. If none is present, it searches the current working directory for a jar file. It is still possible to provide the filename to override this behavior.
  • Lots of bugfixes both in DNA and rDNA.

Install this version of the rDNA package with:

            INSTALL_opts = "--no-multiarch")

DNA 2.0 beta 22

20 Oct 21:06
Choose a tag to compare
DNA 2.0 beta 22 Pre-release

This new beta version contains...

  • improved time window algorithms (implemented by @leifeld) for smoothed polarization measures over time (see the dna_timeWindow and dna_plotTimeWindow functions in the rDNA package) and
  • a workflow for estimating one- or two-dimensional item response theory (IRT) models based on DNA data using the MCMCpack package (implemented by @TimHenrichsen) for ideological scaling of actors and concepts (see rDNA functions dna_scale1dbin, dna_scale1dord, dna_scale2dbin, dna_scale2dord, plot.dna_scale, print.dna_scale, and dna_plotScale).

Install this version of the R package with:

devtools::install_url("", INSTALL_opts = "--no-multiarch")

DNA 2.0 beta 21

21 May 18:37
Choose a tag to compare
DNA 2.0 beta 21 Pre-release

Added several new functions to rDNA, which is now a more complete tool for qualitative content analysis and discourse network analysis.

With this new release, rDNA is now more than just an R package to retrieve network data from DNA. Several new functions such as dna_cluster(), dna_barplot(), dna_plotFrequency(), dna_plotDendro(), dna_plotHeatmap(), dna_plotHive(), dna_plotCoordinates(), dna_plotNetwork(), dna_plotTimeWindow(), dna_addDocument(), dna_getDocuments(), dna_removeDocument() , dna_setDocuments() and dna_getAttributes() were implemented. This means that rDNA now covers many common steps of a discourse network analysis with dedicated functions in R.

The new functions are also covered in a new version of the manual.

This release also fixed several bugs in DNA and added the ability to specify the width of popup windows in the GUI.

DNA 2.0 beta 20

26 Feb 19:32
Choose a tag to compare
DNA 2.0 beta 20 Pre-release

Added completed manual, additional functions in rDNA and fixed a few minor issues.

With this new release, DNA now has a complete guide in form of the "Discourse Network Analyzer Manual". The manual helps users to get started with DNA, describes the functionality of DNA and showcases some application scenarios of the work with rDNA.

There are also several new functions in rDNA: dna_sample, dna_timeWindow, dna_plotTimeWindow, dna_plotCentrality, dna_cluster and dna_plotCluster. See the help pages of the rDNA package for more details.