diff --git a/README.rst b/README.rst new file mode 100644 index 0000000000000000000000000000000000000000..695968f5b05c11574b6a2fdddf116a246373691c --- /dev/null +++ b/README.rst @@ -0,0 +1,12 @@ +WIP Multiview Generator +======================== + +This package aims at generating mutliview datasets according to multipe paramterers : +an error matrix, that tracks the error of each view on each class, a redundancy float that controls the ration of examples that are well described by all the viewsw, +similarly the lutual error float controls the one that are misdescribed in eavery views. + +Structure +--------- +The class of intereset is located in ``generator/multiple_sub_problems.py`` and called ``MultiViewSubProblemsGenerator``. + +A demo is available in ``demo/demo.py`` and generates a 3D dataset, along with a figure that analyzes it. \ No newline at end of file diff --git a/VERSION b/VERSION new file mode 100644 index 0000000000000000000000000000000000000000..a13227464ffff995d20fd73965a5d2241521b3c5 --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +multiview_generator:0.0.dev0 \ No newline at end of file diff --git a/copyright.py b/copyright.py new file mode 100644 index 0000000000000000000000000000000000000000..0dfbe8e0d32f2d4a8ff80090e90bf21c3f3fcb6e --- /dev/null +++ b/copyright.py @@ -0,0 +1,106 @@ +# -*- coding: utf-8 -*- +from __future__ import print_function, division +import time +import os +import sys +import fileinput + + +def findFiles(directory, files=[]): + """scan a directory for py, pyx, pxd extension files.""" + for filename in os.listdir(directory): + path = os.path.join(directory, filename) + if os.path.isfile(path) and (path.endswith(".py") or + path.endswith(".pyx") or + path.endswith(".pxd")): + if filename != "__init__.py" and filename != "version.py": + files.append(path) + elif os.path.isdir(path): + findFiles(path, files) + return files + + +def fileUnStamping(filename): + """ Remove stamp from a file """ + is_stamp = False + for line in fileinput.input(filename, inplace=1): + if line.find("# COPYRIGHT #") != -1: + is_stamp = not is_stamp + elif not is_stamp: + print(line, end="") + + +def fileStamping(filename, stamp): + """ Write a stamp on a file + + WARNING : The stamping must be done on an default utf8 machine ! + """ + old_stamp = False # If a copyright already exist over write it. + for line in fileinput.input(filename, inplace=1): + if line.find("# COPYRIGHT #") != -1: + old_stamp = not old_stamp + elif line.startswith("# -*- coding: utf-8 -*-"): + print(line, end="") + print(stamp) + elif not old_stamp: + print(line, end="") + + +def getStamp(date, multiview_generator_version): + """ Return the corrected formated stamp """ + stamp = open("copyrightstamp.txt").read() + stamp = stamp.replace("DATE", date) + stamp = stamp.replace("MULTIVIEW_GENERATOR_VERSION", multiview_generator_version) + stamp = stamp.replace('\n', '\n# ') + stamp = "# " + stamp + stamp = stamp.replace("# \n", "#\n") + return stamp.strip() + + +def getVersionsAndDate(): + """ Return (date, multimodal_version.. + ) """ + v_text = open('VERSION').read().strip() + v_text_formted = '{"' + v_text.replace('\n', '","').replace(':', '":"') + v_text_formted += '"}' + v_dict = eval(v_text_formted) + return (time.strftime("%Y"), v_dict['multiview_generator']) + + +def writeStamp(): + """ Write a copyright stamp on all files """ + stamp = getStamp(*getVersionsAndDate()) + files = findFiles(os.path.join(os.path.dirname(os.path.abspath(__file__)), + "multiview_generator")) + for filename in files: + fileStamping(filename, stamp) + fileStamping("setup.py", stamp) + + +def eraseStamp(): + """ Erase a copyright stamp from all files """ + files = findFiles(os.path.join(os.path.dirname(os.path.abspath(__file__)), + "multiview_generator")) + for filename in files: + fileUnStamping(filename) + fileUnStamping("setup.py") + + +def usage(arg): + print("Usage :") + print("\tpython %s stamping" % arg) + print("\tpython %s unstamping" % arg) + + +if __name__ == "__main__": + if len(sys.argv) == 1: + usage(sys.argv[0]) + elif len(sys.argv) == 2: + if sys.argv[1].startswith("unstamping"): + eraseStamp() + elif sys.argv[1].startswith("stamping"): + writeStamp() + else: + usage(sys.argv[0]) + else: + usage(sys.argv[0]) diff --git a/copyrightstamp.txt b/copyrightstamp.txt new file mode 100644 index 0000000000000000000000000000000000000000..a9db52832ab3ebd9f50044cfe34cdd23aa16d2de --- /dev/null +++ b/copyrightstamp.txt @@ -0,0 +1,35 @@ +######### COPYRIGHT ######### + +Copyright(c) DATE +----------------- + +* Université d'Aix Marseille (AMU) - +* Centre National de la Recherche Scientifique (CNRS) - +* Université de Toulon (UTLN). +* Copyright © 2019-2020 AMU, CNRS, UTLN + +Contributors: +------------ + +* Sokol Koço <sokol.koco_AT_lis-lab.fr> +* Cécile Capponi <cecile.capponi_AT_univ-amu.fr> +* Dominique Benielli <dominique.benielli_AT_univ-amu.fr> +* Baptiste Bauvin <baptiste.bauvin_AT_univ-amu.fr> + +Description: +----------- + + + +Version: +------- + +* multiview_generator version = MULTIMODAL_VERSION + +Licence: +------- + +License: New BSD License + + +######### COPYRIGHT ######### diff --git a/license.txt b/license.txt new file mode 100644 index 0000000000000000000000000000000000000000..573f99a8258c728e1aa5bd241ec6941ed7a0d7c1 --- /dev/null +++ b/license.txt @@ -0,0 +1,30 @@ +New BSD License + +Copyright (c) 2020-15-01, The scikit-multimodallearn developers. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + a. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + b. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + c. Neither the name of the IntertwiningWavelet developers nor the names of + its contributors may be used to endorse or promote products + derived from this software without specific prior written + permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. \ No newline at end of file