From b07907f6cc5ea5eb2eed15af953e427fd78d8607 Mon Sep 17 00:00:00 2001 From: Ernst Roell Date: Mon, 1 Jul 2024 14:14:33 +0200 Subject: [PATCH] Removed docs folder --- docs/dect.html | 409 ------------ docs/dect/directions.html | 531 --------------- docs/dect/ect.html | 1320 ------------------------------------- docs/index.html | 7 - docs/search.js | 46 -- 5 files changed, 2313 deletions(-) delete mode 100644 docs/dect.html delete mode 100644 docs/dect/directions.html delete mode 100644 docs/dect/ect.html delete mode 100644 docs/index.html delete mode 100644 docs/search.js diff --git a/docs/dect.html b/docs/dect.html deleted file mode 100644 index 5fc761e..0000000 --- a/docs/dect.html +++ /dev/null @@ -1,409 +0,0 @@ - - - - - - - dect API documentation - - - - - - - - - -
-
-

-dect

- -

DECT - Differentiable Euler Characteristic Transform

- -

arXiv GitHub contributors GitHub

- -

This is the official implementation for the Differential Euler Characteristic -Transform. Our implementation is fully optimized for hardware acceleration, -yielding a blazingly fast implementation for machine learning research with -pytorch.

- -

Animated-ECT

- -

If you find our work useful, please use the following citation for our work:

