Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions RcppTskit/DESCRIPTION
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ BugReports: https://github.com/HighlanderLab/RcppTskit/issues
Depends:
R (>= 4.0.0)
Imports:
bit64,
methods,
R6,
Rcpp (>= 1.0.8),
Expand Down
2 changes: 2 additions & 0 deletions RcppTskit/NAMESPACE
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ export(tskit_version)
importFrom(R6,R6Class)
importFrom(Rcpp,cppFunction)
importFrom(Rcpp,registerPlugin)
importFrom(bit64,as.integer64)
importFrom(bit64,is.integer64)
importFrom(methods,is)
importFrom(reticulate,import)
importFrom(reticulate,is_py_object)
Expand Down
3 changes: 3 additions & 0 deletions RcppTskit/NEWS.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,9 @@ and releases adhere to [Semantic Versioning](https://semver.org/spec/v2.0.0.html
constructor argument from `pointer` to `xptr`.
- Ensured `TableCollection$tree_sequence()` matches `tskit Python` API:
it now builds indexes on the `TableCollection`, if indexes are not present.
- We now use `bit64::integer64` (signed 64 bit integer) instead of `int` aiming
to approach `tsk_size_t` in `tskit C` (unsigned 64 bit integer); in low-level
`rtsk_treeseq_get_num_*()` wrappers and count/metadata-length fields.
- TODO

### Maintenance
Expand Down
8 changes: 8 additions & 0 deletions RcppTskit/R/RcppExports.R
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
# Generated by using Rcpp::compileAttributes() -> do not edit by hand
# Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393

test_validate_options <- function(options, supported) {
.Call(`_RcppTskit_test_validate_options`, options, supported)
}

test_rtsk_wrap_tsk_size_t_as_integer64 <- function(value, force_range_error = FALSE) {
.Call(`_RcppTskit_test_rtsk_wrap_tsk_size_t_as_integer64`, value, force_range_error)
}

#' @title Report the version of installed kastore C API
#' @details The version is stored in the installed header \code{kastore.h}.
#' @return A named vector with three elements \code{major}, \code{minor}, and
Expand Down
1 change: 1 addition & 0 deletions RcppTskit/R/RcppTskit-package.R
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
#' @keywords internal
#'
#' @useDynLib RcppTskit, .registration = TRUE
#' @importFrom bit64 as.integer64 is.integer64
#' @importFrom methods is
#' @importFrom R6 R6Class
#' @importFrom Rcpp cppFunction registerPlugin
Expand Down
102 changes: 53 additions & 49 deletions RcppTskit/R/RcppTskit.R
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,9 @@ tc_read <- tc_load
# compared to Python API, so also not available here.
# @return A list with two data.frames; the first contains tree sequence
# properties and their value; the second contains the numbers of rows in
# tables and the length of their metadata.
# tables and the length of their metadata. All columns are character as they
# contain different types of values. Use specific functions if you want to
# obtain non-character values
# @seealso \code{\link[=TreeSequence]{TreeSequence$print}} on how this
# function is used and presented to users.
# @examples
Expand Down Expand Up @@ -243,17 +245,17 @@ rtsk_treeseq_print <- function(ts) {
"file_uuid"
),
value = c(
tmp_summary[["num_samples"]],
tmp_summary[["num_trees"]],
tmp_summary[["sequence_length"]],
tmp_summary[["discrete_genome"]],
tmp_summary[["has_reference_sequence"]],
tmp_summary[["time_units"]],
tmp_summary[["discrete_time"]],
tmp_summary[["min_time"]],
tmp_summary[["max_time"]],
tmp_metadata[["ts"]] > 0,
tmp_summary[["file_uuid"]]
as.character(tmp_summary[["num_samples"]]),
as.character(tmp_summary[["num_trees"]]),
as.character(tmp_summary[["sequence_length"]]),
as.character(tmp_summary[["discrete_genome"]]),
as.character(tmp_summary[["has_reference_sequence"]]),
as.character(tmp_summary[["time_units"]]),
as.character(tmp_summary[["discrete_time"]]),
as.character(tmp_summary[["min_time"]]),
as.character(tmp_summary[["max_time"]]),
as.character(tmp_metadata[["ts"]] > 0),
as.character(tmp_summary[["file_uuid"]])
)
),
tables = data.frame(
Expand All @@ -268,24 +270,24 @@ rtsk_treeseq_print <- function(ts) {
"mutations"
),
number = c(
tmp_summary[["num_provenances"]],
tmp_summary[["num_populations"]],
tmp_summary[["num_migrations"]],
tmp_summary[["num_individuals"]],
tmp_summary[["num_nodes"]],
tmp_summary[["num_edges"]],
tmp_summary[["num_sites"]],
tmp_summary[["num_mutations"]]
as.character(tmp_summary[["num_provenances"]]),
as.character(tmp_summary[["num_populations"]]),
as.character(tmp_summary[["num_migrations"]]),
as.character(tmp_summary[["num_individuals"]]),
as.character(tmp_summary[["num_nodes"]]),
as.character(tmp_summary[["num_edges"]]),
as.character(tmp_summary[["num_sites"]]),
as.character(tmp_summary[["num_mutations"]])
),
has_metadata = c(
NA, # provenances have no metadata
tmp_metadata[["populations"]] > 0,
tmp_metadata[["migrations"]] > 0,
tmp_metadata[["individuals"]] > 0,
tmp_metadata[["nodes"]] > 0,
tmp_metadata[["edges"]] > 0,
tmp_metadata[["sites"]] > 0,
tmp_metadata[["mutations"]] > 0
as.character(tmp_metadata[["populations"]] > 0),
as.character(tmp_metadata[["migrations"]] > 0),
as.character(tmp_metadata[["individuals"]] > 0),
as.character(tmp_metadata[["nodes"]] > 0),
as.character(tmp_metadata[["edges"]] > 0),
as.character(tmp_metadata[["sites"]] > 0),
as.character(tmp_metadata[["mutations"]] > 0)
)
)
)
Expand All @@ -299,7 +301,9 @@ rtsk_treeseq_print <- function(ts) {
# \code{\link{rtsk_table_collection_metadata_length}}.
# @return A list with two data.frames; the first contains table collection
# properties and their value; the second contains the numbers of rows in
# tables and the length of their metadata.
# tables and the length of their metadata. All columns are character as they
# contain different types of values. Use specific functions if you want to
# obtain non-character values
# @seealso \code{\link[=TableCollection]{TableCollection$print}} on how this
# function is used and presented to users.
# @examples
Expand All @@ -323,12 +327,12 @@ rtsk_table_collection_print <- function(tc) {
"has_index"
),
value = c(
tmp_summary[["sequence_length"]],
tmp_summary[["has_reference_sequence"]],
tmp_summary[["time_units"]],
tmp_metadata[["tc"]] > 0,
tmp_summary[["file_uuid"]],
tmp_summary[["has_index"]]
as.character(tmp_summary[["sequence_length"]]),
as.character(tmp_summary[["has_reference_sequence"]]),
as.character(tmp_summary[["time_units"]]),
as.character(tmp_metadata[["tc"]] > 0),
as.character(tmp_summary[["file_uuid"]]),
as.character(tmp_summary[["has_index"]])
)
),
tables = data.frame(
Expand All @@ -343,24 +347,24 @@ rtsk_table_collection_print <- function(tc) {
"mutations"
),
number = c(
tmp_summary[["num_provenances"]],
tmp_summary[["num_populations"]],
tmp_summary[["num_migrations"]],
tmp_summary[["num_individuals"]],
tmp_summary[["num_nodes"]],
tmp_summary[["num_edges"]],
tmp_summary[["num_sites"]],
tmp_summary[["num_mutations"]]
as.character(tmp_summary[["num_provenances"]]),
as.character(tmp_summary[["num_populations"]]),
as.character(tmp_summary[["num_migrations"]]),
as.character(tmp_summary[["num_individuals"]]),
as.character(tmp_summary[["num_nodes"]]),
as.character(tmp_summary[["num_edges"]]),
as.character(tmp_summary[["num_sites"]]),
as.character(tmp_summary[["num_mutations"]])
),
has_metadata = c(
NA, # provenances have no metadata
tmp_metadata[["populations"]] > 0,
tmp_metadata[["migrations"]] > 0,
tmp_metadata[["individuals"]] > 0,
tmp_metadata[["nodes"]] > 0,
tmp_metadata[["edges"]] > 0,
tmp_metadata[["sites"]] > 0,
tmp_metadata[["mutations"]] > 0
as.character(tmp_metadata[["populations"]] > 0),
as.character(tmp_metadata[["migrations"]] > 0),
as.character(tmp_metadata[["individuals"]] > 0),
as.character(tmp_metadata[["nodes"]] > 0),
as.character(tmp_metadata[["edges"]] > 0),
as.character(tmp_metadata[["sites"]] > 0),
as.character(tmp_metadata[["mutations"]] > 0)
)
)
)
Expand Down
20 changes: 10 additions & 10 deletions RcppTskit/inst/include/RcppTskit_public.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,16 @@ void rtsk_table_collection_dump(SEXP tc, std::string &filename,
SEXP rtsk_treeseq_copy_tables(SEXP ts, int options = 0);
SEXP rtsk_treeseq_init(SEXP tc, int options = 0);

int rtsk_treeseq_get_num_provenances(SEXP ts);
int rtsk_treeseq_get_num_populations(SEXP ts);
int rtsk_treeseq_get_num_migrations(SEXP ts);
int rtsk_treeseq_get_num_individuals(SEXP ts);
int rtsk_treeseq_get_num_samples(SEXP ts);
int rtsk_treeseq_get_num_nodes(SEXP ts);
int rtsk_treeseq_get_num_edges(SEXP ts);
int rtsk_treeseq_get_num_trees(SEXP ts);
int rtsk_treeseq_get_num_sites(SEXP ts);
int rtsk_treeseq_get_num_mutations(SEXP ts);
SEXP rtsk_treeseq_get_num_provenances(SEXP ts);
SEXP rtsk_treeseq_get_num_populations(SEXP ts);
SEXP rtsk_treeseq_get_num_migrations(SEXP ts);
SEXP rtsk_treeseq_get_num_individuals(SEXP ts);
SEXP rtsk_treeseq_get_num_samples(SEXP ts);
SEXP rtsk_treeseq_get_num_nodes(SEXP ts);
SEXP rtsk_treeseq_get_num_edges(SEXP ts);
SEXP rtsk_treeseq_get_num_trees(SEXP ts);
SEXP rtsk_treeseq_get_num_sites(SEXP ts);
SEXP rtsk_treeseq_get_num_mutations(SEXP ts);
double rtsk_treeseq_get_sequence_length(SEXP ts);
bool rtsk_treeseq_get_discrete_genome(SEXP ts);
bool rtsk_treeseq_has_reference_sequence(SEXP ts);
Expand Down
46 changes: 36 additions & 10 deletions RcppTskit/src/RcppExports.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,30 @@ Rcpp::Rostream<true>& Rcpp::Rcout = Rcpp::Rcpp_cout_get();
Rcpp::Rostream<false>& Rcpp::Rcerr = Rcpp::Rcpp_cerr_get();
#endif

// test_validate_options
int test_validate_options(const int options, const int supported);
RcppExport SEXP _RcppTskit_test_validate_options(SEXP optionsSEXP, SEXP supportedSEXP) {
BEGIN_RCPP
Rcpp::RObject rcpp_result_gen;
Rcpp::RNGScope rcpp_rngScope_gen;
Rcpp::traits::input_parameter< const int >::type options(optionsSEXP);
Rcpp::traits::input_parameter< const int >::type supported(supportedSEXP);
rcpp_result_gen = Rcpp::wrap(test_validate_options(options, supported));
return rcpp_result_gen;
END_RCPP
}
// test_rtsk_wrap_tsk_size_t_as_integer64
SEXP test_rtsk_wrap_tsk_size_t_as_integer64(const std::string value, const bool force_range_error);
RcppExport SEXP _RcppTskit_test_rtsk_wrap_tsk_size_t_as_integer64(SEXP valueSEXP, SEXP force_range_errorSEXP) {
BEGIN_RCPP
Rcpp::RObject rcpp_result_gen;
Rcpp::RNGScope rcpp_rngScope_gen;
Rcpp::traits::input_parameter< const std::string >::type value(valueSEXP);
Rcpp::traits::input_parameter< const bool >::type force_range_error(force_range_errorSEXP);
rcpp_result_gen = Rcpp::wrap(test_rtsk_wrap_tsk_size_t_as_integer64(value, force_range_error));
return rcpp_result_gen;
END_RCPP
}
// kastore_version
Rcpp::IntegerVector kastore_version();
RcppExport SEXP _RcppTskit_kastore_version() {
Expand Down Expand Up @@ -103,7 +127,7 @@ BEGIN_RCPP
END_RCPP
}
// rtsk_treeseq_get_num_provenances
int rtsk_treeseq_get_num_provenances(const SEXP ts);
SEXP rtsk_treeseq_get_num_provenances(const SEXP ts);
RcppExport SEXP _RcppTskit_rtsk_treeseq_get_num_provenances(SEXP tsSEXP) {
BEGIN_RCPP
Rcpp::RObject rcpp_result_gen;
Expand All @@ -114,7 +138,7 @@ BEGIN_RCPP
END_RCPP
}
// rtsk_treeseq_get_num_populations
int rtsk_treeseq_get_num_populations(const SEXP ts);
SEXP rtsk_treeseq_get_num_populations(const SEXP ts);
RcppExport SEXP _RcppTskit_rtsk_treeseq_get_num_populations(SEXP tsSEXP) {
BEGIN_RCPP
Rcpp::RObject rcpp_result_gen;
Expand All @@ -125,7 +149,7 @@ BEGIN_RCPP
END_RCPP
}
// rtsk_treeseq_get_num_migrations
int rtsk_treeseq_get_num_migrations(const SEXP ts);
SEXP rtsk_treeseq_get_num_migrations(const SEXP ts);
RcppExport SEXP _RcppTskit_rtsk_treeseq_get_num_migrations(SEXP tsSEXP) {
BEGIN_RCPP
Rcpp::RObject rcpp_result_gen;
Expand All @@ -136,7 +160,7 @@ BEGIN_RCPP
END_RCPP
}
// rtsk_treeseq_get_num_individuals
int rtsk_treeseq_get_num_individuals(const SEXP ts);
SEXP rtsk_treeseq_get_num_individuals(const SEXP ts);
RcppExport SEXP _RcppTskit_rtsk_treeseq_get_num_individuals(SEXP tsSEXP) {
BEGIN_RCPP
Rcpp::RObject rcpp_result_gen;
Expand All @@ -147,7 +171,7 @@ BEGIN_RCPP
END_RCPP
}
// rtsk_treeseq_get_num_samples
int rtsk_treeseq_get_num_samples(const SEXP ts);
SEXP rtsk_treeseq_get_num_samples(const SEXP ts);
RcppExport SEXP _RcppTskit_rtsk_treeseq_get_num_samples(SEXP tsSEXP) {
BEGIN_RCPP
Rcpp::RObject rcpp_result_gen;
Expand All @@ -158,7 +182,7 @@ BEGIN_RCPP
END_RCPP
}
// rtsk_treeseq_get_num_nodes
int rtsk_treeseq_get_num_nodes(const SEXP ts);
SEXP rtsk_treeseq_get_num_nodes(const SEXP ts);
RcppExport SEXP _RcppTskit_rtsk_treeseq_get_num_nodes(SEXP tsSEXP) {
BEGIN_RCPP
Rcpp::RObject rcpp_result_gen;
Expand All @@ -169,7 +193,7 @@ BEGIN_RCPP
END_RCPP
}
// rtsk_treeseq_get_num_edges
int rtsk_treeseq_get_num_edges(const SEXP ts);
SEXP rtsk_treeseq_get_num_edges(const SEXP ts);
RcppExport SEXP _RcppTskit_rtsk_treeseq_get_num_edges(SEXP tsSEXP) {
BEGIN_RCPP
Rcpp::RObject rcpp_result_gen;
Expand All @@ -180,7 +204,7 @@ BEGIN_RCPP
END_RCPP
}
// rtsk_treeseq_get_num_trees
int rtsk_treeseq_get_num_trees(const SEXP ts);
SEXP rtsk_treeseq_get_num_trees(const SEXP ts);
RcppExport SEXP _RcppTskit_rtsk_treeseq_get_num_trees(SEXP tsSEXP) {
BEGIN_RCPP
Rcpp::RObject rcpp_result_gen;
Expand All @@ -191,7 +215,7 @@ BEGIN_RCPP
END_RCPP
}
// rtsk_treeseq_get_num_sites
int rtsk_treeseq_get_num_sites(const SEXP ts);
SEXP rtsk_treeseq_get_num_sites(const SEXP ts);
RcppExport SEXP _RcppTskit_rtsk_treeseq_get_num_sites(SEXP tsSEXP) {
BEGIN_RCPP
Rcpp::RObject rcpp_result_gen;
Expand All @@ -202,7 +226,7 @@ BEGIN_RCPP
END_RCPP
}
// rtsk_treeseq_get_num_mutations
int rtsk_treeseq_get_num_mutations(const SEXP ts);
SEXP rtsk_treeseq_get_num_mutations(const SEXP ts);
RcppExport SEXP _RcppTskit_rtsk_treeseq_get_num_mutations(SEXP tsSEXP) {
BEGIN_RCPP
Rcpp::RObject rcpp_result_gen;
Expand Down Expand Up @@ -502,6 +526,8 @@ END_RCPP
}

static const R_CallMethodDef CallEntries[] = {
{"_RcppTskit_test_validate_options", (DL_FUNC) &_RcppTskit_test_validate_options, 2},
{"_RcppTskit_test_rtsk_wrap_tsk_size_t_as_integer64", (DL_FUNC) &_RcppTskit_test_rtsk_wrap_tsk_size_t_as_integer64, 2},
{"_RcppTskit_kastore_version", (DL_FUNC) &_RcppTskit_kastore_version, 0},
{"_RcppTskit_tskit_version", (DL_FUNC) &_RcppTskit_tskit_version, 0},
{"_RcppTskit_rtsk_treeseq_load", (DL_FUNC) &_RcppTskit_rtsk_treeseq_load, 2},
Expand Down
Loading
Loading