Compare commits
28
Commits
4b18d4e35c
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4f6f99d64c | ||
|
|
92d869023a | ||
|
|
c32668034f | ||
|
|
fbffb7b56a | ||
|
|
54f34ef962 | ||
|
|
0894325737 | ||
|
|
aa13d8128f | ||
|
|
2a9d8b8e7b | ||
|
|
bcc77e4544 | ||
|
|
f05fa4faee | ||
|
|
7971322755 | ||
|
|
23784cc6f7 | ||
|
|
14394db487 | ||
|
|
5278521046 | ||
|
|
dda42f6bc4 | ||
|
|
299f82da2f | ||
|
|
d2a17f779f | ||
|
|
5260a615d5 | ||
|
|
a3c3c34936 | ||
|
|
ef9ec4fe3f | ||
|
|
4e63ebc564 | ||
|
|
521b5d3ea3 | ||
|
|
7fed3e630e | ||
|
|
2650b77806 | ||
|
|
2f3d0366d1 | ||
|
|
4f72924cb8 | ||
|
|
e72a61c0c2 | ||
|
|
5156b36051 |
No files matched your search
@@ -14,3 +14,6 @@ TinnitusAnalyse/MeinTinnitus.wav
|
||||
*.pyc
|
||||
TinnitusAnalyse/.idea/dictionaries/Julian.xml
|
||||
*.csv
|
||||
TinnitusAnalyse/.idea/workspace.xml
|
||||
TinnitusAnalyse/.idea/workspace.xml
|
||||
TinnitusAnalyse/__pycache__/SoundGenerator.cpython-35.pyc
|
||||
+3
@@ -7,6 +7,7 @@
|
||||
<w>beide</w>
|
||||
<w>beiden</w>
|
||||
<w>definieren</w>
|
||||
<w>filterordnung</w>
|
||||
<w>fontcolor</w>
|
||||
<w>frequenz</w>
|
||||
<w>kommentar</w>
|
||||
@@ -21,6 +22,7 @@
|
||||
<w>mittelfrequenz</w>
|
||||
<w>nachname</w>
|
||||
<w>ohren</w>
|
||||
<w>passband</w>
|
||||
<w>rauschen</w>
|
||||
<w>rauschens</w>
|
||||
<w>rechtem</w>
|
||||
@@ -30,6 +32,7 @@
|
||||
<w>rechts</w>
|
||||
<w>speichere</w>
|
||||
<w>speicherversuch</w>
|
||||
<w>sperrbereichs</w>
|
||||
<w>variablen</w>
|
||||
<w>vorname</w>
|
||||
<w>zwischen</w>
|
||||
|
||||
Generated
+131
-98
@@ -2,12 +2,11 @@
|
||||
<project version="4">
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="5b3f2136-e422-4072-84be-e86e40fa2d55" name="Default Changelist" comment="">
|
||||
<change beforePath="$PROJECT_DIR$/.idea/dictionaries/Julian.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/dictionaries/Julian.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/SoundGenerator.py" beforeDir="false" afterPath="$PROJECT_DIR$/SoundGenerator.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/TinnitusAnalyse_GUI.py" beforeDir="false" afterPath="$PROJECT_DIR$/TinnitusAnalyse_GUI.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/TinnitusDaten.csv" beforeDir="false" afterPath="$PROJECT_DIR$/TinnitusDaten.csv" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/dist/TinnitusAnalyse_GUI.exe" beforeDir="false" afterPath="$PROJECT_DIR$/dist/TinnitusAnalyse_GUI.exe" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/musikTest.wav" beforeDir="false" />
|
||||
</list>
|
||||
<ignored path="$PROJECT_DIR$/venv/" />
|
||||
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
@@ -16,53 +15,53 @@
|
||||
</component>
|
||||
<component name="FileEditorManager">
|
||||
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
|
||||
<file pinned="false" current-in-tab="true">
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/TinnitusAnalyse_GUI.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="248">
|
||||
<caret line="155" lean-forward="true" selection-start-line="155" selection-end-line="155" />
|
||||
<state relative-caret-position="500">
|
||||
<caret line="215" lean-forward="true" selection-start-line="215" selection-end-line="215" />
|
||||
<folding>
|
||||
<element signature="e#0#117#0" expanded="true" />
|
||||
<element signature="e#0#30#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/tkinter/__init__.py">
|
||||
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/site-packages/scipy/signal/fir_filter_design.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="874">
|
||||
<caret line="1557" selection-start-line="1557" selection-end-line="1557" />
|
||||
<state relative-caret-position="6562">
|
||||
<caret line="399" selection-start-line="399" selection-end-line="399" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/threading.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="15419">
|
||||
<caret line="913" selection-start-line="913" selection-end-line="913" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/SoundGenerator.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="729">
|
||||
<caret line="96" column="24" lean-forward="true" selection-start-line="96" selection-start-column="24" selection-end-line="96" selection-end-column="24" />
|
||||
<state relative-caret-position="504">
|
||||
<caret line="298" lean-forward="true" selection-start-line="298" selection-end-line="298" />
|
||||
<folding>
|
||||
<element signature="e#0#11#0" expanded="true" />
|
||||
<element signature="e#0#42#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/site-packages/matplotlib/axes/_base.py">
|
||||
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/site-packages/scipy/signal/signaltools.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="3349">
|
||||
<caret line="230" selection-start-line="230" selection-end-line="230" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/tkinter/ttk.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="9367">
|
||||
<caret line="552" selection-start-line="552" selection-end-line="552" />
|
||||
<state relative-caret-position="28492">
|
||||
<caret line="1694" column="4" selection-start-line="1694" selection-start-column="4" selection-end-line="1694" selection-end-column="4" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
@@ -96,6 +95,18 @@
|
||||
<find>500</find>
|
||||
<find>Text</find>
|
||||
<find>name</find>
|
||||
<find>unten_button_play_press</find>
|
||||
<find>StringVar</find>
|
||||
<find>Speichern</find>
|
||||
<find>csv</find>
|
||||
<find>musikTest</find>
|
||||
<find>Daten er</find>
|
||||
<find>samples</find>
|
||||
<find>framerate</find>
|
||||
<find>sample</find>
|
||||
<find>samplerate</find>
|
||||
<find>order</find>
|
||||
<find>feedback</find>
|
||||
</findStrings>
|
||||
<dirStrings>
|
||||
<dir>C:\Users\Julian\PycharmProjects\TinnitusAnalyse</dir>
|
||||
@@ -107,21 +118,18 @@
|
||||
<component name="IdeDocumentHistory">
|
||||
<option name="CHANGED_PATHS">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/WriteToCSV.py" />
|
||||
<option value="$PROJECT_DIR$/DigitalFilter1.py" />
|
||||
<option value="$PROJECT_DIR$/Noise Experiment.py" />
|
||||
<option value="$PROJECT_DIR$/DigitalFilter.py" />
|
||||
<option value="$PROJECT_DIR$/SoundGenerator.py" />
|
||||
<option value="$PROJECT_DIR$/TinnitusAnalyse_GUI.py" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="ProjectFrameBounds" extendedState="6">
|
||||
<option name="x" value="-8" />
|
||||
<option name="y" value="-8" />
|
||||
<option name="width" value="1696" />
|
||||
<option name="height" value="1066" />
|
||||
<component name="ProjectFrameBounds" extendedState="7">
|
||||
<option name="x" value="313" />
|
||||
<option name="y" value="-25" />
|
||||
<option name="width" value="1294" />
|
||||
<option name="height" value="1407" />
|
||||
</component>
|
||||
<component name="ProjectId" id="1hYkQMnWccTfUN5kAX3DpaPGeCX" />
|
||||
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
|
||||
<component name="ProjectView">
|
||||
<navigator proportions="" version="1">
|
||||
@@ -137,6 +145,7 @@
|
||||
</component>
|
||||
<component name="RecentsManager">
|
||||
<key name="CopyFile.RECENT_KEYS">
|
||||
<recent name="C:\Users\Julian\Desktop\Tinnitus GITHUB\Tinnitus_Musik_Therapie_Projektarbeit_Repo\TinnitusAnalyse" />
|
||||
<recent name="C:\Users\Julian\PycharmProjects\TinnitusAnalyse" />
|
||||
</key>
|
||||
</component>
|
||||
@@ -153,7 +162,7 @@
|
||||
</option>
|
||||
</component>
|
||||
<component name="RunManager" selected="Python.TinnitusAnalyse_GUI">
|
||||
<configuration name="DigitalFilter" type="PythonConfigurationType" factoryName="Python" temporary="true">
|
||||
<configuration name="DigitalFilter (1)" type="PythonConfigurationType" factoryName="Python" temporary="true">
|
||||
<module name="TinnitusAnalyse" />
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
@@ -161,11 +170,11 @@
|
||||
<env name="PYTHONUNBUFFERED" value="1" />
|
||||
</envs>
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||
<option name="IS_MODULE_SDK" value="true" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/../../.." />
|
||||
<option name="IS_MODULE_SDK" value="false" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/DigitalFilter.py" />
|
||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/../../../DigitalFilter.py" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||
<option name="EMULATE_TERMINAL" value="false" />
|
||||
@@ -174,7 +183,7 @@
|
||||
<option name="INPUT_FILE" value="" />
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
<configuration name="DigitalFilter1" type="PythonConfigurationType" factoryName="Python" temporary="true">
|
||||
<configuration name="DigitalFilterTest" type="PythonConfigurationType" factoryName="Python" temporary="true">
|
||||
<module name="TinnitusAnalyse" />
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
@@ -186,7 +195,7 @@
|
||||
<option name="IS_MODULE_SDK" value="true" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/DigitalFilter1.py" />
|
||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/DigitalFilterTest.py" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||
<option name="EMULATE_TERMINAL" value="false" />
|
||||
@@ -195,7 +204,7 @@
|
||||
<option name="INPUT_FILE" value="" />
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
<configuration name="Noise Experiment" type="PythonConfigurationType" factoryName="Python" temporary="true">
|
||||
<configuration name="DigitalFilterTest2" type="PythonConfigurationType" factoryName="Python" temporary="true">
|
||||
<module name="TinnitusAnalyse" />
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
@@ -207,7 +216,7 @@
|
||||
<option name="IS_MODULE_SDK" value="true" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/Noise Experiment.py" />
|
||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/DigitalFilterTest2.py" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||
<option name="EMULATE_TERMINAL" value="false" />
|
||||
@@ -262,9 +271,9 @@
|
||||
<list>
|
||||
<item itemvalue="Python.TinnitusAnalyse_GUI" />
|
||||
<item itemvalue="Python.SoundGenerator" />
|
||||
<item itemvalue="Python.DigitalFilter" />
|
||||
<item itemvalue="Python.Noise Experiment" />
|
||||
<item itemvalue="Python.DigitalFilter1" />
|
||||
<item itemvalue="Python.DigitalFilterTest" />
|
||||
<item itemvalue="Python.DigitalFilterTest2" />
|
||||
<item itemvalue="Python.DigitalFilter (1)" />
|
||||
</list>
|
||||
</recent_temporary>
|
||||
</component>
|
||||
@@ -282,92 +291,116 @@
|
||||
<servers />
|
||||
</component>
|
||||
<component name="ToolWindowManager">
|
||||
<frame x="-8" y="-8" width="2576" height="1416" extended-state="6" />
|
||||
<frame x="-8" y="-8" width="2576" height="1416" extended-state="7" />
|
||||
<editor active="true" />
|
||||
<layout>
|
||||
<window_info content_ui="combo" id="Project" order="0" weight="0.18479118" />
|
||||
<window_info content_ui="combo" id="Project" order="0" weight="0.25" />
|
||||
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
|
||||
<window_info id="Favorites" order="2" side_tool="true" />
|
||||
<window_info anchor="bottom" id="Message" order="0" />
|
||||
<window_info anchor="bottom" id="Find" order="1" />
|
||||
<window_info active="true" anchor="bottom" id="Run" order="2" visible="true" weight="0.2548714" />
|
||||
<window_info anchor="bottom" id="Debug" order="3" weight="0.3990647" />
|
||||
<window_info active="true" anchor="bottom" id="Run" order="2" visible="true" weight="0.2182385" />
|
||||
<window_info anchor="bottom" id="Debug" order="3" weight="0.3998441" />
|
||||
<window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
|
||||
<window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
|
||||
<window_info anchor="bottom" id="TODO" order="6" />
|
||||
<window_info anchor="bottom" id="Version Control" order="7" />
|
||||
<window_info anchor="bottom" id="Version Control" order="7" weight="0.32969603" />
|
||||
<window_info anchor="bottom" id="Terminal" order="8" weight="0.32969603" />
|
||||
<window_info anchor="bottom" id="Event Log" order="9" side_tool="true" />
|
||||
<window_info anchor="bottom" id="Python Console" order="10" />
|
||||
<window_info anchor="bottom" id="Python Console" order="10" weight="0.32969603" />
|
||||
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
|
||||
<window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
|
||||
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
|
||||
</layout>
|
||||
<layout-to-restore>
|
||||
<window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.18479118" />
|
||||
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
|
||||
<window_info id="Favorites" order="2" side_tool="true" />
|
||||
<window_info anchor="bottom" id="Message" order="0" />
|
||||
<window_info anchor="bottom" id="Find" order="1" />
|
||||
<window_info active="true" anchor="bottom" id="Run" order="2" visible="true" weight="0.30553392" />
|
||||
<window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
|
||||
<window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
|
||||
<window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
|
||||
<window_info anchor="bottom" id="TODO" order="6" />
|
||||
<window_info anchor="bottom" id="Version Control" order="7" />
|
||||
<window_info anchor="bottom" id="Terminal" order="8" />
|
||||
<window_info anchor="bottom" id="Event Log" order="9" side_tool="true" />
|
||||
<window_info anchor="bottom" id="Python Console" order="10" />
|
||||
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
|
||||
<window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
|
||||
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
|
||||
</layout-to-restore>
|
||||
</component>
|
||||
<component name="WindowStateProjectService">
|
||||
<state x="669" y="115" key="#SoundGenerator" timestamp="1600197469354">
|
||||
<screen x="0" y="0" width="1920" height="1040" />
|
||||
</state>
|
||||
<state x="669" y="115" key="#SoundGenerator/0.0.1920.1040@0.0.1920.1040" timestamp="1600197469354" />
|
||||
<state x="623" y="225" width="672" height="678" key="search.everywhere.popup" timestamp="1600261634426">
|
||||
<screen x="0" y="0" width="1920" height="1040" />
|
||||
</state>
|
||||
<state x="623" y="225" width="672" height="678" key="search.everywhere.popup/0.0.1920.1040@0.0.1920.1040" timestamp="1600261634426" />
|
||||
</component>
|
||||
<component name="editorHistoryManager">
|
||||
<entry file="file://$PROJECT_DIR$/.idea/TinnitusAnalyse.iml">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/WriteToCSV.py" />
|
||||
<entry file="file://$PROJECT_DIR$/DigitalFilter1.py" />
|
||||
<entry file="file://$PROJECT_DIR$/Noise Experiment.py" />
|
||||
<entry file="file://$PROJECT_DIR$/DigitalFilter.py" />
|
||||
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/site-packages/matplotlib/axes/_base.py">
|
||||
<entry file="file://$USER_HOME$/.PyCharmCE2019.1/system/python_stubs/-1242442885/audioop.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="3349">
|
||||
<caret line="230" selection-start-line="230" selection-end-line="230" />
|
||||
<state relative-caret-position="-1530" />
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/wave.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="1428">
|
||||
<caret line="84" column="12" selection-start-line="84" selection-start-column="12" selection-end-line="84" selection-end-column="12" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/tkinter/ttk.py">
|
||||
<entry file="file://$USER_HOME$/.PyCharmCE2019.1/system/python_stubs/-1242442885/builtins.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="9367">
|
||||
<caret line="552" selection-start-line="552" selection-end-line="552" />
|
||||
<state relative-caret-position="375">
|
||||
<caret line="4857" column="53" selection-start-line="4857" selection-start-column="53" selection-end-line="4857" selection-end-column="53" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/site-packages/scipy/io/wavfile.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="4386">
|
||||
<caret line="263" selection-start-line="263" selection-end-line="263" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/site-packages/scipy/signal/filter_design.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="38437">
|
||||
<caret line="2278" column="41" selection-start-line="2278" selection-start-column="41" selection-end-line="2278" selection-end-column="41" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/tkinter/__init__.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="874">
|
||||
<state relative-caret-position="-3474">
|
||||
<caret line="1557" selection-start-line="1557" selection-end-line="1557" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/SoundGenerator.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="729">
|
||||
<caret line="96" column="24" lean-forward="true" selection-start-line="96" selection-start-column="24" selection-end-line="96" selection-end-column="24" />
|
||||
<folding>
|
||||
<element signature="e#0#11#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/TinnitusAnalyse_GUI.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="248">
|
||||
<caret line="155" lean-forward="true" selection-start-line="155" selection-end-line="155" />
|
||||
<state relative-caret-position="500">
|
||||
<caret line="215" lean-forward="true" selection-start-line="215" selection-end-line="215" />
|
||||
<folding>
|
||||
<element signature="e#0#117#0" expanded="true" />
|
||||
<element signature="e#0#30#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/site-packages/scipy/signal/fir_filter_design.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="6562">
|
||||
<caret line="399" selection-start-line="399" selection-end-line="399" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/threading.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="15419">
|
||||
<caret line="913" selection-start-line="913" selection-end-line="913" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/site-packages/scipy/signal/signaltools.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="28492">
|
||||
<caret line="1694" column="4" selection-start-line="1694" selection-start-column="4" selection-end-line="1694" selection-end-column="4" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/SoundGenerator.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="504">
|
||||
<caret line="298" lean-forward="true" selection-start-line="298" selection-end-line="298" />
|
||||
<folding>
|
||||
<element signature="e#0#42#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 39 KiB |
Binary file not shown.
@@ -1,10 +1,12 @@
|
||||
import math
|
||||
import wave # bearbeiten von .wav-Dateien
|
||||
import struct
|
||||
import sounddevice as sd # zum abspielen des audio-arrays
|
||||
import sounddevice as sd
|
||||
import numpy as np
|
||||
import sys # für Fehlermeldungen
|
||||
import time as tm
|
||||
from scipy import signal
|
||||
import csv
|
||||
import time
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
"""---------------------------------------------------------------------------------------------------------------------
|
||||
In .wav-Dateien wird der Ton in absoluten Werte eingetragen. Die Standart-framerate ist 44100
|
||||
@@ -13,17 +15,21 @@ das heißt für jede Sekunde an Ton gibt es 44100 Werte, die die Tonwelle über
|
||||
|
||||
|
||||
class Tinnitus: # beinhaltet alle Werte, die vom Nutzer eingestellt werden
|
||||
def __init__(self, l_freq=0, r_freq=0, l_amp=0, r_amp=0, l_rausch=0, r_rausch=0, ohr=0):
|
||||
def __init__(self, l_freq=0, r_freq=0, l_amp=0, r_amp=0, l_rausch=0, r_rausch=0, l_rausch_ug=10, r_rausch_ug=10, l_rausch_og=20000, r_rausch_og=20000):
|
||||
self.vorname = ""
|
||||
self.nachname = ""
|
||||
self.kommentar = ""
|
||||
# [Alle Frequenzangaben in Hz, alle Amplitudenangaben von 0-1 (float)]
|
||||
self.linksFrequenz = l_freq
|
||||
self.rechtsFrequenz = r_freq
|
||||
self.linksLautstaerke = l_amp
|
||||
self.rechtsLautstaerke = r_amp
|
||||
self.linksRauschenLautstaerke = l_rausch # float von 0-1 (0 ist aus)
|
||||
self.linksRauschenLautstaerke = l_rausch
|
||||
self.rechtsRauschenLautstaerke = r_rausch
|
||||
self.ohr = ohr # 0:both 1:left 2:right 3:links/rechts unterschiedlich
|
||||
self.linksRauschenUntereGrenzfrequenz = l_rausch_ug
|
||||
self.rechtsRauschenUntereGrenzfrequenz = r_rausch_ug
|
||||
self.linksRauschenObereGrenzfrequenz = l_rausch_og
|
||||
self.rechtsRauschenObereGrenzfrequenz = r_rausch_og
|
||||
|
||||
def speichern(self): # speichert die Nutzerdaten in eine .csv-Datei
|
||||
datei = open("TinnitusDaten.csv", "w")
|
||||
@@ -32,10 +38,16 @@ class Tinnitus: # beinhaltet alle Werte, die vom Nutzer eingestellt werden
|
||||
daten += "Nachname;" + self.nachname + "\n"
|
||||
daten += "linke Frequenz;" + str(self.linksFrequenz) + "\n"
|
||||
daten += "linke Lautstärke;" + str(self.linksLautstaerke) + "\n"
|
||||
daten += "linkes Rauschen;" + str(self.linksRauschenLautstaerke) + "\n"
|
||||
daten += "linkes Rauschen Lautstärke;" + str(self.linksRauschenLautstaerke) + "\n"
|
||||
daten += "linkes Rauschen untere Grenzfrequenz;" + str(self.linksRauschenUntereGrenzfrequenz) + "\n"
|
||||
daten += "linkes Rauschen obere Grenzfrequenz;" + str(self.linksRauschenObereGrenzfrequenz) + "\n"
|
||||
|
||||
daten += "rechte Frequenz;" + str(self.rechtsFrequenz) + "\n"
|
||||
daten += "rechte Lautstärke;" + str(self.rechtsLautstaerke) + "\n"
|
||||
daten += "rechtes Rauschen;" + str(self.rechtsRauschenLautstaerke) + "\n"
|
||||
daten += "rechtes Rauschen Lautstärke;" + str(self.rechtsRauschenLautstaerke) + "\n"
|
||||
daten += "rechtes Rauschen untere Grenzfrequenz;" + str(self.rechtsRauschenUntereGrenzfrequenz) + "\n"
|
||||
daten += "rechtes Rauschen obere Grenzfrequenz;" + str(self.rechtsRauschenObereGrenzfrequenz) + "\n"
|
||||
|
||||
daten += "Kommentar;" + str(self.kommentar) + "\n"
|
||||
|
||||
datei.write(daten)
|
||||
@@ -43,94 +55,281 @@ class Tinnitus: # beinhaltet alle Werte, die vom Nutzer eingestellt werden
|
||||
|
||||
|
||||
"""---------------------------------KLASSE: SOUND-----------------------------------------------------------------------
|
||||
Sound beinhaltet alle Variablen, die zum erstellen einer .wav-Datei benötigt werden (siehe soun.wav_speichern())
|
||||
Das 'sound_obj' ist für das dynamische abspielen zuständig (siehe sound.play())
|
||||
Beim Initialisieren muss eine Tinnitus-Objekt übergeben werden
|
||||
Sound beinhaltet alle Variablen und Funktionen zum bearbeiten der wav-Dateien und zum abspielen des Sounds in Echtzeit
|
||||
Beim Initialisieren muss ein Tinnitus-Objekt übergeben werden
|
||||
---------------------------------------------------------------------------------------------------------------------"""
|
||||
|
||||
|
||||
class Sound:
|
||||
def __init__(self, tinnitus, name="MeinTinnitus.wav", audio=None, nchannels=1, sampwidth=2, framerate=44100,
|
||||
comptype="NONE", compname="not compressed", mute=True):
|
||||
if audio is None:
|
||||
audio = []
|
||||
def __init__(self, tinnitus):
|
||||
|
||||
self.tinnitus = tinnitus
|
||||
self.name = name
|
||||
self.audio = audio # ein Array, in das die Sound-Werte geschrieben werden (von -1, bis +1)
|
||||
self.nchannels = nchannels # Zahl der audio channels (1:mono 2:stereo)
|
||||
self.sampwidth = sampwidth # Größe eines einzelnen Sound-Werts (in bytes)
|
||||
self.framerate = framerate # Abtastrate
|
||||
self.nframes = len(audio) # Anzahl der Sound-Werte -> Muss bei jeder audio-Änderung aktuallisiert werden
|
||||
self.comptype = comptype
|
||||
self.compname = compname
|
||||
self.mute = mute # wenn der mute boolean auf true gesetzt ist, sollte kein Ton ausgegeben werden
|
||||
|
||||
# Variablen für das Abspeichern und Abspielen des Tinnitus-Geräuschs:
|
||||
self.wav_name = "MeinTinnitus.wav" #Der Dateiname
|
||||
self.audio = [] # ein Array, in das die Sound-Werte geschrieben werden (von -1, bis +1)
|
||||
self.nchannels = 2 # Zahl der audio channels (1:mono 2:stereo)
|
||||
self.sampwidth = 2 # Größe eines einzelnen Sound-Werts (in bytes)
|
||||
self.framerate = 44100 # Abtastrate
|
||||
self.nframes = len(self.audio) # Anzahl der Sound-Werte -> Muss bei jeder audio-Änderung aktuallisiert werden
|
||||
self.comptype = "NONE"
|
||||
self.compname = "not compressed"
|
||||
self.mute = True # wenn der mute boolean auf true gesetzt ist, sollte kein Ton ausgegeben werden
|
||||
self.sound_obj = sd.OutputStream(channels=2, callback=self.callback,
|
||||
samplerate=self.framerate) # Objekt fürs Abspielen (siehe sound.play())
|
||||
self.start_idx = 0 # wird für sound_obj benötigt
|
||||
|
||||
#Variablen für das Filtern der Musikdatei:
|
||||
self.music_samplerate = 0 # die samplerate der ausgewählten Musikdatei
|
||||
self.music_data = 0 # das Numpy Array der ausgewählten Musikdatei
|
||||
self.filterfortschritt = 0, 0. # für feedback-fkt, 1.Position: Abschnitt-Nmr, 2.Positon: Speicherfortschritt
|
||||
|
||||
|
||||
def wav_speichern(self): # ezeugt/aktuallisiert die .wav-Datei
|
||||
wav_file = wave.open(self.name, "w")
|
||||
print("Sound wird als .wav-Datei gespeichert. Bitte warten...\nDer Vorgang kann ca. 30 Sekunden dauern")
|
||||
# zuerst muss ein Array mit Audiodaten gefüllt werden
|
||||
audio = []
|
||||
freq = self.tinnitus.linksFrequenz
|
||||
dauer_ms = 10000.0 # 10 Sekunden
|
||||
amp = self.tinnitus.linksLautstaerke
|
||||
rauschen = self.tinnitus.linksRauschenLautstaerke
|
||||
print("Sound wird als .wav-Datei gespeichert. Bitte warten...\nDer Vorgang kann ca. 10 Sekunden dauern")
|
||||
|
||||
num_samples = dauer_ms * (self.framerate / 1000.0) # framerate -pro Sekunde- umgerechnet in -pro Millisekunde-
|
||||
wav_obj = wave.open(self.wav_name, "w")
|
||||
|
||||
for x in range(int(num_samples)): # einen einfachen Sinus ins array schreiben
|
||||
audio.append(amp * math.sin(2 * math.pi * freq * (x / self.framerate)))
|
||||
# Die Callback-Funktion aufrufen, um die Audiodaten zu bekommen
|
||||
nframes = self.framerate * 10 # entspricht 10 Sekunden
|
||||
status = "" # für den Funktionsaufruf benötigt, sonst keine Funktion
|
||||
audio = np.ones((nframes, 2)) # Audio-Array initialisieren
|
||||
audio = self.callback(audio, nframes, self.sound_obj.time, status)
|
||||
|
||||
if rauschen: # das Rauschen addieren
|
||||
for x in range(int(num_samples)):
|
||||
audio[x] += (np.random.rand() - 0.5) * rauschen
|
||||
#Audio-Samples auf 1 normieren. Samples müssen zum speichern zwischen -1 und 1 liegen
|
||||
#Maximum finden (Funktion max(...) ist minimal schneller, macht aber Probleme beim Feedback)
|
||||
max_ges = 1
|
||||
for i in range(nframes):
|
||||
if max_ges < abs(audio[i][0]):
|
||||
max_ges = abs(audio[i][0])
|
||||
if max_ges < abs(audio[i][1]):
|
||||
max_ges = abs(audio[i][1])
|
||||
|
||||
# erst werden die Rahmen-Parameter gesetzt
|
||||
self.nframes = len(audio) # Anpassen des nframes-Parameters
|
||||
wav_file.setparams((self.nchannels, self.sampwidth, self.framerate, self.nframes, self.comptype, self.compname))
|
||||
#auf 4 Nachkommastellen aufrunden
|
||||
max_ges = int(max_ges * 10000)
|
||||
max_ges += 1
|
||||
max_ges /= 10000
|
||||
|
||||
# dann wird das audio-Array an die Datei übertragen
|
||||
for sample in audio:
|
||||
wav_file.writeframes(struct.pack('h', int(sample * 32767.0)))
|
||||
print("X_GES: ", max_ges)
|
||||
|
||||
wav_file.close()
|
||||
#Alle samples normieren
|
||||
audio[:, 0] /= max_ges
|
||||
audio[:, 1] /= max_ges
|
||||
|
||||
|
||||
# Rahmenparameter für die .wav-Datei setzen
|
||||
self.nframes = len(audio)
|
||||
wav_obj.setparams((self.nchannels, self.sampwidth, self.framerate, self.nframes, self.comptype, self.compname))
|
||||
|
||||
packedMusic = [] # Liste an die wir die einzelnen frames bereits in binär umgewandelt aneinanderreihen
|
||||
|
||||
#Die Audiosamples schreiben
|
||||
for x in range(self.nframes): # geht jeden Sample-Wert der Musikdatei einzeln durch
|
||||
# Die Audiodaten müssen von float in einen passenden int-Wert umgerechnet werden
|
||||
packedMusic.append(struct.pack('h', int(audio[x][0] * 32767.0)))
|
||||
packedMusic.append(struct.pack('h', int(audio[x][1] * 32767.0)))
|
||||
|
||||
value_str = b"".join(packedMusic)
|
||||
wav_obj.writeframes(value_str)
|
||||
|
||||
wav_obj.close()
|
||||
print("Speichern beendet.")
|
||||
|
||||
"""Die Objekt-Funktion 'start()' startet die asynchrone Soundwiedergabe. Sie ruft dabei immer wieder die Funktion
|
||||
sound.callback() auf. Daher können die dort genutzten Variablen dynamisch geändert werden. """
|
||||
|
||||
def play(self):
|
||||
"""sound.play()' startet die asynchrone Soundwiedergabe. Sie ruft dabei immer wieder die Funktion
|
||||
sound.callback() auf. Daher können die dort genutzten Variablen dynamisch geändert werden. """
|
||||
if not self.mute: # Nie abspielen, wenn die GUI auf stumm geschaltet ist
|
||||
self.sound_obj.start()
|
||||
self.sound_obj.start() # öffnet thread der immer wieder callback funktion aufruft und diese daten abspielt
|
||||
|
||||
|
||||
def stop(self):
|
||||
self.sound_obj.stop() # beendet die asynchrone Soundwiedergabe
|
||||
|
||||
"""Die Funktion callback() erzeugt bei jedem Aufruf die Audiodaten, abhängig von den aktuellen Tinnitus-Variablen.
|
||||
Die errechneten Werte werden in das NumPy-Array 'outdata' geschrieben """
|
||||
|
||||
def callback(self, outdata, frames, time, status):
|
||||
"""erzeugt bei jedem Aufruf die Audiodaten, abhängig von den aktuellen Tinnitus-Variablen.
|
||||
Die errechneten Werte werden in das NumPy-Array 'outdata' geschrieben """
|
||||
if status: # Warnungen, wenn das Soundobj. auf Fehler stößt (hauptsächlich over/underflow wg. Timingproblemen)
|
||||
print(status, file=sys.stderr)
|
||||
|
||||
# Sinus ins Array schreiben: f(t) = A * sin(2 * pi * f * t)
|
||||
for x in range(frames):
|
||||
# links:
|
||||
outdata[x][0] = self.tinnitus.linksLautstaerke * np.sin(2 * np.pi * self.tinnitus.linksFrequenz *
|
||||
((x + self.start_idx) / self.framerate))
|
||||
# rechts:
|
||||
outdata[x][1] = self.tinnitus.rechtsLautstaerke * np.sin(2 * np.pi * self.tinnitus.rechtsFrequenz *
|
||||
((x + self.start_idx) / self.framerate))
|
||||
# Rauschen addieren
|
||||
for x in range(frames):
|
||||
|
||||
# Whitenoise erzeugen
|
||||
# Wird auch durchlaufen, wenn es kein Rauschen gibt, damit die alten Daten mit 0 überschrieben werden
|
||||
for x in range(len(outdata)):
|
||||
rand = (np.random.rand() - 0.5) # Zufallszahl zwischen -0.5 und 0.5
|
||||
# links:
|
||||
if self.tinnitus.linksRauschenLautstaerke:
|
||||
outdata[x][0] += rand * self.tinnitus.linksRauschenLautstaerke
|
||||
outdata[x][0] = rand * self.tinnitus.linksRauschenLautstaerke
|
||||
# rechts:
|
||||
if self.tinnitus.rechtsRauschenLautstaerke:
|
||||
outdata[x][1] += rand * self.tinnitus.rechtsRauschenLautstaerke
|
||||
outdata[x][1] = rand * self.tinnitus.rechtsRauschenLautstaerke
|
||||
|
||||
# Whitenoise durch Bandpass laufen lassen
|
||||
if self.tinnitus.linksRauschenLautstaerke:
|
||||
# (-3dB Grenzen) bzw was der Bandpass durchlässt
|
||||
fGrenz = [self.tinnitus.linksRauschenUntereGrenzfrequenz, self.tinnitus.linksRauschenObereGrenzfrequenz]
|
||||
sos = signal.butter(5, fGrenz, 'bandpass', fs=self.framerate, output='sos')
|
||||
# sosfilt filtert das Signal mittels mehrerer 'second order sections' (= Filter 2. Ordnung) die über sos definiert sind
|
||||
outdata[:, 0] = signal.sosfilt(sos, outdata[:, 0])
|
||||
|
||||
if self.tinnitus.rechtsRauschenLautstaerke:
|
||||
# (-3dB Grenzen) bzw was der Bandpass durchlässt
|
||||
fGrenz = [self.tinnitus.rechtsRauschenUntereGrenzfrequenz, self.tinnitus.rechtsRauschenObereGrenzfrequenz]
|
||||
sos = signal.butter(5, fGrenz, 'bandpass', fs=self.framerate, output='sos')
|
||||
# sosfilt filtert das Signal mittels mehrerer 'second order sections' (= Filter 2. Ordnung) die über sos definiert sind
|
||||
outdata[:, 1] = signal.sosfilt(sos, outdata[:, 1])
|
||||
|
||||
|
||||
# Sinus addieren: f(t) = A * sin(2 * pi * f * t)
|
||||
for x in range(len(outdata)):
|
||||
# links: rauschen und sinus wieder zusammen addieren
|
||||
outdata[x][0] += self.tinnitus.linksLautstaerke * np.sin(2 * np.pi * self.tinnitus.linksFrequenz *
|
||||
((x + self.start_idx) / self.framerate))
|
||||
# rechts: rauschen und sinus wieder zusammen addieren
|
||||
outdata[x][1] += self.tinnitus.rechtsLautstaerke * np.sin(2 * np.pi * self.tinnitus.rechtsFrequenz *
|
||||
((x + self.start_idx) / self.framerate))
|
||||
|
||||
self.start_idx += frames
|
||||
return outdata
|
||||
|
||||
|
||||
def musik_filtern(self):
|
||||
"""
|
||||
Diese Funktion filtert die Tinnitus Frequenz aus einer gewählten Musikdatei. Dabei geht sie in 4 großen
|
||||
Schritten vor:
|
||||
1. Die nötigen Informationen über den Tinnitus aus der .csv Datei herausholen
|
||||
2. Die digitalen Filter erstellen und die Tinnitus Frequenz aus der Audiodatei "herausschneiden"
|
||||
3. Überschwinger finden und alle Audiosamples wieder auf 1 normieren
|
||||
4. Die fertigen Audiodatei als .wav Datei speichern
|
||||
"""
|
||||
nframes = len(self.music_data) # Gesamtanzahl der Frames in der Musikdatei
|
||||
|
||||
# ------------1. Die nötigen Informationen über den Tinnitus aus der .csv Datei herausholen---------------------
|
||||
self.filterfortschritt = 1, 0 # der erste schritt
|
||||
csvstring = open("TinnitusDaten.csv").read()
|
||||
tinnitus_data = csvstring.split("\n")
|
||||
|
||||
# linke Frequenz aus csv Datei holen
|
||||
lf = tinnitus_data[2]
|
||||
lf = lf.split(";")
|
||||
lf = float(lf[1])
|
||||
|
||||
|
||||
# rechte Frequenz aus csv Datei holen
|
||||
rf = tinnitus_data[7]
|
||||
rf = rf.split(";")
|
||||
rf = float(rf[1])
|
||||
|
||||
|
||||
# linke Lautstärke aus cvs Datei holen
|
||||
ll = tinnitus_data[3]
|
||||
ll = ll.split(";")
|
||||
ll = float(ll[1])
|
||||
|
||||
# rechte Lautstärke aus cvs Datei holen
|
||||
rl = tinnitus_data[8]
|
||||
rl = rl.split(";")
|
||||
rl = float(rl[1])
|
||||
|
||||
# -------- 2. Die digitalen Filter erstellen und die Tinnitus Frequenz aus der Audiodatei "herausschneiden------
|
||||
self.filterfortschritt = 2, 0 # der zweite schritt im Feedback
|
||||
start_time = time.time() # einen Timer laufen lassen um zu sehen wie lange Filterung dauert
|
||||
|
||||
#Parameter festlegen
|
||||
order = 501 # Filterordnung
|
||||
bandwidth = 1000 # Bandbreite des Sperrbereichs in Hz
|
||||
self.music_data = self.music_data/32767 # convert array from int16 to float
|
||||
|
||||
# ------------------------------------------LEFT EAR FILTERING-------------------------------------------------
|
||||
if ll != 0.0: # nur wenn die Lautstärke des linken Tinnitus ungleich 0 ist, wird auf diesem Ohr auch gefiltert
|
||||
cutoff_frequencies = [(lf - (bandwidth / 2)),
|
||||
(lf + (bandwidth / 2))] # the cutoff frequencies (lower and upper)
|
||||
h = signal.firwin(order, [cutoff_frequencies[0], cutoff_frequencies[1]], fs=self.music_samplerate)
|
||||
music_links = signal.lfilter(h, 1.0, self.music_data[:, 0])
|
||||
else:
|
||||
music_links = self.music_data[:, 0] # ungefiltert, wenn kein Tinnitus angegeben wurde
|
||||
|
||||
# ------------------------------------- RIGHT EAR FILTERING ------------------------------------------------
|
||||
if rl != 0.0: # nur wenn die Lautstärke des rechten Tinnitus ungleich 0 ist, wird auf diesem Ohr auch gefiltert
|
||||
cutoff_frequencies = [(lf - (bandwidth / 2)),
|
||||
(lf + (bandwidth / 2))] # the cutoff frequencies (lower and upper)
|
||||
h = signal.firwin(order, [cutoff_frequencies[0], cutoff_frequencies[1]], fs=self.music_samplerate)
|
||||
music_rechts = signal.lfilter(h, 1.0, self.music_data[:, 1])
|
||||
else:
|
||||
music_rechts = self.music_data[:, 1] # ungefiltert, wenn kein Tinnitus angegeben wurde
|
||||
|
||||
endTimeFiltering = time.time()
|
||||
print("benötigte Zeit zum Filtern rechts Ohr =", endTimeFiltering - start_time, "s")
|
||||
|
||||
#----------------------- 3. Maxima finden und Samples auf 1 normieren ----------------------------
|
||||
self.filterfortschritt = 3, 0 # der dritte schritt
|
||||
|
||||
#Maximum finden (Funktion max(...) ist minimal schneller, macht aber Probleme beim Feedback)
|
||||
start_time = time.time()
|
||||
max_ges = 1
|
||||
fortschritt = 0
|
||||
for i in range(nframes):
|
||||
if max_ges < abs(music_links[i]):
|
||||
max_ges = abs(music_links[i])
|
||||
if max_ges < abs(music_rechts[i]):
|
||||
max_ges = abs(music_rechts[i])
|
||||
if i % int(nframes/10) == 0: # gibt Fortschritt in 10%-Schritten an
|
||||
fortschritt += 10
|
||||
self.filterfortschritt = 3, round(fortschritt, 1)
|
||||
print(" max: ", self.filterfortschritt[1], "%")
|
||||
end_time = time.time()
|
||||
print("Zeitaufwand Maxima-Suche: ", end_time - start_time)
|
||||
|
||||
#auf 4 Nachkommastellen aufrunden
|
||||
start_time = time.time()
|
||||
max_ges = int(max_ges * 10000)
|
||||
max_ges += 1
|
||||
max_ges /= 10000
|
||||
end_time = time.time()
|
||||
print("Zeitaufwand Maximum runden: ", end_time - start_time)
|
||||
|
||||
#Alle samples normieren
|
||||
start_time = time.time()
|
||||
music_links /= max_ges
|
||||
music_rechts /= max_ges
|
||||
end_time = time.time()
|
||||
print("Zeitaufwand samples normieren: ", end_time - start_time)
|
||||
|
||||
# ------------------------- 4. Die fertigen Audiodatei als .wav Datei speichern --------------------------------
|
||||
self.filterfortschritt = [4, 0] # der vierte Schritt
|
||||
|
||||
start_time = time.time()
|
||||
wav_obj = wave.open("gefilterteMusik.wav", "w")
|
||||
|
||||
# Rahmenparameter für die .wav-Datei setzen
|
||||
wav_obj.setparams((self.nchannels, self.sampwidth, self.music_samplerate, nframes, self.comptype, self.compname))
|
||||
|
||||
"""The values are stored in a temporary list, and when the process is finished, they are joined together into
|
||||
an string which is then sent to the output with the traditional writeframes method."""
|
||||
|
||||
packedMusic = [] # Liste an die wir die einzelnen frames bereits in binär umgewandelt aneinanderreihen
|
||||
|
||||
# Die Audiosamples schreiben
|
||||
print("Musikdatei wird erstellt...")
|
||||
fortschritt = 0
|
||||
for tinnitus_data in range(nframes): #geht jeden Sample-Wert der Musikdatei einzeln durch
|
||||
# Die Audiodaten müssen von float in einen passenden int-Wert umgerechnet werden
|
||||
packedMusic.append(struct.pack('h', int(music_links[tinnitus_data] * 32767.0)))
|
||||
packedMusic.append(struct.pack('h', int(music_rechts[tinnitus_data] * 32767.0)))
|
||||
if tinnitus_data % int(nframes/10) == 0: # gibt Fortschritt in 10%-Schritten an
|
||||
fortschritt += 10
|
||||
self.filterfortschritt = 4, round(fortschritt, 1)
|
||||
print(" samples: ", self.filterfortschritt[1], "%")
|
||||
|
||||
end_time = time.time()
|
||||
print("Zeitaufwand für das packen der einzelnen Samples =", end_time - start_time, "s")
|
||||
|
||||
value_str = b"".join(packedMusic)
|
||||
|
||||
start = time.time()
|
||||
wav_obj.writeframes(value_str)
|
||||
end = time.time()
|
||||
print("Zeitaufwand für das schreiben aller Frames in die wav Datei =", end - start, "s")
|
||||
wav_obj.close()
|
||||
|
||||
print("Speichern beendet.")
|
||||
self.filterfortschritt = 5, 0 #Nach erfolgreichem Filtern Fortschritt zur Bestätigung auf 5 setzen
|
||||
@@ -1,8 +1,10 @@
|
||||
from tkinter import filedialog
|
||||
from tkinter.ttk import Frame, Label, Button, LabelFrame, Combobox, Style, Checkbutton, Entry, Panedwindow, Separator
|
||||
from tkinter import *
|
||||
from SoundGenerator import *
|
||||
import csv
|
||||
import time
|
||||
import sounddevice as sd
|
||||
from scipy.io import wavfile
|
||||
import threading
|
||||
|
||||
"""--------------------------FUNKTIONEN DIE DURCH GUI KLICKS AUSGEFÜHRT WERDEN---------------------------------------"""
|
||||
"""-------Funktionen links-------------"""
|
||||
@@ -21,21 +23,30 @@ def links_scale_frequenz_change(self):
|
||||
|
||||
|
||||
def links_scale_rauschen_lautstärke_change(self):
|
||||
# scale liefert 0-100%, tinnitus.lautstärke zwischen 0-1 (float)
|
||||
tinnitus.linksRauschenLautstaerke = float(linksScaleRauschenLautstärke.get()/1000)
|
||||
print("Links Rauschen Lautstärke = ", tinnitus.linksRauschenLautstaerke*1000, "%")
|
||||
sound.play()
|
||||
|
||||
|
||||
def links_scale_rauschen_mittelfrequenz_change(self):
|
||||
linksRauschenMittelfrequenz = float(linksScaleRauschenMittelFrequenz.get())
|
||||
print("Links Rauschen Mittelfrequenz = ", linksRauschenMittelfrequenz)
|
||||
sound.play()
|
||||
def links_scale_untere_grenzfrequenz_change(self):
|
||||
og = float(linksScaleObereGrenzfrequenz.get() * 1000) # kHz -> Hz
|
||||
ug = float(linksScaleUntereGrenzfrequenz.get() * 1000) # kHz -> Hz
|
||||
if og <= ug: # wenn obere Grenzfreq. kleiner als untere Grenzfreq. ist -> macht keinen Sinn deswegen verbieten
|
||||
linksScaleUntereGrenzfrequenz.set(linksScaleObereGrenzfrequenz.get() - 0.01)
|
||||
else:
|
||||
tinnitus.linksRauschenUntereGrenzfrequenz = ug
|
||||
sound.play()
|
||||
|
||||
|
||||
def links_scale_rauschen_bandbreite_change(self):
|
||||
linksRauschenBandbreite = float(linksScaleRauschenBandbreite.get())
|
||||
print("Links Rauschen Bandbreite = ", linksRauschenBandbreite)
|
||||
sound.play()
|
||||
def links_scale_obere_grenzfrequenz_change(self):
|
||||
og = float(linksScaleObereGrenzfrequenz.get()*1000) # kHz -> Hz
|
||||
ug = float(linksScaleUntereGrenzfrequenz.get() * 1000) # kHz -> Hz
|
||||
if og <= ug: # wenn obere Grenzfreq. kleiner als untere Grenzfreq. ist -> macht keinen Sinn deswegen verbieten
|
||||
linksScaleObereGrenzfrequenz.set(linksScaleUntereGrenzfrequenz.get() + 0.01)
|
||||
else:
|
||||
tinnitus.linksRauschenObereGrenzfrequenz = og
|
||||
sound.play()
|
||||
|
||||
|
||||
"""----------Funktionen rechts----------"""
|
||||
@@ -54,21 +65,29 @@ def rechts_scale_frequenz_change(self):
|
||||
|
||||
|
||||
def rechts_scale_rauschen_lautstärke_change(self):
|
||||
tinnitus.rechtsRauschenLautstaerke = float(rechtsScaleRauschenLautstärke.get()/1000)
|
||||
tinnitus.rechtsRauschenLautstaerke = float(rechtsScaleRauschenLautstärke.get()/1000) # 0-100% -> 0-1(float)
|
||||
print("Rechts Rauschen Lautstärke = ", tinnitus.rechtsRauschenLautstaerke*1000, "%")
|
||||
sound.play()
|
||||
|
||||
|
||||
def rechts_scale_rauschen_mittelfrequenz_change(self):
|
||||
rechtsRauschenMittelfrequenz = float(rechtsScaleRauschenMittelFrequenz.get())
|
||||
print("Rechts Rauschen Mittelfrequenz = ", rechtsRauschenMittelfrequenz)
|
||||
sound.play()
|
||||
def rechts_scale_untere_grenzfrequenz_change(self):
|
||||
og = float(rechtsScaleObereGrenzfrequenz.get() * 1000) # kHz -> Hz
|
||||
ug = float(rechtsScaleUntereGrenzfrequenz.get() * 1000) # kHz -> Hz
|
||||
if ug >= og: # wenn obere Grenzfreq. kleiner als untere Grenzfreq. ist -> macht keinen Sinn deswegen verbieten
|
||||
rechtsScaleUntereGrenzfrequenz.set(rechtsScaleObereGrenzfrequenz.get()-0.01)
|
||||
else:
|
||||
tinnitus.rechtsRauschenUntereGrenzfrequenz = ug
|
||||
sound.play()
|
||||
|
||||
|
||||
def rechts_scale_rauschen_bandbreite_change(self):
|
||||
rechtsRauschenBandbreite = float(rechtsScaleRauschenBandbreite.get())
|
||||
print("Rechts Rauschen Bandbreite = ", rechtsRauschenBandbreite)
|
||||
sound.play()
|
||||
def rechts_scale_obere_grenzfrequenz_change(self):
|
||||
og = float(rechtsScaleObereGrenzfrequenz.get()*1000) # kHz -> Hz
|
||||
ug = float(rechtsScaleUntereGrenzfrequenz.get() * 1000) # kHz -> Hz
|
||||
if og <= ug: # wenn obere Grenzfreq. kleiner als untere Grenzfreq. ist -> macht keinen Sinn deswegen verbieten
|
||||
rechtsScaleObereGrenzfrequenz.set(rechtsScaleUntereGrenzfrequenz.get()+0.01)
|
||||
else:
|
||||
tinnitus.rechtsRauschenObereGrenzfrequenz = og
|
||||
sound.play()
|
||||
|
||||
|
||||
"""--------------Funktionen unten------------------"""
|
||||
@@ -85,16 +104,16 @@ def unten_button_ohren_synchro():
|
||||
rechtsScaleLautstärke.set(linksScaleLautstärke.get())
|
||||
rechtsScaleFrequenz.set(linksScaleFrequenz.get())
|
||||
rechtsScaleRauschenLautstärke.set(linksScaleRauschenLautstärke.get())
|
||||
rechtsScaleRauschenMittelFrequenz.set(linksScaleRauschenMittelFrequenz.get())
|
||||
rechtsScaleRauschenBandbreite.set(linksScaleRauschenBandbreite.get())
|
||||
rechtsScaleUntereGrenzfrequenz.set(linksScaleUntereGrenzfrequenz.get())
|
||||
rechtsScaleObereGrenzfrequenz.set(linksScaleObereGrenzfrequenz.get())
|
||||
feedback("Einstellungen vom linken Ohr auf beide Ohren übertragen")
|
||||
|
||||
if auswahl == "Rechtes Ohr": # rechts --> links
|
||||
linksScaleLautstärke.set(rechtsScaleLautstärke.get())
|
||||
linksScaleFrequenz.set(rechtsScaleFrequenz.get())
|
||||
linksScaleRauschenLautstärke.set(rechtsScaleRauschenLautstärke.get())
|
||||
linksScaleRauschenMittelFrequenz.set(rechtsScaleRauschenMittelFrequenz.get())
|
||||
linksScaleRauschenBandbreite.set(rechtsScaleRauschenBandbreite.get())
|
||||
linksScaleUntereGrenzfrequenz.set(rechtsScaleUntereGrenzfrequenz.get())
|
||||
linksScaleObereGrenzfrequenz.set(rechtsScaleObereGrenzfrequenz.get())
|
||||
feedback("Einstellungen vom rechten Ohr auf beide Ohren übertragen")
|
||||
|
||||
|
||||
@@ -106,13 +125,14 @@ def unten_button_speichern_press():
|
||||
feedback("Fehlgeschlagener Speicherversuch! Erst Namen links eintragen.", "white", "red")
|
||||
else:
|
||||
try:
|
||||
feedback("Speichere Sound als '.wav'-Datei. Das kann bis zu 30 Sekunden dauern. Bitte warten...")
|
||||
unten_button_stop_press() # Wiedergabe beenden, durch den Rechenaufwand gibt es sonst Wiedergabeprobleme
|
||||
tinnitus.vorname = untenEntryVorname.get()
|
||||
tinnitus.nachname = untenEntryNachname.get()
|
||||
tinnitus.kommentar = untenTextKommentar.get("1.0", END)
|
||||
tinnitus.speichern()
|
||||
feedback("Speichere Sound als '.wav'-Datei. Bitte warten...")
|
||||
sound.wav_speichern()
|
||||
feedback("Daten erfolgreich gespeichert. Siehe: 'MeinTinnitus.wav' ")
|
||||
feedback("Daten erfolgreich gespeichert. Siehe: " + sound.wav_name, "white", "green")
|
||||
except:
|
||||
feedback("Fehlgeschlagener Speicherversuch! Bitte schließe Microsoft Excel.", "white", "red")
|
||||
|
||||
@@ -131,7 +151,88 @@ def unten_button_stop_press():
|
||||
sound.stop()
|
||||
|
||||
|
||||
def feedback(text, fontcolor = "black", backgroundcolor = "lightsteelblue"):
|
||||
def unten_button_musikdatei_laden_press():
|
||||
""" This function opends a window that lets you select .mp3 and .wav files. The user is supposed to select their
|
||||
music files here"""
|
||||
print("button musikdatei laden pressed")
|
||||
|
||||
untererFrame.musikdatei = filedialog.askopenfilename(initialdir="/",
|
||||
title="Wähle die Musikdatei(.wav) deiner Wahl aus",
|
||||
filetypes=(("wav Dateien", "*.wav"),))
|
||||
|
||||
# überprüfen, ob song stereo ist
|
||||
try:
|
||||
wav_obj = wave.open(untererFrame.musikdatei)
|
||||
except:
|
||||
feedback("Der ausgewählte Song ist nicht kompatibel", "white", "red")
|
||||
return
|
||||
if wav_obj.getnchannels() != 2:
|
||||
feedback("Der ausgewählte Song ist mono. Bitte wähle einen Song in stereo", "white", "red")
|
||||
return
|
||||
|
||||
samplerate, data = wavfile.read(untererFrame.musikdatei)
|
||||
|
||||
sound.music_samplerate = samplerate # die samplerate der ausgewählten Musikdatei an SoundGenerator.py übergeben
|
||||
sound.music_data = data # das Numpy Array der ausgewählten Musikdatei an SoundGenerator.py übergeben
|
||||
|
||||
print(untererFrame.musikdatei)
|
||||
untenTextMusikDatei.config(state=NORMAL) # activate text field (otherwise it is readonly)
|
||||
untenTextMusikDatei.delete(1.0, END) # delete everything from text widget
|
||||
untenTextMusikDatei.insert(INSERT, untererFrame.musikdatei) # insert selected file path to text widget
|
||||
untenTextMusikDatei.config(state=DISABLED) # activate text field (otherwise it is readonly)
|
||||
|
||||
feedback("Musikdatei ausgewählt") # place text in feedback field, fontcololor, backgroundcolor
|
||||
|
||||
|
||||
def unten_button_filtere_tinnitus_aus_musik():
|
||||
print("button filtere tinnitus aus musik pressed")
|
||||
print(untenTextMusikDatei.get('1.0', END))
|
||||
if untenTextMusikDatei.get('1.0', END) == "Einen Song deiner Wahl hier auswählen\n":
|
||||
feedback("Wähle zuerst eine Musikdatei aus", "white", "red")
|
||||
else:
|
||||
unten_button_stop_press() # Wiedergabe beenden, durch den Rechenaufwand gibt es sonst Wiedergabeprobleme
|
||||
feedback("Starte Filtervorgang (dies kann etwas dauern)...", "blue")
|
||||
|
||||
try:
|
||||
# Filtern in extra thread, damit sich die GUI nicht aufhängt: (daemon beendet den Thread, wenn das Hauptprogramm beendet wird)
|
||||
filter_thread = threading.Thread(target=sound.musik_filtern, daemon=True)
|
||||
filter_thread.start()
|
||||
|
||||
safe_percentage = 0
|
||||
schritt = 0
|
||||
while filter_thread.is_alive():
|
||||
schritt_alt = schritt
|
||||
schritt = sound.filterfortschritt[0]
|
||||
if schritt > schritt_alt: # Prozentanzeige auf 0 zurücksetzen, wenn ein neuer Schritt beginnt
|
||||
safe_percentage = 0
|
||||
if schritt == 3 or schritt == 4: # Nur bei dem 3. und 4. Schritt wird der Fortschritt in Prozent angezeigt
|
||||
fb = "Schritt " + str(schritt) + " von 4 (" + str(safe_percentage) + "%)"
|
||||
if sound.filterfortschritt[1] > safe_percentage:
|
||||
feedback(fb)
|
||||
safe_percentage += 10
|
||||
elif schritt < 3 and schritt > schritt_alt:
|
||||
fb = "Schritt " + str(schritt) + " von 4"
|
||||
feedback(fb)
|
||||
|
||||
root.update() # damit die GUI nicht eingefroren erscheint
|
||||
|
||||
if sound.filterfortschritt[0] == 5: #ist 5, wenn erfolgreich gefiltert wurde
|
||||
print("-- filtern beendet --")
|
||||
feedback("Filtervorgang erfolgreich abgeschlossen. \n"
|
||||
"Audiodatei unter dem Namen gefilterteMusik.wav erstellt", "white", "green")
|
||||
else:
|
||||
print("Fehler bei Filterfunktion. Siehe Compiler-Meldungen")
|
||||
feedback("Fehlgeschlagener Filterversuch. Kontaktiere Entwickler und schreibe eventuell auf was genaud du gemacht hast", "red", "white")
|
||||
except:
|
||||
feedback("Fehlgeschlagener Filterversuch. Drücke zuerst den Speichern Knopf"
|
||||
"Stelle sicher, dass die Lautstärke mindestens einer Seite über 0"
|
||||
"gestellt ist. Sonst gehen wir davon aus, dass auf diesem Ohr kein Tinnitus vorliegt.", "red",
|
||||
"white")
|
||||
|
||||
|
||||
"""--------------Feedback Funktion------------------"""
|
||||
|
||||
def feedback(text, fontcolor="black", backgroundcolor="lightsteelblue"):
|
||||
""" This is a helper function. You can give it a string text and it will display it in the feedback frame (bottom
|
||||
right of the GUI) in the text widget. The parameter color is also a string and defines the font color. Same with
|
||||
background. Honestly this function is way too complicated, but Tkinter has no nicer/easier builtin way of doing the
|
||||
@@ -152,13 +253,13 @@ def feedback(text, fontcolor = "black", backgroundcolor = "lightsteelblue"):
|
||||
untenFeedbackText.config(state=DISABLED) # set the text field back to readonly
|
||||
root.update() #Damit der Text sofort ausgegeben wird, auch wenn das Programm erst noch was anderes macht
|
||||
|
||||
|
||||
""" Initialisierungen """
|
||||
"""------------------ Initialisierungen --------------------------"""
|
||||
tinnitus = Tinnitus() # siehe SoundGenerator.py
|
||||
sound = Sound(tinnitus) # siehe SoundGenerator.py
|
||||
feedback.lineCounter = 0 # Funktionsvariable der Feedback funktion. Ein Funktionsaufruf Counter
|
||||
|
||||
"""------------------------------------------ AUFBAU DES ROOT WINDOWS -----------------------------------------------"""
|
||||
|
||||
"""---------------------------------- AUFBAU DES ROOT WINDOWS -----------------------------------------"""
|
||||
root = Tk() # build the main window
|
||||
root.title("Tinnitus Analyse")
|
||||
root.minsize(width=800, height=500) # set windowsize (width an height in pixels)
|
||||
@@ -194,25 +295,27 @@ linksSeparator = Separator(linkerFrame, orient="horizontal")
|
||||
linksSeparator.grid(column=0, row=2, sticky=(W + E), columnspan=3)
|
||||
|
||||
# ----------- RAUSCHEN --------------------
|
||||
# Lautstärke
|
||||
linksLabelRauschenLautstärke = Label(linkerFrame, text="Rauschen Lautstärke %", anchor="w")
|
||||
linksLabelRauschenLautstärke.grid(column=0, row=3, sticky=W)
|
||||
linksScaleRauschenLautstärke = Scale(linkerFrame, from_=0, to=100, orient=HORIZONTAL, length=600,
|
||||
command=links_scale_rauschen_lautstärke_change)
|
||||
linksScaleRauschenLautstärke.grid(column=1, row=3, sticky=(W+E))
|
||||
|
||||
linksLabelRauschenMittelFrequenz = Label(linkerFrame, text="Rauschen Mittelfrequenz [kHz]", anchor="w")
|
||||
linksLabelRauschenMittelFrequenz .grid(column=0, row=4, sticky=(W+E))
|
||||
linksScaleRauschenMittelFrequenz = Scale(linkerFrame, from_=0, to=20, orient=HORIZONTAL, length=600, resolution=-1.0,
|
||||
command=links_scale_rauschen_mittelfrequenz_change)
|
||||
linksScaleRauschenMittelFrequenz.grid(column=1, row=4, sticky=(W+E))
|
||||
|
||||
linksLabelRauschenBandbreite= Label(linkerFrame, text="Rauschen Bandbreite [kHz]", anchor="w")
|
||||
linksLabelRauschenBandbreite.grid(column=0, row=5, sticky=W)
|
||||
linksScaleRauschenBandbreite = Scale(linkerFrame, from_=0, to=20, orient=HORIZONTAL, length=600, resolution=-1.0,
|
||||
command=links_scale_rauschen_bandbreite_change)
|
||||
linksScaleRauschenBandbreite.grid(column=1, row=5, sticky=(W+E))
|
||||
|
||||
|
||||
# Obere Grenzfrequenz
|
||||
linksLabelObereGrenzfrequenz = Label(linkerFrame, text="Obere Grenzfrequenz [kHz]", anchor="w")
|
||||
linksLabelObereGrenzfrequenz.grid(column=0, row=4, sticky=W)
|
||||
linksScaleObereGrenzfrequenz = Scale(linkerFrame, from_=0.02, to=20, orient=HORIZONTAL, length=600, resolution=-1.0,
|
||||
command=links_scale_obere_grenzfrequenz_change)
|
||||
linksScaleObereGrenzfrequenz.grid(column=1, row=4, sticky=(W+E))
|
||||
linksScaleObereGrenzfrequenz.set(20.00)
|
||||
# Untere Grenzfrequenz
|
||||
linksLabelUntereGrenzfrequenz = Label(linkerFrame, text="Untere Grenzfrequenz [kHz]", anchor="w")
|
||||
linksLabelUntereGrenzfrequenz.grid(column=0, row=5, sticky=(W+E))
|
||||
linksScaleUntereGrenzfrequenz = Scale(linkerFrame, from_=0.01, to=20, orient=HORIZONTAL, length=600, resolution=-1.0,
|
||||
command=links_scale_untere_grenzfrequenz_change)
|
||||
linksScaleUntereGrenzfrequenz.grid(column=1, row=5, sticky=(W+E))
|
||||
linksScaleUntereGrenzfrequenz.set(0.01)
|
||||
"""----------------------------------------------RECHTER FRAME-------------------------------------------------------"""
|
||||
rechterFrame = LabelFrame(root, text="Rechtes Ohr", font="bold")
|
||||
rechterFrame.grid(column=1, row=0, sticky=(N+E+W+S))
|
||||
@@ -249,18 +352,20 @@ rechtsScaleRauschenLautstärke = Scale(rechterFrame, from_=0, to=100, orient=HO
|
||||
command=rechts_scale_rauschen_lautstärke_change)
|
||||
rechtsScaleRauschenLautstärke.grid(column=1, row=3, sticky=(W+E))
|
||||
|
||||
rechtsLabelRauschenMittelFrequenz = Label(rechterFrame, text="Rauschen Mittelfrequenz [kHz]", anchor="w")
|
||||
rechtsLabelRauschenMittelFrequenz .grid(column=0, row=4)
|
||||
rechtsScaleRauschenMittelFrequenz = Scale(rechterFrame, from_=0, to=20, orient=HORIZONTAL, length=600, resolution=-1.0,
|
||||
command=rechts_scale_rauschen_mittelfrequenz_change)
|
||||
rechtsScaleRauschenMittelFrequenz.grid(column=1, row=4)
|
||||
|
||||
rechtsLabelRauschenBandbreite = Label(rechterFrame, text="Rauschen Bandbreite [kHz]", anchor="w")
|
||||
rechtsLabelRauschenBandbreite.grid(column=0, row=5, sticky=W)
|
||||
rechtsScaleRauschenBandbreite = Scale(rechterFrame, from_=0, to=20, orient=HORIZONTAL, length=600, resolution=-1.0,
|
||||
command=rechts_scale_rauschen_bandbreite_change)
|
||||
rechtsScaleRauschenBandbreite.grid(column=1, row=5, sticky=(W+E))
|
||||
|
||||
# Obere Grenzfrequenz
|
||||
rechtsLabelObereGrenzfrequenz = Label(rechterFrame, text="Obere Grenzfrequenz [kHz]", anchor="w")
|
||||
rechtsLabelObereGrenzfrequenz.grid(column=0, row=4, sticky=W)
|
||||
rechtsScaleObereGrenzfrequenz = Scale(rechterFrame, from_=0.02, to=20, orient=HORIZONTAL, length=600, resolution=-1.0,
|
||||
command=rechts_scale_obere_grenzfrequenz_change)
|
||||
rechtsScaleObereGrenzfrequenz.grid(column=1, row=4, sticky=(W+E))
|
||||
rechtsScaleObereGrenzfrequenz.set(20.00)
|
||||
# Untere Grenzfrequenz
|
||||
rechtsLabelUntereGrenzfrequenz = Label(rechterFrame, text="Untere Grenzfrequenz [kHz]", anchor="w")
|
||||
rechtsLabelUntereGrenzfrequenz.grid(column=0, row=5, sticky=(W+E))
|
||||
rechtsScaleUntereGrenzfrequenz = Scale(rechterFrame, from_=0.01, to=20, orient=HORIZONTAL, length=600, resolution=-1.0,
|
||||
command=rechts_scale_untere_grenzfrequenz_change)
|
||||
rechtsScaleUntereGrenzfrequenz.grid(column=1, row=5, sticky=(W+E))
|
||||
rechtsScaleUntereGrenzfrequenz.set(0.01)
|
||||
|
||||
"""------------------------------------------------ UNTERER LINKER FRAME---------------------------------------------"""
|
||||
untererFrame = LabelFrame(root, text="Generelles", border=10)
|
||||
@@ -280,17 +385,17 @@ untenLabelOhrenSynchro2 = Label(untererFrame, text=" für beide übernehmen")
|
||||
untenLabelOhrenSynchro2.grid(column=2, row=0, sticky=(N + W + E + S))
|
||||
untenButtonOhrenSynchro = Button(untererFrame, text="Bestätigen",
|
||||
command=unten_button_ohren_synchro)
|
||||
untenButtonOhrenSynchro.grid(column=3, row=0, sticky=(N + W + E + S))
|
||||
untenButtonOhrenSynchro.grid(column=3, row=0, sticky=(N + S))
|
||||
|
||||
#----------- PLAY BUTTON
|
||||
untenButtonPlay = Button(untererFrame, text="PLAY", font="bold", relief="raised", bg="green", fg="white",
|
||||
command=unten_button_play_press)
|
||||
untenButtonPlay.grid(column=8, row=0, sticky=(N + W + E + S))
|
||||
untenButtonPlay.grid(column=7, row=0, sticky=(N + W + E + S))
|
||||
|
||||
#------------STOP BUTTON-------------
|
||||
untenButtonStop = Button(untererFrame, text="STOP", font="bold", relief="raised", bg="red", fg="white",
|
||||
command=unten_button_stop_press)
|
||||
untenButtonStop.grid(column=9, row=0, sticky=(N + W + E + S))
|
||||
untenButtonStop.grid(column=8, row=0, sticky=(N + W + E + S))
|
||||
|
||||
# ----------- ABTRENNSTRICHE ----------------
|
||||
untenSeparator = Separator(untererFrame, orient="horizontal")
|
||||
@@ -312,13 +417,15 @@ untenEntryVorname.grid(column=1, row=3, sticky=W)
|
||||
# ------------ KOMMENTAR ----------------
|
||||
untenLabelKommentar = Label(untererFrame, text="weitere Kommentare:")
|
||||
untenLabelKommentar.grid(column=0, row=4, sticky=W)
|
||||
untenTextKommentar = Text(untererFrame, height=10, width=50) # create a field where u can enter text
|
||||
untenTextKommentar.grid(column=1, row=4, columnspan=3, rowspan=3)
|
||||
untenLabelKommentar = Label(untererFrame, text="(optional)")
|
||||
untenLabelKommentar.grid(column=0, row=5, sticky=N)
|
||||
untenTextKommentar = Text(untererFrame, height=10, width=60) # create a field where u can enter text
|
||||
untenTextKommentar.grid(column=1, row=4, sticky=W, columnspan=3, rowspan=3)
|
||||
|
||||
# ----------- SPEICHERN --------------------
|
||||
untenButtonSpeichern = Button(untererFrame, text="Speichern", font="bold",
|
||||
command=unten_button_speichern_press)
|
||||
untenButtonSpeichern.grid(column=4, row=6, sticky=S)
|
||||
untenButtonSpeichern.grid(column=4, row=6, sticky=(S+E+W))
|
||||
|
||||
|
||||
"""--------------------------------------UNTERER RECHTER FRAME-------------------------------------------------------"""
|
||||
@@ -334,5 +441,22 @@ untenFeedbackText.place(relx=.5, rely=.5, anchor="center") # the only time I us
|
||||
# lets me place the widget in the middle of the frame
|
||||
|
||||
|
||||
# -------------- LOAD MUSIC FILE--------------
|
||||
untenTextMusikDatei = Text(untererFrame, height=1, width=50)
|
||||
untenTextMusikDatei.grid(column=1, row=7, sticky=(N+S+E+W), columnspan=4)
|
||||
untenTextMusikDatei.insert(INSERT, "Einen Song deiner Wahl hier auswählen") # insert selected file path to text widget
|
||||
untenTextMusikDatei.config(state=DISABLED, font=("Arial", 8)) # activate text field (otherwise it is readonly)
|
||||
|
||||
untenButtonMusikDateiLaden = Button(untererFrame, text="Musikdatei auswählen",
|
||||
command=unten_button_musikdatei_laden_press)
|
||||
untenButtonMusikDateiLaden.grid(column=4, row=7, sticky=(N+S+E+W))
|
||||
|
||||
|
||||
#------------BUTTON FILTERE TINNITUS AUS MUSIK-----------------
|
||||
untenButtonFiltereTinnitusAusMusik = Button(untererFrame, text="Filtere Tinnitus-Frequenzen aus Musik",
|
||||
command=unten_button_filtere_tinnitus_aus_musik, font="bold",
|
||||
relief="raised", bg="blue", fg="white",)
|
||||
untenButtonFiltereTinnitusAusMusik.grid(column=3, row=9, sticky=(N+S+E+W), columnspan=3)
|
||||
|
||||
|
||||
root.mainloop()
|
||||
@@ -0,0 +1,33 @@
|
||||
# -*- mode: python ; coding: utf-8 -*-
|
||||
|
||||
block_cipher = None
|
||||
|
||||
|
||||
a = Analysis(['TinnitusAnalyse_GUI.py'],
|
||||
pathex=['C:\\Users\\Julian\\Desktop\\Tinnitus GITHUB\\Tinnitus_Musik_Therapie_Projektarbeit_Repo\\TinnitusAnalyse'],
|
||||
binaries=[],
|
||||
datas=[],
|
||||
hiddenimports=[],
|
||||
hookspath=[],
|
||||
runtime_hooks=[],
|
||||
excludes=[],
|
||||
win_no_prefer_redirects=False,
|
||||
win_private_assemblies=False,
|
||||
cipher=block_cipher,
|
||||
noarchive=False)
|
||||
pyz = PYZ(a.pure, a.zipped_data,
|
||||
cipher=block_cipher)
|
||||
exe = EXE(pyz,
|
||||
a.scripts,
|
||||
a.binaries,
|
||||
a.zipfiles,
|
||||
a.datas,
|
||||
[],
|
||||
name='TinnitusAnalyse_GUI',
|
||||
debug=False,
|
||||
bootloader_ignore_signals=False,
|
||||
strip=False,
|
||||
upx=True,
|
||||
upx_exclude=[],
|
||||
runtime_tmpdir=None,
|
||||
console=True )
|
||||
@@ -1,10 +1,14 @@
|
||||
Vorname;asdad
|
||||
Nachname;sada
|
||||
linke Frequenz;0.0
|
||||
linke Lautstärke;0.0
|
||||
linkes Rauschen;0.0
|
||||
rechte Frequenz;0.0
|
||||
rechte Lautstärke;0.0
|
||||
rechtes Rauschen;0.0
|
||||
Vorname;asd
|
||||
Nachname;asd
|
||||
linke Frequenz;5040.0
|
||||
linke Lautstärke;0.08
|
||||
linkes Rauschen Lautstärke;0.0
|
||||
linkes Rauschen untere Grenzfrequenz;10.0
|
||||
linkes Rauschen obere Grenzfrequenz;20000.0
|
||||
rechte Frequenz;5040.0
|
||||
rechte Lautstärke;0.11
|
||||
rechtes Rauschen Lautstärke;0.0
|
||||
rechtes Rauschen untere Grenzfrequenz;10.0
|
||||
rechtes Rauschen obere Grenzfrequenz;20000.0
|
||||
Kommentar;
|
||||
|
||||
|
Binary file not shown.
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
Binary file not shown.
File diff suppressed because it is too large.
Load diff
Binary file not shown.
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<assemblyIdentity name="TinnitusAnalyse_GUI" processorArchitecture="amd64" type="win32" version="1.0.0.0"/>
|
||||
<dependency>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity language="*" name="Microsoft.Windows.Common-Controls" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" type="win32" version="6.0.0.0"/>
|
||||
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"/>
|
||||
</dependentAssembly>
|
||||
</dependency>
|
||||
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||
<application>
|
||||
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
|
||||
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
|
||||
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
|
||||
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
|
||||
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
|
||||
</application>
|
||||
</compatibility>
|
||||
</assembly>
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,271 @@
|
||||
('c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6',
|
||||
'tk',
|
||||
['demos', '*.lib', 'tkConfig.sh'],
|
||||
'DATA',
|
||||
[('tk\\bgerror.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\bgerror.tcl',
|
||||
'DATA'),
|
||||
('tk\\button.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\button.tcl',
|
||||
'DATA'),
|
||||
('tk\\choosedir.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\choosedir.tcl',
|
||||
'DATA'),
|
||||
('tk\\clrpick.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\clrpick.tcl',
|
||||
'DATA'),
|
||||
('tk\\comdlg.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\comdlg.tcl',
|
||||
'DATA'),
|
||||
('tk\\console.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\console.tcl',
|
||||
'DATA'),
|
||||
('tk\\dialog.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\dialog.tcl',
|
||||
'DATA'),
|
||||
('tk\\entry.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\entry.tcl',
|
||||
'DATA'),
|
||||
('tk\\focus.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\focus.tcl',
|
||||
'DATA'),
|
||||
('tk\\fontchooser.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\fontchooser.tcl',
|
||||
'DATA'),
|
||||
('tk\\iconlist.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\iconlist.tcl',
|
||||
'DATA'),
|
||||
('tk\\icons.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\icons.tcl',
|
||||
'DATA'),
|
||||
('tk\\license.terms',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\license.terms',
|
||||
'DATA'),
|
||||
('tk\\listbox.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\listbox.tcl',
|
||||
'DATA'),
|
||||
('tk\\megawidget.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\megawidget.tcl',
|
||||
'DATA'),
|
||||
('tk\\menu.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\menu.tcl',
|
||||
'DATA'),
|
||||
('tk\\mkpsenc.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\mkpsenc.tcl',
|
||||
'DATA'),
|
||||
('tk\\msgbox.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\msgbox.tcl',
|
||||
'DATA'),
|
||||
('tk\\obsolete.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\obsolete.tcl',
|
||||
'DATA'),
|
||||
('tk\\optMenu.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\optMenu.tcl',
|
||||
'DATA'),
|
||||
('tk\\palette.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\palette.tcl',
|
||||
'DATA'),
|
||||
('tk\\panedwindow.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\panedwindow.tcl',
|
||||
'DATA'),
|
||||
('tk\\pkgIndex.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\pkgIndex.tcl',
|
||||
'DATA'),
|
||||
('tk\\safetk.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\safetk.tcl',
|
||||
'DATA'),
|
||||
('tk\\scale.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\scale.tcl',
|
||||
'DATA'),
|
||||
('tk\\scrlbar.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\scrlbar.tcl',
|
||||
'DATA'),
|
||||
('tk\\spinbox.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\spinbox.tcl',
|
||||
'DATA'),
|
||||
('tk\\tclIndex',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\tclIndex',
|
||||
'DATA'),
|
||||
('tk\\tearoff.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\tearoff.tcl',
|
||||
'DATA'),
|
||||
('tk\\text.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\text.tcl',
|
||||
'DATA'),
|
||||
('tk\\tk.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\tk.tcl',
|
||||
'DATA'),
|
||||
('tk\\tkfbox.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\tkfbox.tcl',
|
||||
'DATA'),
|
||||
('tk\\unsupported.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\unsupported.tcl',
|
||||
'DATA'),
|
||||
('tk\\xmfbox.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\xmfbox.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\altTheme.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\ttk\\altTheme.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\aquaTheme.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\ttk\\aquaTheme.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\button.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\ttk\\button.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\clamTheme.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\ttk\\clamTheme.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\classicTheme.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\ttk\\classicTheme.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\combobox.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\ttk\\combobox.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\cursors.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\ttk\\cursors.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\defaults.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\ttk\\defaults.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\entry.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\ttk\\entry.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\fonts.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\ttk\\fonts.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\menubutton.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\ttk\\menubutton.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\notebook.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\ttk\\notebook.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\panedwindow.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\ttk\\panedwindow.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\progress.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\ttk\\progress.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\scale.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\ttk\\scale.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\scrollbar.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\ttk\\scrollbar.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\sizegrip.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\ttk\\sizegrip.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\spinbox.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\ttk\\spinbox.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\treeview.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\ttk\\treeview.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\ttk.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\ttk\\ttk.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\utils.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\ttk\\utils.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\vistaTheme.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\ttk\\vistaTheme.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\winTheme.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\ttk\\winTheme.tcl',
|
||||
'DATA'),
|
||||
('tk\\ttk\\xpTheme.tcl',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\ttk\\xpTheme.tcl',
|
||||
'DATA'),
|
||||
('tk\\msgs\\cs.msg',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\msgs\\cs.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\da.msg',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\msgs\\da.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\de.msg',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\msgs\\de.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\el.msg',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\msgs\\el.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\en.msg',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\msgs\\en.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\en_gb.msg',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\msgs\\en_gb.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\eo.msg',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\msgs\\eo.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\es.msg',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\msgs\\es.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\fr.msg',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\msgs\\fr.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\hu.msg',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\msgs\\hu.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\it.msg',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\msgs\\it.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\nl.msg',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\msgs\\nl.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\pl.msg',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\msgs\\pl.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\pt.msg',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\msgs\\pt.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\ru.msg',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\msgs\\ru.msg',
|
||||
'DATA'),
|
||||
('tk\\msgs\\sv.msg',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\msgs\\sv.msg',
|
||||
'DATA'),
|
||||
('tk\\images\\lamp.png',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\images\\lamp.png',
|
||||
'DATA'),
|
||||
('tk\\images\\lamp.svg',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\images\\lamp.svg',
|
||||
'DATA'),
|
||||
('tk\\images\\logo.eps',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\images\\logo.eps',
|
||||
'DATA'),
|
||||
('tk\\images\\logo100.gif',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\images\\logo100.gif',
|
||||
'DATA'),
|
||||
('tk\\images\\logo64.gif',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\images\\logo64.gif',
|
||||
'DATA'),
|
||||
('tk\\images\\logoLarge.gif',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\images\\logoLarge.gif',
|
||||
'DATA'),
|
||||
('tk\\images\\logoMed.gif',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\images\\logoMed.gif',
|
||||
'DATA'),
|
||||
('tk\\images\\pwrdLogo.eps',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\images\\pwrdLogo.eps',
|
||||
'DATA'),
|
||||
('tk\\images\\pwrdLogo100.gif',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\images\\pwrdLogo100.gif',
|
||||
'DATA'),
|
||||
('tk\\images\\pwrdLogo150.gif',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\images\\pwrdLogo150.gif',
|
||||
'DATA'),
|
||||
('tk\\images\\pwrdLogo175.gif',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\images\\pwrdLogo175.gif',
|
||||
'DATA'),
|
||||
('tk\\images\\pwrdLogo200.gif',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\images\\pwrdLogo200.gif',
|
||||
'DATA'),
|
||||
('tk\\images\\pwrdLogo75.gif',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\images\\pwrdLogo75.gif',
|
||||
'DATA'),
|
||||
('tk\\images\\README',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\images\\README',
|
||||
'DATA'),
|
||||
('tk\\images\\tai-ku.gif',
|
||||
'c:\\users\\julian\\appdata\\local\\programs\\python\\python35\\tcl\\tk8.6\\images\\tai-ku.gif',
|
||||
'DATA')])
|
||||
Binary file not shown.
@@ -0,0 +1,198 @@
|
||||
|
||||
This file lists modules PyInstaller was not able to find. This does not
|
||||
necessarily mean this module is required for running you program. Python and
|
||||
Python 3rd-party packages include a lot of conditional or optional modules. For
|
||||
example the module 'ntpath' only exists on Windows, whereas the module
|
||||
'posixpath' only exists on Posix systems.
|
||||
|
||||
Types if import:
|
||||
* top-level: imported at the top-level - look at these first
|
||||
* conditional: imported within an if-statement
|
||||
* delayed: imported from within a function
|
||||
* optional: imported within a try-except-statement
|
||||
|
||||
IMPORTANT: Do NOT post this list to the issue-tracker. Use it as a basis for
|
||||
yourself tracking down the missing module. Thanks!
|
||||
|
||||
missing module named _dummy_threading - imported by dummy_threading (optional)
|
||||
missing module named _posixsubprocess - imported by subprocess (conditional), multiprocessing.util (delayed)
|
||||
missing module named org - imported by copy (optional)
|
||||
missing module named ce - imported by os (conditional, optional)
|
||||
missing module named pwd - imported by posixpath (delayed, conditional), shutil (optional), tarfile (optional), http.server (delayed, optional), webbrowser (delayed), pathlib (delayed, conditional, optional), distutils.util (delayed, conditional), distutils.archive_util (optional), netrc (delayed, conditional), getpass (delayed)
|
||||
missing module named posix - imported by os (conditional, optional)
|
||||
missing module named resource - imported by posix (top-level)
|
||||
missing module named _frozen_importlib_external - imported by importlib._bootstrap (delayed), importlib (optional), importlib.abc (optional)
|
||||
excluded module named _frozen_importlib - imported by importlib (optional), importlib.abc (optional), PyInstaller.loader.pyimod02_archive (delayed, conditional)
|
||||
missing module named grp - imported by shutil (optional), tarfile (optional), pathlib (delayed), distutils.archive_util (optional)
|
||||
missing module named 'multiprocessing.forking' - imported by c:\users\julian\appdata\local\programs\python\python35\lib\site-packages\PyInstaller\loader\rthooks\pyi_rth_multiprocessing.py (optional)
|
||||
missing module named multiprocessing.get_context - imported by multiprocessing (top-level), multiprocessing.pool (top-level), multiprocessing.managers (top-level), multiprocessing.sharedctypes (top-level)
|
||||
missing module named multiprocessing.TimeoutError - imported by multiprocessing (top-level), multiprocessing.pool (top-level)
|
||||
missing module named _scproxy - imported by urllib.request (conditional)
|
||||
missing module named termios - imported by tty (top-level), getpass (optional)
|
||||
missing module named urllib.splittag - imported by urllib (optional), setuptools.py26compat (optional)
|
||||
missing module named urllib.pathname2url - imported by urllib (conditional), PyInstaller.lib.modulegraph._compat (conditional)
|
||||
missing module named 'org.python' - imported by pickle (optional), xml.sax (delayed, conditional), setuptools.sandbox (conditional)
|
||||
missing module named 'java.lang' - imported by platform (delayed, optional), xml.sax._exceptions (conditional)
|
||||
missing module named multiprocessing.BufferTooShort - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
|
||||
missing module named multiprocessing.AuthenticationError - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
|
||||
missing module named vms_lib - imported by platform (delayed, conditional, optional)
|
||||
missing module named java - imported by platform (delayed)
|
||||
missing module named _winreg - imported by platform (delayed, optional), numpy.distutils.cpuinfo (delayed, conditional, optional), pkg_resources._vendor.appdirs (delayed)
|
||||
missing module named readline - imported by cmd (delayed, conditional, optional), code (delayed, conditional, optional), pdb (delayed, optional)
|
||||
missing module named multiprocessing.set_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
|
||||
missing module named multiprocessing.get_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
|
||||
missing module named multiprocessing.Pool - imported by multiprocessing (top-level), scipy._lib._util (top-level)
|
||||
missing module named multiprocessing.SimpleQueue - imported by multiprocessing (top-level), concurrent.futures.process (top-level)
|
||||
missing module named pyimod03_importers - imported by PyInstaller.loader.pyimod02_archive (delayed, conditional), c:\users\julian\appdata\local\programs\python\python35\lib\site-packages\PyInstaller\loader\rthooks\pyi_rth_pkgres.py (top-level)
|
||||
missing module named netbios - imported by uuid (delayed)
|
||||
missing module named win32wnet - imported by uuid (delayed)
|
||||
missing module named __builtin__ - imported by numpy.core.numerictypes (conditional), numpy.core.numeric (conditional), numpy.lib.function_base (conditional), numpy.lib._iotools (conditional), numpy.ma.core (conditional), scipy._lib.six (conditional), numpy.distutils.misc_util (delayed, conditional), numpy (conditional), pyparsing (conditional), pkg_resources._vendor.pyparsing (conditional)
|
||||
missing module named ordereddict - imported by pyparsing (optional), pkg_resources._vendor.pyparsing (optional)
|
||||
missing module named 'pkg_resources.extern.pyparsing' - imported by pkg_resources._vendor.packaging.markers (top-level), pkg_resources._vendor.packaging.requirements (top-level)
|
||||
missing module named 'com.sun' - imported by pkg_resources._vendor.appdirs (delayed, conditional, optional)
|
||||
missing module named com - imported by pkg_resources._vendor.appdirs (delayed)
|
||||
missing module named win32api - imported by distutils.msvccompiler (optional), pkg_resources._vendor.appdirs (delayed, conditional, optional)
|
||||
missing module named win32com.shell - imported by pkg_resources._vendor.appdirs (delayed, conditional, optional)
|
||||
missing module named StringIO - imported by PyInstaller.lib.modulegraph._compat (conditional), PyInstaller.lib.modulegraph.zipio (conditional), pkg_resources._vendor.six (conditional), numpy.testing._private.utils (conditional), numpy.lib.utils (delayed, conditional), numpy.lib.format (delayed, conditional), scipy._lib.six (conditional), six (conditional)
|
||||
missing module named _sysconfigdata - imported by sysconfig (delayed)
|
||||
missing module named pkg_resources.extern.packaging - imported by pkg_resources.extern (top-level), pkg_resources (top-level), setuptools.dist (top-level), setuptools.command.egg_info (top-level)
|
||||
missing module named pkg_resources.extern.appdirs - imported by pkg_resources.extern (top-level), pkg_resources (top-level)
|
||||
missing module named 'pkg_resources.extern.six.moves' - imported by pkg_resources (top-level), pkg_resources._vendor.packaging.requirements (top-level)
|
||||
missing module named pkg_resources.extern.six - imported by pkg_resources.extern (top-level), pkg_resources (top-level)
|
||||
missing module named numpy.power - imported by numpy (top-level), scipy.stats.kde (top-level)
|
||||
missing module named numpy.hypot - imported by numpy (top-level), scipy.stats.morestats (top-level)
|
||||
missing module named numpy.tanh - imported by numpy (top-level), scipy.stats._discrete_distns (top-level)
|
||||
missing module named numpy.expm1 - imported by numpy (top-level), scipy.stats._discrete_distns (top-level)
|
||||
missing module named numpy.log1p - imported by numpy (top-level), scipy.stats._discrete_distns (top-level)
|
||||
missing module named numpy.NINF - imported by numpy (top-level), scipy.stats._distn_infrastructure (top-level)
|
||||
missing module named numpy.double - imported by numpy (top-level), scipy.optimize.nnls (top-level)
|
||||
missing module named numpy.greater - imported by numpy (top-level), scipy.optimize.minpack (top-level)
|
||||
missing module named numpy.float64 - imported by numpy (top-level), scipy.optimize.lbfgsb (top-level)
|
||||
missing module named numpy.sinh - imported by numpy (top-level), scipy.signal.filter_design (top-level), scipy.stats._discrete_distns (top-level)
|
||||
missing module named numpy.arccosh - imported by numpy (top-level), scipy.signal.filter_design (top-level)
|
||||
missing module named numpy.cosh - imported by numpy (top-level), scipy.signal.filter_design (top-level), scipy.stats._discrete_distns (top-level)
|
||||
missing module named numpy.arcsinh - imported by numpy (top-level), scipy.signal.filter_design (top-level)
|
||||
missing module named numpy.arctan - imported by numpy (top-level), scipy.signal.filter_design (top-level)
|
||||
missing module named numpy.tan - imported by numpy (top-level), scipy.signal.bsplines (top-level), scipy.signal.filter_design (top-level)
|
||||
missing module named numpy.logical_and - imported by numpy (top-level), scipy.signal.bsplines (top-level), scipy.stats._distn_infrastructure (top-level)
|
||||
missing module named numpy.log - imported by numpy (top-level), scipy.signal.waveforms (top-level), scipy.stats._distn_infrastructure (top-level), scipy.stats._discrete_distns (top-level), scipy.stats.morestats (top-level)
|
||||
missing module named numpy.sign - imported by numpy (top-level), scipy.linalg.matfuncs (top-level)
|
||||
missing module named numpy.conjugate - imported by numpy (top-level), scipy.linalg.matfuncs (top-level), scipy.signal.filter_design (top-level)
|
||||
missing module named numpy.logical_not - imported by numpy (top-level), scipy.linalg.matfuncs (top-level)
|
||||
missing module named numpy.single - imported by numpy (top-level), scipy.linalg.decomp_schur (top-level), scipy.linalg.matfuncs (top-level)
|
||||
missing module named numpy.arcsin - imported by numpy (top-level), scipy.linalg.decomp_svd (top-level)
|
||||
missing module named numpy.arccos - imported by numpy (top-level), scipy.linalg.decomp_svd (top-level), scipy.special.orthogonal (top-level)
|
||||
missing module named numpy.conj - imported by numpy (top-level), scipy.linalg.decomp (top-level), scipy.io.mmio (top-level)
|
||||
missing module named numpy.inexact - imported by numpy (top-level), scipy.linalg.decomp (top-level), scipy.special._basic (top-level), scipy.optimize.minpack (top-level)
|
||||
missing module named commands - imported by numpy.distutils.cpuinfo (conditional)
|
||||
missing module named setuptools_svn - imported by setuptools.command.egg_info (optional)
|
||||
missing module named 'setuptools.extern.six' - imported by setuptools (top-level), setuptools.extension (top-level)
|
||||
missing module named certifi - imported by setuptools.ssl_support (delayed, optional)
|
||||
missing module named wincertstore - imported by setuptools.ssl_support (delayed, optional)
|
||||
missing module named 'backports.ssl_match_hostname' - imported by setuptools.ssl_support (optional)
|
||||
missing module named backports - imported by setuptools.ssl_support (optional)
|
||||
missing module named 'pkg_resources._vendor.six.moves' - imported by 'pkg_resources._vendor.six.moves' (top-level)
|
||||
missing module named urllib2 - imported by setuptools.package_index (optional), numpy.lib._datasource (delayed, conditional)
|
||||
missing module named win32com.client.gencache - imported by setuptools.sandbox (optional)
|
||||
missing module named setuptools.extern.six.moves.filter - imported by setuptools.extern.six.moves (top-level), setuptools.command.py36compat (top-level)
|
||||
missing module named setuptools.extern.six.moves.filterfalse - imported by setuptools.extern.six.moves (top-level), setuptools.msvc (top-level)
|
||||
missing module named 'pkg_resources.extern.packaging.version' - imported by setuptools.msvc (top-level)
|
||||
missing module named setuptools.extern.six.moves.map - imported by setuptools.extern.six.moves (top-level), setuptools.dist (top-level), setuptools.command.easy_install (top-level), setuptools.sandbox (top-level), setuptools.package_index (top-level), setuptools.ssl_support (top-level), setuptools.command.egg_info (top-level)
|
||||
runtime module named setuptools.extern.six.moves - imported by setuptools.dist (top-level), setuptools.command.easy_install (top-level), setuptools.sandbox (top-level), setuptools.command.setopt (top-level), setuptools.package_index (top-level), setuptools.ssl_support (top-level), setuptools.command.egg_info (top-level), setuptools.command.py36compat (top-level), setuptools.msvc (top-level)
|
||||
missing module named setuptools.extern.six - imported by setuptools.extern (top-level), setuptools.monkey (top-level), setuptools.dist (top-level), setuptools.extern.six.moves (top-level), setuptools.depends (top-level), setuptools.command.easy_install (top-level), setuptools.sandbox (top-level), setuptools.package_index (top-level), setuptools.command.bdist_egg (top-level), setuptools.command.egg_info (top-level), setuptools.command.sdist (top-level), setuptools.unicode_utils (top-level), setuptools.glob (top-level), setuptools.command.develop (top-level)
|
||||
missing module named 'numpy_distutils.cpuinfo' - imported by numpy.f2py.diagnose (delayed, conditional, optional)
|
||||
missing module named 'numpy_distutils.fcompiler' - imported by numpy.f2py.diagnose (delayed, conditional, optional)
|
||||
missing module named 'numpy_distutils.command' - imported by numpy.f2py.diagnose (delayed, conditional, optional)
|
||||
missing module named numpy_distutils - imported by numpy.f2py.diagnose (delayed, optional)
|
||||
missing module named __svn_version__ - imported by numpy.f2py.__version__ (optional)
|
||||
missing module named numarray - imported by numpy.distutils.system_info (delayed, conditional, optional)
|
||||
missing module named Numeric - imported by numpy.distutils.system_info (delayed, conditional, optional)
|
||||
missing module named ConfigParser - imported by numpy.distutils.system_info (conditional), numpy.distutils.npy_pkg_config (conditional)
|
||||
missing module named win32con - imported by distutils.msvccompiler (optional)
|
||||
missing module named _curses - imported by curses (top-level), curses.has_key (top-level)
|
||||
missing module named pytest - imported by numpy._pytesttester (delayed), numpy.testing._private.utils (delayed), scipy._lib._testutils (delayed), matplotlib (delayed, optional)
|
||||
missing module named 'nose.plugins' - imported by numpy.testing._private.noseclasses (top-level), numpy.testing._private.nosetester (delayed)
|
||||
missing module named scipy.linalg._clapack - imported by scipy.linalg (optional), scipy.linalg.lapack (optional)
|
||||
missing module named scipy.linalg._cblas - imported by scipy.linalg (optional), scipy.linalg.blas (optional)
|
||||
missing module named scipy.sparse.coo_matrix - imported by scipy.sparse (delayed), scipy.sparse.data (delayed), scipy.optimize._numdiff (top-level), scipy.integrate._bvp (top-level), scipy.integrate._ivp.common (top-level), scipy.io.mmio (top-level)
|
||||
missing module named scipy.special.entr - imported by scipy.special (top-level), scipy.stats._distn_infrastructure (top-level), scipy.stats._discrete_distns (top-level), scipy.stats._multivariate (top-level)
|
||||
missing module named scipy.special.xlogy - imported by scipy.special (top-level), scipy.interpolate.rbf (top-level), scipy.stats._distn_infrastructure (top-level), scipy.stats._multivariate (top-level)
|
||||
missing module named scipy.special.gammaln - imported by scipy.special (top-level), scipy.special.spfun_stats (top-level), scipy.optimize._dual_annealing (top-level), scipy.integrate.quadrature (top-level), scipy.stats._discrete_distns (top-level), scipy.stats._multivariate (top-level)
|
||||
missing module named scipy.special.betaln - imported by scipy.special (top-level), scipy.stats._discrete_distns (top-level)
|
||||
missing module named scipy.special.beta - imported by scipy.special (top-level), scipy.stats._tukeylambda_stats (top-level)
|
||||
missing module named scipy.special.ive - imported by scipy.special (top-level), scipy.stats._distn_infrastructure (top-level)
|
||||
missing module named scipy.special.chndtr - imported by scipy.special (top-level), scipy.stats._distn_infrastructure (top-level)
|
||||
missing module named scipy.special.rel_entr - imported by scipy.special (top-level), scipy.spatial.distance (top-level), scipy.stats._distn_infrastructure (top-level)
|
||||
missing module named scipy.special.airy - imported by scipy.special (top-level), scipy.special.orthogonal (top-level)
|
||||
missing module named scipy.stats.iqr - imported by scipy.stats (delayed), scipy.stats._hypotests (delayed)
|
||||
missing module named scipy.spatial.cKDTree - imported by scipy.spatial (top-level), scipy.spatial._spherical_voronoi (top-level), scipy.interpolate.ndgriddata (top-level), scipy.signal.signaltools (top-level)
|
||||
missing module named new - imported by scipy.interpolate.rbf (delayed, conditional)
|
||||
missing module named numpy.lib.i0 - imported by numpy.lib (top-level), numpy.dual (top-level)
|
||||
missing module named scipy.signal.dlti - imported by scipy.signal (top-level), scipy.signal.signaltools (top-level)
|
||||
missing module named sparse - imported by scipy.sparse.linalg._expm_multiply (delayed, conditional), scipy.sparse.linalg.matfuncs (delayed, conditional)
|
||||
missing module named numpy.core.sqrt - imported by numpy.core (top-level), numpy.linalg.linalg (top-level), numpy.fft._pocketfft (top-level), scipy.sparse.linalg._norm (top-level)
|
||||
missing module named scikits - imported by scipy.sparse.linalg.dsolve.linsolve (optional)
|
||||
missing module named scipy.linalg.qr_insert - imported by scipy.linalg (top-level), scipy.sparse.linalg.isolve._gcrotmk (top-level)
|
||||
missing module named 'IPython.core' - imported by matplotlib.pyplot (delayed, conditional, optional)
|
||||
missing module named IPython - imported by matplotlib.pyplot (delayed, conditional, optional)
|
||||
runtime module named six.moves - imported by cycler (top-level), dateutil.rrule (top-level), dateutil.tz.tz (top-level), dateutil.tz._factories (top-level), dateutil.tz.win (top-level)
|
||||
missing module named six.moves.range - imported by six.moves (top-level), dateutil.rrule (top-level)
|
||||
missing module named six.moves.zip - imported by six.moves (top-level), cycler (top-level)
|
||||
missing module named dateutil.tz.tzfile - imported by dateutil.tz (top-level), dateutil.zoneinfo (top-level)
|
||||
missing module named PIL - imported by matplotlib.backend_bases (optional), matplotlib.image (delayed, conditional, optional), matplotlib.backends.backend_agg (conditional)
|
||||
missing module named 'tornado.template' - imported by matplotlib.backends.backend_webagg (delayed)
|
||||
missing module named 'tornado.websocket' - imported by matplotlib.backends.backend_webagg (top-level)
|
||||
missing module named 'tornado.ioloop' - imported by matplotlib.backends.backend_webagg (top-level)
|
||||
missing module named 'tornado.web' - imported by matplotlib.backends.backend_webagg (top-level)
|
||||
missing module named tornado - imported by matplotlib.backends.backend_webagg (optional), matplotlib.backends.backend_webagg_core (top-level)
|
||||
missing module named matplotlib.tri.Triangulation - imported by matplotlib.tri (top-level), matplotlib.tri.trifinder (top-level), matplotlib.tri.tritools (top-level), matplotlib.tri.triinterpolate (top-level), matplotlib.mlab (delayed, conditional)
|
||||
missing module named 'mpl_toolkits.natgrid' - imported by matplotlib.mlab (delayed, conditional, optional)
|
||||
missing module named matplotlib.axes.Axes - imported by matplotlib.axes (delayed), matplotlib.legend (delayed), matplotlib.projections.geo (top-level), matplotlib.projections.polar (top-level), matplotlib.figure (top-level), matplotlib.pyplot (top-level)
|
||||
missing module named dummy_thread - imported by numpy.core.arrayprint (conditional, optional), cffi.lock (conditional, optional)
|
||||
missing module named thread - imported by numpy.core.arrayprint (conditional, optional), cffi.lock (conditional, optional), cffi.cparser (conditional, optional), PyInstaller.loader.pyimod02_archive (conditional)
|
||||
missing module named numpy.core.sign - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.divide - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.object_ - imported by numpy.core (top-level), numpy.linalg.linalg (top-level), numpy.testing._private.utils (delayed)
|
||||
missing module named numpy.core.intp - imported by numpy.core (top-level), numpy.testing._private.utils (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.geterrobj - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.add - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.complexfloating - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.inexact - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.cdouble - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.csingle - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.double - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named numpy.core.single - imported by numpy.core (top-level), numpy.linalg.linalg (top-level)
|
||||
missing module named 'scikits.umfpack' - imported by scipy.optimize._linprog_ip (optional)
|
||||
missing module named 'sksparse.cholmod' - imported by scipy.optimize._linprog_ip (optional)
|
||||
missing module named sksparse - imported by scipy.optimize._trustregion_constr.projections (optional)
|
||||
missing module named uarray - imported by scipy._lib.uarray (conditional, optional)
|
||||
missing module named psutil - imported by numpy.testing._private.utils (delayed, optional), scipy._lib._testutils (delayed, optional)
|
||||
missing module named cStringIO - imported by cPickle (top-level), cffi.ffiplatform (optional)
|
||||
missing module named copy_reg - imported by numpy.core (conditional), cPickle (top-level), cStringIO (top-level)
|
||||
missing module named cPickle - imported by pycparser.ply.yacc (delayed, optional)
|
||||
missing module named cffi._pycparser - imported by cffi (optional), cffi.cparser (optional)
|
||||
missing module named numpy.random.randn - imported by numpy.random (top-level), scipy (top-level)
|
||||
missing module named numpy.random.rand - imported by numpy.random (top-level), scipy (top-level)
|
||||
missing module named 'nose.util' - imported by numpy.testing._private.noseclasses (top-level)
|
||||
missing module named nose - imported by numpy.testing._private.utils (delayed, optional), numpy.testing._private.decorators (delayed), numpy.testing._private.noseclasses (top-level)
|
||||
missing module named numpy.core.number - imported by numpy.core (delayed), numpy.testing._private.utils (delayed)
|
||||
missing module named numpy.core.signbit - imported by numpy.core (delayed), numpy.testing._private.utils (delayed)
|
||||
missing module named win32pdh - imported by numpy.testing._private.utils (delayed, conditional)
|
||||
missing module named numpy.core.float32 - imported by numpy.core (top-level), numpy.testing._private.utils (top-level)
|
||||
missing module named cpickle - imported by numpy.compat.py3k (conditional)
|
||||
missing module named pickle5 - imported by numpy.compat.py3k (conditional, optional)
|
||||
missing module named numpy.core.integer - imported by numpy.core (top-level), numpy.fft.helper (top-level)
|
||||
missing module named numpy.core.conjugate - imported by numpy.core (top-level), numpy.fft._pocketfft (top-level)
|
||||
missing module named future_builtins - imported by numpy.lib.npyio (conditional)
|
||||
missing module named urlparse - imported by numpy.lib._datasource (delayed, conditional)
|
||||
missing module named numpy.recarray - imported by numpy (top-level), numpy.ma.mrecords (top-level)
|
||||
missing module named numpy.dtype - imported by numpy (top-level), numpy.ma.mrecords (top-level), numpy.ctypeslib (top-level), scipy.optimize.minpack (top-level), scipy.io.netcdf (top-level)
|
||||
missing module named numpy.expand_dims - imported by numpy (top-level), numpy.ma.core (top-level)
|
||||
missing module named numpy.array - imported by numpy (top-level), numpy.ma.core (top-level), numpy.ma.extras (top-level), numpy.ma.mrecords (top-level), numpy.ctypeslib (top-level), scipy._lib._numpy_compat (conditional), scipy.linalg.decomp (top-level), scipy.linalg.decomp_schur (top-level), scipy.sparse.linalg.isolve.utils (top-level), scipy.signal.bsplines (top-level), scipy.signal.filter_design (top-level), scipy.optimize.lbfgsb (top-level), scipy.optimize.tnc (top-level), scipy.optimize.slsqp (top-level), scipy.optimize.minpack (top-level), scipy.interpolate.interpolate (top-level), scipy.interpolate._fitpack_impl (top-level), scipy.interpolate.fitpack2 (top-level), scipy.integrate._ode (top-level), scipy.signal.lti_conversion (top-level), scipy.stats.stats (top-level), scipy.misc.common (top-level), scipy.stats.morestats (top-level), scipy.io.netcdf (top-level)
|
||||
missing module named numpy.bool_ - imported by numpy (top-level), numpy.ma.core (top-level), numpy.ma.mrecords (top-level)
|
||||
missing module named numpy.iscomplexobj - imported by numpy (top-level), numpy.ma.core (top-level), scipy.linalg.decomp (top-level), scipy.linalg._decomp_ldl (top-level)
|
||||
missing module named numpy.amin - imported by numpy (top-level), numpy.ma.core (top-level), scipy.stats.morestats (top-level)
|
||||
missing module named numpy.amax - imported by numpy (top-level), numpy.ma.core (top-level), scipy.linalg.matfuncs (top-level), scipy.stats.morestats (top-level)
|
||||
missing module named numpy.ndarray - imported by numpy (top-level), numpy.ma.core (top-level), numpy.ma.extras (top-level), numpy.ma.mrecords (top-level), numpy.ctypeslib (top-level), scipy.stats._distn_infrastructure (top-level), scipy.stats.mstats_basic (top-level), scipy.stats.mstats_extras (top-level), scipy.io.mmio (top-level)
|
||||
missing module named numpy.histogramdd - imported by numpy (delayed), numpy.lib.twodim_base (delayed)
|
||||
missing module named numpy.eye - imported by numpy (delayed), numpy.core.numeric (delayed), scipy.linalg.decomp (top-level), scipy.optimize.optimize (top-level), scipy.optimize.minpack (top-level), scipy.interpolate._pade (top-level), scipy.signal.lti_conversion (top-level)
|
||||
File diff suppressed because it is too large.
Load diff
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in new issue
Block a user