Skip to content

Commit 87f0159

Browse files
committed
Fix merge_metadata for differing dimensions
1 parent 759e61e commit 87f0159

File tree

1 file changed

+14
-65
lines changed

1 file changed

+14
-65
lines changed

src/varinfo.jl

Lines changed: 14 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -521,73 +521,22 @@ function merge_metadata(metadata_left::Metadata, metadata_right::Metadata)
521521
offset = 0
522522

523523
for (idx, vn) in enumerate(vns_both)
524-
# `idcs`
525524
idcs[vn] = idx
526-
# `vns`
527525
push!(vns, vn)
528-
if vn in vns_left && vn in vns_right
529-
# `vals`: only valid if they're the length.
530-
vals_left = getindex_internal(metadata_left, vn)
531-
vals_right = getindex_internal(metadata_right, vn)
532-
@assert length(vals_left) == length(vals_right)
533-
append!(vals, vals_right)
534-
# `ranges`
535-
r = (offset + 1):(offset + length(vals_left))
536-
push!(ranges, r)
537-
offset = r[end]
538-
# `dists`: only valid if they're the same.
539-
dist_right = getdist(metadata_right, vn)
540-
# Give precedence to `metadata_right`.
541-
push!(dists, dist_right)
542-
gid = metadata_right.gids[getidx(metadata_right, vn)]
543-
push!(gids, gid)
544-
# `orders`: giving precedence to `metadata_right`
545-
push!(orders, getorder(metadata_right, vn))
546-
# `flags`
547-
for k in keys(flags)
548-
# Using `metadata_right`; should we?
549-
push!(flags[k], is_flagged(metadata_right, vn, k))
550-
end
551-
elseif vn in vns_left
552-
# Just extract the metadata from `metadata_left`.
553-
# `vals`
554-
vals_left = getindex_internal(metadata_left, vn)
555-
append!(vals, vals_left)
556-
# `ranges`
557-
r = (offset + 1):(offset + length(vals_left))
558-
push!(ranges, r)
559-
offset = r[end]
560-
# `dists`
561-
dist_left = getdist(metadata_left, vn)
562-
push!(dists, dist_left)
563-
gid = metadata_left.gids[getidx(metadata_left, vn)]
564-
push!(gids, gid)
565-
# `orders`
566-
push!(orders, getorder(metadata_left, vn))
567-
# `flags`
568-
for k in keys(flags)
569-
push!(flags[k], is_flagged(metadata_left, vn, k))
570-
end
571-
else
572-
# Just extract the metadata from `metadata_right`.
573-
# `vals`
574-
vals_right = getindex_internal(metadata_right, vn)
575-
append!(vals, vals_right)
576-
# `ranges`
577-
r = (offset + 1):(offset + length(vals_right))
578-
push!(ranges, r)
579-
offset = r[end]
580-
# `dists`
581-
dist_right = getdist(metadata_right, vn)
582-
push!(dists, dist_right)
583-
gid = metadata_right.gids[getidx(metadata_right, vn)]
584-
push!(gids, gid)
585-
# `orders`
586-
push!(orders, getorder(metadata_right, vn))
587-
# `flags`
588-
for k in keys(flags)
589-
push!(flags[k], is_flagged(metadata_right, vn, k))
590-
end
526+
metadata_for_vn = vn in vns_right ? metadata_right : metadata_left
527+
528+
val = getindex_internal(metadata_for_vn, vn)
529+
append!(vals, val)
530+
r = (offset + 1):(offset + length(val))
531+
push!(ranges, r)
532+
offset = r[end]
533+
dist = getdist(metadata_for_vn, vn)
534+
push!(dists, dist)
535+
gid = metadata_for_vn.gids[getidx(metadata_for_vn, vn)]
536+
push!(gids, gid)
537+
push!(orders, getorder(metadata_for_vn, vn))
538+
for k in keys(flags)
539+
push!(flags[k], is_flagged(metadata_for_vn, vn, k))
591540
end
592541
end
593542

0 commit comments

Comments
 (0)