From 5d69c9bca76785357382cd50c859a5ef1d9d02bc Mon Sep 17 00:00:00 2001 From: NIhal Rodge <91406248+MrSpideyNihal@users.noreply.github.com> Date: Sun, 17 Dec 2023 08:44:17 +0530 Subject: [PATCH] Update gsoc_2023_ideas.md You can add logging and error control functionalites easily. --- gsoc_2023_ideas.md | 202 ++++++--------------------------------------- 1 file changed, 25 insertions(+), 177 deletions(-) diff --git a/gsoc_2023_ideas.md b/gsoc_2023_ideas.md index 38443f8..99e1846 100644 --- a/gsoc_2023_ideas.md +++ b/gsoc_2023_ideas.md @@ -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 - totonixsame@gmail.com - -**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 - totonixsame@gmail.com - - -**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 - paulojamorim@gmail.com - -**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 - paulojamorim@gmail.com - -**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 - vhosouza@gmail.com - -**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 - vhosouza@gmail.com - -**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 - totonixsame@gmail.com - -**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 - paulojamorim@gmail.com - -**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 – renan_hiroshi@hotmail.com - -**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')