Coder Social home page Coder Social logo

geodosic's Introduction

GitHub User's stars OSS contributions Google Scholar badge LinkedIn badge :name status badge

Skills ๐Ÿ› 

  • Languages: R, Python, SQL, C++, MATLAB
  • Big Data: Spark, PrestoDB, Azure, AWS
  • DevOps: Git, Docker, CI (GitHub Actions, Travis, Jenkins)

geodosic's People

Contributors

davidchall avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

geodosic's Issues

Handle nested polygons when creating structure mask

Need to determine hierarchy of polygons in a z slice, and then assign the hierarchy level to each polygon (i.e. 0 for largest polygons, 1 for first level of nested polygons, etc).

  • polygons with even hierarchy level contribute True to the mask
  • polygons with odd hierarchy level contribute False to the mask

Structure rasterization fails when separated in z

When a structure contains distinct and separate superior and inferior substructures, the rasterization fails. See the comparison between the geodosic mask and the CERR contour below:

screen shot 2017-01-31 at 7 13 27 pm
screen shot 2017-01-31 at 7 14 51 pm

There is an inferior substructure not visible in this slice. This causes the bottom slice of the superior substructure to be extended further than it should. This looks like a regular tube at the bottom of the structure.

I think this is because the structure_mask function assumes there is a single structure when calculating z_min and z_max.

Serialize intermediate results

Messagepack provides a binary JSON-like data format. Would need to pip install msgpack-numpy. It should install via Cython and then provide Python bindings. It provides a similar interface to the pickle and json modules, if I use dumps() and loads().

import msgpack
import msgpack_numpy as m
m.patch()

Structure masks can be stored more efficiently:

b = np.packbits(a, axis=1)
c = np.unpackbits(b, axis=1)

This axis=1 should also retain the shape of array a.

Invalid rasterization when contours are spread out

Currently the rasterization function iterates through the z planes of the rasterization grid. If it cannot find a contour plane that is closest to the grid plane (i.e. both planes identify the other as their closest plane) then it doesn't rasterize the structure on this plane. This is how we find gaps in structures.

If the contouring grid has a larger delta z than the rasterization grid, then the above test will identify gaps in the structure, when in fact we should be interpolating the structure between these gaps.

This is unlikely to become a problem in practice because contouring is done on a CT or MRI, which tends to have a grid with the smallest delta z. Dose is always scored on a coarser grid.

Model scoring should support multiple metrics

Currently, model scoring will score the model based upon a single metric. We loop over metrics in an external loop in the IPython notebook, and this means that the predicted and planned DVHs are calculated each time.

It would be more efficient to enable model scoring to handle multiple metrics, so the DVHs are only computed once. Plotting would use PdfPages in this case.

Do I want to make each metric a function that takes a DVH as an input, or keep using DVH methods?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.