MCPcopy
hub / github.com/dmlc/dgl / combine_frames

Function combine_frames

python/dgl/heterograph.py:6561–6607  ·  view source on GitHub ↗

Merge the frames into one frame, taking the common columns. Return None if there is no common columns. Parameters ---------- frames : List[Frame] List of frames ids : List[int] List of frame IDs col_names : List[str], optional Column names to conside

(frames, ids, col_names=None)

Source from the content-addressed store, hash-verified

6559
6560
6561def combine_frames(frames, ids, col_names=None):
6562 """Merge the frames into one frame, taking the common columns.
6563
6564 Return None if there is no common columns.
6565
6566 Parameters
6567 ----------
6568 frames : List[Frame]
6569 List of frames
6570 ids : List[int]
6571 List of frame IDs
6572 col_names : List[str], optional
6573 Column names to consider. If not given, it considers all columns.
6574
6575 Returns
6576 -------
6577 Frame
6578 The resulting frame
6579 """
6580 # find common columns and check if their schemes match
6581 schemes = None
6582 for frame_id in ids:
6583 frame = frames[frame_id]
6584 if frame.num_rows == 0:
6585 continue
6586 if schemes is None:
6587 schemes = frame.schemes
6588 if col_names is not None:
6589 schemes = {key: frame.schemes[key] for key in col_names}
6590 continue
6591 for key, scheme in list(schemes.items()):
6592 if key in frame.schemes:
6593 if frame.schemes[key] != scheme:
6594 raise DGLError(
6595 "Cannot concatenate column %s with shape %s and shape %s"
6596 % (key, frame.schemes[key], scheme)
6597 )
6598 else:
6599 del schemes[key]
6600
6601 if len(schemes) == 0:
6602 return None
6603
6604 # concatenate the columns
6605 to_cat = lambda key: [frames[i][key] for i in ids if frames[i].num_rows > 0]
6606 cols = {key: F.cat(to_cat(key), dim=0) for key in schemes}
6607 return Frame(cols)
6608
6609
6610def combine_names(names, ids=None):

Callers 2

__getitem__Method · 0.85
to_homogeneousFunction · 0.85

Calls 3

DGLErrorClass · 0.85
FrameClass · 0.85
itemsMethod · 0.45

Tested by

no test coverage detected