- -
-
@inproceedings{Roell24a,
-  title         = {Differentiable Euler Characteristic Transforms for Shape Classification},
-  author        = {Ernst R{\"o}ell and Bastian Rieck},
-  year          = 2024,
-  booktitle     = {International Conference on Learning Representations},
-  eprint        = {2310.07630},
-  archiveprefix = {arXiv},
-  primaryclass  = {cs.LG},
-  repository    = {https://github.com/aidos-lab/DECT},
-  url           = {https://openreview.net/forum?id=MO632iPq3I},
-}
-
-
- -

Installation

- -

For the installation we require an up to date installation of pytorch either -with or without CUDA support. The DECT implementation also relies on the -torch-scatter package, highly optimized for grouped operations such summing -of a vector given an index vector.

- -
    -
  • First install torch and torch-scatter.

    - -
    -
    pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117
    -pip install torch-scatter -f https://data.pyg.org/whl/torch-2.1.0+${CUDA}.html
    -
    -
  • -
  • Then install our package in either one of two ways:

    - -
      -
    • As a git submodule

      - -
      -
      git submodule add https://github.com/aidos-lab/dect.git
      -
      -
    • -
    • Or as a pip installable package.

      - -
      -
      pip install git+https://github.com/aidos-lab/dect.git
      -
      -
    • -
  • -
- -

Usage

- -

For example usage, we provide the notebooks/example.ipynb file and the code therein reproduces the -ECT of the gif of this readme. -The code is provided on an as is basis. You are cordially invited to both contribute and -provide feedback. Do not hesitate to contact us.

- -
-
import torch
-from torch_geometric.data import Data, Batch
-from dect.ect import EctConfig, EctLayer
-from dect.directions import generate_uniform_2d_directions
-
-
-v = generate_uniform_2d_directions(num_thetas=64, device="cpu")
-
-layer = EctLayer(EctConfig(), V=v)
-
-points_coordinates = torch.tensor(
-    [[0.5, 0.0], [-0.5, 0.0], [0.5, 0.5]], requires_grad=True
-)
-
-data = Data(x=points_coordinates)
-batch = Batch.from_data_list([data])
-
-ect = layer(batch)
-
-
- -

License

- -

Our code is released under a BSD-3-Clause license. This license essentially -permits you to freely use our code as desired, integrate it into your projects, -and much more --- provided you acknowledge the original authors. Please refer to -LICENSE.md for more information.

- -

Contributing

- -

We welcome contributions and suggestions for our DECT package! Here are some -basic guidelines for contributing:

- -

How to Submit an Issue

- -
    -
  1. Check Existing Issues: Before submitting a new issue, please check if it -has already been reported.

  2. -
  3. Open a New Issue: If your issue is new, open a new issue in the -repository. Provide a clear and detailed description of the problem, -including steps to reproduce the issue if applicable.

  4. -
  5. Include Relevant Information: Include any relevant information, such as -system details, version numbers, and screenshots, to help us understand and -resolve the issue more efficiently.

  6. -
- -

How to Contribute

- -

If you're unfamiliar with contributing to open source repositories, here is a -basic roadmap:

- -
    -
  1. Fork the Repository: Start by forking the repository to your own GitHub -account.

  2. -
  3. Clone the Repository: Clone the forked repository to your local machine.

    - -
    -
    git clone https://github.com/your-username/dect.git
    -
    -
  4. -
  5. Create a Branch: Create a new branch for your feature or bug fix.

    - -
    -
    git checkout -b feature/your-feature-name
    -
    -
  6. -
  7. Make Changes: Implement your changes in the new branch.

  8. -
  9. Commit Changes: Commit your changes with a descriptive commit message.

    - -
    -
    git commit -m "Description of your changes"
    -
    -
  10. -
  11. Push Changes: Push the changes to your forked repository.

    - -
    -
    git push origin feature/your-feature-name
    -
    -
  12. -
  13. Submit a Pull Request: Open a pull request to the main repository with a -clear description of your changes and the purpose of the contribution.

  14. -
- -

Need Help?

- -

If you need any help or have questions, feel free to reach out to the authors or -submit a pull request. We appreciate your contributions and are happy to assist!

-
- - - - - -
1"""
-2.. include:: ../README.md
-3"""
-
- - -
-
- - \ No newline at end of file diff --git a/docs/dect/directions.html b/docs/dect/directions.html deleted file mode 100644 index 8e91f6d..0000000 --- a/docs/dect/directions.html +++ /dev/null @@ -1,531 +0,0 @@ - - - - - - - dect.directions API documentation - - - - - - - - - -
-
-

-dect.directions

- -

Helper function to generate a structured set of directions in 2 and 3 -dimensions.

-
- - - - - -
 1"""
- 2Helper function to generate a structured set of directions in 2 and 3
- 3dimensions.
- 4"""
- 5
- 6import itertools
- 7import torch
- 8
- 9
-10def generate_uniform_directions(
-11    num_thetas: int = 64, d: int = 3, device: str = "cpu"
-12):
-13    """
-14    Generate randomly sampled directions from a sphere in d dimensions.
-15
-16    First a standard gaussian centered at 0 with standard deviation 1 is sampled
-17    and then projected onto the unit sphere. This yields a uniformly sampled set
-18    of points on the unit spere. Please note that the generated shapes with have
-19    shape [d, num_thetas].
-20
-21    Parameters
-22    ----------
-23    num_thetas: int
-24        The number of directions to generate.
-25    d: int
-26        The dimension of the unit sphere. Default is 3 (hence R^3)
-27    device: str
-28        The device to put the tensor on.
-29    """
-30    v = torch.randn(size=(d, num_thetas), device=device)
-31    v /= v.pow(2).sum(axis=0).sqrt().unsqueeze(1)
-32    return v
-33
-34
-35def generate_uniform_2d_directions(num_thetas: int = 64, device: str = "cpu"):
-36    """
-37    Generate uniformly sampled directions on the unit circle in two dimensions.
-38
-39    Provides a structured set of directions in two dimensions. First the
-40    interval [0,2*pi] is devided into a regular grid and the corresponding
-41    angles on the unit circle calculated.
-42
-43    Parameters
-44    ----------
-45    num_thetas: int
-46        The number of directions to generate.
-47    d: int
-48        The dimension of the unit sphere. Default is 3 (hence R^3)
-49    device: str
-50        The device to put the tensor on.
-51    """
-52    v = torch.vstack(
-53        [
-54            torch.sin(
-55                torch.linspace(0, 2 * torch.pi, num_thetas, device=device)
-56            ),
-57            torch.cos(
-58                torch.linspace(0, 2 * torch.pi, num_thetas, device=device)
-59            ),
-60        ]
-61    )
-62
-63    return v
-64
-65
-66def generate_multiview_directions(num_thetas: int, bump_steps: int, d: int):
-67    """
-68    Generates multiple sets of structured directions in n dimensions.
-69
-70    We generate sets of directions by embedding the 2d unit circle in d
-71    dimensions and sample this unit circle in a structured fashion. This
-72    generates d choose 2 structured directions that are organized in channels,
-73    compatible with the ECT calculations.
-74
-75    After computing the ECT, we obtain an d choose 2 channel image where each
-76    channel consists of a structured ect along a hyperplane. For the 3-d case we
-77    would obtain a 3 channel ect with direction sampled along the xy, xz and yz
-78    planes in three dimensions.
-79    """
-80    w = torch.vstack(
-81        [
-82            torch.sin(torch.linspace(0, 2 * torch.pi, bump_steps)),
-83            torch.cos(torch.linspace(0, 2 * torch.pi, bump_steps)),
-84        ]
-85    )
-86
-87    # We obtain n choose 2 channels.
-88    idx_pairs = list(itertools.combinations(range(d), r=2))
-89
-90    v = torch.zeros(size=(len(idx_pairs), d, num_thetas))
-91
-92    for idx, idx_pair in enumerate(idx_pairs):
-93        v[idx, idx_pair[0], :] = w[0]
-94        v[idx, idx_pair[1], :] = w[1]
-95
-96    return v
-
- - -
-
- -
- - def - generate_uniform_directions(num_thetas: int = 64, d: int = 3, device: str = 'cpu'): - - - -
- -
11def generate_uniform_directions(
-12    num_thetas: int = 64, d: int = 3, device: str = "cpu"
-13):
-14    """
-15    Generate randomly sampled directions from a sphere in d dimensions.
-16
-17    First a standard gaussian centered at 0 with standard deviation 1 is sampled
-18    and then projected onto the unit sphere. This yields a uniformly sampled set
-19    of points on the unit spere. Please note that the generated shapes with have
-20    shape [d, num_thetas].
-21
-22    Parameters
-23    ----------
-24    num_thetas: int
-25        The number of directions to generate.
-26    d: int
-27        The dimension of the unit sphere. Default is 3 (hence R^3)
-28    device: str
-29        The device to put the tensor on.
-30    """
-31    v = torch.randn(size=(d, num_thetas), device=device)
-32    v /= v.pow(2).sum(axis=0).sqrt().unsqueeze(1)
-33    return v
-
- - -

Generate randomly sampled directions from a sphere in d dimensions.

- -

First a standard gaussian centered at 0 with standard deviation 1 is sampled -and then projected onto the unit sphere. This yields a uniformly sampled set -of points on the unit spere. Please note that the generated shapes with have -shape [d, num_thetas].

- -
Parameters
- -
    -
  • num_thetas (int): -The number of directions to generate.
  • -
  • d (int): -The dimension of the unit sphere. Default is 3 (hence R^3)
  • -
  • device (str): -The device to put the tensor on.
  • -
-
- - -
-
- -
- - def - generate_uniform_2d_directions(num_thetas: int = 64, device: str = 'cpu'): - - - -
- -
36def generate_uniform_2d_directions(num_thetas: int = 64, device: str = "cpu"):
-37    """
-38    Generate uniformly sampled directions on the unit circle in two dimensions.
-39
-40    Provides a structured set of directions in two dimensions. First the
-41    interval [0,2*pi] is devided into a regular grid and the corresponding
-42    angles on the unit circle calculated.
-43
-44    Parameters
-45    ----------
-46    num_thetas: int
-47        The number of directions to generate.
-48    d: int
-49        The dimension of the unit sphere. Default is 3 (hence R^3)
-50    device: str
-51        The device to put the tensor on.
-52    """
-53    v = torch.vstack(
-54        [
-55            torch.sin(
-56                torch.linspace(0, 2 * torch.pi, num_thetas, device=device)
-57            ),
-58            torch.cos(
-59                torch.linspace(0, 2 * torch.pi, num_thetas, device=device)
-60            ),
-61        ]
-62    )
-63
-64    return v
-
- - -

Generate uniformly sampled directions on the unit circle in two dimensions.

- -

Provides a structured set of directions in two dimensions. First the -interval [0,2*pi] is devided into a regular grid and the corresponding -angles on the unit circle calculated.

- -
Parameters
- -
    -
  • num_thetas (int): -The number of directions to generate.
  • -
  • d (int): -The dimension of the unit sphere. Default is 3 (hence R^3)
  • -
  • device (str): -The device to put the tensor on.
  • -
-
- - -
-
- -
- - def - generate_multiview_directions(num_thetas: int, bump_steps: int, d: int): - - - -
- -
67def generate_multiview_directions(num_thetas: int, bump_steps: int, d: int):
-68    """
-69    Generates multiple sets of structured directions in n dimensions.
-70
-71    We generate sets of directions by embedding the 2d unit circle in d
-72    dimensions and sample this unit circle in a structured fashion. This
-73    generates d choose 2 structured directions that are organized in channels,
-74    compatible with the ECT calculations.
-75
-76    After computing the ECT, we obtain an d choose 2 channel image where each
-77    channel consists of a structured ect along a hyperplane. For the 3-d case we
-78    would obtain a 3 channel ect with direction sampled along the xy, xz and yz
-79    planes in three dimensions.
-80    """
-81    w = torch.vstack(
-82        [
-83            torch.sin(torch.linspace(0, 2 * torch.pi, bump_steps)),
-84            torch.cos(torch.linspace(0, 2 * torch.pi, bump_steps)),
-85        ]
-86    )
-87
-88    # We obtain n choose 2 channels.
-89    idx_pairs = list(itertools.combinations(range(d), r=2))
-90
-91    v = torch.zeros(size=(len(idx_pairs), d, num_thetas))
-92
-93    for idx, idx_pair in enumerate(idx_pairs):
-94        v[idx, idx_pair[0], :] = w[0]
-95        v[idx, idx_pair[1], :] = w[1]
-96
-97    return v
-
- - -

Generates multiple sets of structured directions in n dimensions.

- -

We generate sets of directions by embedding the 2d unit circle in d -dimensions and sample this unit circle in a structured fashion. This -generates d choose 2 structured directions that are organized in channels, -compatible with the ECT calculations.

- -

After computing the ECT, we obtain an d choose 2 channel image where each -channel consists of a structured ect along a hyperplane. For the 3-d case we -would obtain a 3 channel ect with direction sampled along the xy, xz and yz -planes in three dimensions.

-
- - -
-
- - \ No newline at end of file diff --git a/docs/dect/ect.html b/docs/dect/ect.html deleted file mode 100644 index c6cf165..0000000 --- a/docs/dect/ect.html +++ /dev/null @@ -1,1320 +0,0 @@ - - - - - - - dect.ect API documentation - - - - - - - - - -
-
-

-dect.ect

- -

Implementation of the ECT.

-
- - - - - -
  1"""
-  2Implementation of the ECT.
-  3"""
-  4
-  5from dataclasses import dataclass
-  6import torch
-  7from torch import nn
-  8from torch_scatter import segment_add_coo
-  9
- 10
- 11@dataclass(frozen=True)
- 12class ECTConfig:
- 13    """
- 14    Configuration of the ECT Layer.
- 15    """
- 16
- 17    num_thetas: int = 32
- 18    bump_steps: int = 32
- 19    radius: float = 1.1
- 20    ect_type: str = "points"
- 21    device: str = "cpu"
- 22    num_features: int = 3
- 23    normalized: bool = False
- 24
- 25
- 26@dataclass()
- 27class Batch:
- 28    """Template of the required attributes for a data batch.
- 29
- 30    Parameters
- 31    ----------
- 32    x : torch.FloatTensor
- 33        The coordinates of the nodes in the simplical complex provided in the
- 34        format [num_nodes,feature_size].
- 35    batch: torch.LongTensor
- 36        An index that indicates to which pointcloud a point belongs to, in
- 37        principle automatically created by torch_geometric when initializing the
- 38        batch.
- 39    edge_index: torch.LongTensor
- 40        The indices of the points that span an edge in the graph. Conforms to
- 41        pytorch_geometric standards. Shape has to be of the form [2,num_edges].
- 42    face:
- 43        The indices of the points that span a face in the simplicial complex.
- 44        Conforms to pytorch_geometric standards. Shape has to be of the form
- 45        [3,num_faces].
- 46    """
- 47
- 48    x: torch.FloatTensor
- 49    batch: torch.LongTensor
- 50    edge_index: torch.LongTensor | None = None
- 51    face: torch.LongTensor | None = None
- 52
- 53
- 54def compute_ecc(
- 55    nh: torch.FloatTensor,
- 56    index: torch.LongTensor,
- 57    lin: torch.FloatTensor,
- 58    scale: float = 100,
- 59) -> torch.FloatTensor:
- 60    """Computes the Euler Characteristic curve.
- 61
- 62    Parameters
- 63    ----------
- 64    nh : torch.FloatTensor
- 65        The node heights, computed as the inner product of the node coordinates
- 66        x and the direction vector v.
- 67    index: torch.LongTensor
- 68        The index that indicates to which pointcloud a node height belongs. For
- 69        the node heights it is the same as the batch index, for the higher order
- 70        simplices it will have to be recomputed.
- 71    lin: torch.FloatTensor
- 72        The discretization of the interval [-1,1] each node height falls in this
- 73        range due to rescaling in normalizing the data.
- 74    out: torch.FloatTensor
- 75        The shape of the resulting tensor after summation. It has to be of the
- 76        shape [num_discretization_steps, batch_size, num_thetas]
- 77    scale: torch.FloatTensor
- 78        A single number that scales the sigmoid function by multiplying the
- 79        sigmoid with the scale. With high (100>) values, the ect will resemble a
- 80        discrete ECT and with lower values it will smooth the ECT.
- 81    """
- 82    ecc = torch.nn.functional.sigmoid(scale * torch.sub(lin, nh))
- 83
- 84    # Due to (I believe) a bug in segment_add_coo, we have to first transpose
- 85    # and then apply segment add. In the original code movedim was applied after
- 86    # and that yields an bug in the backwards pass. Will have to be reported to
- 87    # pytorch eventually.
- 88    ecc = ecc.movedim(0, 2).movedim(0, 1)
- 89    return segment_add_coo(ecc, index)
- 90
- 91
- 92def compute_ect_points(
- 93    batch: Batch, v: torch.FloatTensor, lin: torch.FloatTensor
- 94):
- 95    """Computes the Euler Characteristic Transform of a batch of point clouds.
- 96
- 97    Parameters
- 98    ----------
- 99    batch : Batch
-100        A batch of data containing the node coordinates and batch index.
-101    v: torch.FloatTensor
-102        The direction vector that contains the directions.
-103    lin: torch.FloatTensor
-104        The discretization of the interval [-1,1] each node height falls in this
-105        range due to rescaling in normalizing the data.
-106    out: torch.FloatTensor
-107        The shape of the resulting tensor after summation. It has to be of the
-108        shape [num_discretization_steps, batch_size, num_thetas]
-109    """
-110    nh = batch.x @ v
-111    return compute_ecc(nh, batch.batch, lin)
-112
-113
-114def compute_ect_edges(
-115    data: Batch, v: torch.FloatTensor, lin: torch.FloatTensor
-116):
-117    """Computes the Euler Characteristic Transform of a batch of graphs.
-118
-119    Parameters
-120    ----------
-121    batch : Batch
-122        A batch of data containing the node coordinates, the edges and batch
-123        index.
-124    v: torch.FloatTensor
-125        The direction vector that contains the directions.
-126    lin: torch.FloatTensor
-127        The discretization of the interval [-1,1] each node height falls in this
-128        range due to rescaling in normalizing the data.
-129    out: torch.FloatTensor
-130        The shape of the resulting tensor after summation. It has to be of the
-131        shape [num_discretization_steps, batch_size, num_thetas]
-132    """
-133    # Compute the node heigths
-134    nh = data.x @ v
-135
-136    # Perform a lookup with the edge indices on node heights, this replaces the
-137    # node index with its node height and then compute the maximum over the
-138    # columns to compute the edge height.
-139    eh, _ = nh[data.edge_index].max(dim=0)
-140
-141    # Compute which batch an edge belongs to. We take the first index of the
-142    # edge (or faces) and do a lookup on the batch index of that node in the
-143    # batch indices of the nodes.
-144    batch_index_nodes = data.batch
-145    batch_index_edges = data.batch[data.edge_index[0]]
-146
-147    return compute_ecc(nh, batch_index_nodes, lin) - compute_ecc(
-148        eh, batch_index_edges, lin
-149    )
-150
-151
-152def compute_ect_faces(
-153    data: Batch, v: torch.FloatTensor, lin: torch.FloatTensor
-154):
-155    """Computes the Euler Characteristic Transform of a batch of meshes.
-156
-157    Parameters
-158    ----------
-159    batch : Batch
-160        A batch of data containing the node coordinates, edges, faces and batch
-161        index.
-162    v: torch.FloatTensor
-163        The direction vector that contains the directions.
-164    lin: torch.FloatTensor
-165        The discretization of the interval [-1,1] each node height falls in this
-166        range due to rescaling in normalizing the data.
-167    out: torch.FloatTensor
-168        The shape of the resulting tensor after summation. It has to be of the
-169        shape [num_discretization_steps, batch_size, num_thetas]
-170    """
-171    # Compute the node heigths
-172    nh = data.x @ v
-173
-174    # Perform a lookup with the edge indices on node heights, this replaces the
-175    # node index with its node height and then compute the maximum over the
-176    # columns to compute the edge height.
-177    eh, _ = nh[data.edge_index].max(dim=0)
-178
-179    # Do the same thing for the faces.
-180    fh, _ = nh[data.face].max(dim=0)
-181
-182    # Compute which batch an edge belongs to. We take the first index of the
-183    # edge (or faces) and do a lookup on the batch index of that node in the
-184    # batch indices of the nodes.
-185    batch_index_nodes = data.batch
-186    batch_index_edges = data.batch[data.edge_index[0]]
-187    batch_index_faces = data.batch[data.face[0]]
-188
-189    return (
-190        compute_ecc(nh, batch_index_nodes, lin)
-191        - compute_ecc(eh, batch_index_edges, lin)
-192        + compute_ecc(fh, batch_index_faces, lin)
-193    )
-194
-195
-196def normalize(ect):
-197    """Returns the normalized ect, scaled to lie in the interval 0,1"""
-198    return ect / torch.amax(ect, dim=(2, 3)).unsqueeze(2).unsqueeze(2)
-199
-200
-201class ECTLayer(nn.Module):
-202    """Machine learning layer for computing the ECT."""
-203
-204    def __init__(self, config: ECTConfig, V=None):
-205        super().__init__()
-206        self.config = config
-207        self.lin = (
-208            torch.linspace(-config.radius, config.radius, config.bump_steps)
-209            .view(-1, 1, 1, 1)
-210            .to(config.device)
-211        )
-212
-213        # If provided with one set of directions.
-214        # For backwards compatibility.
-215        if V.ndim == 2:
-216            V.unsqueeze(0)
-217
-218        self.v = V
-219
-220        if config.ect_type == "points":
-221            self.compute_ect = compute_ect_points
-222        elif config.ect_type == "edges":
-223            self.compute_ect = compute_ect_edges
-224        elif config.ect_type == "faces":
-225            self.compute_ect = compute_ect_faces
-226
-227    def forward(self, batch: Batch):
-228        """Forward method for the ECT Layer."""
-229        ect = self.compute_ect(batch, self.v, self.lin)
-230        if self.config.normalized:
-231            return normalize(ect)
-232        return ect.squeeze()
-
- - -
-
- -
-
@dataclass(frozen=True)
- - class - ECTConfig: - - - -
- -
12@dataclass(frozen=True)
-13class ECTConfig:
-14    """
-15    Configuration of the ECT Layer.
-16    """
-17
-18    num_thetas: int = 32
-19    bump_steps: int = 32
-20    radius: float = 1.1
-21    ect_type: str = "points"
-22    device: str = "cpu"
-23    num_features: int = 3
-24    normalized: bool = False
-
- - -

Configuration of the ECT Layer.

-
- - -
-
- - ECTConfig( num_thetas: int = 32, bump_steps: int = 32, radius: float = 1.1, ect_type: str = 'points', device: str = 'cpu', num_features: int = 3, normalized: bool = False) - - -
- - - - -
-
-
- num_thetas: int = -32 - - -
- - - - -
-
-
- bump_steps: int = -32 - - -
- - - - -
-
-
- radius: float = -1.1 - - -
- - - - -
-
-
- ect_type: str = -'points' - - -
- - - - -
-
-
- device: str = -'cpu' - - -
- - - - -
-
-
- num_features: int = -3 - - -
- - - - -
-
-
- normalized: bool = -False - - -
- - - - -
-
-
- -
-
@dataclass()
- - class - Batch: - - - -
- -
27@dataclass()
-28class Batch:
-29    """Template of the required attributes for a data batch.
-30
-31    Parameters
-32    ----------
-33    x : torch.FloatTensor
-34        The coordinates of the nodes in the simplical complex provided in the
-35        format [num_nodes,feature_size].
-36    batch: torch.LongTensor
-37        An index that indicates to which pointcloud a point belongs to, in
-38        principle automatically created by torch_geometric when initializing the
-39        batch.
-40    edge_index: torch.LongTensor
-41        The indices of the points that span an edge in the graph. Conforms to
-42        pytorch_geometric standards. Shape has to be of the form [2,num_edges].
-43    face:
-44        The indices of the points that span a face in the simplicial complex.
-45        Conforms to pytorch_geometric standards. Shape has to be of the form
-46        [3,num_faces].
-47    """
-48
-49    x: torch.FloatTensor
-50    batch: torch.LongTensor
-51    edge_index: torch.LongTensor | None = None
-52    face: torch.LongTensor | None = None
-
- - -

Template of the required attributes for a data batch.

- -
Parameters
- -
    -
  • x (torch.FloatTensor): -The coordinates of the nodes in the simplical complex provided in the -format [num_nodes,feature_size].
  • -
  • batch (torch.LongTensor): -An index that indicates to which pointcloud a point belongs to, in -principle automatically created by torch_geometric when initializing the -batch.
  • -
  • edge_index (torch.LongTensor): -The indices of the points that span an edge in the graph. Conforms to -pytorch_geometric standards. Shape has to be of the form [2,num_edges].
  • -
  • face:: The indices of the points that span a face in the simplicial complex. -Conforms to pytorch_geometric standards. Shape has to be of the form -[3,num_faces].
  • -
-
- - -
-
- - Batch( x: torch.FloatTensor, batch: torch.LongTensor, edge_index: torch.LongTensor | None = None, face: torch.LongTensor | None = None) - - -
- - - - -
-
-
- x: torch.FloatTensor - - -
- - - - -
-
-
- batch: torch.LongTensor - - -
- - - - -
-
-
- edge_index: torch.LongTensor | None = -None - - -
- - - - -
-
-
- face: torch.LongTensor | None = -None - - -
- - - - -
-
-
- -
- - def - compute_ecc( nh: torch.FloatTensor, index: torch.LongTensor, lin: torch.FloatTensor, scale: float = 100) -> torch.FloatTensor: - - - -
- -
55def compute_ecc(
-56    nh: torch.FloatTensor,
-57    index: torch.LongTensor,
-58    lin: torch.FloatTensor,
-59    scale: float = 100,
-60) -> torch.FloatTensor:
-61    """Computes the Euler Characteristic curve.
-62
-63    Parameters
-64    ----------
-65    nh : torch.FloatTensor
-66        The node heights, computed as the inner product of the node coordinates
-67        x and the direction vector v.
-68    index: torch.LongTensor
-69        The index that indicates to which pointcloud a node height belongs. For
-70        the node heights it is the same as the batch index, for the higher order
-71        simplices it will have to be recomputed.
-72    lin: torch.FloatTensor
-73        The discretization of the interval [-1,1] each node height falls in this
-74        range due to rescaling in normalizing the data.
-75    out: torch.FloatTensor
-76        The shape of the resulting tensor after summation. It has to be of the
-77        shape [num_discretization_steps, batch_size, num_thetas]
-78    scale: torch.FloatTensor
-79        A single number that scales the sigmoid function by multiplying the
-80        sigmoid with the scale. With high (100>) values, the ect will resemble a
-81        discrete ECT and with lower values it will smooth the ECT.
-82    """
-83    ecc = torch.nn.functional.sigmoid(scale * torch.sub(lin, nh))
-84
-85    # Due to (I believe) a bug in segment_add_coo, we have to first transpose
-86    # and then apply segment add. In the original code movedim was applied after
-87    # and that yields an bug in the backwards pass. Will have to be reported to
-88    # pytorch eventually.
-89    ecc = ecc.movedim(0, 2).movedim(0, 1)
-90    return segment_add_coo(ecc, index)
-
- - -

Computes the Euler Characteristic curve.

- -
Parameters
- -
    -
  • nh (torch.FloatTensor): -The node heights, computed as the inner product of the node coordinates -x and the direction vector v.
  • -
  • index (torch.LongTensor): -The index that indicates to which pointcloud a node height belongs. For -the node heights it is the same as the batch index, for the higher order -simplices it will have to be recomputed.
  • -
  • lin (torch.FloatTensor): -The discretization of the interval [-1,1] each node height falls in this -range due to rescaling in normalizing the data.
  • -
  • out (torch.FloatTensor): -The shape of the resulting tensor after summation. It has to be of the -shape [num_discretization_steps, batch_size, num_thetas]
  • -
  • scale (torch.FloatTensor): -A single number that scales the sigmoid function by multiplying the -sigmoid with the scale. With high (100>) values, the ect will resemble a -discrete ECT and with lower values it will smooth the ECT.
  • -
-
- - -
-
- -
- - def - compute_ect_points(batch: Batch, v: torch.FloatTensor, lin: torch.FloatTensor): - - - -
- -
 93def compute_ect_points(
- 94    batch: Batch, v: torch.FloatTensor, lin: torch.FloatTensor
- 95):
- 96    """Computes the Euler Characteristic Transform of a batch of point clouds.
- 97
- 98    Parameters
- 99    ----------
-100    batch : Batch
-101        A batch of data containing the node coordinates and batch index.
-102    v: torch.FloatTensor
-103        The direction vector that contains the directions.
-104    lin: torch.FloatTensor
-105        The discretization of the interval [-1,1] each node height falls in this
-106        range due to rescaling in normalizing the data.
-107    out: torch.FloatTensor
-108        The shape of the resulting tensor after summation. It has to be of the
-109        shape [num_discretization_steps, batch_size, num_thetas]
-110    """
-111    nh = batch.x @ v
-112    return compute_ecc(nh, batch.batch, lin)
-
- - -

Computes the Euler Characteristic Transform of a batch of point clouds.

- -
Parameters
- -
    -
  • batch (Batch): -A batch of data containing the node coordinates and batch index.
  • -
  • v (torch.FloatTensor): -The direction vector that contains the directions.
  • -
  • lin (torch.FloatTensor): -The discretization of the interval [-1,1] each node height falls in this -range due to rescaling in normalizing the data.
  • -
  • out (torch.FloatTensor): -The shape of the resulting tensor after summation. It has to be of the -shape [num_discretization_steps, batch_size, num_thetas]
  • -
-
- - -
-
- -
- - def - compute_ect_edges(data: Batch, v: torch.FloatTensor, lin: torch.FloatTensor): - - - -
- -
115def compute_ect_edges(
-116    data: Batch, v: torch.FloatTensor, lin: torch.FloatTensor
-117):
-118    """Computes the Euler Characteristic Transform of a batch of graphs.
-119
-120    Parameters
-121    ----------
-122    batch : Batch
-123        A batch of data containing the node coordinates, the edges and batch
-124        index.
-125    v: torch.FloatTensor
-126        The direction vector that contains the directions.
-127    lin: torch.FloatTensor
-128        The discretization of the interval [-1,1] each node height falls in this
-129        range due to rescaling in normalizing the data.
-130    out: torch.FloatTensor
-131        The shape of the resulting tensor after summation. It has to be of the
-132        shape [num_discretization_steps, batch_size, num_thetas]
-133    """
-134    # Compute the node heigths
-135    nh = data.x @ v
-136
-137    # Perform a lookup with the edge indices on node heights, this replaces the
-138    # node index with its node height and then compute the maximum over the
-139    # columns to compute the edge height.
-140    eh, _ = nh[data.edge_index].max(dim=0)
-141
-142    # Compute which batch an edge belongs to. We take the first index of the
-143    # edge (or faces) and do a lookup on the batch index of that node in the
-144    # batch indices of the nodes.
-145    batch_index_nodes = data.batch
-146    batch_index_edges = data.batch[data.edge_index[0]]
-147
-148    return compute_ecc(nh, batch_index_nodes, lin) - compute_ecc(
-149        eh, batch_index_edges, lin
-150    )
-
- - -

Computes the Euler Characteristic Transform of a batch of graphs.

- -
Parameters
- -
    -
  • batch (Batch): -A batch of data containing the node coordinates, the edges and batch -index.
  • -
  • v (torch.FloatTensor): -The direction vector that contains the directions.
  • -
  • lin (torch.FloatTensor): -The discretization of the interval [-1,1] each node height falls in this -range due to rescaling in normalizing the data.
  • -
  • out (torch.FloatTensor): -The shape of the resulting tensor after summation. It has to be of the -shape [num_discretization_steps, batch_size, num_thetas]
  • -
-
- - -
-
- -
- - def - compute_ect_faces(data: Batch, v: torch.FloatTensor, lin: torch.FloatTensor): - - - -
- -
153def compute_ect_faces(
-154    data: Batch, v: torch.FloatTensor, lin: torch.FloatTensor
-155):
-156    """Computes the Euler Characteristic Transform of a batch of meshes.
-157
-158    Parameters
-159    ----------
-160    batch : Batch
-161        A batch of data containing the node coordinates, edges, faces and batch
-162        index.
-163    v: torch.FloatTensor
-164        The direction vector that contains the directions.
-165    lin: torch.FloatTensor
-166        The discretization of the interval [-1,1] each node height falls in this
-167        range due to rescaling in normalizing the data.
-168    out: torch.FloatTensor
-169        The shape of the resulting tensor after summation. It has to be of the
-170        shape [num_discretization_steps, batch_size, num_thetas]
-171    """
-172    # Compute the node heigths
-173    nh = data.x @ v
-174
-175    # Perform a lookup with the edge indices on node heights, this replaces the
-176    # node index with its node height and then compute the maximum over the
-177    # columns to compute the edge height.
-178    eh, _ = nh[data.edge_index].max(dim=0)
-179
-180    # Do the same thing for the faces.
-181    fh, _ = nh[data.face].max(dim=0)
-182
-183    # Compute which batch an edge belongs to. We take the first index of the
-184    # edge (or faces) and do a lookup on the batch index of that node in the
-185    # batch indices of the nodes.
-186    batch_index_nodes = data.batch
-187    batch_index_edges = data.batch[data.edge_index[0]]
-188    batch_index_faces = data.batch[data.face[0]]
-189
-190    return (
-191        compute_ecc(nh, batch_index_nodes, lin)
-192        - compute_ecc(eh, batch_index_edges, lin)
-193        + compute_ecc(fh, batch_index_faces, lin)
-194    )
-
- - -

Computes the Euler Characteristic Transform of a batch of meshes.

- -
Parameters
- -
    -
  • batch (Batch): -A batch of data containing the node coordinates, edges, faces and batch -index.
  • -
  • v (torch.FloatTensor): -The direction vector that contains the directions.
  • -
  • lin (torch.FloatTensor): -The discretization of the interval [-1,1] each node height falls in this -range due to rescaling in normalizing the data.
  • -
  • out (torch.FloatTensor): -The shape of the resulting tensor after summation. It has to be of the -shape [num_discretization_steps, batch_size, num_thetas]
  • -
-
- - -
-
- -
- - def - normalize(ect): - - - -
- -
197def normalize(ect):
-198    """Returns the normalized ect, scaled to lie in the interval 0,1"""
-199    return ect / torch.amax(ect, dim=(2, 3)).unsqueeze(2).unsqueeze(2)
-
- - -

Returns the normalized ect, scaled to lie in the interval 0,1

-
- - -
-
- -
- - class - ECTLayer(torch.nn.modules.module.Module): - - - -
- -
202class ECTLayer(nn.Module):
-203    """Machine learning layer for computing the ECT."""
-204
-205    def __init__(self, config: ECTConfig, V=None):
-206        super().__init__()
-207        self.config = config
-208        self.lin = (
-209            torch.linspace(-config.radius, config.radius, config.bump_steps)
-210            .view(-1, 1, 1, 1)
-211            .to(config.device)
-212        )
-213
-214        # If provided with one set of directions.
-215        # For backwards compatibility.
-216        if V.ndim == 2:
-217            V.unsqueeze(0)
-218
-219        self.v = V
-220
-221        if config.ect_type == "points":
-222            self.compute_ect = compute_ect_points
-223        elif config.ect_type == "edges":
-224            self.compute_ect = compute_ect_edges
-225        elif config.ect_type == "faces":
-226            self.compute_ect = compute_ect_faces
-227
-228    def forward(self, batch: Batch):
-229        """Forward method for the ECT Layer."""
-230        ect = self.compute_ect(batch, self.v, self.lin)
-231        if self.config.normalized:
-232            return normalize(ect)
-233        return ect.squeeze()
-
- - -

Machine learning layer for computing the ECT.

-
- - -
- -
- - ECTLayer(config: ECTConfig, V=None) - - - -
- -
205    def __init__(self, config: ECTConfig, V=None):
-206        super().__init__()
-207        self.config = config
-208        self.lin = (
-209            torch.linspace(-config.radius, config.radius, config.bump_steps)
-210            .view(-1, 1, 1, 1)
-211            .to(config.device)
-212        )
-213
-214        # If provided with one set of directions.
-215        # For backwards compatibility.
-216        if V.ndim == 2:
-217            V.unsqueeze(0)
-218
-219        self.v = V
-220
-221        if config.ect_type == "points":
-222            self.compute_ect = compute_ect_points
-223        elif config.ect_type == "edges":
-224            self.compute_ect = compute_ect_edges
-225        elif config.ect_type == "faces":
-226            self.compute_ect = compute_ect_faces
-
- - -

Initializes internal Module state, shared by both nn.Module and ScriptModule.

-
- - -
-
-
- config - - -
- - - - -
-
-
- lin - - -
- - - - -
-
-
- v - - -
- - - - -
-
- -
- - def - forward(self, batch: Batch): - - - -
- -
228    def forward(self, batch: Batch):
-229        """Forward method for the ECT Layer."""
-230        ect = self.compute_ect(batch, self.v, self.lin)
-231        if self.config.normalized:
-232            return normalize(ect)
-233        return ect.squeeze()
-
- - -

Forward method for the ECT Layer.

-
- - -
-
-
Inherited Members
-
-
torch.nn.modules.module.Module
-
dump_patches
-
training
-
call_super_init
-
register_buffer
-
register_parameter
-
add_module
-
register_module
-
get_submodule
-
get_parameter
-
get_buffer
-
get_extra_state
-
set_extra_state
-
apply
-
cuda
-
ipu
-
xpu
-
cpu
-
type
-
float
-
double
-
half
-
bfloat16
-
to_empty
-
to
-
register_full_backward_pre_hook
-
register_backward_hook
-
register_full_backward_hook
-
register_forward_pre_hook
-
register_forward_hook
-
register_state_dict_pre_hook
-
state_dict
-
register_load_state_dict_post_hook
-
load_state_dict
-
parameters
-
named_parameters
-
buffers
-
named_buffers
-
children
-
named_children
-
modules
-
named_modules
-
train
-
eval
-
requires_grad_
-
zero_grad
-
share_memory
-
extra_repr
-
compile
- -
-
-
-
-
- - \ No newline at end of file diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index dd858c0..0000000 --- a/docs/index.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/docs/search.js b/docs/search.js deleted file mode 100644 index e883b75..0000000 --- a/docs/search.js +++ /dev/null @@ -1,46 +0,0 @@ -window.pdocSearch = (function(){ -/** elasticlunr - http://weixsong.github.io * Copyright (C) 2017 Oliver Nightingale * Copyright (C) 2017 Wei Song * MIT Licensed */!function(){function e(e){if(null===e||"object"!=typeof e)return e;var t=e.constructor();for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.9.5",lunr=t,t.utils={},t.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),t.utils.toString=function(e){return void 0===e||null===e?"":e.toString()},t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var e=Array.prototype.slice.call(arguments),t=e.pop(),n=e;if("function"!=typeof t)throw new TypeError("last argument must be a function");n.forEach(function(e){this.hasHandler(e)||(this.events[e]=[]),this.events[e].push(t)},this)},t.EventEmitter.prototype.removeListener=function(e,t){if(this.hasHandler(e)){var n=this.events[e].indexOf(t);-1!==n&&(this.events[e].splice(n,1),0==this.events[e].length&&delete this.events[e])}},t.EventEmitter.prototype.emit=function(e){if(this.hasHandler(e)){var t=Array.prototype.slice.call(arguments,1);this.events[e].forEach(function(e){e.apply(void 0,t)},this)}},t.EventEmitter.prototype.hasHandler=function(e){return e in this.events},t.tokenizer=function(e){if(!arguments.length||null===e||void 0===e)return[];if(Array.isArray(e)){var n=e.filter(function(e){return null===e||void 0===e?!1:!0});n=n.map(function(e){return t.utils.toString(e).toLowerCase()});var i=[];return n.forEach(function(e){var n=e.split(t.tokenizer.seperator);i=i.concat(n)},this),i}return e.toString().trim().toLowerCase().split(t.tokenizer.seperator)},t.tokenizer.defaultSeperator=/[\s\-]+/,t.tokenizer.seperator=t.tokenizer.defaultSeperator,t.tokenizer.setSeperator=function(e){null!==e&&void 0!==e&&"object"==typeof e&&(t.tokenizer.seperator=e)},t.tokenizer.resetSeperator=function(){t.tokenizer.seperator=t.tokenizer.defaultSeperator},t.tokenizer.getSeperator=function(){return t.tokenizer.seperator},t.Pipeline=function(){this._queue=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in t.Pipeline.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[n]=e},t.Pipeline.getRegisteredFunction=function(e){return e in t.Pipeline.registeredFunctions!=!0?null:t.Pipeline.registeredFunctions[e]},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var i=t.Pipeline.getRegisteredFunction(e);if(!i)throw new Error("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._queue.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i+1,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i,0,n)},t.Pipeline.prototype.remove=function(e){var t=this._queue.indexOf(e);-1!==t&&this._queue.splice(t,1)},t.Pipeline.prototype.run=function(e){for(var t=[],n=e.length,i=this._queue.length,o=0;n>o;o++){for(var r=e[o],s=0;i>s&&(r=this._queue[s](r,o,e),void 0!==r&&null!==r);s++);void 0!==r&&null!==r&&t.push(r)}return t},t.Pipeline.prototype.reset=function(){this._queue=[]},t.Pipeline.prototype.get=function(){return this._queue},t.Pipeline.prototype.toJSON=function(){return this._queue.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.DocumentStore,this.index={},this.eventEmitter=new t.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var e=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,e)},t.Index.prototype.off=function(e,t){return this.eventEmitter.removeListener(e,t)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;n._fields=e.fields,n._ref=e.ref,n.documentStore=t.DocumentStore.load(e.documentStore),n.pipeline=t.Pipeline.load(e.pipeline),n.index={};for(var i in e.index)n.index[i]=t.InvertedIndex.load(e.index[i]);return n},t.Index.prototype.addField=function(e){return this._fields.push(e),this.index[e]=new t.InvertedIndex,this},t.Index.prototype.setRef=function(e){return this._ref=e,this},t.Index.prototype.saveDocument=function(e){return this.documentStore=new t.DocumentStore(e),this},t.Index.prototype.addDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.addDoc(i,e),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));this.documentStore.addFieldLength(i,n,o.length);var r={};o.forEach(function(e){e in r?r[e]+=1:r[e]=1},this);for(var s in r){var u=r[s];u=Math.sqrt(u),this.index[n].addToken(s,{ref:i,tf:u})}},this),n&&this.eventEmitter.emit("add",e,this)}},t.Index.prototype.removeDocByRef=function(e){if(e&&this.documentStore.isDocStored()!==!1&&this.documentStore.hasDoc(e)){var t=this.documentStore.getDoc(e);this.removeDoc(t,!1)}},t.Index.prototype.removeDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.hasDoc(i)&&(this.documentStore.removeDoc(i),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));o.forEach(function(e){this.index[n].removeToken(e,i)},this)},this),n&&this.eventEmitter.emit("remove",e,this))}},t.Index.prototype.updateDoc=function(e,t){var t=void 0===t?!0:t;this.removeDocByRef(e[this._ref],!1),this.addDoc(e,!1),t&&this.eventEmitter.emit("update",e,this)},t.Index.prototype.idf=function(e,t){var n="@"+t+"/"+e;if(Object.prototype.hasOwnProperty.call(this._idfCache,n))return this._idfCache[n];var i=this.index[t].getDocFreq(e),o=1+Math.log(this.documentStore.length/(i+1));return this._idfCache[n]=o,o},t.Index.prototype.getFields=function(){return this._fields.slice()},t.Index.prototype.search=function(e,n){if(!e)return[];e="string"==typeof e?{any:e}:JSON.parse(JSON.stringify(e));var i=null;null!=n&&(i=JSON.stringify(n));for(var o=new t.Configuration(i,this.getFields()).get(),r={},s=Object.keys(e),u=0;u0&&t.push(e);for(var i in n)"docs"!==i&&"df"!==i&&this.expandToken(e+i,t,n[i]);return t},t.InvertedIndex.prototype.toJSON=function(){return{root:this.root}},t.Configuration=function(e,n){var e=e||"";if(void 0==n||null==n)throw new Error("fields should not be null");this.config={};var i;try{i=JSON.parse(e),this.buildUserConfig(i,n)}catch(o){t.utils.warn("user configuration parse failed, will use default configuration"),this.buildDefaultConfig(n)}},t.Configuration.prototype.buildDefaultConfig=function(e){this.reset(),e.forEach(function(e){this.config[e]={boost:1,bool:"OR",expand:!1}},this)},t.Configuration.prototype.buildUserConfig=function(e,n){var i="OR",o=!1;if(this.reset(),"bool"in e&&(i=e.bool||i),"expand"in e&&(o=e.expand||o),"fields"in e)for(var r in e.fields)if(n.indexOf(r)>-1){var s=e.fields[r],u=o;void 0!=s.expand&&(u=s.expand),this.config[r]={boost:s.boost||0===s.boost?s.boost:1,bool:s.bool||i,expand:u}}else t.utils.warn("field name in user configuration not found in index instance fields");else this.addAllFields2UserConfig(i,o,n)},t.Configuration.prototype.addAllFields2UserConfig=function(e,t,n){n.forEach(function(n){this.config[n]={boost:1,bool:e,expand:t}},this)},t.Configuration.prototype.get=function(){return this.config},t.Configuration.prototype.reset=function(){this.config={}},lunr.SortedSet=function(){this.length=0,this.elements=[]},lunr.SortedSet.load=function(e){var t=new this;return t.elements=e,t.length=e.length,t},lunr.SortedSet.prototype.add=function(){var e,t;for(e=0;e1;){if(r===e)return o;e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o]}return r===e?o:-1},lunr.SortedSet.prototype.locationFor=function(e){for(var t=0,n=this.elements.length,i=n-t,o=t+Math.floor(i/2),r=this.elements[o];i>1;)e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o];return r>e?o:e>r?o+1:void 0},lunr.SortedSet.prototype.intersect=function(e){for(var t=new lunr.SortedSet,n=0,i=0,o=this.length,r=e.length,s=this.elements,u=e.elements;;){if(n>o-1||i>r-1)break;s[n]!==u[i]?s[n]u[i]&&i++:(t.add(s[n]),n++,i++)}return t},lunr.SortedSet.prototype.clone=function(){var e=new lunr.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},lunr.SortedSet.prototype.union=function(e){var t,n,i;this.length>=e.length?(t=this,n=e):(t=e,n=this),i=t.clone();for(var o=0,r=n.toArray();oDECT - Differentiable Euler Characteristic Transform\n\n

\"arXiv\" \"GitHub \"GitHub\"

\n\n

This is the official implementation for the Differential Euler Characteristic\nTransform. Our implementation is fully optimized for hardware acceleration,\nyielding a blazingly fast implementation for machine learning research with\npytorch.

\n\n

\"Animated-ECT\"

\n\n

If you find our work useful, please use the following citation for our work:

\n\n
\n
@inproceedings{Roell24a,\n  title         = {Differentiable Euler Characteristic Transforms for Shape Classification},\n  author        = {Ernst R{\\"o}ell and Bastian Rieck},\n  year          = 2024,\n  booktitle     = {International Conference on Learning Representations},\n  eprint        = {2310.07630},\n  archiveprefix = {arXiv},\n  primaryclass  = {cs.LG},\n  repository    = {https://github.com/aidos-lab/DECT},\n  url           = {https://openreview.net/forum?id=MO632iPq3I},\n}\n
\n
\n\n

Installation

\n\n

For the installation we require an up to date installation of pytorch either\nwith or without CUDA support. The DECT implementation also relies on the\ntorch-scatter package, highly optimized for grouped operations such summing \nof a vector given an index vector.

\n\n
    \n
  • First install torch and torch-scatter.

    \n\n
    \n
    pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117\npip install torch-scatter -f https://data.pyg.org/whl/torch-2.1.0+${CUDA}.html\n
    \n
  • \n
  • Then install our package in either one of two ways:

    \n\n
      \n
    • As a git submodule

      \n\n
      \n
      git submodule add https://github.com/aidos-lab/dect.git\n
      \n
    • \n
    • Or as a pip installable package.

      \n\n
      \n
      pip install git+https://github.com/aidos-lab/dect.git\n
      \n
    • \n
  • \n
\n\n

Usage

\n\n

For example usage, we provide the notebooks/example.ipynb file and the code therein reproduces the \nECT of the gif of this readme. \nThe code is provided on an as is basis. You are cordially invited to both contribute and \nprovide feedback. Do not hesitate to contact us.

\n\n
\n
import torch\nfrom torch_geometric.data import Data, Batch\nfrom dect.ect import EctConfig, EctLayer\nfrom dect.directions import generate_uniform_2d_directions\n\n\nv = generate_uniform_2d_directions(num_thetas=64, device="cpu")\n\nlayer = EctLayer(EctConfig(), V=v)\n\npoints_coordinates = torch.tensor(\n    [[0.5, 0.0], [-0.5, 0.0], [0.5, 0.5]], requires_grad=True\n)\n\ndata = Data(x=points_coordinates)\nbatch = Batch.from_data_list([data])\n\nect = layer(batch)\n
\n
\n\n

License

\n\n

Our code is released under a BSD-3-Clause license. This license essentially\npermits you to freely use our code as desired, integrate it into your projects,\nand much more --- provided you acknowledge the original authors. Please refer to\nLICENSE.md for more information.

\n\n

Contributing

\n\n

We welcome contributions and suggestions for our DECT package! Here are some\nbasic guidelines for contributing:

\n\n

How to Submit an Issue

\n\n
    \n
  1. Check Existing Issues: Before submitting a new issue, please check if it\nhas already been reported.

  2. \n
  3. Open a New Issue: If your issue is new, open a new issue in the\nrepository. Provide a clear and detailed description of the problem,\nincluding steps to reproduce the issue if applicable.

  4. \n
  5. Include Relevant Information: Include any relevant information, such as\nsystem details, version numbers, and screenshots, to help us understand and\nresolve the issue more efficiently.

  6. \n
\n\n

How to Contribute

\n\n

If you're unfamiliar with contributing to open source repositories, here is a\nbasic roadmap:

\n\n
    \n
  1. Fork the Repository: Start by forking the repository to your own GitHub\naccount.

  2. \n
  3. Clone the Repository: Clone the forked repository to your local machine.

    \n\n
    \n
    git clone https://github.com/your-username/dect.git\n
    \n
  4. \n
  5. Create a Branch: Create a new branch for your feature or bug fix.

    \n\n
    \n
    git checkout -b feature/your-feature-name\n
    \n
  6. \n
  7. Make Changes: Implement your changes in the new branch.

  8. \n
  9. Commit Changes: Commit your changes with a descriptive commit message.

    \n\n
    \n
    git commit -m "Description of your changes"\n
    \n
  10. \n
  11. Push Changes: Push the changes to your forked repository.

    \n\n
    \n
    git push origin feature/your-feature-name\n
    \n
  12. \n
  13. Submit a Pull Request: Open a pull request to the main repository with a\nclear description of your changes and the purpose of the contribution.

  14. \n
\n\n

Need Help?

\n\n

If you need any help or have questions, feel free to reach out to the authors or\nsubmit a pull request. We appreciate your contributions and are happy to assist!

\n"}, "dect.directions": {"fullname": "dect.directions", "modulename": "dect.directions", "kind": "module", "doc": "

Helper function to generate a structured set of directions in 2 and 3\ndimensions.

\n"}, "dect.directions.generate_uniform_directions": {"fullname": "dect.directions.generate_uniform_directions", "modulename": "dect.directions", "qualname": "generate_uniform_directions", "kind": "function", "doc": "

Generate randomly sampled directions from a sphere in d dimensions.

\n\n

First a standard gaussian centered at 0 with standard deviation 1 is sampled\nand then projected onto the unit sphere. This yields a uniformly sampled set\nof points on the unit spere. Please note that the generated shapes with have\nshape [d, num_thetas].

\n\n
Parameters
\n\n
    \n
  • num_thetas (int):\nThe number of directions to generate.
  • \n
  • d (int):\nThe dimension of the unit sphere. Default is 3 (hence R^3)
  • \n
  • device (str):\nThe device to put the tensor on.
  • \n
\n", "signature": "(num_thetas: int = 64, d: int = 3, device: str = 'cpu'):", "funcdef": "def"}, "dect.directions.generate_uniform_2d_directions": {"fullname": "dect.directions.generate_uniform_2d_directions", "modulename": "dect.directions", "qualname": "generate_uniform_2d_directions", "kind": "function", "doc": "

Generate uniformly sampled directions on the unit circle in two dimensions.

\n\n

Provides a structured set of directions in two dimensions. First the\ninterval [0,2*pi] is devided into a regular grid and the corresponding\nangles on the unit circle calculated.

\n\n
Parameters
\n\n
    \n
  • num_thetas (int):\nThe number of directions to generate.
  • \n
  • d (int):\nThe dimension of the unit sphere. Default is 3 (hence R^3)
  • \n
  • device (str):\nThe device to put the tensor on.
  • \n
\n", "signature": "(num_thetas: int = 64, device: str = 'cpu'):", "funcdef": "def"}, "dect.directions.generate_multiview_directions": {"fullname": "dect.directions.generate_multiview_directions", "modulename": "dect.directions", "qualname": "generate_multiview_directions", "kind": "function", "doc": "

Generates multiple sets of structured directions in n dimensions.

\n\n

We generate sets of directions by embedding the 2d unit circle in d\ndimensions and sample this unit circle in a structured fashion. This\ngenerates d choose 2 structured directions that are organized in channels,\ncompatible with the ECT calculations.

\n\n

After computing the ECT, we obtain an d choose 2 channel image where each\nchannel consists of a structured ect along a hyperplane. For the 3-d case we\nwould obtain a 3 channel ect with direction sampled along the xy, xz and yz\nplanes in three dimensions.

\n", "signature": "(num_thetas: int, bump_steps: int, d: int):", "funcdef": "def"}, "dect.ect": {"fullname": "dect.ect", "modulename": "dect.ect", "kind": "module", "doc": "

Implementation of the ECT.

\n"}, "dect.ect.ECTConfig": {"fullname": "dect.ect.ECTConfig", "modulename": "dect.ect", "qualname": "ECTConfig", "kind": "class", "doc": "

Configuration of the ECT Layer.

\n"}, "dect.ect.ECTConfig.__init__": {"fullname": "dect.ect.ECTConfig.__init__", "modulename": "dect.ect", "qualname": "ECTConfig.__init__", "kind": "function", "doc": "

\n", "signature": "(\tnum_thetas: int = 32,\tbump_steps: int = 32,\tradius: float = 1.1,\tect_type: str = 'points',\tdevice: str = 'cpu',\tnum_features: int = 3,\tnormalized: bool = False)"}, "dect.ect.ECTConfig.num_thetas": {"fullname": "dect.ect.ECTConfig.num_thetas", "modulename": "dect.ect", "qualname": "ECTConfig.num_thetas", "kind": "variable", "doc": "

\n", "annotation": ": int", "default_value": "32"}, "dect.ect.ECTConfig.bump_steps": {"fullname": "dect.ect.ECTConfig.bump_steps", "modulename": "dect.ect", "qualname": "ECTConfig.bump_steps", "kind": "variable", "doc": "

\n", "annotation": ": int", "default_value": "32"}, "dect.ect.ECTConfig.radius": {"fullname": "dect.ect.ECTConfig.radius", "modulename": "dect.ect", "qualname": "ECTConfig.radius", "kind": "variable", "doc": "

\n", "annotation": ": float", "default_value": "1.1"}, "dect.ect.ECTConfig.ect_type": {"fullname": "dect.ect.ECTConfig.ect_type", "modulename": "dect.ect", "qualname": "ECTConfig.ect_type", "kind": "variable", "doc": "

\n", "annotation": ": str", "default_value": "'points'"}, "dect.ect.ECTConfig.device": {"fullname": "dect.ect.ECTConfig.device", "modulename": "dect.ect", "qualname": "ECTConfig.device", "kind": "variable", "doc": "

\n", "annotation": ": str", "default_value": "'cpu'"}, "dect.ect.ECTConfig.num_features": {"fullname": "dect.ect.ECTConfig.num_features", "modulename": "dect.ect", "qualname": "ECTConfig.num_features", "kind": "variable", "doc": "

\n", "annotation": ": int", "default_value": "3"}, "dect.ect.ECTConfig.normalized": {"fullname": "dect.ect.ECTConfig.normalized", "modulename": "dect.ect", "qualname": "ECTConfig.normalized", "kind": "variable", "doc": "

\n", "annotation": ": bool", "default_value": "False"}, "dect.ect.Batch": {"fullname": "dect.ect.Batch", "modulename": "dect.ect", "qualname": "Batch", "kind": "class", "doc": "

Template of the required attributes for a data batch.

\n\n
Parameters
\n\n
    \n
  • x (torch.FloatTensor):\nThe coordinates of the nodes in the simplical complex provided in the\nformat [num_nodes,feature_size].
  • \n
  • batch (torch.LongTensor):\nAn index that indicates to which pointcloud a point belongs to, in\nprinciple automatically created by torch_geometric when initializing the\nbatch.
  • \n
  • edge_index (torch.LongTensor):\nThe indices of the points that span an edge in the graph. Conforms to\npytorch_geometric standards. Shape has to be of the form [2,num_edges].
  • \n
  • face:: The indices of the points that span a face in the simplicial complex.\nConforms to pytorch_geometric standards. Shape has to be of the form\n[3,num_faces].
  • \n
\n"}, "dect.ect.Batch.__init__": {"fullname": "dect.ect.Batch.__init__", "modulename": "dect.ect", "qualname": "Batch.__init__", "kind": "function", "doc": "

\n", "signature": "(\tx: torch.FloatTensor,\tbatch: torch.LongTensor,\tedge_index: torch.LongTensor | None = None,\tface: torch.LongTensor | None = None)"}, "dect.ect.Batch.x": {"fullname": "dect.ect.Batch.x", "modulename": "dect.ect", "qualname": "Batch.x", "kind": "variable", "doc": "

\n", "annotation": ": torch.FloatTensor"}, "dect.ect.Batch.batch": {"fullname": "dect.ect.Batch.batch", "modulename": "dect.ect", "qualname": "Batch.batch", "kind": "variable", "doc": "

\n", "annotation": ": torch.LongTensor"}, "dect.ect.Batch.edge_index": {"fullname": "dect.ect.Batch.edge_index", "modulename": "dect.ect", "qualname": "Batch.edge_index", "kind": "variable", "doc": "

\n", "annotation": ": torch.LongTensor | None", "default_value": "None"}, "dect.ect.Batch.face": {"fullname": "dect.ect.Batch.face", "modulename": "dect.ect", "qualname": "Batch.face", "kind": "variable", "doc": "

\n", "annotation": ": torch.LongTensor | None", "default_value": "None"}, "dect.ect.compute_ecc": {"fullname": "dect.ect.compute_ecc", "modulename": "dect.ect", "qualname": "compute_ecc", "kind": "function", "doc": "

Computes the Euler Characteristic curve.

\n\n
Parameters
\n\n
    \n
  • nh (torch.FloatTensor):\nThe node heights, computed as the inner product of the node coordinates\nx and the direction vector v.
  • \n
  • index (torch.LongTensor):\nThe index that indicates to which pointcloud a node height belongs. For\nthe node heights it is the same as the batch index, for the higher order\nsimplices it will have to be recomputed.
  • \n
  • lin (torch.FloatTensor):\nThe discretization of the interval [-1,1] each node height falls in this\nrange due to rescaling in normalizing the data.
  • \n
  • out (torch.FloatTensor):\nThe shape of the resulting tensor after summation. It has to be of the\nshape [num_discretization_steps, batch_size, num_thetas]
  • \n
  • scale (torch.FloatTensor):\nA single number that scales the sigmoid function by multiplying the\nsigmoid with the scale. With high (100>) values, the ect will resemble a\ndiscrete ECT and with lower values it will smooth the ECT.
  • \n
\n", "signature": "(\tnh: torch.FloatTensor,\tindex: torch.LongTensor,\tlin: torch.FloatTensor,\tscale: float = 100) -> torch.FloatTensor:", "funcdef": "def"}, "dect.ect.compute_ect_points": {"fullname": "dect.ect.compute_ect_points", "modulename": "dect.ect", "qualname": "compute_ect_points", "kind": "function", "doc": "

Computes the Euler Characteristic Transform of a batch of point clouds.

\n\n
Parameters
\n\n
    \n
  • batch (Batch):\nA batch of data containing the node coordinates and batch index.
  • \n
  • v (torch.FloatTensor):\nThe direction vector that contains the directions.
  • \n
  • lin (torch.FloatTensor):\nThe discretization of the interval [-1,1] each node height falls in this\nrange due to rescaling in normalizing the data.
  • \n
  • out (torch.FloatTensor):\nThe shape of the resulting tensor after summation. It has to be of the\nshape [num_discretization_steps, batch_size, num_thetas]
  • \n
\n", "signature": "(batch: dect.ect.Batch, v: torch.FloatTensor, lin: torch.FloatTensor):", "funcdef": "def"}, "dect.ect.compute_ect_edges": {"fullname": "dect.ect.compute_ect_edges", "modulename": "dect.ect", "qualname": "compute_ect_edges", "kind": "function", "doc": "

Computes the Euler Characteristic Transform of a batch of graphs.

\n\n
Parameters
\n\n
    \n
  • batch (Batch):\nA batch of data containing the node coordinates, the edges and batch\nindex.
  • \n
  • v (torch.FloatTensor):\nThe direction vector that contains the directions.
  • \n
  • lin (torch.FloatTensor):\nThe discretization of the interval [-1,1] each node height falls in this\nrange due to rescaling in normalizing the data.
  • \n
  • out (torch.FloatTensor):\nThe shape of the resulting tensor after summation. It has to be of the\nshape [num_discretization_steps, batch_size, num_thetas]
  • \n
\n", "signature": "(data: dect.ect.Batch, v: torch.FloatTensor, lin: torch.FloatTensor):", "funcdef": "def"}, "dect.ect.compute_ect_faces": {"fullname": "dect.ect.compute_ect_faces", "modulename": "dect.ect", "qualname": "compute_ect_faces", "kind": "function", "doc": "

Computes the Euler Characteristic Transform of a batch of meshes.

\n\n
Parameters
\n\n
    \n
  • batch (Batch):\nA batch of data containing the node coordinates, edges, faces and batch\nindex.
  • \n
  • v (torch.FloatTensor):\nThe direction vector that contains the directions.
  • \n
  • lin (torch.FloatTensor):\nThe discretization of the interval [-1,1] each node height falls in this\nrange due to rescaling in normalizing the data.
  • \n
  • out (torch.FloatTensor):\nThe shape of the resulting tensor after summation. It has to be of the\nshape [num_discretization_steps, batch_size, num_thetas]
  • \n
\n", "signature": "(data: dect.ect.Batch, v: torch.FloatTensor, lin: torch.FloatTensor):", "funcdef": "def"}, "dect.ect.normalize": {"fullname": "dect.ect.normalize", "modulename": "dect.ect", "qualname": "normalize", "kind": "function", "doc": "

Returns the normalized ect, scaled to lie in the interval 0,1

\n", "signature": "(ect):", "funcdef": "def"}, "dect.ect.ECTLayer": {"fullname": "dect.ect.ECTLayer", "modulename": "dect.ect", "qualname": "ECTLayer", "kind": "class", "doc": "

Machine learning layer for computing the ECT.

\n", "bases": "torch.nn.modules.module.Module"}, "dect.ect.ECTLayer.__init__": {"fullname": "dect.ect.ECTLayer.__init__", "modulename": "dect.ect", "qualname": "ECTLayer.__init__", "kind": "function", "doc": "

Initializes internal Module state, shared by both nn.Module and ScriptModule.

\n", "signature": "(config: dect.ect.ECTConfig, V=None)"}, "dect.ect.ECTLayer.config": {"fullname": "dect.ect.ECTLayer.config", "modulename": "dect.ect", "qualname": "ECTLayer.config", "kind": "variable", "doc": "

\n"}, "dect.ect.ECTLayer.lin": {"fullname": "dect.ect.ECTLayer.lin", "modulename": "dect.ect", "qualname": "ECTLayer.lin", "kind": "variable", "doc": "

\n"}, "dect.ect.ECTLayer.v": {"fullname": "dect.ect.ECTLayer.v", "modulename": "dect.ect", "qualname": "ECTLayer.v", "kind": "variable", "doc": "

\n"}, "dect.ect.ECTLayer.forward": {"fullname": "dect.ect.ECTLayer.forward", "modulename": "dect.ect", "qualname": "ECTLayer.forward", "kind": "function", "doc": "

Forward method for the ECT Layer.

\n", "signature": "(self, batch: dect.ect.Batch):", "funcdef": "def"}}, "docInfo": {"dect": {"qualname": 0, "fullname": 1, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 1408}, "dect.directions": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 17}, "dect.directions.generate_uniform_directions": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 62, "bases": 0, "doc": 116}, "dect.directions.generate_uniform_2d_directions": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 45, "bases": 0, "doc": 102}, "dect.directions.generate_multiview_directions": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 38, "bases": 0, "doc": 106}, "dect.ect": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 7}, "dect.ect.ECTConfig": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 8}, "dect.ect.ECTConfig.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 143, "bases": 0, "doc": 3}, "dect.ect.ECTConfig.num_thetas": {"qualname": 3, "fullname": 5, "annotation": 2, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "dect.ect.ECTConfig.bump_steps": {"qualname": 3, "fullname": 5, "annotation": 2, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "dect.ect.ECTConfig.radius": {"qualname": 2, "fullname": 4, "annotation": 2, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "dect.ect.ECTConfig.ect_type": {"qualname": 3, "fullname": 5, "annotation": 2, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "dect.ect.ECTConfig.device": {"qualname": 2, "fullname": 4, "annotation": 2, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "dect.ect.ECTConfig.num_features": {"qualname": 3, "fullname": 5, "annotation": 2, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "dect.ect.ECTConfig.normalized": {"qualname": 2, "fullname": 4, "annotation": 2, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "dect.ect.Batch": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 147}, "dect.ect.Batch.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 95, "bases": 0, "doc": 3}, "dect.ect.Batch.x": {"qualname": 2, "fullname": 4, "annotation": 3, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "dect.ect.Batch.batch": {"qualname": 2, "fullname": 4, "annotation": 3, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "dect.ect.Batch.edge_index": {"qualname": 3, "fullname": 5, "annotation": 5, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "dect.ect.Batch.face": {"qualname": 2, "fullname": 4, "annotation": 5, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "dect.ect.compute_ecc": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 80, "bases": 0, "doc": 190}, "dect.ect.compute_ect_points": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 56, "bases": 0, "doc": 117}, "dect.ect.compute_ect_edges": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 56, "bases": 0, "doc": 118}, "dect.ect.compute_ect_faces": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 56, "bases": 0, "doc": 118}, "dect.ect.normalize": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 14}, "dect.ect.ECTLayer": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 5, "doc": 10}, "dect.ect.ECTLayer.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 14}, "dect.ect.ECTLayer.config": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "dect.ect.ECTLayer.lin": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "dect.ect.ECTLayer.v": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "dect.ect.ECTLayer.forward": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 31, "bases": 0, "doc": 9}}, "length": 32, "save": true}, "index": {"qualname": {"root": {"2": {"docs": {}, "df": 0, "d": {"docs": {"dect.directions.generate_uniform_2d_directions": {"tf": 1}}, "df": 1}}, "docs": {"dect.ect.ECTConfig.__init__": {"tf": 1}, "dect.ect.Batch.__init__": {"tf": 1}, "dect.ect.ECTLayer.__init__": {"tf": 1}}, "df": 3, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1}, "dect.directions.generate_uniform_2d_directions": {"tf": 1}, "dect.directions.generate_multiview_directions": {"tf": 1}}, "df": 3}}}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1}, "dect.directions.generate_uniform_2d_directions": {"tf": 1}}, "df": 2}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1}, "dect.directions.generate_uniform_2d_directions": {"tf": 1}, "dect.directions.generate_multiview_directions": {"tf": 1}}, "df": 3}}}}}}}}}, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"dect.ect.ECTConfig.device": {"tf": 1}}, "df": 1}}}}}}, "m": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "w": {"docs": {"dect.directions.generate_multiview_directions": {"tf": 1}}, "df": 1}}}}}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"dect.ect.ECTConfig.ect_type": {"tf": 1}, "dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 4, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {"dect.ect.ECTConfig": {"tf": 1}, "dect.ect.ECTConfig.__init__": {"tf": 1}, "dect.ect.ECTConfig.num_thetas": {"tf": 1}, "dect.ect.ECTConfig.bump_steps": {"tf": 1}, "dect.ect.ECTConfig.radius": {"tf": 1}, "dect.ect.ECTConfig.ect_type": {"tf": 1}, "dect.ect.ECTConfig.device": {"tf": 1}, "dect.ect.ECTConfig.num_features": {"tf": 1}, "dect.ect.ECTConfig.normalized": {"tf": 1}}, "df": 9}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"dect.ect.ECTLayer": {"tf": 1}, "dect.ect.ECTLayer.__init__": {"tf": 1}, "dect.ect.ECTLayer.config": {"tf": 1}, "dect.ect.ECTLayer.lin": {"tf": 1}, "dect.ect.ECTLayer.v": {"tf": 1}, "dect.ect.ECTLayer.forward": {"tf": 1}}, "df": 6}}}}}}, "c": {"docs": {"dect.ect.compute_ecc": {"tf": 1}}, "df": 1}}, "d": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"dect.ect.Batch.edge_index": {"tf": 1}}, "df": 1, "s": {"docs": {"dect.ect.compute_ect_edges": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"dect.ect.ECTConfig.__init__": {"tf": 1}, "dect.ect.Batch.__init__": {"tf": 1}, "dect.ect.ECTLayer.__init__": {"tf": 1}}, "df": 3}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {"dect.ect.Batch.edge_index": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {"dect.ect.ECTConfig.num_thetas": {"tf": 1}, "dect.ect.ECTConfig.num_features": {"tf": 1}}, "df": 2}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"dect.ect.normalize": {"tf": 1}}, "df": 1, "d": {"docs": {"dect.ect.ECTConfig.normalized": {"tf": 1}}, "df": 1}}}}}}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"dect.ect.ECTConfig.num_thetas": {"tf": 1}}, "df": 1}}}}}, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"dect.ect.ECTConfig.ect_type": {"tf": 1}}, "df": 1}}}}, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {"dect.ect.ECTConfig.bump_steps": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"dect.ect.Batch": {"tf": 1}, "dect.ect.Batch.__init__": {"tf": 1}, "dect.ect.Batch.x": {"tf": 1}, "dect.ect.Batch.batch": {"tf": 1.4142135623730951}, "dect.ect.Batch.edge_index": {"tf": 1}, "dect.ect.Batch.face": {"tf": 1}}, "df": 6}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {"dect.ect.ECTConfig.bump_steps": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"dect.ect.ECTConfig.radius": {"tf": 1}}, "df": 1}}}}}}, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"dect.ect.ECTConfig.num_features": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"dect.ect.Batch.face": {"tf": 1}}, "df": 1, "s": {"docs": {"dect.ect.compute_ect_faces": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"dect.ect.ECTLayer.forward": {"tf": 1}}, "df": 1}}}}}}}, "x": {"docs": {"dect.ect.Batch.x": {"tf": 1}}, "df": 1}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"dect.ect.compute_ecc": {"tf": 1}, "dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 4}}}}}, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {"dect.ect.ECTLayer.config": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"dect.ect.compute_ect_points": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"dect.ect.ECTLayer.lin": {"tf": 1}}, "df": 1}}}, "v": {"docs": {"dect.ect.ECTLayer.v": {"tf": 1}}, "df": 1}}}, "fullname": {"root": {"2": {"docs": {}, "df": 0, "d": {"docs": {"dect.directions.generate_uniform_2d_directions": {"tf": 1}}, "df": 1}}, "docs": {"dect.ect.ECTConfig.__init__": {"tf": 1}, "dect.ect.Batch.__init__": {"tf": 1}, "dect.ect.ECTLayer.__init__": {"tf": 1}}, "df": 3, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"dect": {"tf": 1}, "dect.directions": {"tf": 1}, "dect.directions.generate_uniform_directions": {"tf": 1}, "dect.directions.generate_uniform_2d_directions": {"tf": 1}, "dect.directions.generate_multiview_directions": {"tf": 1}, "dect.ect": {"tf": 1}, "dect.ect.ECTConfig": {"tf": 1}, "dect.ect.ECTConfig.__init__": {"tf": 1}, "dect.ect.ECTConfig.num_thetas": {"tf": 1}, "dect.ect.ECTConfig.bump_steps": {"tf": 1}, "dect.ect.ECTConfig.radius": {"tf": 1}, "dect.ect.ECTConfig.ect_type": {"tf": 1}, "dect.ect.ECTConfig.device": {"tf": 1}, "dect.ect.ECTConfig.num_features": {"tf": 1}, "dect.ect.ECTConfig.normalized": {"tf": 1}, "dect.ect.Batch": {"tf": 1}, "dect.ect.Batch.__init__": {"tf": 1}, "dect.ect.Batch.x": {"tf": 1}, "dect.ect.Batch.batch": {"tf": 1}, "dect.ect.Batch.edge_index": {"tf": 1}, "dect.ect.Batch.face": {"tf": 1}, "dect.ect.compute_ecc": {"tf": 1}, "dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}, "dect.ect.normalize": {"tf": 1}, "dect.ect.ECTLayer": {"tf": 1}, "dect.ect.ECTLayer.__init__": {"tf": 1}, "dect.ect.ECTLayer.config": {"tf": 1}, "dect.ect.ECTLayer.lin": {"tf": 1}, "dect.ect.ECTLayer.v": {"tf": 1}, "dect.ect.ECTLayer.forward": {"tf": 1}}, "df": 32}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"dect.ect.ECTConfig.device": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"dect.directions": {"tf": 1}, "dect.directions.generate_uniform_directions": {"tf": 1.4142135623730951}, "dect.directions.generate_uniform_2d_directions": {"tf": 1.4142135623730951}, "dect.directions.generate_multiview_directions": {"tf": 1.4142135623730951}}, "df": 4}}}}}}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1}, "dect.directions.generate_uniform_2d_directions": {"tf": 1}, "dect.directions.generate_multiview_directions": {"tf": 1}}, "df": 3}}}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1}, "dect.directions.generate_uniform_2d_directions": {"tf": 1}}, "df": 2}}}}}}}, "m": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "w": {"docs": {"dect.directions.generate_multiview_directions": {"tf": 1}}, "df": 1}}}}}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"dect.ect": {"tf": 1}, "dect.ect.ECTConfig": {"tf": 1}, "dect.ect.ECTConfig.__init__": {"tf": 1}, "dect.ect.ECTConfig.num_thetas": {"tf": 1}, "dect.ect.ECTConfig.bump_steps": {"tf": 1}, "dect.ect.ECTConfig.radius": {"tf": 1}, "dect.ect.ECTConfig.ect_type": {"tf": 1.4142135623730951}, "dect.ect.ECTConfig.device": {"tf": 1}, "dect.ect.ECTConfig.num_features": {"tf": 1}, "dect.ect.ECTConfig.normalized": {"tf": 1}, "dect.ect.Batch": {"tf": 1}, "dect.ect.Batch.__init__": {"tf": 1}, "dect.ect.Batch.x": {"tf": 1}, "dect.ect.Batch.batch": {"tf": 1}, "dect.ect.Batch.edge_index": {"tf": 1}, "dect.ect.Batch.face": {"tf": 1}, "dect.ect.compute_ecc": {"tf": 1}, "dect.ect.compute_ect_points": {"tf": 1.4142135623730951}, "dect.ect.compute_ect_edges": {"tf": 1.4142135623730951}, "dect.ect.compute_ect_faces": {"tf": 1.4142135623730951}, "dect.ect.normalize": {"tf": 1}, "dect.ect.ECTLayer": {"tf": 1}, "dect.ect.ECTLayer.__init__": {"tf": 1}, "dect.ect.ECTLayer.config": {"tf": 1}, "dect.ect.ECTLayer.lin": {"tf": 1}, "dect.ect.ECTLayer.v": {"tf": 1}, "dect.ect.ECTLayer.forward": {"tf": 1}}, "df": 27, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {"dect.ect.ECTConfig": {"tf": 1}, "dect.ect.ECTConfig.__init__": {"tf": 1}, "dect.ect.ECTConfig.num_thetas": {"tf": 1}, "dect.ect.ECTConfig.bump_steps": {"tf": 1}, "dect.ect.ECTConfig.radius": {"tf": 1}, "dect.ect.ECTConfig.ect_type": {"tf": 1}, "dect.ect.ECTConfig.device": {"tf": 1}, "dect.ect.ECTConfig.num_features": {"tf": 1}, "dect.ect.ECTConfig.normalized": {"tf": 1}}, "df": 9}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"dect.ect.ECTLayer": {"tf": 1}, "dect.ect.ECTLayer.__init__": {"tf": 1}, "dect.ect.ECTLayer.config": {"tf": 1}, "dect.ect.ECTLayer.lin": {"tf": 1}, "dect.ect.ECTLayer.v": {"tf": 1}, "dect.ect.ECTLayer.forward": {"tf": 1}}, "df": 6}}}}}}, "c": {"docs": {"dect.ect.compute_ecc": {"tf": 1}}, "df": 1}}, "d": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"dect.ect.Batch.edge_index": {"tf": 1}}, "df": 1, "s": {"docs": {"dect.ect.compute_ect_edges": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"dect.ect.ECTConfig.__init__": {"tf": 1}, "dect.ect.Batch.__init__": {"tf": 1}, "dect.ect.ECTLayer.__init__": {"tf": 1}}, "df": 3}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {"dect.ect.Batch.edge_index": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {"dect.ect.ECTConfig.num_thetas": {"tf": 1}, "dect.ect.ECTConfig.num_features": {"tf": 1}}, "df": 2}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"dect.ect.normalize": {"tf": 1}}, "df": 1, "d": {"docs": {"dect.ect.ECTConfig.normalized": {"tf": 1}}, "df": 1}}}}}}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"dect.ect.ECTConfig.num_thetas": {"tf": 1}}, "df": 1}}}}}, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"dect.ect.ECTConfig.ect_type": {"tf": 1}}, "df": 1}}}}, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {"dect.ect.ECTConfig.bump_steps": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"dect.ect.Batch": {"tf": 1}, "dect.ect.Batch.__init__": {"tf": 1}, "dect.ect.Batch.x": {"tf": 1}, "dect.ect.Batch.batch": {"tf": 1.4142135623730951}, "dect.ect.Batch.edge_index": {"tf": 1}, "dect.ect.Batch.face": {"tf": 1}}, "df": 6}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {"dect.ect.ECTConfig.bump_steps": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"dect.ect.ECTConfig.radius": {"tf": 1}}, "df": 1}}}}}}, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"dect.ect.ECTConfig.num_features": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"dect.ect.Batch.face": {"tf": 1}}, "df": 1, "s": {"docs": {"dect.ect.compute_ect_faces": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"dect.ect.ECTLayer.forward": {"tf": 1}}, "df": 1}}}}}}}, "x": {"docs": {"dect.ect.Batch.x": {"tf": 1}}, "df": 1}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"dect.ect.compute_ecc": {"tf": 1}, "dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 4}}}}}, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {"dect.ect.ECTLayer.config": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"dect.ect.compute_ect_points": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"dect.ect.ECTLayer.lin": {"tf": 1}}, "df": 1}}}, "v": {"docs": {"dect.ect.ECTLayer.v": {"tf": 1}}, "df": 1}}}, "annotation": {"root": {"docs": {"dect.ect.ECTConfig.num_thetas": {"tf": 1}, "dect.ect.ECTConfig.bump_steps": {"tf": 1}, "dect.ect.ECTConfig.radius": {"tf": 1}, "dect.ect.ECTConfig.ect_type": {"tf": 1}, "dect.ect.ECTConfig.device": {"tf": 1}, "dect.ect.ECTConfig.num_features": {"tf": 1}, "dect.ect.ECTConfig.normalized": {"tf": 1}, "dect.ect.Batch.x": {"tf": 1}, "dect.ect.Batch.batch": {"tf": 1}, "dect.ect.Batch.edge_index": {"tf": 1.4142135623730951}, "dect.ect.Batch.face": {"tf": 1.4142135623730951}}, "df": 11, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"dect.ect.ECTConfig.num_thetas": {"tf": 1}, "dect.ect.ECTConfig.bump_steps": {"tf": 1}, "dect.ect.ECTConfig.num_features": {"tf": 1}}, "df": 3}}}, "f": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"dect.ect.ECTConfig.radius": {"tf": 1}}, "df": 1, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"dect.ect.Batch.x": {"tf": 1}}, "df": 1}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"dect.ect.ECTConfig.ect_type": {"tf": 1}, "dect.ect.ECTConfig.device": {"tf": 1}}, "df": 2}}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"dect.ect.ECTConfig.normalized": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"dect.ect.Batch.x": {"tf": 1}, "dect.ect.Batch.batch": {"tf": 1}, "dect.ect.Batch.edge_index": {"tf": 1}, "dect.ect.Batch.face": {"tf": 1}}, "df": 4}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"dect.ect.Batch.batch": {"tf": 1}, "dect.ect.Batch.edge_index": {"tf": 1}, "dect.ect.Batch.face": {"tf": 1}}, "df": 3}}}}}}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"dect.ect.Batch.edge_index": {"tf": 1}, "dect.ect.Batch.face": {"tf": 1}}, "df": 2}}}}}}, "default_value": {"root": {"1": {"docs": {"dect.ect.ECTConfig.radius": {"tf": 1.4142135623730951}}, "df": 1}, "3": {"2": {"docs": {"dect.ect.ECTConfig.num_thetas": {"tf": 1}, "dect.ect.ECTConfig.bump_steps": {"tf": 1}}, "df": 2}, "docs": {"dect.ect.ECTConfig.num_features": {"tf": 1}}, "df": 1}, "docs": {"dect.ect.ECTConfig.ect_type": {"tf": 1.4142135623730951}, "dect.ect.ECTConfig.device": {"tf": 1.4142135623730951}}, "df": 2, "x": {"2": {"7": {"docs": {"dect.ect.ECTConfig.ect_type": {"tf": 1.4142135623730951}, "dect.ect.ECTConfig.device": {"tf": 1.4142135623730951}}, "df": 2}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"dect.ect.ECTConfig.ect_type": {"tf": 1}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {"dect.ect.ECTConfig.device": {"tf": 1}}, "df": 1}}}, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"dect.ect.ECTConfig.normalized": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"dect.ect.Batch.edge_index": {"tf": 1}, "dect.ect.Batch.face": {"tf": 1}}, "df": 2}}}}}}, "signature": {"root": {"1": {"0": {"0": {"docs": {"dect.ect.compute_ecc": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"dect.ect.ECTConfig.__init__": {"tf": 1.4142135623730951}}, "df": 1}, "3": {"2": {"docs": {"dect.ect.ECTConfig.__init__": {"tf": 1.4142135623730951}}, "df": 1}, "9": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1.4142135623730951}, "dect.directions.generate_uniform_2d_directions": {"tf": 1.4142135623730951}, "dect.ect.ECTConfig.__init__": {"tf": 2}}, "df": 3}, "docs": {"dect.directions.generate_uniform_directions": {"tf": 1}, "dect.ect.ECTConfig.__init__": {"tf": 1}}, "df": 2}, "6": {"4": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1}, "dect.directions.generate_uniform_2d_directions": {"tf": 1}}, "df": 2}, "docs": {}, "df": 0}, "docs": {"dect.directions.generate_uniform_directions": {"tf": 7.0710678118654755}, "dect.directions.generate_uniform_2d_directions": {"tf": 6}, "dect.directions.generate_multiview_directions": {"tf": 5.477225575051661}, "dect.ect.ECTConfig.__init__": {"tf": 10.63014581273465}, "dect.ect.Batch.__init__": {"tf": 8.831760866327848}, "dect.ect.compute_ecc": {"tf": 8.12403840463596}, "dect.ect.compute_ect_points": {"tf": 6.782329983125268}, "dect.ect.compute_ect_edges": {"tf": 6.782329983125268}, "dect.ect.compute_ect_faces": {"tf": 6.782329983125268}, "dect.ect.normalize": {"tf": 3.1622776601683795}, "dect.ect.ECTLayer.__init__": {"tf": 5.291502622129181}, "dect.ect.ECTLayer.forward": {"tf": 5.0990195135927845}}, "df": 12, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1}, "dect.directions.generate_uniform_2d_directions": {"tf": 1}, "dect.directions.generate_multiview_directions": {"tf": 1}, "dect.ect.ECTConfig.__init__": {"tf": 1.4142135623730951}}, "df": 4}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"dect.ect.ECTConfig.__init__": {"tf": 1}}, "df": 1}}}}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {"dect.ect.Batch.__init__": {"tf": 2}, "dect.ect.ECTLayer.__init__": {"tf": 1}}, "df": 2}}}, "h": {"docs": {"dect.ect.compute_ecc": {"tf": 1}}, "df": 1}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1}, "dect.directions.generate_uniform_2d_directions": {"tf": 1}, "dect.directions.generate_multiview_directions": {"tf": 1}, "dect.ect.ECTConfig.__init__": {"tf": 1}}, "df": 4}}}}}, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"dect.ect.ECTConfig.__init__": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"dect.ect.Batch.__init__": {"tf": 2}, "dect.ect.compute_ecc": {"tf": 2}, "dect.ect.compute_ect_points": {"tf": 1.4142135623730951}, "dect.ect.compute_ect_edges": {"tf": 1.4142135623730951}, "dect.ect.compute_ect_faces": {"tf": 1.4142135623730951}}, "df": 5}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1.4142135623730951}, "dect.directions.generate_uniform_2d_directions": {"tf": 1}, "dect.directions.generate_multiview_directions": {"tf": 1.7320508075688772}, "dect.ect.ECTConfig.__init__": {"tf": 1.7320508075688772}}, "df": 4}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {"dect.ect.Batch.__init__": {"tf": 1}, "dect.ect.compute_ecc": {"tf": 1}}, "df": 2}}}}}, "d": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1}, "dect.directions.generate_multiview_directions": {"tf": 1}}, "df": 2, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1}, "dect.directions.generate_uniform_2d_directions": {"tf": 1}, "dect.ect.ECTConfig.__init__": {"tf": 1}}, "df": 3}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {"dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}, "dect.ect.ECTLayer.__init__": {"tf": 1}, "dect.ect.ECTLayer.forward": {"tf": 1}}, "df": 5}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 2}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1}, "dect.directions.generate_uniform_2d_directions": {"tf": 1}, "dect.ect.ECTConfig.__init__": {"tf": 1.4142135623730951}}, "df": 3}, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {"dect.directions.generate_multiview_directions": {"tf": 1}, "dect.ect.ECTConfig.__init__": {"tf": 1}}, "df": 2}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"dect.ect.compute_ecc": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "f": {"docs": {"dect.ect.ECTLayer.forward": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1}, "dect.directions.generate_uniform_2d_directions": {"tf": 1}, "dect.ect.ECTConfig.__init__": {"tf": 1}}, "df": 3}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {"dect.ect.ECTLayer.__init__": {"tf": 1}}, "df": 1}}}}}}, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {"dect.directions.generate_multiview_directions": {"tf": 1}, "dect.ect.ECTConfig.__init__": {"tf": 1}}, "df": 2}}}, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"dect.ect.ECTConfig.__init__": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"dect.ect.Batch.__init__": {"tf": 1}, "dect.ect.compute_ect_points": {"tf": 1.4142135623730951}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}, "dect.ect.ECTLayer.forward": {"tf": 1.4142135623730951}}, "df": 5}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"dect.ect.ECTConfig.__init__": {"tf": 1}}, "df": 1}}}}}}, "f": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"dect.ect.ECTConfig.__init__": {"tf": 1}, "dect.ect.compute_ecc": {"tf": 1}}, "df": 2, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"dect.ect.Batch.__init__": {"tf": 1}, "dect.ect.compute_ecc": {"tf": 1.7320508075688772}, "dect.ect.compute_ect_points": {"tf": 1.4142135623730951}, "dect.ect.compute_ect_edges": {"tf": 1.4142135623730951}, "dect.ect.compute_ect_faces": {"tf": 1.4142135623730951}}, "df": 5}}}}}}}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"dect.ect.ECTConfig.__init__": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"dect.ect.ECTConfig.__init__": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {"dect.ect.Batch.__init__": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"dect.ect.ECTConfig.__init__": {"tf": 1}, "dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}, "dect.ect.normalize": {"tf": 1}, "dect.ect.ECTLayer.__init__": {"tf": 1}, "dect.ect.ECTLayer.forward": {"tf": 1}}, "df": 7, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {"dect.ect.ECTLayer.__init__": {"tf": 1}}, "df": 1}}}}}}}}, "d": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"dect.ect.Batch.__init__": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"dect.ect.ECTConfig.__init__": {"tf": 1}}, "df": 1}}}}}}, "x": {"docs": {"dect.ect.Batch.__init__": {"tf": 1}}, "df": 1}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"dect.ect.Batch.__init__": {"tf": 1.7320508075688772}, "dect.ect.compute_ecc": {"tf": 1}}, "df": 2}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"dect.ect.compute_ecc": {"tf": 1}, "dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 4}}}, "v": {"docs": {"dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}, "dect.ect.ECTLayer.__init__": {"tf": 1}}, "df": 4}}}, "bases": {"root": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"dect.ect.ECTLayer": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "n": {"docs": {"dect.ect.ECTLayer": {"tf": 1}}, "df": 1}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"dect.ect.ECTLayer": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"dect.ect.ECTLayer": {"tf": 1}}, "df": 1}}}}}}}}}, "doc": {"root": {"0": {"7": {"6": {"3": {"0": {"docs": {"dect": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {"dect": {"tf": 3}, "dect.directions.generate_uniform_directions": {"tf": 1}, "dect.directions.generate_uniform_2d_directions": {"tf": 1}, "dect.ect.normalize": {"tf": 1}}, "df": 4}, "1": {"0": {"0": {"docs": {"dect.ect.compute_ecc": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"dect": {"tf": 1}, "dect.directions.generate_uniform_directions": {"tf": 1}, "dect.ect.compute_ecc": {"tf": 1.4142135623730951}, "dect.ect.compute_ect_points": {"tf": 1.4142135623730951}, "dect.ect.compute_ect_edges": {"tf": 1.4142135623730951}, "dect.ect.compute_ect_faces": {"tf": 1.4142135623730951}, "dect.ect.normalize": {"tf": 1}}, "df": 7}, "2": {"0": {"2": {"4": {"docs": {"dect": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "3": {"1": {"0": {"docs": {"dect": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {"dect": {"tf": 1}, "dect.directions": {"tf": 1}, "dect.directions.generate_multiview_directions": {"tf": 1.4142135623730951}, "dect.ect.Batch": {"tf": 1}}, "df": 4, "d": {"docs": {"dect": {"tf": 1.4142135623730951}, "dect.directions.generate_multiview_directions": {"tf": 1}}, "df": 2}, "*": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {"dect.directions.generate_uniform_2d_directions": {"tf": 1}}, "df": 1}}}}, "3": {"docs": {"dect": {"tf": 1}, "dect.directions": {"tf": 1}, "dect.directions.generate_uniform_directions": {"tf": 1}, "dect.directions.generate_uniform_2d_directions": {"tf": 1}, "dect.directions.generate_multiview_directions": {"tf": 1.4142135623730951}, "dect.ect.Batch": {"tf": 1}}, "df": 6}, "5": {"docs": {"dect": {"tf": 2}}, "df": 1}, "6": {"4": {"docs": {"dect": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"dect": {"tf": 27.874719729532707}, "dect.directions": {"tf": 1.7320508075688772}, "dect.directions.generate_uniform_directions": {"tf": 5.477225575051661}, "dect.directions.generate_uniform_2d_directions": {"tf": 5.477225575051661}, "dect.directions.generate_multiview_directions": {"tf": 3}, "dect.ect": {"tf": 1.7320508075688772}, "dect.ect.ECTConfig": {"tf": 1.7320508075688772}, "dect.ect.ECTConfig.__init__": {"tf": 1.7320508075688772}, "dect.ect.ECTConfig.num_thetas": {"tf": 1.7320508075688772}, "dect.ect.ECTConfig.bump_steps": {"tf": 1.7320508075688772}, "dect.ect.ECTConfig.radius": {"tf": 1.7320508075688772}, "dect.ect.ECTConfig.ect_type": {"tf": 1.7320508075688772}, "dect.ect.ECTConfig.device": {"tf": 1.7320508075688772}, "dect.ect.ECTConfig.num_features": {"tf": 1.7320508075688772}, "dect.ect.ECTConfig.normalized": {"tf": 1.7320508075688772}, "dect.ect.Batch": {"tf": 5.656854249492381}, "dect.ect.Batch.__init__": {"tf": 1.7320508075688772}, "dect.ect.Batch.x": {"tf": 1.7320508075688772}, "dect.ect.Batch.batch": {"tf": 1.7320508075688772}, "dect.ect.Batch.edge_index": {"tf": 1.7320508075688772}, "dect.ect.Batch.face": {"tf": 1.7320508075688772}, "dect.ect.compute_ecc": {"tf": 6.244997998398398}, "dect.ect.compute_ect_points": {"tf": 5.744562646538029}, "dect.ect.compute_ect_edges": {"tf": 5.744562646538029}, "dect.ect.compute_ect_faces": {"tf": 5.744562646538029}, "dect.ect.normalize": {"tf": 1.4142135623730951}, "dect.ect.ECTLayer": {"tf": 1.7320508075688772}, "dect.ect.ECTLayer.__init__": {"tf": 1.7320508075688772}, "dect.ect.ECTLayer.config": {"tf": 1.7320508075688772}, "dect.ect.ECTLayer.lin": {"tf": 1.7320508075688772}, "dect.ect.ECTLayer.v": {"tf": 1.7320508075688772}, "dect.ect.ECTLayer.forward": {"tf": 1.7320508075688772}}, "df": 32, "d": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1.7320508075688772}, "dect.directions.generate_uniform_2d_directions": {"tf": 1}, "dect.directions.generate_multiview_directions": {"tf": 2}}, "df": 3, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"dect": {"tf": 2.23606797749979}}, "df": 1}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1}, "dect.directions.generate_uniform_directions": {"tf": 1.4142135623730951}, "dect.directions.generate_uniform_2d_directions": {"tf": 1.4142135623730951}}, "df": 3}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"dect.directions.generate_uniform_2d_directions": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"dect": {"tf": 1.7320508075688772}}, "df": 1}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"dect": {"tf": 1}}, "df": 1}}, "s": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1}, "dect.directions.generate_uniform_2d_directions": {"tf": 1}}, "df": 2}}}}}}, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1.4142135623730951}}, "df": 1}}}, "l": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"dect.directions.generate_multiview_directions": {"tf": 1}, "dect.ect.compute_ecc": {"tf": 1}, "dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 5, "s": {"docs": {"dect": {"tf": 1.7320508075688772}, "dect.directions": {"tf": 1}, "dect.directions.generate_uniform_directions": {"tf": 1.4142135623730951}, "dect.directions.generate_uniform_2d_directions": {"tf": 1.7320508075688772}, "dect.directions.generate_multiview_directions": {"tf": 1.7320508075688772}, "dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 8}}}}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1}, "dect.directions.generate_uniform_2d_directions": {"tf": 1}}, "df": 2, "s": {"docs": {"dect.directions": {"tf": 1}, "dect.directions.generate_uniform_directions": {"tf": 1}, "dect.directions.generate_uniform_2d_directions": {"tf": 1.4142135623730951}, "dect.directions.generate_multiview_directions": {"tf": 1.7320508075688772}}, "df": 4}}}}}}}}, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"dect.ect.compute_ecc": {"tf": 1.4142135623730951}, "dect.ect.compute_ect_points": {"tf": 1.4142135623730951}, "dect.ect.compute_ect_edges": {"tf": 1.4142135623730951}, "dect.ect.compute_ect_faces": {"tf": 1.4142135623730951}}, "df": 4}}}}}}}, "e": {"docs": {"dect.ect.compute_ecc": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1}}, "df": 1}, "a": {"docs": {"dect": {"tf": 2.6457513110645907}, "dect.ect.Batch": {"tf": 1}, "dect.ect.compute_ecc": {"tf": 1}, "dect.ect.compute_ect_points": {"tf": 1.4142135623730951}, "dect.ect.compute_ect_edges": {"tf": 1.4142135623730951}, "dect.ect.compute_ect_faces": {"tf": 1.4142135623730951}}, "df": 6}}}, "o": {"docs": {"dect": {"tf": 1}}, "df": 1, "w": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "e": {"docs": {"dect.ect.compute_ecc": {"tf": 1}, "dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 4}}}, "e": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"dect": {"tf": 1.7320508075688772}, "dect.ect.compute_ecc": {"tf": 1}, "dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 5}}}}, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"dect": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "x": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {"dect": {"tf": 1.7320508075688772}, "dect.directions.generate_multiview_directions": {"tf": 2}, "dect.ect": {"tf": 1}, "dect.ect.ECTConfig": {"tf": 1}, "dect.ect.compute_ecc": {"tf": 1.7320508075688772}, "dect.ect.normalize": {"tf": 1}, "dect.ect.ECTLayer": {"tf": 1}, "dect.ect.ECTLayer.forward": {"tf": 1}}, "df": 8, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {"dect": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"dect": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}}}}}, "f": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}}}}}, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"dect.directions.generate_multiview_directions": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"dect.directions.generate_multiview_directions": {"tf": 1}, "dect.ect.compute_ecc": {"tf": 1}, "dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 5}}}, "d": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"dect.ect.Batch": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"dect.ect.Batch": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 3}}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"dect": {"tf": 1.7320508075688772}, "dect.ect.compute_ecc": {"tf": 1}, "dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 5}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"dect": {"tf": 2.8284271247461903}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"dect.directions.generate_multiview_directions": {"tf": 1.7320508075688772}}, "df": 1, "s": {"docs": {"dect.directions.generate_multiview_directions": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"dect": {"tf": 1.4142135623730951}}, "df": 1, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"dect.directions.generate_multiview_directions": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"dect.directions.generate_uniform_2d_directions": {"tf": 1.4142135623730951}, "dect.directions.generate_multiview_directions": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"dect": {"tf": 1.4142135623730951}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1.7320508075688772}}, "df": 1}}, "u": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"dect.ect.compute_ect_points": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"dect.ect.ECTConfig": {"tf": 1}}, "df": 1}}}}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {"dect.ect.Batch": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1.4142135623730951}}, "df": 1}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"dect": {"tf": 1.7320508075688772}}, "df": 1}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"dect": {"tf": 1}}, "df": 1, "s": {"docs": {"dect": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"dect": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 3}}}, "s": {"docs": {"dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 3}}}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"dect.directions.generate_multiview_directions": {"tf": 1}}, "df": 1}}}}}}, "m": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {"dect": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "y": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"dect": {"tf": 2}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"dect.directions.generate_multiview_directions": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"dect.directions.generate_multiview_directions": {"tf": 1}, "dect.ect.ECTLayer": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"dect.ect.compute_ecc": {"tf": 1}, "dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 4}, "d": {"docs": {"dect.ect.compute_ecc": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {"dect.ect.Batch": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 2}}, "df": 1}}, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"dect.directions.generate_uniform_2d_directions": {"tf": 1}}, "df": 1}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"dect": {"tf": 1.4142135623730951}, "dect.ect.Batch": {"tf": 1}, "dect.ect.compute_ecc": {"tf": 1}, "dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 6}}}}}}}}}}, "s": {"docs": {"dect": {"tf": 1}}, "df": 1}, "u": {"1": {"1": {"7": {"docs": {"dect": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {"dect": {"tf": 1.4142135623730951}}, "df": 1}}, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"dect.ect.compute_ecc": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "u": {"docs": {"dect": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1.4142135623730951}}, "df": 1, "d": {"docs": {"dect.ect.Batch": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"dect.directions.generate_uniform_2d_directions": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"dect.directions.generate_multiview_directions": {"tf": 1}}, "df": 1}}}}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"dect.directions.generate_multiview_directions": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {"dect": {"tf": 1.4142135623730951}, "dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 4, "s": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}}}, "u": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1}}, "df": 1}}}, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {"dect": {"tf": 1.7320508075688772}, "dect.directions.generate_uniform_directions": {"tf": 1}, "dect.directions.generate_multiview_directions": {"tf": 1.4142135623730951}, "dect.ect.compute_ecc": {"tf": 1}, "dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 7}}, "e": {"docs": {"dect": {"tf": 5.0990195135927845}, "dect.directions.generate_uniform_directions": {"tf": 2.8284271247461903}, "dect.directions.generate_uniform_2d_directions": {"tf": 3}, "dect.directions.generate_multiview_directions": {"tf": 2.23606797749979}, "dect.ect": {"tf": 1}, "dect.ect.ECTConfig": {"tf": 1}, "dect.ect.Batch": {"tf": 3.7416573867739413}, "dect.ect.compute_ecc": {"tf": 4.58257569495584}, "dect.ect.compute_ect_points": {"tf": 3.1622776601683795}, "dect.ect.compute_ect_edges": {"tf": 3.3166247903554}, "dect.ect.compute_ect_faces": {"tf": 3.1622776601683795}, "dect.ect.normalize": {"tf": 1.4142135623730951}, "dect.ect.ECTLayer": {"tf": 1}, "dect.ect.ECTLayer.forward": {"tf": 1}}, "df": 14, "n": {"docs": {"dect": {"tf": 1}, "dect.directions.generate_uniform_directions": {"tf": 1}}, "df": 2}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"dect": {"tf": 1}, "dect.directions.generate_uniform_directions": {"tf": 1.4142135623730951}, "dect.directions.generate_uniform_2d_directions": {"tf": 1}, "dect.ect.compute_ecc": {"tf": 1}, "dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 7}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1}, "dect.directions.generate_multiview_directions": {"tf": 1}, "dect.ect.Batch": {"tf": 1.7320508075688772}, "dect.ect.compute_ecc": {"tf": 1.4142135623730951}, "dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 7}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {"dect.directions.generate_multiview_directions": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {"dect": {"tf": 4.123105625617661}, "dect.directions": {"tf": 1}, "dect.directions.generate_uniform_directions": {"tf": 1.4142135623730951}, "dect.directions.generate_uniform_2d_directions": {"tf": 1.4142135623730951}, "dect.ect.Batch": {"tf": 2.449489742783178}, "dect.ect.compute_ecc": {"tf": 2}, "dect.ect.compute_ect_points": {"tf": 1.4142135623730951}, "dect.ect.compute_ect_edges": {"tf": 1.4142135623730951}, "dect.ect.compute_ect_faces": {"tf": 1.4142135623730951}, "dect.ect.normalize": {"tf": 1}}, "df": 10, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"dect": {"tf": 3}, "dect.ect.Batch": {"tf": 2}, "dect.ect.compute_ecc": {"tf": 2.23606797749979}, "dect.ect.compute_ect_points": {"tf": 1.7320508075688772}, "dect.ect.compute_ect_edges": {"tf": 1.7320508075688772}, "dect.ect.compute_ect_faces": {"tf": 1.7320508075688772}}, "df": 6, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}}}}, "w": {"docs": {}, "df": 0, "o": {"docs": {"dect": {"tf": 1}, "dect.directions.generate_uniform_2d_directions": {"tf": 1.4142135623730951}}, "df": 2}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"dect": {"tf": 1}, "dect.directions.generate_uniform_directions": {"tf": 1}, "dect.directions.generate_uniform_2d_directions": {"tf": 1}, "dect.ect.compute_ecc": {"tf": 1}, "dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 7}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"dect.ect.Batch": {"tf": 1}}, "df": 1}}}}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {"dect": {"tf": 2.6457513110645907}, "dect.directions.generate_uniform_directions": {"tf": 1.4142135623730951}, "dect.directions.generate_uniform_2d_directions": {"tf": 1.4142135623730951}, "dect.ect.compute_ecc": {"tf": 1}}, "df": 4, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 2.6457513110645907}}, "df": 1, "s": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"dect": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"dect": {"tf": 2}, "dect.ect": {"tf": 1}}, "df": 2}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"dect": {"tf": 2}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"dect.directions.generate_multiview_directions": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {"dect": {"tf": 2.449489742783178}}, "df": 1}, "n": {"docs": {"dect": {"tf": 1.7320508075688772}, "dect.directions": {"tf": 1}, "dect.directions.generate_uniform_directions": {"tf": 1}, "dect.directions.generate_uniform_2d_directions": {"tf": 1.4142135623730951}, "dect.directions.generate_multiview_directions": {"tf": 2.23606797749979}, "dect.ect.Batch": {"tf": 2.23606797749979}, "dect.ect.compute_ecc": {"tf": 1.4142135623730951}, "dect.ect.compute_ect_points": {"tf": 1.4142135623730951}, "dect.ect.compute_ect_edges": {"tf": 1.4142135623730951}, "dect.ect.compute_ect_faces": {"tf": 1.4142135623730951}, "dect.ect.normalize": {"tf": 1}}, "df": 11, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}}}}}}, "t": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1.4142135623730951}, "dect.directions.generate_uniform_2d_directions": {"tf": 1.4142135623730951}}, "df": 2, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {"dect.ect.ECTLayer.__init__": {"tf": 1}}, "df": 1}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"dect.directions.generate_uniform_2d_directions": {"tf": 1}, "dect.ect.compute_ecc": {"tf": 1}, "dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}, "dect.ect.normalize": {"tf": 1}}, "df": 6}}}}, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {"dect": {"tf": 1}, "dect.directions.generate_uniform_2d_directions": {"tf": 1}}, "df": 2}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"dect": {"tf": 2.23606797749979}}, "df": 1, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"dect": {"tf": 1.7320508075688772}}, "df": 1}}}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {"dect": {"tf": 1.4142135623730951}, "dect.ect.Batch": {"tf": 1.4142135623730951}, "dect.ect.compute_ecc": {"tf": 1.7320508075688772}, "dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 6}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"dect.ect.Batch": {"tf": 1}, "dect.ect.compute_ecc": {"tf": 1}}, "df": 2}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"dect.ect.Batch": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"dect": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}}}, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"dect": {"tf": 1}}, "df": 1}}}, "e": {"docs": {"dect": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"dect.ect.Batch": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"dect.ect.ECTLayer.__init__": {"tf": 1}}, "df": 1}}}}}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"dect.ect.compute_ecc": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "b": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {"dect": {"tf": 1.4142135623730951}, "dect.ect.compute_ecc": {"tf": 2}, "dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 5}}, "o": {"docs": {}, "df": 0, "f": {"docs": {"dect": {"tf": 3}, "dect.directions": {"tf": 1}, "dect.directions.generate_uniform_directions": {"tf": 1.7320508075688772}, "dect.directions.generate_uniform_2d_directions": {"tf": 1.7320508075688772}, "dect.directions.generate_multiview_directions": {"tf": 1.7320508075688772}, "dect.ect": {"tf": 1}, "dect.ect.ECTConfig": {"tf": 1}, "dect.ect.Batch": {"tf": 2.449489742783178}, "dect.ect.compute_ecc": {"tf": 2}, "dect.ect.compute_ect_points": {"tf": 2.449489742783178}, "dect.ect.compute_ect_edges": {"tf": 2.449489742783178}, "dect.ect.compute_ect_faces": {"tf": 2.449489742783178}}, "df": 12, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {"dect": {"tf": 2.6457513110645907}}, "df": 1}, "t": {"docs": {"dect": {"tf": 1}, "dect.ect.compute_ecc": {"tf": 1}, "dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 5}}, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"dect": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}}, "n": {"docs": {"dect": {"tf": 2}}, "df": 1}}}, "}": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {"dect": {"tf": 1.7320508075688772}, "dect.directions.generate_uniform_directions": {"tf": 1.4142135623730951}, "dect.directions.generate_uniform_2d_directions": {"tf": 1.7320508075688772}}, "df": 3, "e": {"docs": {"dect": {"tf": 1}}, "df": 1}, "t": {"docs": {}, "df": 0, "o": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1}}, "df": 1}}}, "r": {"docs": {"dect": {"tf": 2.23606797749979}}, "df": 1, "g": {"docs": {"dect": {"tf": 1.4142135623730951}}, "df": 1, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"dect.directions.generate_multiview_directions": {"tf": 1}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"dect": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "l": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"dect.ect.compute_ecc": {"tf": 1}}, "df": 1}}}}, "w": {"docs": {}, "df": 0, "n": {"docs": {"dect": {"tf": 1}}, "df": 1}}, "b": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"dect.directions.generate_multiview_directions": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "f": {"docs": {"dect": {"tf": 1}}, "df": 1, "o": {"docs": {}, "df": 0, "r": {"docs": {"dect": {"tf": 3.4641016151377544}, "dect.directions.generate_multiview_directions": {"tf": 1}, "dect.ect.Batch": {"tf": 1}, "dect.ect.compute_ecc": {"tf": 1.4142135623730951}, "dect.ect.ECTLayer": {"tf": 1}, "dect.ect.ECTLayer.forward": {"tf": 1}}, "df": 6, "k": {"docs": {"dect": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"dect": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"dect": {"tf": 1.4142135623730951}}, "df": 1}}}, "m": {"docs": {"dect.ect.Batch": {"tf": 1.4142135623730951}}, "df": 1, "a": {"docs": {}, "df": 0, "t": {"docs": {"dect.ect.Batch": {"tf": 1}}, "df": 1}}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"dect.ect.ECTLayer.forward": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"dect": {"tf": 1}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"dect.directions": {"tf": 1}, "dect.ect.compute_ecc": {"tf": 1}}, "df": 2}}}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"dect": {"tf": 1}}, "df": 1}, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"dect.directions.generate_multiview_directions": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {"dect.ect.Batch": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"dect.ect.Batch": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 2}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"dect.ect.compute_ecc": {"tf": 1}, "dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 4}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"dect": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"dect": {"tf": 1}, "dect.directions.generate_uniform_directions": {"tf": 1}, "dect.directions.generate_uniform_2d_directions": {"tf": 1}}, "df": 3}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1}}, "df": 1}}, "x": {"docs": {"dect": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {"dect": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1.7320508075688772}, "dect.ect.Batch": {"tf": 1}}, "df": 2, "/": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {"dect": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"dect": {"tf": 2}, "dect.directions.generate_uniform_directions": {"tf": 1}}, "df": 2}}, "e": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"dect.ect.Batch": {"tf": 1}, "dect.ect.compute_ecc": {"tf": 2}, "dect.ect.compute_ect_points": {"tf": 1.7320508075688772}, "dect.ect.compute_ect_edges": {"tf": 1.7320508075688772}, "dect.ect.compute_ect_faces": {"tf": 1.7320508075688772}}, "df": 5}}}}}}}}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {"dect": {"tf": 1}, "dect.ect.Batch": {"tf": 1.4142135623730951}, "dect.ect.compute_ecc": {"tf": 1}, "dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 6}, "v": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1}, "dect.directions.generate_uniform_directions": {"tf": 1}, "dect.ect.compute_ecc": {"tf": 1}}, "df": 3}}, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "y": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {"dect": {"tf": 1.4142135623730951}}, "df": 1, ":": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {"dect": {"tf": 1.7320508075688772}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "w": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "l": {"docs": {"dect": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {"dect.ect.compute_ecc": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"dect": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"dect.ect.compute_ecc": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1.4142135623730951}}, "df": 1}}, "l": {"docs": {}, "df": 0, "p": {"docs": {"dect": {"tf": 1.7320508075688772}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {"dect.directions": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1}, "dect.directions.generate_uniform_2d_directions": {"tf": 1}}, "df": 2}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {"dect.ect.compute_ecc": {"tf": 1.4142135623730951}, "dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 4, "s": {"docs": {"dect.ect.compute_ecc": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {"dect": {"tf": 1.4142135623730951}}, "df": 1}}, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"dect.directions.generate_multiview_directions": {"tf": 1}}, "df": 1}}}}}}}}}}, "a": {"docs": {"dect": {"tf": 4.123105625617661}, "dect.directions": {"tf": 1}, "dect.directions.generate_uniform_directions": {"tf": 1.7320508075688772}, "dect.directions.generate_uniform_2d_directions": {"tf": 1.4142135623730951}, "dect.directions.generate_multiview_directions": {"tf": 2}, "dect.ect.Batch": {"tf": 1.7320508075688772}, "dect.ect.compute_ecc": {"tf": 1.7320508075688772}, "dect.ect.compute_ect_points": {"tf": 1.4142135623730951}, "dect.ect.compute_ect_edges": {"tf": 1.4142135623730951}, "dect.ect.compute_ect_faces": {"tf": 1.4142135623730951}}, "df": 10, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}, "k": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"dect": {"tf": 1}}, "df": 1, "s": {"docs": {"dect": {"tf": 1.4142135623730951}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"dect.ect.Batch": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "n": {"docs": {"dect": {"tf": 2}, "dect.directions.generate_multiview_directions": {"tf": 1}, "dect.ect.Batch": {"tf": 1.4142135623730951}}, "df": 3, "d": {"docs": {"dect": {"tf": 3.3166247903554}, "dect.directions": {"tf": 1}, "dect.directions.generate_uniform_directions": {"tf": 1}, "dect.directions.generate_uniform_2d_directions": {"tf": 1}, "dect.directions.generate_multiview_directions": {"tf": 1.4142135623730951}, "dect.ect.compute_ecc": {"tf": 1.4142135623730951}, "dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}, "dect.ect.ECTLayer.__init__": {"tf": 1}}, "df": 10}, "y": {"docs": {"dect": {"tf": 1.4142135623730951}}, "df": 1}, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"dect.directions.generate_uniform_2d_directions": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "x": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}}}}}}, "x": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {"dect": {"tf": 1}}, "df": 1}}}, "e": {"docs": {"dect": {"tf": 1.7320508075688772}, "dect.directions.generate_multiview_directions": {"tf": 1}}, "df": 2}}, "l": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {"dect": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "y": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"dect.directions.generate_multiview_directions": {"tf": 1.4142135623730951}}, "df": 1}}}}, "s": {"docs": {"dect": {"tf": 2.23606797749979}, "dect.ect.compute_ecc": {"tf": 1.4142135623730951}}, "df": 2, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "d": {"docs": {"dect": {"tf": 1}}, "df": 1}}, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}}}}, "t": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1}}, "df": 1, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"dect.ect.Batch": {"tf": 1}}, "df": 1}}}}}}}}}, "f": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"dect.directions.generate_multiview_directions": {"tf": 1}, "dect.ect.compute_ecc": {"tf": 1}, "dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 5}}}}}, "y": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"dect": {"tf": 1}}, "df": 1}}}, "s": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {"dect": {"tf": 2.449489742783178}}, "df": 1, "r": {"docs": {"dect": {"tf": 3.3166247903554}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"dect": {"tf": 1}}, "df": 1}}}, "z": {"docs": {"dect.directions.generate_multiview_directions": {"tf": 1}}, "df": 1}}, "b": {"docs": {"dect": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {"dect": {"tf": 1}}, "df": 1}, "c": {"docs": {"dect": {"tf": 1.4142135623730951}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"dect": {"tf": 2}, "dect.ect.Batch": {"tf": 1.7320508075688772}, "dect.ect.compute_ecc": {"tf": 1.4142135623730951}, "dect.ect.compute_ect_points": {"tf": 2.449489742783178}, "dect.ect.compute_ect_edges": {"tf": 2.449489742783178}, "dect.ect.compute_ect_faces": {"tf": 2.449489742783178}}, "df": 6}}}}, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {"dect": {"tf": 1}, "dect.ect.ECTLayer.__init__": {"tf": 1}}, "df": 2}}}, "s": {"docs": {}, "df": 0, "d": {"docs": {"dect": {"tf": 1}}, "df": 1}}, "e": {"docs": {"dect.ect.Batch": {"tf": 1.4142135623730951}, "dect.ect.compute_ecc": {"tf": 1.4142135623730951}, "dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 5, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {"dect": {"tf": 1}}, "df": 1}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {"dect.ect.Batch": {"tf": 1}, "dect.ect.compute_ecc": {"tf": 1}}, "df": 2}}}}}}, "y": {"docs": {"dect": {"tf": 1}, "dect.directions.generate_multiview_directions": {"tf": 1}, "dect.ect.Batch": {"tf": 1}, "dect.ect.compute_ecc": {"tf": 1}, "dect.ect.ECTLayer.__init__": {"tf": 1}}, "df": 5}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"dect": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "g": {"docs": {"dect": {"tf": 1}}, "df": 1}}}, "m": {"docs": {"dect": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1.4142135623730951}, "dect.ect.ECTLayer": {"tf": 1}}, "df": 2}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"dect": {"tf": 1}}, "df": 1}}}, "o": {"6": {"3": {"2": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "q": {"3": {"docs": {}, "df": 0, "i": {"docs": {"dect": {"tf": 1}}, "df": 1}}, "docs": {}, "df": 0}}}}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1.7320508075688772}}, "df": 1}}, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"dect.ect.ECTLayer.__init__": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"dect": {"tf": 1}}, "df": 1}}, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"dect.directions.generate_multiview_directions": {"tf": 1}}, "df": 1}, "y": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"dect.ect.compute_ecc": {"tf": 1}}, "df": 1}}}}}}}}}}, "d": {"docs": {"dect": {"tf": 1}}, "df": 1}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"dect.ect.compute_ect_faces": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {"dect.ect.ECTLayer.forward": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"dect": {"tf": 1.4142135623730951}, "dect.ect.ECTLayer": {"tf": 1}}, "df": 2}}}}}}}, "g": {"docs": {"dect": {"tf": 1}}, "df": 1}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"dect": {"tf": 1.7320508075688772}}, "df": 1}}}}}}, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"dect": {"tf": 1.4142135623730951}, "dect.ect.ECTConfig": {"tf": 1}, "dect.ect.ECTLayer": {"tf": 1}, "dect.ect.ECTLayer.forward": {"tf": 1}}, "df": 4}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"dect": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 2}}, "df": 1}}}}}, "n": {"docs": {"dect.ect.compute_ecc": {"tf": 1}, "dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 4}, "e": {"docs": {"dect.ect.normalize": {"tf": 1}}, "df": 1}}, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"dect": {"tf": 1}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"dect.ect.Batch": {"tf": 1.4142135623730951}, "dect.ect.compute_ecc": {"tf": 1}}, "df": 2}}}}}}}}, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"dect.ect.compute_ecc": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {"dect": {"tf": 1}}, "df": 1, "e": {"docs": {"dect": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"dect.ect.compute_ecc": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"dect.ect.compute_ecc": {"tf": 1}, "dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 4}}}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"dect.ect.compute_ecc": {"tf": 1}, "dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 4}}}}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1}}, "df": 1, "s": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"dect": {"tf": 2.8284271247461903}}, "df": 1}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1}}, "df": 1, "s": {"docs": {"dect": {"tf": 1}}, "df": 1}, "d": {"docs": {"dect.ect.Batch": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"dect": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"dect": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"dect": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {"dect": {"tf": 1}}, "df": 1}}}, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"dect": {"tf": 1}}, "df": 1}}}, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"dect.directions.generate_uniform_2d_directions": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"dect.ect.compute_ecc": {"tf": 1}}, "df": 1}}}}}}}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"dect.ect.normalize": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"2": {"4": {"docs": {}, "df": 0, "a": {"docs": {"dect": {"tf": 1}}, "df": 1}}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1}}, "df": 1}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {"dect.ect.compute_ecc": {"tf": 1}, "dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 4}}}}, "^": {"3": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1}, "dect.directions.generate_uniform_2d_directions": {"tf": 1}}, "df": 2}, "docs": {}, "df": 0}}, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"dect": {"tf": 2.23606797749979}, "dect.directions.generate_uniform_directions": {"tf": 1.4142135623730951}, "dect.directions.generate_multiview_directions": {"tf": 1.4142135623730951}, "dect.ect.compute_ecc": {"tf": 1.7320508075688772}}, "df": 4, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"dect.ect.compute_ecc": {"tf": 1.7320508075688772}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {"dect": {"tf": 1.4142135623730951}}, "df": 1}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"dect.directions.generate_multiview_directions": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {"dect": {"tf": 2}, "dect.directions.generate_multiview_directions": {"tf": 1.7320508075688772}}, "df": 2, "l": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}, "h": {"docs": {}, "df": 0, "l": {"docs": {"dect": {"tf": 1.4142135623730951}}, "df": 1}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"dect.directions.generate_multiview_directions": {"tf": 1}}, "df": 1}}, "n": {"docs": {"dect.ect.Batch": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"dect.ect.Batch": {"tf": 1}, "dect.ect.compute_ecc": {"tf": 1}}, "df": 2}}}}, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "s": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"dect": {"tf": 1.7320508075688772}, "dect.ect.Batch": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "g": {"docs": {"dect": {"tf": 1}}, "df": 1}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1.7320508075688772}, "dect.directions.generate_uniform_directions": {"tf": 1}}, "df": 2}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"dect.directions.generate_multiview_directions": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}}}}, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"dect.ect.Batch": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1.7320508075688772}}, "df": 1, "d": {"docs": {"dect": {"tf": 1.4142135623730951}, "dect.ect.Batch": {"tf": 1}}, "df": 2}, "s": {"docs": {"dect.directions.generate_uniform_2d_directions": {"tf": 1}}, "df": 1}}}}}, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"dect": {"tf": 1}}, "df": 1}, "e": {"docs": {}, "df": 0, "d": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1}}, "df": 1}}}}}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"dect.ect.compute_ecc": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 2}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1}, "dect.directions.generate_uniform_2d_directions": {"tf": 1}, "dect.ect.Batch": {"tf": 1}, "dect.ect.compute_ecc": {"tf": 1}, "dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 7}}}}}}}}}, "i": {"docs": {}, "df": 0, "p": {"docs": {"dect": {"tf": 2}}, "df": 1}}, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"dect.ect.Batch": {"tf": 1}, "dect.ect.compute_ect_points": {"tf": 1}}, "df": 2, "s": {"docs": {"dect": {"tf": 1.4142135623730951}, "dect.directions.generate_uniform_directions": {"tf": 1}, "dect.ect.Batch": {"tf": 1.4142135623730951}}, "df": 3}, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "d": {"docs": {"dect.ect.Batch": {"tf": 1}, "dect.ect.compute_ecc": {"tf": 1}}, "df": 2}}}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"dect": {"tf": 1.7320508075688772}}, "df": 1}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"dect": {"tf": 1.7320508075688772}}, "df": 1}}, "r": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1}, "dect.directions.generate_uniform_2d_directions": {"tf": 1}}, "df": 2}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {"dect": {"tf": 1.4142135623730951}}, "df": 1, "e": {"docs": {"dect": {"tf": 1.4142135623730951}}, "df": 1, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {"dect": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1.4142135623730951}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "l": {"docs": {"dect": {"tf": 1.4142135623730951}}, "df": 1}}, "p": {"docs": {"dect": {"tf": 1}}, "df": 1}, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {"dect": {"tf": 1.4142135623730951}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1}, "dect.directions.generate_uniform_2d_directions": {"tf": 1}}, "df": 2}}}}}}, "t": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1.7320508075688772}, "dect.directions.generate_uniform_2d_directions": {"tf": 1.7320508075688772}, "dect.directions.generate_multiview_directions": {"tf": 1.4142135623730951}}, "df": 3}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"dect": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}}}, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}}}}}, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1}, "dect.directions.generate_uniform_directions": {"tf": 1}, "dect.ect.Batch": {"tf": 1.4142135623730951}, "dect.ect.compute_ecc": {"tf": 1.4142135623730951}, "dect.ect.compute_ect_points": {"tf": 1.4142135623730951}, "dect.ect.compute_ect_edges": {"tf": 1.4142135623730951}, "dect.ect.compute_ect_faces": {"tf": 1.4142135623730951}}, "df": 7, "s": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"dect.ect.ECTLayer.__init__": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {"dect": {"tf": 1.4142135623730951}}, "df": 1}}, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"dect": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"dect.ect.compute_ecc": {"tf": 1}, "dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 4}}}}}}}, "b": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {"dect": {"tf": 1.7320508075688772}}, "df": 1, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}}}, "g": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"dect": {"tf": 1.7320508075688772}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {"dect.ect.compute_ecc": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"dect.ect.compute_ecc": {"tf": 1}}, "df": 1}, "d": {"docs": {"dect.ect.normalize": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}}}, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"dect.ect.ECTLayer.__init__": {"tf": 1}}, "df": 1}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1}}, "df": 1}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {"dect": {"tf": 1}, "dect.ect.compute_ecc": {"tf": 1}, "dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 5}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"dect": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"dect.ect.Batch": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {"dect.ect.ECTLayer.__init__": {"tf": 1}}, "df": 1}}}, "r": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1}, "dect.directions.generate_uniform_2d_directions": {"tf": 1}}, "df": 2, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"dect.directions": {"tf": 1}, "dect.directions.generate_uniform_2d_directions": {"tf": 1}, "dect.directions.generate_multiview_directions": {"tf": 2}}, "df": 3}}}}}}}}}, "y": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {"dect.directions": {"tf": 1}, "dect.directions.generate_uniform_directions": {"tf": 1}, "dect.directions.generate_uniform_2d_directions": {"tf": 1}}, "df": 3, "s": {"docs": {"dect.directions.generate_multiview_directions": {"tf": 1.4142135623730951}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"dect.directions.generate_multiview_directions": {"tf": 1}}, "df": 1, "d": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1.7320508075688772}, "dect.directions.generate_uniform_2d_directions": {"tf": 1}, "dect.directions.generate_multiview_directions": {"tf": 1}}, "df": 3}}}}, "e": {"docs": {"dect.ect.compute_ecc": {"tf": 1}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1.7320508075688772}, "dect.directions.generate_uniform_2d_directions": {"tf": 1}}, "df": 2}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {"dect.ect.Batch": {"tf": 1.4142135623730951}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"dect.ect.Batch": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"dect.ect.Batch": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"dect.ect.compute_ecc": {"tf": 1}}, "df": 1}}}}}}}, "z": {"docs": {}, "df": 0, "e": {"docs": {"dect.ect.Batch": {"tf": 1}, "dect.ect.compute_ecc": {"tf": 1}, "dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 5}}, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"dect.ect.compute_ecc": {"tf": 1}}, "df": 1}}}}, "g": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"dect.ect.compute_ecc": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"dect.ect.compute_ecc": {"tf": 1}}, "df": 1}}}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"dect": {"tf": 2.23606797749979}}, "df": 1}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}}}}, "n": {"docs": {"dect.directions.generate_multiview_directions": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "?": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}}}}}, "w": {"docs": {"dect": {"tf": 2.449489742783178}}, "df": 1}, "e": {"docs": {}, "df": 0, "d": {"docs": {"dect": {"tf": 1.4142135623730951}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {"dect": {"tf": 1}}, "df": 1, "e": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1}}, "df": 1, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"dect.ect.compute_ecc": {"tf": 2.23606797749979}, "dect.ect.compute_ect_points": {"tf": 1.4142135623730951}, "dect.ect.compute_ect_edges": {"tf": 1.4142135623730951}, "dect.ect.compute_ect_faces": {"tf": 1.4142135623730951}}, "df": 4, "s": {"docs": {"dect.ect.Batch": {"tf": 1.4142135623730951}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"dect.ect.compute_ecc": {"tf": 1}, "dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 4}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"dect.ect.normalize": {"tf": 1}}, "df": 1}}}}}}}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {"dect": {"tf": 1}, "dect.directions.generate_uniform_directions": {"tf": 1.4142135623730951}, "dect.directions.generate_uniform_2d_directions": {"tf": 1}, "dect.ect.Batch": {"tf": 1.7320508075688772}, "dect.ect.compute_ecc": {"tf": 1.4142135623730951}, "dect.ect.compute_ect_points": {"tf": 1.4142135623730951}, "dect.ect.compute_ect_edges": {"tf": 1.4142135623730951}, "dect.ect.compute_ect_faces": {"tf": 1.4142135623730951}}, "df": 8, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1}, "dect.directions.generate_uniform_2d_directions": {"tf": 1}, "dect.ect.compute_ecc": {"tf": 1}}, "df": 3, "s": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1.4142135623730951}}, "df": 1}}}, "h": {"docs": {"dect.ect.compute_ecc": {"tf": 1}}, "df": 1}, "n": {"docs": {"dect.ect.ECTLayer.__init__": {"tf": 1}}, "df": 1}}, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {"dect": {"tf": 1}}, "df": 1}, "p": {"docs": {}, "df": 0, "h": {"docs": {"dect.ect.Batch": {"tf": 1}}, "df": 1, "s": {"docs": {"dect.ect.compute_ect_edges": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "d": {"docs": {"dect.directions.generate_uniform_2d_directions": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"dect": {"tf": 1}}, "df": 1}}}, "t": {"docs": {"dect": {"tf": 3}}, "df": 1, "+": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, ":": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "h": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {"dect": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"dect": {"tf": 1}, "dect.ect.Batch": {"tf": 1.7320508075688772}}, "df": 2}}}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"dect": {"tf": 1.4142135623730951}, "dect.directions": {"tf": 1}, "dect.directions.generate_uniform_directions": {"tf": 1.4142135623730951}, "dect.directions.generate_uniform_2d_directions": {"tf": 1.4142135623730951}, "dect.directions.generate_multiview_directions": {"tf": 1}}, "df": 5, "d": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1}}, "df": 1}, "s": {"docs": {"dect.directions.generate_multiview_directions": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}}}}, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"dect.directions.generate_uniform_directions": {"tf": 1}}, "df": 1}}}}}}}}, "v": {"docs": {"dect": {"tf": 1.7320508075688772}, "dect.ect.compute_ecc": {"tf": 1}, "dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 5, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"dect": {"tf": 1.4142135623730951}, "dect.ect.compute_ecc": {"tf": 1}, "dect.ect.compute_ect_points": {"tf": 1}, "dect.ect.compute_ect_edges": {"tf": 1}, "dect.ect.compute_ect_faces": {"tf": 1}}, "df": 5}}}}, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"dect": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"dect.ect.compute_ecc": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "x": {"docs": {"dect": {"tf": 1}, "dect.ect.Batch": {"tf": 1}, "dect.ect.compute_ecc": {"tf": 1}}, "df": 3, "y": {"docs": {"dect.directions.generate_multiview_directions": {"tf": 1}}, "df": 1}, "z": {"docs": {"dect.directions.generate_multiview_directions": {"tf": 1}}, "df": 1}}}}}, "pipeline": ["trimmer"], "_isPrebuiltIndex": true}; - - // mirrored in build-search-index.js (part 1) - // Also split on html tags. this is a cheap heuristic, but good enough. - elasticlunr.tokenizer.setSeperator(/[\s\-.;&_'"=,()]+|<[^>]*>/); - - let searchIndex; - if (docs._isPrebuiltIndex) { - console.info("using precompiled search index"); - searchIndex = elasticlunr.Index.load(docs); - } else { - console.time("building search index"); - // mirrored in build-search-index.js (part 2) - searchIndex = elasticlunr(function () { - this.pipeline.remove(elasticlunr.stemmer); - this.pipeline.remove(elasticlunr.stopWordFilter); - this.addField("qualname"); - this.addField("fullname"); - this.addField("annotation"); - this.addField("default_value"); - this.addField("signature"); - this.addField("bases"); - this.addField("doc"); - this.setRef("fullname"); - }); - for (let doc of docs) { - searchIndex.addDoc(doc); - } - console.timeEnd("building search index"); - } - - return (term) => searchIndex.search(term, { - fields: { - qualname: {boost: 4}, - fullname: {boost: 2}, - annotation: {boost: 2}, - default_value: {boost: 2}, - signature: {boost: 2}, - bases: {boost: 2}, - doc: {boost: 1}, - }, - expand: true - }); -})(); \ No newline at end of file