Commits (6)
......@@ -2,5 +2,10 @@
include *.rst
# Include the license file
include LICENSE.txtinclude versioneer.py
include LICENSE.txt
include versioneer.py
include src/cicada/_version.py
include src/cicada/gui/icons/rc/*
include src/cicada/gui/icons/svg/*
include src/cicada/config/*
include src/cicada/gui/cicada_qdarkstyle.css
......@@ -18,9 +18,9 @@ In order to tackle the broadness of scientists' needs, we built the pipeline to
Supported data format
"""""""""""""""""""""
The default data format chosen was Neurodata Without Borders: Neurophysiology (NWB:N) that is a data standard for neurophysiology, providing neuroscientists with a common standard to share, archive, use, and build analysis tools for neurophysiology data. NWB:N is designed to store a variety of neurophysiology data, including data from intracellular and extracellular electrophysiology experiments, data from optical physiology experiments, and tracking and stimulus data.(https://www.nwb.org/)
The default data format chosen was `Neurodata Without Borders: Neurophysiology (NWB:N) <https://www.nwb.org/>`_. that is a data standard for neurophysiology, providing neuroscientists with a common standard to share, archive, use, and build analysis tools for neurophysiology data. NWB:N is designed to store a variety of neurophysiology data, including data from intracellular and extracellular electrophysiology experiments, data from optical physiology experiments, and tracking and stimulus data.
We provide some tools to convert their data into NWB, with a plugin-like interface (see github address)
We provide some tools to convert their data into NWB, with a plugin-like interface. (Curently in Preprocessing)
Functionalities
......
......@@ -4,13 +4,14 @@ Software architecture
Analysis
--------
Each analysis is represented by a class that inherits CicadaAnalysis (in the module `cicada.analysis <https://cicada-cossart.readthedocs.io/en/latest/analysis.html#module-cicada.analysis.cicada_analysis>`_).
Each analysis is represented by a class that inherits CicadaAnalysis (in the module `cicada.analysis <https://pycicada.readthedocs.io/en/latest/analysis.html#module-cicada.analysis.cicada_analysis>`_).
Each CicadaAnalysis instance instanciate an ArgumentAnalysisHandler that communicates with the GUI and handle the arguments that will be passed to the analysis.
Each CicadaAnalaysis instance allows to check the compatibility of the data to analyze though the method check_data().
Each CicadaAnalaysis instance allows to check the compatibility of the data to analyze though the method ``check_data()``.
The method run_analysis() will be called to start the analysis.
The method ``run_analysis()`` will be called to start the analysis.
The abstract class CicadaAnalysisFormatWrapper allows,through inheritance, to write a wrapper for a given data format, such as nwb.
It allows to get the content from specific data format, and adding a new format consists in creating a new instance of CicadaAnalysisFormatWrapper, without any change in the CicadaAnalysis instances.
......@@ -19,12 +20,12 @@ It allows to get the content from specific data format, and adding a new format
Graphical User Interface
------------------------
The GUI uses QT through QtPy which wrapps PyQt5 and PySide.
The GUI uses Qt through QtPy which wrapps PyQt5 and PySide.
The GUI is composed of 3 main modules. (screenshot to add)
The GUI is composed of 3 main modules.
1. A list that displays the loaded recorded sessions to analyse (`SessionsWidget <https://cicada-cossart.readthedocs.io/en/latest/gui.html#module-cicada.gui.session_show_filter_group>`_).
1. A list that displays the loaded recorded sessions to analyse (`SessionsWidget <https://pycicada.readthedocs.io/en/latest/gui.html#module-cicada.gui.session_show_filter_group>`_).
2. A tree that displays the available analyses, updated depending on the data to analyse. (`AnalysisTreeApp <https://cicada-cossart.readthedocs.io/en/latest/gui.html#module-cicada.gui.cicada_analysis_tree_guianalysis>`_)
2. A tree that displays the available analyses, updated depending on the data to analyse. (`AnalysisTreeApp <https://pycicada.readthedocs.io/en/latest/gui.html#module-cicada.gui.cicada_analysis_tree_guianalysis>`_)
3. A pop-up panel that allows to set arguments for the given analysis and to follow the status of the analysis. (`AnalysisParametersApp <https://cicada-cossart.readthedocs.io/en/latest/gui.html#module-cicada.gui.cicada_analysis_parameters_gui>`_). A corresponding overwiew of the opened panels is available on the main window (AnalysisOverview)
3. A pop-up panel that allows to set arguments for the given analysis and to follow the status of the analysis. (`AnalysisParametersApp <https://pycicada.readthedocs.io/en/latest/gui.html#module-cicada.gui.cicada_analysis_parameters_gui>`_). A corresponding overwiew of the opened panels is available on the main window (AnalysisOverview)
sphinxcontrib.images
numpy
qtpy
PyYAML
pynwb
......@@ -10,7 +11,5 @@ hdf5storage
pathlib
scipy
matplotlib
shapely
PyQt5
sortedcontainers
tqdm
......@@ -6,7 +6,7 @@ https://github.com/pypa/sampleproject
"""
# Always prefer setuptools over distutils
from setuptools import setup, find_packages
from setuptools import setup, find_packages, find_namespace_packages
from os import path
import versioneer
# io.open is needed for projects that support Python 2.7
......@@ -36,7 +36,7 @@ setup(
# There are some restrictions on what makes a valid project name
# specification here:
# https://packaging.python.org/specifications/core-metadata/#name
name='CICADA', # Required
name='PyCICADA', # Required
# Versions should comply with PEP 440:
# https://www.python.org/dev/peps/pep-0440/
......@@ -44,8 +44,8 @@ setup(
# For a discussion on single-sourcing the version across setup.py and the
# project code, see
# https://packaging.python.org/en/latest/single_source_version.html
version=versioneer.get_version(), # Required
cmdclass=versioneer.get_cmdclass(),
version="1.0.4", # Required
# cmdclass=versioneer.get_cmdclass(),
# This is a one-line description or tagline of what your project does. This
# corresponds to the "Summary" metadata field:
# https://packaging.python.org/specifications/core-metadata/#summary
......@@ -95,7 +95,7 @@ setup(
# 3 - Alpha
# 4 - Beta
# 5 - Production/Stable
'Development Status :: 1 - Alpha',
'Development Status :: 4 - Beta',
# Indicate who your project is intended for
'Intended Audience :: Science/Research',
......@@ -124,9 +124,11 @@ setup(
# the `py_modules` argument instead as follows, which will expect a file
# called `my_module.py` to exist:
#
# py_modules=["my_module"],
# py_modules=["cicada"],
#
packages=find_packages(exclude=['contrib', 'docs', 'tests']), # Required
#packages=find_packages(exclude=['contrib', 'docs', 'tests']), # Required
package_dir={'': 'src'},
packages=find_namespace_packages(where='src'),
# Specify which Python versions you support. In contrast to the
# 'Programming Language' classifiers above, 'pip install' will check this
......@@ -135,6 +137,8 @@ setup(
# https://packaging.python.org/guides/distributing-packages-using-setuptools/#python-requires
python_requires='>=3.5, <4',
include_package_data=True,
# This field lists other packages that your project depends on to run.
# Any package you put here will be installed by pip when your project is
# installed, so they must be valid existing projects.
......@@ -195,9 +199,7 @@ setup(
# maintainers, and where to support the project financially. The key is
# what's used to render the link text on PyPI.
project_urls={ # Optional
'Bug Reports': 'https://github.com/pypa/sampleproject/issues',
'Funding': 'https://donate.pypi.org',
'Say Thanks!': 'http://saythanks.io/to/example',
'Source': 'https://github.com/pypa/sampleproject/',
'Bug Reports': 'https://gitlab.com/cossartlab/cicada/issues',
'Source': 'https://gitlab.com/cossartlab/cicada/tree/master/src',
},
)
\ No newline at end of file
from cicada.gui.cicada_main_window import CicadaMainWindow
from cicada.gui.cicada_config_handler import ConfigHandler
import sys
import platform
from qtpy.QtWidgets import *
import os
......@@ -14,16 +15,20 @@ app = QApplication(sys.argv)
# dark_style_style_sheet = qdarkstyle.load_stylesheet_from_environment(is_pyqtgraph=True)
# from package qdarkstyle, modified css
my_path = os.path.abspath(os.path.dirname(__file__))
if platform.system() == "Windows":
to_insert = os.path.join(my_path, "gui/icons/")
to_insert = to_insert.replace("\\", "/")
else:
to_insert = os.path.join(my_path, "gui/icons/")
file_name = os.path.join(my_path, "gui/cicada_qdarkstyle.css")
# with open(file_name, "w", encoding='UTF-8') as file:
# file.write(dark_style_style_sheet)
with open(file_name, "r", encoding='UTF-8') as file:
dark_style_cicada_style_sheet = file.read()
my_path = os.path.abspath(os.path.dirname(__file__))
to_insert = os.path.join(my_path, "gui/icons/")
dark_style_cicada_style_sheet = dark_style_cicada_style_sheet.replace("icons/", to_insert)
dark_style_cicada_style_sheet = dark_style_cicada_style_sheet.replace("icons/", to_insert)
app.setStyleSheet(dark_style_cicada_style_sheet)
config_handler = ConfigHandler()
......