Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update gsoc_2023_ideas.md #5

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
202 changes: 25 additions & 177 deletions gsoc_2023_ideas.md
Original file line number Diff line number Diff line change
@@ -1,185 +1,33 @@
# GSoC 2023 Ideas for InVesalius
#This is a sample code for Logging and error control Python has a module logging which can be used for this.

See also the instructions for applying [here](https://github.com/invesalius/gsoc/blob/main/gsoc_application.md).
import logging

All the current ideas for GSoC 2023 are listed bellow:
def setup_logging():
# Create a logger
logger = logging.getLogger('my_logger')
logger.setLevel(logging.DEBUG)

# Create file handler which logs all messages
file_handler = logging.FileHandler('event_log.txt')
file_handler.setLevel(logging.DEBUG)

### Add unit tests to InVesalius to ease the process of adding new features
# Create a formatter and add it to the handler
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)

Use tools like unittest or pytest to add tests to InVesalius code. That way, when adding new features or bug fixes, you can verify that no previous code has been affected. Also run this code when committing and sending pull requests on Github.
# Add the handler to the logger
logger.addHandler(file_handler)

**Requirements**: Computer with Windows, Linux or Mac OS installed. A source code editor, Python language and InVesalius libraries dependencies.
return logger

**Deliverables**:
- Unit tests in InVesalius code
- Github-CI action for running tests when committing or posting a pull-request
# Example usage
if __name__ == "__main__":
# Setup logging
logger = setup_logging()

**Programming Languages**: Python and YAML

**Duration**: 175h

**Mentor:** Thiago Franco de Moraes - [email protected]

**References**: https://github.com/invesalius/invesalius3/issues/496 and https://realpython.com/python-testing/

---

### Add type information to functions, methods and classes in InVesalius

Since python 3.5 it is possible to add type information to the parameters of functions, methods and classes. With this information it is possible to use tools like Mypy to catch calls made with the wrong type. This way you can avoid errors and make your code easier to maintain and grow

**Requirements**: Computer with Windows, Linux or Mac OS installed. A source code editor, Python language and InVesalius libraries dependencies.

**Deliverables**:
- Type information added to InVesalius functions, methods and classes.
- Github-CI action for catching type errors using tools like Mypy

**Programming Languages**: Python and YAML

**Duration**: 175h

**Mentor:** Thiago Franco de Moraes - [email protected]


**References**: https://github.com/invesalius/invesalius3/issues/497, https://docs.python.org/3/library/typing.html and https://mypy-lang.org/

---

### Add logging and error catching tool
Tool that allows the user to activate the capture of logs and errors. It should be possible to save the sequence of events in a text file.

**Requirements**: Computer with Windows, Linux or Mac OS installed. A source code editor, Python language and InVesalius libraries dependencies.

**Deliverables**:
- Graphic interface integrated to InVesalius that allows the user to activate the tool and save the logs.

**Programming Languages**: Python

**Duration**: 350h

**Mentor:** Paulo Henrique Junqueira Amorim - [email protected]

**References**: https://github.com/invesalius/invesalius3/issues/498, https://docs.python.org/3/library/logging.html and https://realpython.com/python-logging/

---

### Support to custom shaders

Currently, InVesalius has fixed scene lighting options. Shaders allow you to manipulate part of the graphics pipeline, being able, for example, to change the color, lighting and camera of the scene. In the medical field this is useful as some regions can be better highlighted just by changing the lighting.

**Requirements**: Computer with Windows, Linux or Mac OS installed. A source code editor, Python language and InVesalius libraries dependencies. Good background of computer graphics.

**Deliverables**:
- Tool that allows loading and applying custom shaders in InVesalius rendering scenes. It is desirable that the tool displays the shader code and allows editing and applying for the user to see the changes.

**Programming Languages**: Python and GLSL

**Duration**: 175h

**Mentor:** Paulo Henrique Junqueira Amorim - [email protected]

**References**: https://github.com/invesalius/invesalius3/issues/499, https://vtk.org/Wiki/Shaders_In_VTK and https://learnopengl.com/Getting-started/Shaders

---

### Implement UX principles to improve InVesalius usability

