Skip to content

Commit 97067e6

Browse files
committed
fix seqVCF_Header() on ChromX
1 parent 6f91844 commit 97067e6

File tree

4 files changed

+29
-11
lines changed

4 files changed

+29
-11
lines changed

DESCRIPTION

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
Package: SeqArray
22
Type: Package
33
Title: Data Management of Large-Scale Whole-Genome Sequence Variant Calls
4-
Version: 1.44.1
5-
Date: 2024-06-22
4+
Version: 1.44.2
5+
Date: 2024-09-12
66
Depends: R (>= 3.5.0), gdsfmt (>= 1.31.1)
77
Imports: methods, parallel, IRanges, GenomicRanges, GenomeInfoDb, Biostrings,
88
S4Vectors

NEWS

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,14 @@
1+
CHANGES IN VERSION 1.44.2
2+
-------------------------
3+
4+
BUG FIXES
5+
6+
o fix `seqAddValue(, val=vector("list", NUM_VARIANT))`
7+
8+
o fix the ploidy returned from `seqVCF_Header()`, when there are genotypes
9+
of males and females on Chromosome X
10+
11+
112
CHANGES IN VERSION 1.44.1
213
-------------------------
314

R/AddValue.R

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -305,8 +305,10 @@
305305
stopifnot(length(val) == nvar)
306306
val <- lapply(val, function(x) unlist(x, use.names=FALSE))
307307
ns <- lengths(val)
308-
n <- add.gdsn(node, nm, unlist(val, use.names=FALSE),
309-
compress=compress, closezip=TRUE, replace=TRUE)
308+
val <- unlist(val, use.names=FALSE)
309+
if (is.null(val)) val <- logical()
310+
n <- add.gdsn(node, nm, val, compress=compress, closezip=TRUE,
311+
replace=TRUE)
310312
st <- if (packed.idx) .maxlen_bit_type(max(ns)) else "int"
311313
nidx <- add.gdsn(node, paste0("@", nm), ns, storage=st,
312314
compress=compress, closezip=TRUE, replace=TRUE, visible=FALSE)

R/ConvVCF2GDS.R

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -234,17 +234,22 @@ seqVCF_Header <- function(vcf.fn, getnum=FALSE, verbose=TRUE)
234234

235235
if (length(geno.text))
236236
{
237-
txt <- unlist(sapply(geno.text, function(s) {
238-
scan(text=s, what=character(), sep=":", quiet=TRUE, nmax=1) },
239-
simplify=TRUE, USE.NAMES=FALSE))
237+
txt <- unlist(vapply(geno.text, function(s) {
238+
scan(text=s, what="", sep=":", quiet=TRUE, nmax=1L) },
239+
"", USE.NAMES=FALSE))
240240
if (any(grepl(",", txt, fixed=TRUE)))
241241
{
242242
ploidy <- NA_integer_
243243
} else {
244-
num <- sapply(strsplit(txt, "[|/]"), function(x) length(x) )
245-
num[txt %in% "."] <- NA_integer_
246-
tab <- table(num)
247-
ploidy <- as.integer(names(which.max(tab)))
244+
num <- lengths(strsplit(txt, "[|/]"))
245+
ploidy <- max(num)
246+
if (ploidy > 2L)
247+
{
248+
if (sum(num<=2L) >= sum(num>2L))
249+
ploidy <- 2L
250+
else
251+
ploidy <- ((ploidy+1L) %/% 2L) * 2L
252+
}
248253
}
249254
} else
250255
ploidy <- NA_integer_

0 commit comments

Comments
 (0)