Skip to content

C API 0.99.15

Choose a tag to compare

@github-actions github-actions released this 07 Dec 13:23
· 729 commits to main since this release
ee5fdb3

Breaking changes

  • The tables argument to tsk_treeseq_init is no longer const, to allow for future no-copy tree sequence creation.
    (@benjeffery, #1718, #1719)

  • Additional consistency checks for mutation tables are now run by tsk_table_collection_check_integrity
    even when TSK_CHECK_MUTATION_ORDERING is not passed in. (@petrelharp, #1713, #1722)

  • num_tracked_samples and num_samples in tsk_tree_t are now typed as tsk_size_t
    (@benjeffery, #1723, #1727)

  • The previously deprecated option TSK_SAMPLE_COUNTS has been removed. (@benjeffery, #1744, #1761).

  • Individuals are no longer guaranteed or required to be topologically sorted in a tree sequence.
    tsk_table_collection_sort no longer sorts individuals.
    (@benjeffery, #1774, #1789)

  • The tsk_tree_t.left_root member has been removed. Client code can be updated
    most easily by using the equivalent tsk_tree_get_left_root function. However,
    it may be worth considering updating code to use either the standard traversal
    functions (which automatically iterate over roots) or to use the virtual_root
    member (which may lead to more concise code). (@jeromekelleher, #1796,
    #1862)

  • Rename tsk_tree_t.left and tsk_tree_t.right members to
    tsk_tree_t.interval.left and tsk_tree_t.interval.right respectively.
    (@jeromekelleher, #1686, #1913)

  • kastore is now vendored into this repo instead of being a git submodule. Developers need to run
    git submodule update. (@jeromekelleher, #1687, #1973)

  • Tree arrays such as left_sib, right_child etc. now have an additional
    "virtual root" node at the end. (@jeromekelleher, #1691, #1704)

  • num_samples, num_tracked_samples, marked and mark have been removed from
    tsk_tree_t. (@jeromekelleher, #1936)

Features

  • Add tsk_table_collection_individual_topological_sort to sort the individuals as this is no longer done by the
    default sort. (@benjeffery, #1774, #1789)

  • The default behaviour for table size growth is now to double the current size of the table,
    up to a threshold. To keep the previous behaviour, use (e.g.)
    tsk_edge_table_set_max_rows_increment(tables->edges, 1024), which results in adding
    space for 1024 additional rows each time we run out of space in the edge table.
    (@benjeffery, #5, #1683)

  • tsk_table_collection_check_integrity now has a TSK_CHECK_MIGRATION_ORDERING flag. (@petrelharp, #1722)

  • The default behaviour for ragged column growth is now to double the current size of the column,
    up to a threshold. To keep the previous behaviour, use (e.g.)
    tsk_node_table_set_max_metadata_length_increment(tables->nodes, 1024), which results in adding
    space for 1024 additional entries each time we run out of space in the ragged column.
    (@benjeffery, #1703, #1709)

  • Support for compiling the C library on Windows using msys2 (@jeromekelleher,
    #1742).

  • Add time_units to tsk_table_collection_t to describe the units of the time dimension of the
    tree sequence. This is then used to geerate an error if time_units is uncalibrated when
    using the branch lengths in statistics. (@benjeffery, #1644, #1760)

  • Add the TSK_LOAD_SKIP_TABLES option to load just the top-level information from a
    file. Also add the TSK_CMP_IGNORE_TABLES option to compare only the top-level
    information in two table collections. (@clwgg, #1882, #1854).

  • Add reference sequence.
    (@jeromekelleher, @benjeffery, #146, #1911, #1944, #1911)

  • Add the TSK_LOAD_SKIP_REFERENCE_SEQUENCE option to load a table collection
    without the reference sequence. Also add the TSK_CMP_IGNORE_REFERENCE_SEQUENCE
    option to compare two table collections without comparing their reference
    sequence. (@clwgg, #2019, #1971).

  • Add a "virtual root" to Tree arrays such as left_sib, right_child etc.
    The virtual root is appended to each array, has all real roots as its children,
    but is not the parent of any node. Simplifies traversal algorithms.
    (@jeromekelleher, #1691, #1704)

  • Add num_edges to tsk_tree_t to count the edges that define the topology of
    the tree. (@jeromekelleher, #1704)

  • Add the tsk_tree_get_size_bound function which returns an upper bound on the number of nodes reachable from
    the roots of a tree. Useful for tree stack allocations (@jeromekelleher, #1704).