The neuronavigation feature of InVesalius currently does not follow user experience (UX) principles in the user interface and workflow design. The software usability can be significantly improved by applying the basic UX design principles.

**Requirements**: Computer with Windows, Linux or Mac OS installed. A source code editor, Python language and InVesalius libraries dependencies.

**Deliverables**:
- Description and documentation of the neuronavigation workflow
- Refactored neuronavigation user controls and settings

**Programming Languages**: Python

**Duration**: 350h

**Mentor:** Victor Hugo Souza - [email protected]

**References**: https://github.com/invesalius/invesalius3/issues/506

---

### Add functional MRI support to InVesalius ([Selected](https://github.com/invesalius/gsoc/blob/main/gsoc_2023_selected.md))

InVesalius currently does not support the simultaneous visualization of functional and structural MRI. This task will expand the support to processed functional MRI.

**Requirements**: Computer with Windows, Linux or Mac OS installed. A source code editor, Python language and InVesalius libraries dependencies.

**Deliverables**:
- User interface to support and control fMRI parameters
- Visualization features for fMRI

**Programming Languages**: Python

**Duration**: 350h

**Mentor:** Victor Hugo Souza - [email protected]

**References**: https://github.com/invesalius/invesalius3/issues/507 and https://www.hopkinsmedicine.org/radiology/patient-information/exams-procedures/functional-mri.html

---

### Add PACS communication ([Selected](https://github.com/invesalius/gsoc/blob/main/gsoc_2023_selected.md))

InVesalius currently does not support loading DICOM images from a PACS server. The idea is to have a way to search for images in a PACS, download the images and load the images.

**Requirements**: Computer with Windows, Linux or Mac OS installed. A source code editor, Python language and InVesalius libraries dependencies. A PACS server like [Orthanc](https://www.orthanc-server.com/) or [DCM4CHE](https://www.dcm4che.org/).

**Deliverables**:
- Tool to communicate with PACS server
- Save the surfaces and masks in the PACS

**Programming Languages**: Python

**Duration**: 350h

**Mentor:** Thiago Franco de Moraes - [email protected]

**References**: https://github.com/invesalius/invesalius3/issues/101 , https://gdcm.sourceforge.net/html/classgdcm_1_1CompositeNetworkFunctions.html, https://en.wikipedia.org/wiki/Picture_archiving_and_communication_system

---

### Add scale in 2D/3D viewer

InVesalius does not have a scale on the window border of axial, coronal, sagittal and 3D/Volume views. This tool helps clinicians quickly visualize the scale of injury, organ, etc.

**Requirements**: Computer with Windows, Linux or Mac OS installed. A source code editor, Python language and InVesalius libraries dependencies. Good background of geometry and computer graphics.

**Deliverables**:
- Scale in millimeters on one of the border of the four viewing windows;
- Scale numbers should change size when the user zoom in/out;

**Programming Languages**: Python

**Duration**: 175h

**Mentor:** Paulo Henrique Junqueira Amorim - [email protected]

**References**: https://github.com/invesalius/invesalius3/issues/96

---

### Performance optimization of real-time neuronavigation

The real-time neuronavigation feature of InVesalius currently works based on multi-threading using Queues, Events, and Jobs (look at [#242](https://github.com/invesalius/invesalius3/pull/242)). Optimization (utilizing the least memory, minimizing its CPU time, and offering high speed) is needed to improve neuronavigation performance.

**Requirements**: Computer with Windows, Linux or Mac OS installed. A source code editor, Python language and InVesalius libraries dependencies. Good background of computer graphics.

**Deliverables**:
- Characterize step-by-step code execution time for neuronavigation
- Improve threads’ sleep times
- Investigate: WX GUI becomes slower when navigation is on
- Optimize 3D rendering/updating scene


**Programming Languages**: Python

**Duration**: 350h

**Mentor:** Renan Matsuda – [email protected]

**References**: https://github.com/invesalius/invesalius3/issues/529 and https://github.com/invesalius/invesalius3/pull/242
# Log some events
logger.debug('Debug message')
logger.info('Informational message')
logger.warning('Warning message')
logger.error('Error message')
logger.critical('Critical error message')