diff --git a/DESCRIPTION b/DESCRIPTION index 2d1969d..f4fd0a4 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,8 +1,8 @@ Package: SeqArray Type: Package Title: Data Management of Large-Scale Whole-Genome Sequence Variant Calls -Version: 1.45.4 -Date: 2024-09-21 +Version: 1.45.5 +Date: 2024-09-29 Depends: R (>= 3.5.0), gdsfmt (>= 1.31.1) Imports: methods, parallel, IRanges, GenomicRanges, GenomeInfoDb, Biostrings, S4Vectors diff --git a/NEWS b/NEWS index ed94c5f..342c0c0 100644 --- a/NEWS +++ b/NEWS @@ -6,6 +6,15 @@ UTILITIES o `seqGetData()` return NULL, if 'var.name=character()' +CHANGES IN VERSION 1.44.3 +------------------------- + +UTILITIES + + o update the C codes according to '_R_USE_STRICT_R_HEADERS_=true' & + '_R_CXX_USE_NO_REMAP_=true' + + CHANGES IN VERSION 1.44.2 ------------------------- diff --git a/src/ConvGDS2VCF.cpp b/src/ConvGDS2VCF.cpp index 644c66f..80a251e 100755 --- a/src/ConvGDS2VCF.cpp +++ b/src/ConvGDS2VCF.cpp @@ -469,7 +469,7 @@ inline static void ExportHead(SEXP X) inline static void ExportInfoFormat(SEXP X, size_t info_st) { // variable list - SEXP VarNames = getAttrib(X, R_NamesSymbol); + SEXP VarNames = Rf_getAttrib(X, R_NamesSymbol); //==== INFO ====// @@ -528,7 +528,7 @@ inline static void ExportInfoFormat(SEXP X, size_t info_st) { // name, "fmt.*" SEXP D = VECTOR_ELT(X, i + cnt_info + info_st); - if (!isNull(D)) + if (!Rf_isNull(D)) { if (i > 0 || info_st > 6) *pLine++ = ':'; @@ -569,7 +569,7 @@ COREARRAY_DLL_EXPORT SEXP SEQ_Quote(SEXP text, SEXP dQuote) tmp.push_back('\"'); } } - SET_STRING_ELT(ans, i, mkChar(tmp.c_str())); + SET_STRING_ELT(ans, i, Rf_mkChar(tmp.c_str())); } UNPROTECT(2); diff --git a/src/ConvToGDS.cpp b/src/ConvToGDS.cpp index 77941f5..36bb8ab 100755 --- a/src/ConvToGDS.cpp +++ b/src/ConvToGDS.cpp @@ -2,7 +2,7 @@ // // ConvToGDS.cpp: format conversion // -// Copyright (C) 2015-2018 Xiuwen Zheng +// Copyright (C) 2015-2024 Xiuwen Zheng // // This file is part of SeqArray. // @@ -87,7 +87,7 @@ COREARRAY_DLL_EXPORT SEXP SEQ_ConvBED2GDS(SEXP GenoNode, SEXP Num, SEXP File, // 'readBin(File, raw(), 3)' SEXP R_Read_Call = PROTECT( LCONS(ReadBinFun, LCONS(File, - LCONS(NEW_RAW(0), LCONS(ScalarInteger(nPack), R_NilValue))))); + LCONS(NEW_RAW(0), LCONS(Rf_ScalarInteger(nPack), R_NilValue))))); vector dstgeno(nGeno); static const C_UInt8 cvt1[4] = { 1, 3, 1, 0 }; @@ -99,7 +99,7 @@ COREARRAY_DLL_EXPORT SEXP SEQ_ConvBED2GDS(SEXP GenoNode, SEXP Num, SEXP File, for (int i=0; i < n; i++) { // read genotypes - SEXP val = eval(R_Read_Call, Rho); + SEXP val = Rf_eval(R_Read_Call, Rho); unsigned char *srcgeno = (unsigned char *)RAW(val); // unpacked diff --git a/src/ConvVCF2GDS.cpp b/src/ConvVCF2GDS.cpp index 3452bb6..1013f25 100755 --- a/src/ConvVCF2GDS.cpp +++ b/src/ConvVCF2GDS.cpp @@ -1096,7 +1096,7 @@ COREARRAY_DLL_EXPORT SEXP SEQ_VCF_NumLines(SEXP File, SEXP SkipHead, } Done_VCF_Buffer(); - return ScalarReal(n); + return Rf_ScalarReal(n); } @@ -1109,9 +1109,9 @@ COREARRAY_DLL_EXPORT SEXP SEQ_VCF_Split(SEXP start, SEXP count, SEXP pnum, SEXP multiple) { int num = Rf_asInteger(pnum); - if (num <= 0) error("'pnum' should be > 0."); + if (num <= 0) Rf_error("'pnum' should be > 0."); int multi = Rf_asInteger(multiple); - if (multi < 0) error("'multiple' should be > 0."); + if (multi < 0) Rf_error("'multiple' should be > 0."); if (multi == 0) multi = 1; SEXP ans = PROTECT(NEW_LIST(2)); SEXP start_array = PROTECT(NEW_NUMERIC(num)); @@ -1683,7 +1683,7 @@ COREARRAY_DLL_EXPORT SEXP SEQ_VCF_Parse(SEXP vcf_fn, SEXP header, if (it == format_missing.end()) { format_missing.insert(cell); - warning("Unknown FORMAT ID '%s' is ignored (it should be defined in the meta-information lines).", + Rf_warning("Unknown FORMAT ID '%s' is ignored (it should be defined in the meta-information lines).", cell.c_str()); } } else { @@ -1898,7 +1898,7 @@ COREARRAY_DLL_EXPORT SEXP SEQ_VCF_Parse(SEXP vcf_fn, SEXP header, // set returned value: levels(filter) PROTECT(rv_ans = NEW_CHARACTER(filter_list.size())); for (int i=0; i < (int)filter_list.size(); i++) - SET_STRING_ELT(rv_ans, i, mkChar(filter_list[i].c_str())); + SET_STRING_ELT(rv_ans, i, Rf_mkChar(filter_list[i].c_str())); nProtected ++; REAL(line_cnt)[0] = variant_index; @@ -1930,7 +1930,7 @@ COREARRAY_DLL_EXPORT SEXP SEQ_VCF_Parse(SEXP vcf_fn, SEXP header, GDS_SetError(buf); has_error = true; }); - if (has_error) error("%s", GDS_GetError()); + if (has_error) Rf_error("%s", GDS_GetError()); // output return rv_ans; diff --git a/src/FileMerge.cpp b/src/FileMerge.cpp index e8d9810..4e4f3bd 100755 --- a/src/FileMerge.cpp +++ b/src/FileMerge.cpp @@ -2,7 +2,7 @@ // // FileMerge.cpp: GDS file merging // -// Copyright (C) 2016-2020 Xiuwen Zheng +// Copyright (C) 2016-2024 Xiuwen Zheng // // This file is part of SeqArray. // @@ -184,7 +184,7 @@ COREARRAY_DLL_EXPORT SEXP SEQ_MergeGeno(SEXP num, SEXP varidx, SEXP files, if ((0 <= v) && (v < nAllele)) *p = map[v]; else if (v != NA_INTEGER) - warning("Genotype in File(%d), out of range.", j+1); + Rf_warning("Genotype in File(%d), out of range.", j+1); } } else vec_int32_set(pGeno, size, NA_INTEGER); @@ -349,7 +349,7 @@ COREARRAY_DLL_EXPORT SEXP SEQ_MergeInfo(SEXP num, SEXP varidx, SEXP files, if (info_idx) GDS_Array_AppendData(info_idx, 1, &ZERO, svInt32); else - GDS_R_Append(info_var, ScalarInteger(NA_INTEGER)); + GDS_R_Append(info_var, Rf_ScalarInteger(NA_INTEGER)); } } diff --git a/src/GetData.cpp b/src/GetData.cpp index 2786049..dc8330b 100755 --- a/src/GetData.cpp +++ b/src/GetData.cpp @@ -131,7 +131,7 @@ static SEXP get_chrom(CFileInfo &File, TVarMap &Var, void *param) TSelection &Sel = File.Selection(); C_BOOL *s = Sel.pVariant + Sel.varStart; size_t p = 0, i = Sel.varStart; - SEXP lastR = mkChar(""); + SEXP lastR = Rf_mkChar(""); string lastS; for (; n > 0; i++) { @@ -141,7 +141,7 @@ static SEXP get_chrom(CFileInfo &File, TVarMap &Var, void *param) if (ss != lastS) { lastS = ss; - lastR = mkChar(ss.c_str()); + lastR = Rf_mkChar(ss.c_str()); } SET_STRING_ELT(rv_ans, p++, lastR); n--; @@ -243,14 +243,14 @@ static SEXP get_dosage(CFileInfo &File, TVarMap &Var, void *param) CApply_Variant_Dosage NodeVar(File, false, false, false); if (!get_geno_is_i32(P, NodeVar)) { - rv_ans = PROTECT(allocMatrix(RAWSXP, nSample, nVariant)); + rv_ans = PROTECT(Rf_allocMatrix(RAWSXP, nSample, nVariant)); C_UInt8 *base = (C_UInt8 *)RAW(rv_ans); do { NodeVar.ReadDosage(base); base += nSample; } while (NodeVar.Next()); } else { - rv_ans = PROTECT(allocMatrix(INTSXP, nSample, nVariant)); + rv_ans = PROTECT(Rf_allocMatrix(INTSXP, nSample, nVariant)); int *base = INTEGER(rv_ans); do { NodeVar.ReadDosage(base); @@ -277,14 +277,14 @@ static SEXP get_dosage_alt(CFileInfo &File, TVarMap &Var, void *param) CApply_Variant_Dosage NodeVar(File, false, true, false); if (!get_geno_is_i32(P, NodeVar)) { - rv_ans = PROTECT(allocMatrix(RAWSXP, nSample, nVariant)); + rv_ans = PROTECT(Rf_allocMatrix(RAWSXP, nSample, nVariant)); C_UInt8 *base = (C_UInt8 *)RAW(rv_ans); do { NodeVar.ReadDosageAlt(base); base += nSample; } while (NodeVar.Next()); } else { - rv_ans = PROTECT(allocMatrix(INTSXP, nSample, nVariant)); + rv_ans = PROTECT(Rf_allocMatrix(INTSXP, nSample, nVariant)); int *base = INTEGER(rv_ans); do { NodeVar.ReadDosageAlt(base); @@ -311,14 +311,14 @@ static SEXP get_dosage_alt2(CFileInfo &File, TVarMap &Var, void *param) CApply_Variant_Dosage NodeVar(File, false, true, true); if (!get_geno_is_i32(P, NodeVar)) { - rv_ans = PROTECT(allocMatrix(RAWSXP, nSample, nVariant)); + rv_ans = PROTECT(Rf_allocMatrix(RAWSXP, nSample, nVariant)); C_UInt8 *base = (C_UInt8 *)RAW(rv_ans); do { NodeVar.ReadDosageAlt_p(base); base += nSample; } while (NodeVar.Next()); } else { - rv_ans = PROTECT(allocMatrix(INTSXP, nSample, nVariant)); + rv_ans = PROTECT(Rf_allocMatrix(INTSXP, nSample, nVariant)); int *base = INTEGER(rv_ans); do { NodeVar.ReadDosageAlt_p(base); @@ -572,7 +572,7 @@ static SEXP get_ref_allele(CFileInfo &File, TVarMap &Var, void *param) const char *p = buffer[i].c_str(); size_t m = 0; for (const char *s=p; *s!=',' && *s!=0; s++) m++; - SET_STRING_ELT(rv_ans, k++, mkCharLen(p, m)); + SET_STRING_ELT(rv_ans, k++, Rf_mkCharLen(p, m)); } } UNPROTECT(1); @@ -595,7 +595,7 @@ static SEXP get_alt_allele(CFileInfo &File, TVarMap &Var, void *param) const char *p = buffer[i].c_str(); for (; *p!=',' && *p!=0;) p++; if (*p == ',') p++; - SET_STRING_ELT(rv_ans, k++, mkChar(p)); + SET_STRING_ELT(rv_ans, k++, Rf_mkChar(p)); } } UNPROTECT(1); @@ -620,7 +620,7 @@ static SEXP get_chrom_pos(CFileInfo &File, TVarMap &Var, void *param) if (*s++) { snprintf(buf, sizeof(buf), "%s:%d", Chrom[i].c_str(), pos[i]); - SET_STRING_ELT(rv_ans, p++, mkChar(buf)); + SET_STRING_ELT(rv_ans, p++, Rf_mkChar(buf)); n--; } } @@ -655,11 +655,11 @@ static SEXP get_chrom_pos2(CFileInfo &File, TVarMap &Var, void *param) { dup ++; snprintf(p1, sizeof(buf1), "%s:%d_%d", chr, pos[i], dup); - SET_STRING_ELT(rv_ans, p++, mkChar(p1)); + SET_STRING_ELT(rv_ans, p++, Rf_mkChar(p1)); } else { char *tmp; tmp = p1; p1 = p2; p2 = tmp; - SET_STRING_ELT(rv_ans, p++, mkChar(p2)); + SET_STRING_ELT(rv_ans, p++, Rf_mkChar(p2)); dup = 0; } n--; @@ -695,7 +695,7 @@ static SEXP get_chrom_pos_allele(CFileInfo &File, TVarMap &Var, void *param) for (char *p=(char*)allele; *p; p++) if (*p == ',') *p = '_'; snprintf(strbuf, sizeof(strbuf), "%s:%d_%s", chr, pos, allele); - SET_STRING_ELT(rv_ans, k++, mkChar(strbuf)); + SET_STRING_ELT(rv_ans, k++, Rf_mkChar(strbuf)); } } UNPROTECT(1); @@ -1280,25 +1280,25 @@ COREARRAY_DLL_EXPORT SEXP SEQ_GetData(SEXP gdsfile, SEXP var_name, SEXP UseRaw, { // var.name if (!Rf_isString(var_name)) - error("'var.name' should be character."); + Rf_error("'var.name' should be character."); const int nlen = RLength(var_name); // .useraw if (TYPEOF(UseRaw) != LGLSXP) - error("'.useraw' must be logical."); + Rf_error("'.useraw' must be logical."); const int use_raw = Rf_asLogical(UseRaw); // .padNA const int padNA = Rf_asLogical(PadNA); if (padNA == NA_LOGICAL) - error("'.padNA' must be TRUE or FALSE."); + Rf_error("'.padNA' must be TRUE or FALSE."); // .tolist const int tolist = Rf_asLogical(ToList); if (tolist == NA_LOGICAL) - error("'.tolist' must be TRUE or FALSE."); + Rf_error("'.tolist' must be TRUE or FALSE."); // .envir if (!Rf_isNull(Env)) { if (!Rf_isEnvironment(Env) && !Rf_isVectorList(Env)) - error("'envir' should be an environment and list object."); + Rf_error("'envir' should be an environment and list object."); } // if var.name = character() if (nlen <= 0) return R_NilValue; @@ -1319,9 +1319,9 @@ COREARRAY_DLL_EXPORT SEXP SEQ_GetData(SEXP gdsfile, SEXP var_name, SEXP UseRaw, VarGetData(File, CHAR(STRING_ELT(var_name, i)), use_raw, padNA, tolist, Env)); } - SEXP nm = getAttrib(var_name, R_NamesSymbol); + SEXP nm = Rf_getAttrib(var_name, R_NamesSymbol); if (nm == R_NilValue) nm = var_name; - setAttrib(rv_ans, R_NamesSymbol, nm); + Rf_setAttrib(rv_ans, R_NamesSymbol, nm); UNPROTECT(1); } COREARRAY_CATCH @@ -1338,24 +1338,24 @@ COREARRAY_DLL_EXPORT SEXP SEQ_BApply_Variant(SEXP gdsfile, SEXP var_name, // bsize int bsize = Rf_asInteger(RGetListElement(param, "bsize")); if (bsize < 1) - error("'bsize' must be >= 1."); + Rf_error("'bsize' must be >= 1."); // .useraw SEXP pam_use_raw = RGetListElement(param, "useraw"); if (!Rf_isLogical(pam_use_raw)) - error("'.useraw' must be TRUE, FALSE or NA."); + Rf_error("'.useraw' must be TRUE, FALSE or NA."); int use_raw_flag = Rf_asLogical(pam_use_raw); // .padNA int padNA = Rf_asLogical(RGetListElement(param, "padNA")); if (padNA == NA_LOGICAL) - error("'.padNA' must be TRUE or FALSE."); + Rf_error("'.padNA' must be TRUE or FALSE."); // .tolist int tolist = Rf_asLogical(RGetListElement(param, "tolist")); if (tolist == NA_LOGICAL) - error("'.tolist' must be TRUE or FALSE."); + Rf_error("'.tolist' must be TRUE or FALSE."); // .progress int prog_flag = Rf_asLogical(RGetListElement(param, "progress")); if (prog_flag == NA_LOGICAL) - error("'.progress' must be TRUE or FALSE."); + Rf_error("'.progress' must be TRUE or FALSE."); COREARRAY_TRY @@ -1410,7 +1410,7 @@ COREARRAY_DLL_EXPORT SEXP SEQ_BApply_Variant(SEXP gdsfile, SEXP var_name, } // rho environment - if (!isEnvironment(rho)) + if (!Rf_isEnvironment(rho)) throw ErrSeqArray("'rho' should be an environment"); // var.index @@ -1509,7 +1509,7 @@ COREARRAY_DLL_EXPORT SEXP SEQ_BApply_Variant(SEXP gdsfile, SEXP var_name, use_raw_flag, padNA, tolist, rho)); } // call R function - call_val = eval(R_fcall, rho); + call_val = Rf_eval(R_fcall, rho); } else { R_call_param = VarGetData(File, CHAR(STRING_ELT(var_name, 0)), @@ -1525,7 +1525,7 @@ COREARRAY_DLL_EXPORT SEXP SEQ_BApply_Variant(SEXP gdsfile, SEXP var_name, } // call R function - call_val = eval(R_fcall, rho); + call_val = Rf_eval(R_fcall, rho); } // store data diff --git a/src/Index.cpp b/src/Index.cpp index 712cf5a..7eba064 100755 --- a/src/Index.cpp +++ b/src/Index.cpp @@ -2,7 +2,7 @@ // // Index.cpp: Indexing Objects // -// Copyright (C) 2016-2022 Xiuwen Zheng +// Copyright (C) 2016-2024 Xiuwen Zheng // // This file is part of SeqArray. // @@ -108,7 +108,7 @@ void CIndex::Init(PdContainer Obj, const char *varname) if (Values[i] > val_max) val_max = Values[i]; if (if_neg_val && varname) - warning(ERR_INDEX_VALUE, varname); + Rf_warning(ERR_INDEX_VALUE, varname); } void CIndex::InitOne(int num) @@ -338,7 +338,7 @@ void CGenoIndex::Init(PdContainer Obj, const char *varname) AccSum = 0; AccIndex = AccOffset = 0; if (if_neg_val && varname) - warning(ERR_INDEX_VALUE, varname); + Rf_warning(ERR_INDEX_VALUE, varname); } void CGenoIndex::GetInfo(size_t pos, C_Int64 &Sum, C_UInt8 &Value) @@ -1383,7 +1383,7 @@ COREARRAY_DLL_LOCAL size_t RLength(SEXP val) COREARRAY_DLL_LOCAL SEXP RGetListElement(SEXP list, const char *name) { SEXP elmt = R_NilValue; - SEXP names = getAttrib(list, R_NamesSymbol); + SEXP names = Rf_getAttrib(list, R_NamesSymbol); size_t n = RLength(names); for (size_t i = 0; i < n; i++) { @@ -1462,7 +1462,7 @@ COREARRAY_DLL_LOCAL void RAppendGDS(PdAbstractArray Node, SEXP Val) for (R_xlen_t i=0; i < n; i++) { SEXP s = STRING_ELT(Val, i); - if (s != NA_STRING) buf[i] = translateCharUTF8(s); + if (s != NA_STRING) buf[i] = Rf_translateCharUTF8(s); } GDS_Array_AppendData(Node, n, &buf[0], svStrUTF8); } diff --git a/src/Methods.cpp b/src/Methods.cpp index ca7597a..018300e 100755 --- a/src/Methods.cpp +++ b/src/Methods.cpp @@ -103,7 +103,7 @@ static void get_ds_n_m(SEXP DS, int &n, int &m) { n = XLENGTH(DS); m = 1; SEXP dm = GET_DIM(DS); - if (!isNull(dm)) + if (!Rf_isNull(dm)) { if (XLENGTH(dm) != 2) throw ErrSeqArray("# of dimensions should be 2 for dosages."); @@ -129,7 +129,7 @@ COREARRAY_DLL_EXPORT SEXP FC_Missing_PerVariant(SEXP Geno) default: throw ErrSeqArray(ERR_DS_TYPE); } - return ScalarReal((n > 0) ? (double(n_miss) / n) : R_NaN); + return Rf_ScalarReal((n > 0) ? (double(n_miss) / n) : R_NaN); } /// Calculate the missing rate per sample @@ -229,7 +229,7 @@ COREARRAY_DLL_EXPORT SEXP FC_Missing_SampVariant(SEXP Geno, SEXP sum) } } - return ScalarReal((double)n / (num_ploidy*num_sample)); + return Rf_ScalarReal((double)n / (num_ploidy*num_sample)); } /// Calculate the missing rate per sample and variant @@ -279,7 +279,7 @@ COREARRAY_DLL_EXPORT SEXP FC_Missing_DS_SampVariant(SEXP DS, SEXP sum, SEXP tmp) for (int i=0; i < num_samp; i++) pS[i] += (pT[i] > 0) ? 1 : 0; - return ScalarReal((n > 0) ? (double(n_miss) / n) : R_NaN); + return Rf_ScalarReal((n > 0) ? (double(n_miss) / n) : R_NaN); } @@ -409,9 +409,9 @@ COREARRAY_DLL_EXPORT SEXP FC_AF_Ref(SEXP Geno) { double p = double(m) / n; if (AFreq_Minor && p>0.5) p = 1 - p; - return ScalarReal(p); + return Rf_ScalarReal(p); } else - return ScalarReal(R_NaN); + return Rf_ScalarReal(R_NaN); } #define GET_SUM_NUM(TYPE, TYPEPTR, START, NA_VAL, N) \ @@ -452,9 +452,9 @@ COREARRAY_DLL_EXPORT SEXP FC_AF_DS_Ref(SEXP DS) { double p = 1 - sum * m / (num * AFreq_Ploidy); if (AFreq_Minor && p>0.5) p = 1 - p; - return ScalarReal(p); + return Rf_ScalarReal(p); } else - return ScalarReal(R_NaN); + return Rf_ScalarReal(R_NaN); } /// Get allele frequency @@ -481,9 +481,9 @@ COREARRAY_DLL_EXPORT SEXP FC_AF_Index(SEXP List) { double p = double(m) / n; if (AFreq_Minor && p>0.5) p = 1 - p; - return ScalarReal(p); + return Rf_ScalarReal(p); } else - return ScalarReal(R_NaN); + return Rf_ScalarReal(R_NaN); } /// Get allele frequency @@ -495,11 +495,11 @@ COREARRAY_DLL_EXPORT SEXP FC_AF_DS_Index(SEXP List) if (A == 0) return FC_AF_DS_Ref(DS); const int nAllele = Rf_asInteger(VECTOR_ELT(List, 1)); - if (A >= nAllele) return ScalarReal(R_NaN); + if (A >= nAllele) return Rf_ScalarReal(R_NaN); int n, m; get_ds_n_m(DS, n, m); - if (A > m) return ScalarReal(R_NaN); + if (A > m) return Rf_ScalarReal(R_NaN); double sum=0; int num = 0, nrow = n/m; @@ -519,9 +519,9 @@ COREARRAY_DLL_EXPORT SEXP FC_AF_DS_Index(SEXP List) { double p = sum / (num * AFreq_Ploidy); if (AFreq_Minor && p>0.5) p = 1 - p; - return ScalarReal(p); + return Rf_ScalarReal(p); } else - return ScalarReal(R_NaN); + return Rf_ScalarReal(R_NaN); } /// Get allele frequency @@ -552,9 +552,9 @@ COREARRAY_DLL_EXPORT SEXP FC_AF_Allele(SEXP List) { double p = double(m) / n; if (AFreq_Minor && p>0.5) p = 1 - p; - return ScalarReal(p); + return Rf_ScalarReal(p); } else - return ScalarReal(R_NaN); + return Rf_ScalarReal(R_NaN); } /// Get allele frequency @@ -591,9 +591,9 @@ COREARRAY_DLL_EXPORT SEXP FC_AF_DS_Allele(SEXP List) { double p = sum / (num * AFreq_Ploidy); if (AFreq_Minor && p>0.5) p = 1 - p; - return ScalarReal(p); + return Rf_ScalarReal(p); } else - return ScalarReal(R_NaN); + return Rf_ScalarReal(R_NaN); } @@ -613,7 +613,7 @@ COREARRAY_DLL_EXPORT SEXP FC_AC_Ref(SEXP Geno) size_t m0 = N - n - m; // allele count for alternative if (m0 < m) m = m0; } - return ScalarInteger((n < N) ? (int)m : NA_INTEGER); + return Rf_ScalarInteger((n < N) ? (int)m : NA_INTEGER); } /// Get reference allele count from dosage @@ -640,9 +640,9 @@ COREARRAY_DLL_EXPORT SEXP FC_AC_DS_Ref(SEXP DS) double totac = double(num * AFreq_Ploidy) / m; double ac = totac - sum; if (AFreq_Minor && ac>0.5*totac) ac = totac - ac; - return ScalarReal(ac); + return Rf_ScalarReal(ac); } else - return ScalarReal(NA_REAL); + return Rf_ScalarReal(NA_REAL); } /// Get allele count from the reference allele index @@ -672,7 +672,7 @@ COREARRAY_DLL_EXPORT SEXP FC_AC_Index(SEXP List) } else ans = NA_INTEGER; - return ScalarInteger(ans); + return Rf_ScalarInteger(ans); } /// Get allele count from dosage and the reference allele index @@ -684,11 +684,11 @@ COREARRAY_DLL_EXPORT SEXP FC_AC_DS_Index(SEXP List) if (A == 0) return FC_AC_DS_Ref(DS); const int nAllele = Rf_asInteger(VECTOR_ELT(List, 1)); - if (A >= nAllele) return ScalarReal(R_NaN); + if (A >= nAllele) return Rf_ScalarReal(R_NaN); int n, m; get_ds_n_m(DS, n, m); - if (A > m) return ScalarReal(R_NaN); + if (A > m) return Rf_ScalarReal(R_NaN); double sum=0; int num = 0, nrow = n/m; @@ -708,9 +708,9 @@ COREARRAY_DLL_EXPORT SEXP FC_AC_DS_Index(SEXP List) { double sum2 = num * AFreq_Ploidy - sum; if (AFreq_Minor && sum>sum2) sum = sum2; - return ScalarReal(sum); + return Rf_ScalarReal(sum); } else - return ScalarReal(NA_REAL); + return Rf_ScalarReal(NA_REAL); } /// Get allele count for a given allele @@ -749,7 +749,7 @@ COREARRAY_DLL_EXPORT SEXP FC_AC_Allele(SEXP List) } } - return ScalarInteger(ans); + return Rf_ScalarInteger(ans); } /// Get allele count @@ -786,9 +786,9 @@ COREARRAY_DLL_EXPORT SEXP FC_AC_DS_Allele(SEXP List) { double sum2 = num * AFreq_Ploidy - sum; if (AFreq_Minor && sum>sum2) sum = sum2; - return ScalarReal(sum); + return Rf_ScalarReal(sum); } else - return ScalarReal(NA_REAL); + return Rf_ScalarReal(NA_REAL); } @@ -1016,7 +1016,7 @@ COREARRAY_DLL_EXPORT SEXP FC_DigestDone(SEXP Algo) } *p = 0; - return mkString(buffer); + return Rf_mkString(buffer); } /// Applied digest function @@ -1027,7 +1027,7 @@ COREARRAY_DLL_EXPORT SEXP FC_DigestScan(SEXP Data) if (TYPEOF(Data) == RAWSXP) digest_data_type = 0; else if (TYPEOF(Data) == INTSXP) - digest_data_type = !inherits(Data, "factor") ? 1 : 2; + digest_data_type = !Rf_inherits(Data, "factor") ? 1 : 2; else if (Rf_isLogical(Data)) digest_data_type = 3; else if (Rf_isReal(Data)) @@ -1048,7 +1048,7 @@ COREARRAY_DLL_EXPORT SEXP FC_DigestScan(SEXP Data) case 2: { int *p = INTEGER(Data); - SEXP ls = getAttrib(Data, R_LevelsSymbol); + SEXP ls = Rf_getAttrib(Data, R_LevelsSymbol); int nls = LENGTH(ls); for (size_t n=XLENGTH(Data); n > 0; n--, p++) { diff --git a/src/ReadBySample.cpp b/src/ReadBySample.cpp index 6bbbfd7..1b6349a 100755 --- a/src/ReadBySample.cpp +++ b/src/ReadBySample.cpp @@ -2,7 +2,7 @@ // // ReadBySample.cpp: Read data sample by sample // -// Copyright (C) 2015-2017 Xiuwen Zheng +// Copyright (C) 2015-2024 Xiuwen Zheng // // This file is part of SeqArray. // @@ -336,10 +336,10 @@ void CVarApplyBySample::ReadGenoData(C_UInt8 *Base) if (NumOfBits == 2) { if (GenoCellCnt[i] > 4) - warning("RAW type may not be sufficient to store genotypes."); + Rf_warning("RAW type may not be sufficient to store genotypes."); } else { if (GenoCellCnt[i] > 1) - warning("RAW type may not be sufficient to store genotypes."); + Rf_warning("RAW type may not be sufficient to store genotypes."); } /// the left bits @@ -387,7 +387,7 @@ void CVarApplyBySample::ReadData(SEXP Val) vector buffer(CellCount); GDS_Array_ReadDataEx(Node, st, cn, SelPtr, &buffer[0], svStrUTF8); for (size_t i=0; i < buffer.size(); i++) - SET_STRING_ELT(Val, i, mkChar(buffer[i].c_str())); + SET_STRING_ELT(Val, i, Rf_mkChar(buffer[i].c_str())); } } } @@ -491,7 +491,7 @@ COREARRAY_DLL_EXPORT SEXP SEQ_Apply_Sample(SEXP gdsfile, SEXP var_name, { int use_raw_flag = Rf_asLogical(use_raw); if (use_raw_flag == NA_LOGICAL) - error("'.useraw' must be TRUE or FALSE."); + Rf_error("'.useraw' must be TRUE or FALSE."); COREARRAY_TRY @@ -579,7 +579,7 @@ COREARRAY_DLL_EXPORT SEXP SEQ_Apply_Sample(SEXP gdsfile, SEXP var_name, // =============================================================== // rho - if (!isEnvironment(rho)) + if (!Rf_isEnvironment(rho)) throw ErrSeqArray("'rho' should be an environment"); @@ -654,11 +654,11 @@ COREARRAY_DLL_EXPORT SEXP SEQ_Apply_Sample(SEXP gdsfile, SEXP var_name, } // call R function - SEXP val = eval(R_fcall, rho); + SEXP val = Rf_eval(R_fcall, rho); switch (DatType) { case 1: - SET_ELEMENT(rv_ans, ans_index, duplicate(val)); break; + SET_ELEMENT(rv_ans, ans_index, Rf_duplicate(val)); break; case 2: INTEGER(rv_ans)[ans_index] = Rf_asInteger(val); break; case 3: diff --git a/src/ReadByUnit.cpp b/src/ReadByUnit.cpp index b05d30e..d188747 100755 --- a/src/ReadByUnit.cpp +++ b/src/ReadByUnit.cpp @@ -2,7 +2,7 @@ // // ReadByUnit.cpp: Read data variant by units of selected variants // -// Copyright (C) 2019 Xiuwen Zheng +// Copyright (C) 2019-2024 Xiuwen Zheng // // This file is part of SeqArray. // @@ -37,7 +37,7 @@ COREARRAY_DLL_EXPORT SEXP SEQ_Unit_SlidingWindows(SEXP Pos, SEXP Idx, int winstart = Rf_asInteger(WinStart); int duprmflag = Rf_asLogical(DupFlag); if (duprmflag == NA_LOGICAL) - error("'dup.rm' must be TRUE or FALSE."); + Rf_error("'dup.rm' must be TRUE or FALSE."); int *tmp = INTEGER(Tmp); // get the total number of windows diff --git a/src/ReadByVariant.cpp b/src/ReadByVariant.cpp index 07b39ec..9b73c83 100755 --- a/src/ReadByVariant.cpp +++ b/src/ReadByVariant.cpp @@ -83,7 +83,7 @@ void CApply_Variant_Basic::ReadData(SEXP val) { string s; GDS_Array_ReadData(Node, &st, &one, &s, svStrUTF8); - SET_STRING_ELT(val, 0, mkChar(s.c_str())); + SET_STRING_ELT(val, 0, Rf_mkChar(s.c_str())); } } @@ -138,14 +138,14 @@ void CApply_Variant_Chrom::ReadData(SEXP val) const string &s1 = (*ChromIndex)[Position]; const char *s2 = CHAR(STRING_ELT(val, 0)); if (s1 != s2) - SET_STRING_ELT(val, 0, mkChar(s1.c_str())); + SET_STRING_ELT(val, 0, Rf_mkChar(s1.c_str())); } SEXP CApply_Variant_Chrom::NeedRData(int &nProtected) { if (VarNode == NULL) { - VarNode = PROTECT(mkString("")); + VarNode = PROTECT(Rf_mkString("")); nProtected ++; } return VarNode; @@ -278,7 +278,7 @@ C_UInt8 CApply_Variant_Geno::_ReadGenoData(C_UInt8 *Base) if (NumIndexRaw > 4) { NumIndexRaw = 4; - warning("RAW type may not be sufficient to store genotypes."); + Rf_warning("RAW type may not be sufficient to store genotypes."); } for (C_UInt8 i=1; i < NumIndexRaw; i++) @@ -329,7 +329,7 @@ SEXP CApply_Variant_Geno::NeedRData(int &nProtected) { if (VarIntGeno == NULL) { - VarIntGeno = PROTECT(allocMatrix(INTSXP, Ploidy, SampNum)); + VarIntGeno = PROTECT(Rf_allocMatrix(INTSXP, Ploidy, SampNum)); nProtected ++; SET_DIMNAMES(VarIntGeno, R_Geno_Dim2_Name); } @@ -337,7 +337,7 @@ SEXP CApply_Variant_Geno::NeedRData(int &nProtected) } else { if (VarRawGeno == NULL) { - VarRawGeno = PROTECT(allocMatrix(RAWSXP, Ploidy, SampNum)); + VarRawGeno = PROTECT(Rf_allocMatrix(RAWSXP, Ploidy, SampNum)); nProtected ++; SET_DIMNAMES(VarRawGeno, R_Geno_Dim2_Name); } @@ -722,7 +722,7 @@ void CApply_Variant_Info::ReadData(SEXP val) vector buffer(XLENGTH(val)); GDS_Array_ReadData(Node, st, cnt, &buffer[0], svStrUTF8); for (size_t i=0; i < buffer.size(); i++) - SET_STRING_ELT(val, i, mkChar(buffer[i].c_str())); + SET_STRING_ELT(val, i, Rf_mkChar(buffer[i].c_str())); } } } @@ -820,7 +820,7 @@ void CApply_Variant_Format::ReadData(SEXP val) vector buffer(XLENGTH(val)); GDS_Array_ReadDataEx(Node, st, cnt, SelPtr, &buffer[0], svStrUTF8); for (size_t i=0; i < buffer.size(); i++) - SET_STRING_ELT(val, i, mkChar(buffer[i].c_str())); + SET_STRING_ELT(val, i, Rf_mkChar(buffer[i].c_str())); } } } @@ -843,8 +843,8 @@ SEXP CApply_Variant_Format::NeedRData(int &nProtected) SEXP name_list = PROTECT(NEW_LIST(2)); SEXP tmp = PROTECT(NEW_CHARACTER(2)); - SET_STRING_ELT(tmp, 0, mkChar("sample")); - SET_STRING_ELT(tmp, 1, mkChar("index")); + SET_STRING_ELT(tmp, 0, Rf_mkChar("sample")); + SET_STRING_ELT(tmp, 1, Rf_mkChar("index")); SET_NAMES(name_list, tmp); SET_DIMNAMES(ans, name_list); UNPROTECT(2); @@ -921,16 +921,16 @@ COREARRAY_DLL_EXPORT SEXP SEQ_Apply_Variant(SEXP gdsfile, SEXP var_name, { SEXP pam_use_raw = RGetListElement(param, "useraw"); if (!Rf_isLogical(pam_use_raw)) - error("'.useraw' must be TRUE, FALSE or NA."); + Rf_error("'.useraw' must be TRUE, FALSE or NA."); int use_raw_flag = Rf_asLogical(pam_use_raw); int prog_flag = Rf_asLogical(RGetListElement(param, "progress")); if (prog_flag == NA_LOGICAL) - error("'.progress' must be TRUE or FALSE."); + Rf_error("'.progress' must be TRUE or FALSE."); int dup_flag = Rf_asLogical(RGetListElement(param, "list_dup")); if (dup_flag == NA_LOGICAL) - error("'.list_dup' must be TRUE or FALSE."); + Rf_error("'.list_dup' must be TRUE or FALSE."); COREARRAY_TRY @@ -1082,7 +1082,7 @@ COREARRAY_DLL_EXPORT SEXP SEQ_Apply_Variant(SEXP gdsfile, SEXP var_name, // =========================================================== // rho - if (!isEnvironment(rho)) + if (!Rf_isEnvironment(rho)) throw ErrSeqArray("'rho' should be an environment"); @@ -1159,13 +1159,13 @@ COREARRAY_DLL_EXPORT SEXP SEQ_Apply_Variant(SEXP gdsfile, SEXP var_name, } // call R function - SEXP val = eval(R_fcall, rho); + SEXP val = Rf_eval(R_fcall, rho); // store data switch (DatType) { case 1: // list - if (dup_flag) val = duplicate(val); + if (dup_flag) val = Rf_duplicate(val); SET_ELEMENT(rv_ans, ans_index, val); break; case 2: // integer diff --git a/src/SeqArray.cpp b/src/SeqArray.cpp index 4fcb936..ec5e82a 100755 --- a/src/SeqArray.cpp +++ b/src/SeqArray.cpp @@ -313,7 +313,7 @@ COREARRAY_DLL_EXPORT SEXP SEQ_SetSpaceSample2(SEXP gdsfile, SEXP samp_sel, last_I = I; } } - if (if_warn && warn_flag) warning("%s", WARN_SEL_INDEX); + if (if_warn && warn_flag) Rf_warning("%s", WARN_SEL_INDEX); // set values memset((void*)pArray, 0, Count); pI = INTEGER(samp_sel); @@ -340,7 +340,7 @@ COREARRAY_DLL_EXPORT SEXP SEQ_SetSpaceSample2(SEXP gdsfile, SEXP samp_sel, last_I = I; } } - if (if_warn && warn_flag) warning("%s", WARN_SEL_INDEX); + if (if_warn && warn_flag) Rf_warning("%s", WARN_SEL_INDEX); // get the current index vector Idx; Idx.reserve(Cnt); @@ -598,7 +598,7 @@ COREARRAY_DLL_EXPORT SEXP SEQ_SetSpaceVariant2(SEXP gdsfile, SEXP var_sel, if_warn = true; } } - if (if_warn && warn_flag) warning("%s", WARN_SEL_INDEX); + if (if_warn && warn_flag) Rf_warning("%s", WARN_SEL_INDEX); // set the structure of selected variants Sel.varTrueNum = num; Sel.varStart = st; @@ -986,8 +986,8 @@ COREARRAY_DLL_EXPORT SEXP SEQ_GetSpace(SEXP gdsfile, SEXP UseRaw) SET_ELEMENT(rv_ans, 1, tmp); PROTECT(tmp = NEW_CHARACTER(2)); - SET_STRING_ELT(tmp, 0, mkChar("sample.sel")); - SET_STRING_ELT(tmp, 1, mkChar("variant.sel")); + SET_STRING_ELT(tmp, 0, Rf_mkChar("sample.sel")); + SET_STRING_ELT(tmp, 1, Rf_mkChar("variant.sel")); SET_NAMES(rv_ans, tmp); UNPROTECT(4); @@ -1115,7 +1115,7 @@ COREARRAY_DLL_EXPORT SEXP SEQ_SplitSelection(SEXP gdsfile, SEXP split, p += split[Process_Index-1]; for (; ans_n > 0; ans_n--) *p++ = TRUE; } else { - rv_ans = ScalarInteger(ans_n); + rv_ans = Rf_ScalarInteger(ans_n); } COREARRAY_CATCH @@ -1184,7 +1184,7 @@ COREARRAY_DLL_EXPORT SEXP SEQ_SplitSelectionX(SEXP gdsfile, SEXP index, SEXP spl p += blsize * job_idx; for (; n > 0; n--) *p++ = TRUE; } else { - rv_ans = ScalarInteger(n); + rv_ans = Rf_ScalarInteger(n); } COREARRAY_CATCH @@ -1231,14 +1231,14 @@ COREARRAY_DLL_EXPORT SEXP SEQ_Summary(SEXP gdsfile, SEXP varname) INTEGER(S32)[2] = File.VariantSelNum(); SEXP tmp = PROTECT(NEW_CHARACTER(2)); - SET_STRING_ELT(tmp, 0, mkChar("dim")); - SET_STRING_ELT(tmp, 1, mkChar("seldim")); + SET_STRING_ELT(tmp, 0, Rf_mkChar("dim")); + SET_STRING_ELT(tmp, 1, Rf_mkChar("seldim")); SET_NAMES(rv_ans, tmp); UNPROTECT(4); } else { PdGDSObj var = GDS_Node_Path(Root, vn.c_str(), TRUE); - rv_ans = ScalarInteger(GDS_Array_GetTotalCount(var)); + rv_ans = Rf_ScalarInteger(GDS_Array_GetTotalCount(var)); } COREARRAY_CATCH @@ -1378,16 +1378,16 @@ COREARRAY_DLL_EXPORT SEXP SEQ_System() SET_NAMES(rv_ans, nm); // the number of logical cores - SET_ELEMENT(rv_ans, 0, ScalarInteger(GDS_Mach_GetNumOfCores())); - SET_STRING_ELT(nm, 0, mkChar("num.logical.core")); + SET_ELEMENT(rv_ans, 0, Rf_ScalarInteger(GDS_Mach_GetNumOfCores())); + SET_STRING_ELT(nm, 0, Rf_mkChar("num.logical.core")); // compiler SEXP Compiler = PROTECT(NEW_CHARACTER(2)); nProtect ++; SET_ELEMENT(rv_ans, 1, Compiler); - SET_STRING_ELT(nm, 1, mkChar("compiler")); + SET_STRING_ELT(nm, 1, Rf_mkChar("compiler")); #ifdef __VERSION__ - SET_STRING_ELT(Compiler, 0, mkChar(__VERSION__)); + SET_STRING_ELT(Compiler, 0, Rf_mkChar(__VERSION__)); #endif #ifdef __GNUC__ char buf_compiler[128] = { 0 }; @@ -1396,7 +1396,7 @@ COREARRAY_DLL_EXPORT SEXP SEQ_System() #endif snprintf(buf_compiler, sizeof(buf_compiler), "GNUG_v%d.%d.%d", __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__); - SET_STRING_ELT(Compiler, 1, mkChar(buf_compiler)); + SET_STRING_ELT(Compiler, 1, Rf_mkChar(buf_compiler)); #endif // compiler flags @@ -1452,9 +1452,9 @@ COREARRAY_DLL_EXPORT SEXP SEQ_System() SEXP SIMD = PROTECT(NEW_CHARACTER(ss.size())); nProtect ++; SET_ELEMENT(rv_ans, 2, SIMD); - SET_STRING_ELT(nm, 2, mkChar("compiler.flag")); + SET_STRING_ELT(nm, 2, Rf_mkChar("compiler.flag")); for (int i=0; i < (int)ss.size(); i++) - SET_STRING_ELT(SIMD, i, mkChar(ss[i].c_str())); + SET_STRING_ELT(SIMD, i, Rf_mkChar(ss[i].c_str())); UNPROTECT(nProtect); @@ -1518,7 +1518,7 @@ COREARRAY_DLL_EXPORT SEXP SEQ_Progress(SEXP Count, SEXP NProc) CProgressStdOut *obj = new CProgressStdOut(TotalCount, nproc, true); rv_ans = PROTECT(R_MakeExternalPtr(obj, R_NilValue, R_NilValue)); R_RegisterCFinalizerEx(rv_ans, free_progress, TRUE); - Rf_setAttrib(rv_ans, R_ClassSymbol, mkString("SeqClass_Progress")); + Rf_setAttrib(rv_ans, R_ClassSymbol, Rf_mkString("SeqClass_Progress")); UNPROTECT(1); COREARRAY_CATCH } @@ -1533,7 +1533,7 @@ COREARRAY_DLL_EXPORT SEXP SEQ_ProgressAdd(SEXP ref, SEXP inc) COREARRAY_TRY CProgressStdOut *obj = (CProgressStdOut*)R_ExternalPtrAddr(ref); if (obj) obj->Forward(v); - rv_ans = ScalarReal(obj->Counter()); + rv_ans = Rf_ScalarReal(obj->Counter()); COREARRAY_CATCH } diff --git a/src/pkg_test.cpp b/src/pkg_test.cpp index 4554135..b6ade6a 100644 --- a/src/pkg_test.cpp +++ b/src/pkg_test.cpp @@ -2,7 +2,7 @@ // // pkg_test.cpp: package testing with C/C++ codes // -// Copyright (C) 2016-2017 Xiuwen Zheng +// Copyright (C) 2016-2024 Xiuwen Zheng // // This file is part of SeqArray. // @@ -45,7 +45,7 @@ SEXP test_array_popcnt64(SEXP v1, SEXP v2) { int n = XLENGTH(v1); if (n != XLENGTH(v2)) - error("error in 'test_popcnt64'."); + Rf_error("error in 'test_popcnt64'."); int *s1 = INTEGER(v1), *s2 = INTEGER(v2); SEXP rv_ans = NEW_INTEGER(n); int *p = INTEGER(rv_ans); @@ -63,7 +63,7 @@ SEXP test_byte_count(SEXP val, SEXP start) int st = Rf_asInteger(start) - 1; int8_t *p = (int8_t *)RAW(val); int n = XLENGTH(val); - return ScalarInteger(vec_i8_cnt_nonzero(p + st, n - st)); + return Rf_ScalarInteger(vec_i8_cnt_nonzero(p + st, n - st)); } @@ -74,7 +74,7 @@ SEXP test_int8_replace(SEXP val, SEXP start, SEXP find, SEXP substitute) int v2 = Rf_asInteger(substitute); int n = XLENGTH(val); - SEXP rv_ans = duplicate(val); + SEXP rv_ans = Rf_duplicate(val); int8_t *p = (int8_t *)RAW(rv_ans); vec_i8_replace(p + st, n - st, v1, v2); @@ -88,7 +88,7 @@ SEXP test_int32_count(SEXP val, SEXP start, SEXP find) int fd = Rf_asInteger(find); int *p = INTEGER(val); int n = XLENGTH(val); - return ScalarInteger(vec_i32_count(p + st, n - st, fd)); + return Rf_ScalarInteger(vec_i32_count(p + st, n - st, fd)); } @@ -98,7 +98,7 @@ SEXP test_i8_count(SEXP val, SEXP start, SEXP find) char fd = RAW(find)[0]; char *p = (char*)RAW(val); int n = XLENGTH(val); - return ScalarInteger(vec_i8_count(p + st, n - st, fd)); + return Rf_ScalarInteger(vec_i8_count(p + st, n - st, fd)); } @@ -185,7 +185,7 @@ SEXP test_int32_replace(SEXP val, SEXP start, SEXP find, SEXP substitute) int v2 = Rf_asInteger(substitute); int n = XLENGTH(val); - SEXP rv_ans = duplicate(val); + SEXP rv_ans = Rf_duplicate(val); int *p = INTEGER(rv_ans); vec_i32_replace(p + st, n - st, v1, v2);