Skip to content

Commit

Permalink
Remove automatically_register_units (#85)
Browse files Browse the repository at this point in the history
* update unit repr

* remove `automatically_register_units`

* update ignore
  • Loading branch information
chaoming0625 authored Dec 25, 2024
1 parent f131537 commit 2364b21
Show file tree
Hide file tree
Showing 7 changed files with 43 additions and 9 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -225,3 +225,5 @@ cython_debug/
/docs/apis/brainunit.linalg.rst
/docs/apis/brainunit.math.rst
/docs/apis/changelog.md
/dist-hist/
/dist-hist/
2 changes: 1 addition & 1 deletion brainunit/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
# limitations under the License.
# ==============================================================================

__version__ = "0.0.3"
__version__ = "0.0.4"

from . import _matplotlib_compat
from . import autograd
Expand Down
20 changes: 16 additions & 4 deletions brainunit/_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -1760,9 +1760,15 @@ def __repr__(self) -> str:
return f'Unit({self.base}^{self.scale})'
else:
if self.factor == 1.:
return f'{self.base}^{self.scale} * {self.name}'
if self.scale == 0:
return f'{self.name}'
else:
return f'{self.base}^{self.scale} * {self.name}'
else:
return f'{self.factor} * {self.base}^{self.scale} * {self.name}'
if self.scale == 0:
return f'{self.factor} * {self.name}'
else:
return f'{self.factor} * {self.base}^{self.scale} * {self.name}'

def __str__(self) -> str:
if self.is_fullname:
Expand All @@ -1771,9 +1777,15 @@ def __str__(self) -> str:
return f'Unit({self.base}^{self.scale})'
else:
if self.factor == 1.:
return f'{self.base}^{self.scale} * {self.dispname}'
if self.scale == 0:
return f'{self.dispname}'
else:
return f'{self.base}^{self.scale} * {self.dispname}'
else:
return f'{self.factor} * {self.base}^{self.scale} * {self.dispname}'
if self.scale == 0:
return f'{self.factor} * {self.dispname}'
else:
return f'{self.factor} * {self.base}^{self.scale} * {self.dispname}'

def __mul__(self, other) -> 'Unit' | Quantity:
# self * other
Expand Down
2 changes: 0 additions & 2 deletions brainunit/_unit_common.py
Original file line number Diff line number Diff line change
Expand Up @@ -2097,8 +2097,6 @@
]


Unit.automatically_register_units = False

#### FUNDAMENTAL UNITS
metre = Unit.create(get_or_create_dimension(m=1), "metre", "m")
meter = Unit.create(get_or_create_dimension(m=1), "meter", "m")
Expand Down
2 changes: 1 addition & 1 deletion brainunit/sparse/_csr.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ def with_data(self, data: jax.Array | Quantity) -> CSR:
assert data.shape == self.data.shape
assert data.dtype == self.data.dtype
assert get_unit(data) == get_unit(self.data)
return CSR((data, self.indices, self.indptr), shape=self.shape)
return self.__class__((data, self.indices, self.indptr), shape=self.shape)

def todense(self):
return csr_todense(self)
Expand Down
23 changes: 23 additions & 0 deletions brainunit/sparse/_csr_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,29 @@ def test_matvec(self):
)
)

def test_matvec_non_unit(self):
data = bst.random.rand(10, 20)
data = data * (data < 0.3)

csr = u.sparse.CSR.fromdense(data)

x = bst.random.random((10,))

self.assertTrue(
u.math.allclose(
x @ data,
x @ csr
)
)

x = bst.random.random((20,))
self.assertTrue(
u.math.allclose(
data @ x,
csr @ x
)
)

def test_matmul(self):
for ux, uy in [
(u.ms, u.mV),
Expand Down
1 change: 0 additions & 1 deletion dev/units_template.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@

{all}

Unit.automatically_register_units = False

#### FUNDAMENTAL UNITS
metre = Unit.create(get_or_create_dimension(m=1), "metre", "m")
Expand Down

0 comments on commit 2364b21

Please sign in to comment.