diff options
author | Muriithi Frederick Muriuki | 2021-07-29 14:09:49 +0300 |
---|---|---|
committer | Muriithi Frederick Muriuki | 2021-07-29 14:09:49 +0300 |
commit | 77312535e643e4c8fecd7c20b3381996808dea11 (patch) | |
tree | 855f947a7f5c09b9096fe22e791f0cfef4c29854 | |
parent | bbc2d3d57a66f1c6815a3fdd243c6461115510a5 (diff) | |
download | genenetwork3-77312535e643e4c8fecd7c20b3381996808dea11.tar.gz |
Add partial type annotations for slink module
Issue:
https://github.com/genenetwork/gn-gemtext-threads/blob/main/topics/gn1-migration-to-gn2/clustering.gmi
* Add some type annotations for the `nearest` function.
* Leave some comments regarding the issues experienced when trying to add some
typing annotations to the function to help with future endeavours of the
same.
-rw-r--r-- | gn3/computations/slink.py | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/gn3/computations/slink.py b/gn3/computations/slink.py index 4aac6b3..23d3d88 100644 --- a/gn3/computations/slink.py +++ b/gn3/computations/slink.py @@ -7,6 +7,10 @@ slink: TODO: Describe what the function does... """ import logging +from typing import List, Tuple, Union, Sequence + +NumType = Union[int, float] +SeqOfNums = Sequence[NumType] class LengthError(BaseException): """Raised whenever child lists/tuples are not the same length as the parent @@ -73,7 +77,10 @@ raise an exception.""" def __flatten_list_of_lists(parent): return [item for child in parent for item in child] -def nearest(lists, i, j): +# i and j are Union[SeqOfNums, NumType], but that leads to errors where the +# values of i or j are indexed, since the NumType type is not indexable. +# I don't know how to type this so that it does not fail on running `mypy .` +def nearest(lists: Sequence[SeqOfNums], i, j) -> NumType: """ Computes shortest distance between member(s) in `i` and member(s) in `j`. @@ -126,6 +133,10 @@ def nearest(lists, i, j): raise ValueError("member values (i or j) should be lists/tuples of integers or integers") +# `lists` here could be Sequence[SeqOfNums], but that leads to errors I do not +# understand down the line +# Might have to re-implement the function especially since the errors are thrown +# where `listindexcopy` is involved def slink(lists): """ DESCRIPTION: |