Skip to content

Commit 4dab9a2

Browse files
committed
Introducing type induction for data frame
1 parent 39004e0 commit 4dab9a2

File tree

17 files changed

+69
-13
lines changed

17 files changed

+69
-13
lines changed

DataFrame-Core.package/DataFrame.class/instance/^equals.st

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ comparing
88
"This is the fastest way for two data frames with different dimensions"
99
aDataFrame dimensions = self dimensions
1010
ifFalse: [ ^ false ].
11+
12+
"If column types are different, we don't need to iterate through row and column names"
13+
aDataFrame columnTypes = self columnTypes
14+
ifFalse: [ ^ false ].
1115

1216
"If the names are different we don't need to iterate through values"
1317
(aDataFrame rowNames = self rowNames
Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
11
accessing
22
at: rowNumber at: columnNumber put: value
33

4-
contents at: rowNumber at: columnNumber put: value.
4+
| typeInductor |
5+
6+
contents at: rowNumber at: columnNumber put: value.
7+
8+
typeInductor := DataTypeInductor new.
9+
columnTypes at: columnNumber put:
10+
(typeInductor
11+
leastCommonSuperclassOf: value class
12+
and: (columnTypes at: columnNumber)).
Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
11
accessing
22
columnAt: aNumber put: anArray
33

4+
| typeInductor type |
5+
46
anArray size = self numberOfRows
57
ifFalse: [ SizeMismatch signal ].
68

7-
contents columnAt: aNumber put: anArray.
9+
typeInductor := DataTypeInductor new.
10+
type := typeInductor typeOf: anArray.
11+
12+
contents columnAt: aNumber put: anArray.
13+
columnTypes at: aNumber put: type.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
accessing
2+
columnTypes
3+
4+
^ columnTypes.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
as yet unclassified
2+
induceColumnTypes
3+
"Indeces the least common superclass for all the values in each column of a data frame"
4+
5+
| inductor |
6+
inductor := DataTypeInductor new.
7+
8+
columnTypes := inductor columnTypesOf: self.

DataFrame-Core.package/DataFrame.class/instance/initialize..st

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ initialize: aPoint
44
super initialize.
55

66
contents := DataFrameInternal new: aPoint.
7-
self setDefaultRowColumnNames.
7+
self setDefaultRowColumnNames.
8+
self induceColumnTypes.

DataFrame-Core.package/DataFrame.class/instance/initialize.st

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ initialize
44
super initialize.
55

66
contents := DataFrameInternal new.
7-
self setDefaultRowColumnNames.
7+
self setDefaultRowColumnNames.
8+
self induceColumnTypes.

DataFrame-Core.package/DataFrame.class/instance/initializeColumns..st

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@ initialization
22
initializeColumns: anArrayOfArrays
33

44
contents := DataFrameInternal fromColumns: anArrayOfArrays.
5-
self setDefaultRowColumnNames.
5+
self setDefaultRowColumnNames.
6+
self induceColumnTypes.

DataFrame-Core.package/DataFrame.class/instance/initializeContents.rowNames.columnNames..st

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@ initializeContents: aDataFrameInternal rowNames: rows columnNames: columns
55

66
contents := aDataFrameInternal.
77
self rowNames: rows.
8-
self columnNames: columns.
8+
self columnNames: columns.
9+
self induceColumnTypes.

DataFrame-Core.package/DataFrame.class/instance/initializeMatrix..st

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@ initialization
22
initializeMatrix: aMatrix
33

44
contents := DataFrameInternal fromMatrix: aMatrix.
5-
self setDefaultRowColumnNames.
5+
self setDefaultRowColumnNames.
6+
self induceColumnTypes.

0 commit comments

Comments
 (0)