Skip to content

Commit 08feaf4

Browse files
authored
Merge pull request #288 from rsagroup/concat
hopefully faster concatenation of RDMs
2 parents f6c0667 + 11918ef commit 08feaf4

File tree

1 file changed

+17
-3
lines changed

1 file changed

+17
-3
lines changed

src/rsatoolbox/rdm/rdms.py

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -502,11 +502,25 @@ def concat(*rdms):
502502
rdms_list = list(rdms[0])
503503
else:
504504
rdms_list = list(rdms)
505-
rdm = deepcopy(rdms_list[0])
506-
assert isinstance(rdm, RDMs), \
505+
assert isinstance(rdms_list[0], RDMs), \
507506
'Supply list of RDMs objects, or RDMs objects as separate arguments'
507+
rdm_descriptors = deepcopy(rdms_list[0].rdm_descriptors)
508508
for rdm_new in rdms_list[1:]:
509-
rdm.append(rdm_new)
509+
assert isinstance(rdm_new, RDMs), 'rdm for concat should be an RDMs'
510+
assert rdm_new.n_cond == rdms_list[0].n_cond, 'rdm for concat had wrong shape'
511+
assert rdm_new.dissimilarity_measure == rdms_list[0].dissimilarity_measure, \
512+
'appended rdm had wrong dissimilarity measure'
513+
rdm_descriptors = append_descriptor(rdm_descriptors, rdm_new.rdm_descriptors)
514+
dissimilarities = np.concatenate([
515+
rdm.dissimilarities
516+
for rdm in rdms_list
517+
], axis=0)
518+
rdm = RDMs(
519+
dissimilarities=dissimilarities,
520+
rdm_descriptors=rdm_descriptors,
521+
descriptors=rdms_list[0].descriptors,
522+
pattern_descriptors=rdms_list[0].pattern_descriptors
523+
)
510524
return rdm
511525

512526

0 commit comments

Comments
 (0)