├── .gitignore ├── .pep8speaks.yml ├── LICENSE ├── README.md ├── contributors.txt ├── setup ├── build_MacOS.bash ├── build_linux-x64.bash ├── config │ ├── deply_darwin_config.js │ └── deply_linux_config.js ├── environment.yml ├── run_gui.bash └── setup.bash └── src ├── main ├── js │ └── electron │ │ ├── .gitignore │ │ ├── config.js │ │ ├── main.js │ │ └── package.json ├── python │ ├── .gitignore │ ├── config.py │ ├── model │ │ ├── __init__.py │ │ ├── column.py │ │ ├── dataset.py │ │ └── table.py │ ├── server.py │ └── utils │ │ ├── __init__.py │ │ ├── dataset_cache.py │ │ ├── dataset_helper.py │ │ ├── dave_bulk.py │ │ ├── dave_endpoint.py │ │ ├── dave_engine.py │ │ ├── dave_logger.py │ │ ├── dave_reader.py │ │ ├── exception_helper.py │ │ ├── file_utils.py │ │ ├── filters_helper.py │ │ ├── gevent_helper.py │ │ ├── model_helper.py │ │ ├── np_encoder.py │ │ ├── plotter.py │ │ └── session_helper.py └── resources │ ├── bash │ ├── activate_and_launch.bash │ ├── activate_and_launch_dev.bash │ ├── build_publish.bash │ └── create_env.bash │ ├── static │ ├── font-awesome-4.7.0 │ │ ├── css │ │ │ ├── font-awesome.css │ │ │ └── font-awesome.min.css │ │ └── fonts │ │ │ ├── FontAwesome.otf │ │ │ ├── fontawesome-webfont.eot │ │ │ ├── fontawesome-webfont.svg │ │ │ ├── fontawesome-webfont.ttf │ │ │ ├── fontawesome-webfont.woff │ │ │ └── fontawesome-webfont.woff2 │ ├── fonts │ │ └── Archangelsk.ttf │ ├── img │ │ ├── bg.jpg │ │ ├── icon.icns │ │ ├── icon.ico │ │ ├── icon.png │ │ ├── icon │ │ │ ├── 128x128.png │ │ │ ├── 16x16.png │ │ │ ├── 24x24.png │ │ │ ├── 256x256.png │ │ │ ├── 32x32.png │ │ │ ├── 48x48.png │ │ │ ├── 512x512.png │ │ │ ├── 64x64.png │ │ │ └── 96x96.png │ │ └── loading.gif │ ├── scripts │ │ ├── bulkAnalisys.js │ │ ├── common.js │ │ ├── config.js │ │ ├── external │ │ │ ├── MathJax │ │ │ │ ├── MathJax.js │ │ │ │ ├── config │ │ │ │ │ └── TeX-AMS-MML_SVG.js │ │ │ │ ├── extensions │ │ │ │ │ └── Safe.js │ │ │ │ └── jax │ │ │ │ │ └── output │ │ │ │ │ └── SVG │ │ │ │ │ ├── autoload │ │ │ │ │ └── multiline.js │ │ │ │ │ ├── fonts │ │ │ │ │ └── TeX │ │ │ │ │ │ ├── AMS │ │ │ │ │ │ └── Regular │ │ │ │ │ │ │ ├── Arrows.js │ │ │ │ │ │ │ ├── BoxDrawing.js │ │ │ │ │ │ │ ├── CombDiacritMarks.js │ │ │ │ │ │ │ ├── Dingbats.js │ │ │ │ │ │ │ ├── EnclosedAlphanum.js │ │ │ │ │ │ │ ├── GeneralPunctuation.js │ │ │ │ │ │ │ ├── GeometricShapes.js │ │ │ │ │ │ │ ├── GreekAndCoptic.js │ │ │ │ │ │ │ ├── Latin1Supplement.js │ │ │ │ │ │ │ ├── LatinExtendedA.js │ │ │ │ │ │ │ ├── LetterlikeSymbols.js │ │ │ │ │ │ │ ├── Main.js │ │ │ │ │ │ │ ├── MathOperators.js │ │ │ │ │ │ │ ├── MiscMathSymbolsB.js │ │ │ │ │ │ │ ├── MiscSymbols.js │ │ │ │ │ │ │ ├── MiscTechnical.js │ │ │ │ │ │ │ ├── PUA.js │ │ │ │ │ │ │ ├── SpacingModLetters.js │ │ │ │ │ │ │ └── SuppMathOperators.js │ │ │ │ │ │ ├── Caligraphic │ │ │ │ │ │ ├── Bold │ │ │ │ │ │ │ └── Main.js │ │ │ │ │ │ └── Regular │ │ │ │ │ │ │ └── Main.js │ │ │ │ │ │ ├── Fraktur │ │ │ │ │ │ ├── Bold │ │ │ │ │ │ │ ├── BasicLatin.js │ │ │ │ │ │ │ ├── Main.js │ │ │ │ │ │ │ ├── Other.js │ │ │ │ │ │ │ └── PUA.js │ │ │ │ │ │ └── Regular │ │ │ │ │ │ │ ├── BasicLatin.js │ │ │ │ │ │ │ ├── Main.js │ │ │ │ │ │ │ ├── Other.js │ │ │ │ │ │ │ └── PUA.js │ │ │ │ │ │ ├── Main │ │ │ │ │ │ ├── Bold │ │ │ │ │ │ │ ├── Arrows.js │ │ │ │ │ │ │ ├── BasicLatin.js │ │ │ │ │ │ │ ├── CombDiacritMarks.js │ │ │ │ │ │ │ ├── CombDiactForSymbols.js │ │ │ │ │ │ │ ├── GeneralPunctuation.js │ │ │ │ │ │ │ ├── GeometricShapes.js │ │ │ │ │ │ │ ├── GreekAndCoptic.js │ │ │ │ │ │ │ ├── Latin1Supplement.js │ │ │ │ │ │ │ ├── LatinExtendedA.js │ │ │ │ │ │ │ ├── LatinExtendedB.js │ │ │ │ │ │ │ ├── LetterlikeSymbols.js │ │ │ │ │ │ │ ├── Main.js │ │ │ │ │ │ │ ├── MathOperators.js │ │ │ │ │ │ │ ├── MiscMathSymbolsA.js │ │ │ │ │ │ │ ├── MiscSymbols.js │ │ │ │ │ │ │ ├── MiscTechnical.js │ │ │ │ │ │ │ ├── SpacingModLetters.js │ │ │ │ │ │ │ ├── SuppMathOperators.js │ │ │ │ │ │ │ └── SupplementalArrowsA.js │ │ │ │ │ │ ├── Italic │ │ │ │ │ │ │ ├── BasicLatin.js │ │ │ │ │ │ │ ├── CombDiacritMarks.js │ │ │ │ │ │ │ ├── GeneralPunctuation.js │ │ │ │ │ │ │ ├── GreekAndCoptic.js │ │ │ │ │ │ │ ├── LatinExtendedA.js │ │ │ │ │ │ │ ├── LatinExtendedB.js │ │ │ │ │ │ │ ├── LetterlikeSymbols.js │ │ │ │ │ │ │ ├── Main.js │ │ │ │ │ │ │ └── MathOperators.js │ │ │ │ │ │ └── Regular │ │ │ │ │ │ │ ├── BasicLatin.js │ │ │ │ │ │ │ ├── CombDiacritMarks.js │ │ │ │ │ │ │ ├── GeometricShapes.js │ │ │ │ │ │ │ ├── GreekAndCoptic.js │ │ │ │ │ │ │ ├── LatinExtendedA.js │ │ │ │ │ │ │ ├── LatinExtendedB.js │ │ │ │ │ │ │ ├── LetterlikeSymbols.js │ │ │ │ │ │ │ ├── Main.js │ │ │ │ │ │ │ ├── MathOperators.js │ │ │ │ │ │ │ ├── MiscSymbols.js │ │ │ │ │ │ │ ├── SpacingModLetters.js │ │ │ │ │ │ │ └── SuppMathOperators.js │ │ │ │ │ │ ├── Math │ │ │ │ │ │ ├── BoldItalic │ │ │ │ │ │ │ └── Main.js │ │ │ │ │ │ └── Italic │ │ │ │ │ │ │ └── Main.js │ │ │ │ │ │ ├── SansSerif │ │ │ │ │ │ ├── Bold │ │ │ │ │ │ │ ├── BasicLatin.js │ │ │ │ │ │ │ ├── CombDiacritMarks.js │ │ │ │ │ │ │ ├── Main.js │ │ │ │ │ │ │ └── Other.js │ │ │ │ │ │ ├── Italic │ │ │ │ │ │ │ ├── BasicLatin.js │ │ │ │ │ │ │ ├── CombDiacritMarks.js │ │ │ │ │ │ │ ├── Main.js │ │ │ │ │ │ │ └── Other.js │ │ │ │ │ │ └── Regular │ │ │ │ │ │ │ ├── BasicLatin.js │ │ │ │ │ │ │ ├── CombDiacritMarks.js │ │ │ │ │ │ │ ├── Main.js │ │ │ │ │ │ │ └── Other.js │ │ │ │ │ │ ├── Script │ │ │ │ │ │ └── Regular │ │ │ │ │ │ │ ├── BasicLatin.js │ │ │ │ │ │ │ └── Main.js │ │ │ │ │ │ ├── Size1 │ │ │ │ │ │ └── Regular │ │ │ │ │ │ │ └── Main.js │ │ │ │ │ │ ├── Size2 │ │ │ │ │ │ └── Regular │ │ │ │ │ │ │ └── Main.js │ │ │ │ │ │ ├── Size3 │ │ │ │ │ │ └── Regular │ │ │ │ │ │ │ └── Main.js │ │ │ │ │ │ ├── Size4 │ │ │ │ │ │ └── Regular │ │ │ │ │ │ │ └── Main.js │ │ │ │ │ │ ├── Typewriter │ │ │ │ │ │ └── Regular │ │ │ │ │ │ │ ├── BasicLatin.js │ │ │ │ │ │ │ ├── CombDiacritMarks.js │ │ │ │ │ │ │ ├── Main.js │ │ │ │ │ │ │ └── Other.js │ │ │ │ │ │ ├── fontdata-extra.js │ │ │ │ │ │ └── fontdata.js │ │ │ │ │ └── jax.js │ │ │ ├── async-2.5.0.min.js │ │ │ ├── async.min.map │ │ │ ├── bootstrap-3.3.7.min.js │ │ │ ├── canvas2image.js │ │ │ ├── colorpicker.js │ │ │ ├── fingerprint2-1.5.1.min.js │ │ │ ├── html2canvas.js │ │ │ ├── jquery-3.1.1.min.js │ │ │ ├── jquery-ui-1.12.1.min.js │ │ │ ├── jspdf_1_3_3.min.js │ │ │ ├── logger.js │ │ │ ├── plotly-1.30.1.min.js │ │ │ └── waiting_dialog.js │ │ ├── ganalytics.js │ │ ├── historyManager.js │ │ ├── htmlControls.js │ │ ├── infoPanel.js │ │ ├── master_page.js │ │ ├── outputPanels │ │ │ ├── outputPanel.js │ │ │ └── wfOutputPanel.js │ │ ├── plots │ │ │ ├── agnPlot.js │ │ │ ├── confidencePlot.js │ │ │ ├── covariancePlot.js │ │ │ ├── dynSpPlot.js │ │ │ ├── fitPlot.js │ │ │ ├── freqRangePlot.js │ │ │ ├── lcPlot.js │ │ │ ├── pdsPlot.js │ │ │ ├── pgPlot.js │ │ │ ├── phPlot.js │ │ │ ├── phaseLagPlot.js │ │ │ ├── plot.js │ │ │ ├── plotWithSettings.js │ │ │ ├── plotter.js │ │ │ ├── profilePlot.js │ │ │ ├── pulseSearchPlot.js │ │ │ ├── rmsPlot.js │ │ │ └── timingPlot.js │ │ ├── projectConfig.js │ │ ├── schema.js │ │ ├── selectors │ │ │ ├── binSelector.js │ │ │ ├── fileSelector.js │ │ │ ├── modelSelector.js │ │ │ └── sliderSelector.js │ │ ├── service.js │ │ ├── tabPanels │ │ │ ├── agnTabpanel.js │ │ │ ├── fitTabpanel.js │ │ │ ├── pgTabpanel.js │ │ │ ├── phTabpanel.js │ │ │ ├── settingsTabpanel.js │ │ │ ├── tabpanel.js │ │ │ ├── wfTabpanel.js │ │ │ └── xsTabpanel.js │ │ ├── toolpanel.js │ │ └── version.js │ └── styles │ │ ├── external │ │ ├── bootstrap-3.3.7.min.css │ │ ├── bootstrap-theme-3.3.7.min.css │ │ ├── bootstrap-theme.min.css.map │ │ ├── bootstrap.min.css.map │ │ ├── colorpicker.css │ │ ├── images │ │ │ ├── blank.gif │ │ │ ├── colorpicker_background.png │ │ │ ├── colorpicker_hex.png │ │ │ ├── colorpicker_hsb_b.png │ │ │ ├── colorpicker_hsb_h.png │ │ │ ├── colorpicker_hsb_s.png │ │ │ ├── colorpicker_indic.gif │ │ │ ├── colorpicker_overlay.png │ │ │ ├── colorpicker_rgb_b.png │ │ │ ├── colorpicker_rgb_g.png │ │ │ ├── colorpicker_rgb_r.png │ │ │ ├── colorpicker_select.gif │ │ │ ├── colorpicker_submit.png │ │ │ ├── custom_background.png │ │ │ ├── custom_hex.png │ │ │ ├── custom_hsb_b.png │ │ │ ├── custom_hsb_h.png │ │ │ ├── custom_hsb_s.png │ │ │ ├── custom_indic.gif │ │ │ ├── custom_rgb_b.png │ │ │ ├── custom_rgb_g.png │ │ │ ├── custom_rgb_r.png │ │ │ ├── custom_submit.png │ │ │ ├── select.png │ │ │ ├── select2.png │ │ │ ├── ui-bg_flat_0_aaaaaa_40x100.png │ │ │ ├── ui-icons_444444_256x240.png │ │ │ ├── ui-icons_555555_256x240.png │ │ │ ├── ui-icons_777620_256x240.png │ │ │ ├── ui-icons_777777_256x240.png │ │ │ ├── ui-icons_cc0000_256x240.png │ │ │ └── ui-icons_ffffff_256x240.png │ │ ├── jquery-ui-1.12.1.min.css │ │ └── sb-admin-theme.css │ │ └── master_page.css │ └── templates │ ├── error.html │ ├── includes │ ├── nav_bar.html │ ├── output_panel.html │ ├── tab_panel.html │ └── tool_panel.html │ ├── master_page.html │ └── splash_page.html └── test ├── python └── test │ ├── __init__.py │ ├── fixture.py │ ├── model │ ├── __init__.py │ ├── test_column.py │ ├── test_dataset.py │ └── test_table.py │ └── utils │ ├── __init__.py │ ├── test_dataset_helper.py │ ├── test_dave_engine.py │ ├── test_dave_reader.py │ ├── test_file_utils.py │ └── test_filters_helper.py └── resources ├── datasets ├── Input1.txt ├── Input2.txt ├── Input3.txt ├── Input_funnycolor.txt ├── Input_funnycolor_selectcolor.txt ├── Input_funnycolor_selecttime.txt ├── Input_reorderedcolor.txt ├── Input_withcolor.txt ├── PN_source_lightcurve_raw.lc ├── bulk_example.txt ├── gen_colordata.py ├── in.txt ├── std1_ao9_01_01.lc ├── std2_ao9_01_00.lc └── test.evt ├── images ├── testimage1.jpg ├── testimage1.png └── testimage2.png ├── notebooks └── GenColorData.ipynb ├── pytest ├── PN_source_lightcurve_raw.lc ├── Test_Input_1.txt ├── Test_Input_2.lc ├── test.evt └── test_Gtis.evt └── python_examples ├── 3D.py ├── load.py ├── test1.py ├── test2.py └── testing_fits.py /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | work* 3 | build 4 | __pycache__ 5 | flaskserver.log 6 | *.log 7 | *.pyc 8 | *.p 9 | *.nc 10 | .cache 11 | .hypothesis 12 | -------------------------------------------------------------------------------- /.pep8speaks.yml: -------------------------------------------------------------------------------- 1 | pycodestyle: 2 | max-line-length: 120 3 | ignore: # Errors and warnings to ignore 4 | - W391 # trailing empty lines. More a test than anything else, can be removed. 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DAVE 2 | 3 | DAVE stands for Data Analysis of Variable Events, which is a GUI built on top of 4 | the [Stingray library](https://github.com/StingraySoftware/stingray). It is 5 | intended to be used by astronomers for time-series analysis in general, and 6 | analysis of variable sources in particular. 7 | 8 | The goal is to enable scientific exploration of astronomical X-Ray 9 | observations and to analyse this data in a graphical environment. 10 | 11 | 12 | ## Get Started 13 | 14 | * Clone the project `$ git clone https://github.com/StingraySoftware/dave` 15 | * Install a Python virtual env and a compatible version of node: `$ source setup/setup.bash` 16 | * Run the application for development: `$ setup/run_gui.bash` 17 | * Or run the build script for Linux_X64 `$ setup/build_linux-x64.bash` for getting the distributable at DAVE build folder. 18 | 19 | You will see that there's plenty left to do! 20 | 21 | NOTE: Mac OSX dependencies 22 | * At least Homebrew installed (http://brew.sh/) or MacPorts installed (https://www.macports.org) 23 | * If MacPorts will be used, you have two available options: 24 | * 1 - Install LibMagic by yourself running this MacPorts command `sudo /opt/local/bin/port install file` on the terminal and then launch DAVE running `DAVEApp.app/Contents/MacOS/DAVEApp`. 25 | * 2 - Launch DAVE as root running this command on the terminal: `sudo DAVEApp.app/Contents/MacOS/DAVEApp` 26 | 27 | 28 | ## Contribute 29 | 30 | Please talk to us! We use Slack to discuss the work. Use http://slack-invite.timelabtechnologies.com to self-invite yourself on the slack. Also, feel free to contact us at info@timelabtechnologies.com . 31 | 32 | The recorded open issues for DAVE are in [JIRA](https://timelabdev.com/jira/projects/DAVE). More information about communication in the project can be found in [Confluence](https://timelabdev.com/wiki/display/DAVE/Source+code+and+communication). 33 | 34 | Fork and pull request away! 35 | -------------------------------------------------------------------------------- /contributors.txt: -------------------------------------------------------------------------------- 1 | Danish Sodhi dsodhi95@gmail.com 2 | Paul Balm paul@timelabtechnologies.com 3 | Ricardo Valles rvallesblanco@gmail.com 4 | -------------------------------------------------------------------------------- /setup/build_MacOS.bash: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | BUILD_NAME=DAVEApp-darwin-x64 4 | BUILD_FOLDER=build/$BUILD_NAME 5 | 6 | #Gets the date from git of latest commit on local branch 7 | COMMIT_HASH=$(git log -n 1 --pretty=format:"%H") 8 | BUILD_DATE=$(git show -s --format=%ci $COMMIT_HASH) 9 | if [[ -z "${BUILD_NUMBER}" ]]; then 10 | BUILD_VERSION="$BUILD_DATE-$COMMIT_HASH" 11 | else 12 | BUILD_VERSION="$JOB_NAME-build$BUILD_NUMBER" 13 | fi 14 | 15 | rm -rf $BUILD_FOLDER 16 | rm -f build/$BUILD_NAME.zip 17 | 18 | cd src/main/js/electron 19 | # Construct a version to be whatever is in the package.json + the build info. Revert to original version first in case this script is run twice. 20 | git checkout -- package.json 21 | NPM_VERSION=$(cat package.json | jq '.version' | sed 's/"//g')"-"$(echo $BUILD_VERSION | sed 's/[_-+ ]//g') 22 | # Update the version in the package.json. 23 | cat package.json | jq --arg VERSION $NPM_VERSION 'to_entries | map(if .key == "version" then . + {"value": $VERSION} else . end ) | from_entries' > package.json.tmp 24 | mv package.json.tmp package.json 25 | npm run build-darwin 26 | retVal=$? 27 | if [[ retVal -ne 0 ]] ; then 28 | rm $MINICONDA 29 | echo "npm build failed" 30 | return 1 31 | fi 32 | 33 | cd - 34 | 35 | \cp setup/config/deply_darwin_config.js $BUILD_FOLDER/DAVEApp.app/Contents/Resources/app/config.js 36 | mkdir $BUILD_FOLDER/DAVEApp.app/dave 37 | \cp -r src/main/resources $BUILD_FOLDER/DAVEApp.app/dave/resources 38 | \cp -r src/main/python $BUILD_FOLDER/DAVEApp.app/dave/python 39 | \cp -r work/stingray/requirements.txt $BUILD_FOLDER/DAVEApp.app/dave/python 40 | rm -f $BUILD_FOLDER/DAVEApp.app/dave/python/*.log 41 | rm -f $BUILD_FOLDER/DAVEApp.app/dave/python/uploadeddataset/* 42 | find $BUILD_FOLDER/DAVEApp.app/dave/python -name tests -exec rm -rf '{}' \; 43 | find $BUILD_FOLDER/DAVEApp.app/dave/python -name __pycache__ -exec rm -rf '{}' \; 44 | \cp -r setup/environment.yml $BUILD_FOLDER/DAVEApp.app/dave/ 45 | echo "$BUILD_DATE" > $BUILD_FOLDER/DAVEApp.app/dave/resources/version.txt 46 | echo "BUILD_VERSION='$BUILD_VERSION';" > $BUILD_FOLDER/DAVEApp.app/dave/resources/static/scripts/version.js 47 | echo "COMMIT_HASH='$COMMIT_HASH';" >> $BUILD_FOLDER/DAVEApp.app/dave/resources/static/scripts/version.js 48 | 49 | cd build 50 | zip -r $BUILD_NAME.zip $BUILD_NAME 51 | cd - 52 | 53 | echo "MacOS Build Success! Version: $BUILD_VERSION , Date: $BUILD_DATE" 54 | -------------------------------------------------------------------------------- /setup/build_linux-x64.bash: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | BUILD_NAME=DAVEApp-linux-x64 4 | BUILD_FOLDER=build/$BUILD_NAME 5 | 6 | #Gets the date from git of latest commit on local branch 7 | COMMIT_HASH=$(git log -n 1 --pretty=format:"%H") 8 | BUILD_DATE=$(git show -s --format=%ci $COMMIT_HASH) 9 | if [[ -z "${BUILD_NUMBER}" ]]; then 10 | BUILD_VERSION="$BUILD_DATE-$COMMIT_HASH" 11 | else 12 | BUILD_VERSION="$JOB_NAME-build$BUILD_NUMBER" 13 | fi 14 | 15 | rm -rf $BUILD_FOLDER 16 | rm -f build/$BUILD_NAME.zip 17 | 18 | cd src/main/js/electron 19 | # Construct a version to be whatever is in the package.json + the build info. Revert to original package.json first in case script is run more than once. 20 | git checkout -- package.json 21 | NPM_VERSION=$(cat package.json | jq '.version' | sed 's/"//g')"-"$(echo $BUILD_VERSION | sed 's/[_-+ ]//g') 22 | # Update the version in the package.json. 23 | cat package.json | jq --arg VERSION $NPM_VERSION 'to_entries | map(if .key == "version" then . + {"value": $VERSION} else . end ) | from_entries' > package.json.tmp 24 | mv package.json.tmp package.json 25 | npm run build-linux 26 | retVal=$? 27 | if [[ retVal -ne 0 ]] ; then 28 | rm $MINICONDA 29 | echo "npm build failed" 30 | return 1 31 | fi 32 | 33 | cd - 34 | 35 | \cp setup/config/deply_linux_config.js $BUILD_FOLDER/resources/app/config.js 36 | \cp -r src/main/resources src/main/python $BUILD_FOLDER/resources 37 | \cp -r work/stingray/requirements.txt $BUILD_FOLDER/resources/python 38 | rm -f $BUILD_FOLDER/resources/python/*.log 39 | rm -f $BUILD_FOLDER/resources/python/uploadeddataset/* 40 | find $BUILD_FOLDER/resources/python -name tests -exec rm -rf '{}' \; 41 | find $BUILD_FOLDER/resources/python -name __pycache__ -exec rm -rf '{}' \; 42 | \cp -r setup/environment.yml $BUILD_FOLDER/resources 43 | echo "$BUILD_DATE" > $BUILD_FOLDER/resources/resources/version.txt 44 | echo "BUILD_VERSION='$BUILD_VERSION';" > $BUILD_FOLDER/resources/resources/static/scripts/version.js 45 | echo "COMMIT_HASH='$COMMIT_HASH';" >> $BUILD_FOLDER/resources/resources/static/scripts/version.js 46 | 47 | cd build 48 | zip -r $BUILD_NAME.zip $BUILD_NAME 49 | cd - 50 | 51 | echo "Linux-x64 Build Success! Version: $BUILD_VERSION , Date: $BUILD_DATE" 52 | -------------------------------------------------------------------------------- /setup/config/deply_darwin_config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | environment : { 3 | enabled : 'true', 4 | path : '../../../dave/resources/bash/activate_and_launch.bash' 5 | }, 6 | python : { 7 | enabled : 'false', 8 | path : '../resources/python/server.py', 9 | url : 'http://localhost:5000' 10 | }, 11 | logDebugMode : 'false', 12 | logsPath : '$HOME/.dave/flaskserver.log', 13 | splash_path : '/../../../dave/resources/templates/splash_page.html' 14 | }; 15 | -------------------------------------------------------------------------------- /setup/config/deply_linux_config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | environment : { 3 | enabled : 'true', 4 | path : '../resources/bash/activate_and_launch.bash' 5 | }, 6 | python : { 7 | enabled : 'false', 8 | path : '../resources/python/server.py', 9 | url : 'http://localhost:5000' 10 | }, 11 | logDebugMode : 'false', 12 | logsPath : '$HOME/.dave/flaskserver.log', 13 | splash_path : '/../resources/templates/splash_page.html' 14 | }; 15 | -------------------------------------------------------------------------------- /setup/environment.yml: -------------------------------------------------------------------------------- 1 | name: dave 2 | dependencies: 3 | - flask=0.10.1=py35_1 4 | - jinja2=2.8=py35_0 5 | - numpy=1.11.0=py35_0 6 | - llvmlite=0.20.0 7 | - numba=0.35.0 8 | - pip=8.1.1=py35_1 9 | - python=3.5.1=0 10 | - werkzeug=0.11.9=py35_0 11 | - pytest=3.0.5 12 | - gevent=1.2.1 13 | - pip: 14 | - astropy==1.2.1 15 | - requests==2.10.0 16 | - flask-session==0.3.0 17 | - hypothesis==3.4.2 18 | - python-magic==0.4.12 19 | - pylru==1.0.4 20 | -------------------------------------------------------------------------------- /setup/run_gui.bash: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd src/main/js/electron 4 | 5 | npm start 6 | 7 | cd - 8 | -------------------------------------------------------------------------------- /src/main/js/electron/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | uploadeddataset 3 | templates/ 4 | README.md 5 | -------------------------------------------------------------------------------- /src/main/js/electron/config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | environment : { 3 | enabled : 'true', 4 | path : '../../resources/bash/activate_and_launch_dev.bash' 5 | }, 6 | python : { 7 | enabled : 'true', 8 | path : '../../python/server.py', 9 | url : 'http://localhost:5000' 10 | }, 11 | logDebugMode : 'true', 12 | logsPath : '/tmp/flaskserver.log', 13 | splash_path : '/../../resources/templates/splash_page.html' 14 | }; 15 | -------------------------------------------------------------------------------- /src/main/js/electron/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "DAVE", 3 | "description": "Data Analysis for Variable Events", 4 | "author": "Timelab Technologies Ltd.", 5 | "version": "1.0.0", 6 | "license": "Apache-2.0", 7 | "repository": "https://github.com/StingraySoftware/dave", 8 | "main": "main.js", 9 | "scripts": { 10 | "start": "electron .", 11 | "build-linux": "electron-packager . DAVEApp --platform=linux --arch=x64 --prune=true --icon ../../resources/static/img/icon/512x512.png --overwrite --out ../../../../build", 12 | "build-darwin": "electron-packager . DAVEApp --platform=darwin --arch=x64 --prune=true --icon ../../resources/static/img/icon.icns --overwrite --out ../../../../build" 13 | }, 14 | "dependencies": { 15 | "config-js": "^1.1.9", 16 | "electron-packager": "^10.1.1", 17 | "menu": "^0.2.5", 18 | "request": "^2.79.0", 19 | "request-promise": "*" 20 | }, 21 | "devDependencies": { 22 | "electron": "^1.7.10" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/python/.gitignore: -------------------------------------------------------------------------------- 1 | uploadeddataset/ 2 | astropy_helpers/ 3 | stingray/ 4 | hendrics/ 5 | -------------------------------------------------------------------------------- /src/main/python/config.py: -------------------------------------------------------------------------------- 1 | # config.py 2 | import json 3 | 4 | class CONFIG: 5 | IS_LOCAL_SERVER = True # If False consider that uploaded files are relatives and can have dangerous paths. 6 | DEBUG_MODE = True # If True the server will run on Debug mode 7 | BIG_NUMBER = 9999999999999 8 | PRECISION = 6 # Precision of the data returned by the server 9 | LOG_TO_SERVER_ENABLED = True 10 | LOG_LEVEL = -1 # ALL = -1, DEBUG = 0, INFO = 1, WARN = 2, ERROR = 3, NONE = 4 11 | USE_JAVASCRIPT_CACHE = False # If true, DAVE GUI will try to get js files from browser cache. Use False for development environments 12 | PYTHON_CACHE_SIZE = 32 # The maximun number of items to store in the LRU cache 13 | MAX_PLOT_POINTS = 1000 # The maximun number of elements to return in a JSON NDARRAY 14 | TIME_COLUMN='TIME' # Represents the Time column name 15 | EVENTS_STRING='EVENTS,XTE_SE,XTE_SA' # Supported EVENTS HDU names 16 | GTI_STRING='GTI,STDGTI,STDGTI04,SRC_GTIS,BKG_GTIS' # Supported GTI HDU names 17 | FRACEXP_LIMIT=0.5 # Minimum exposure fraction allowed 18 | 19 | def set_config(config): 20 | 21 | CONFIG.IS_LOCAL_SERVER = config['IS_LOCAL_SERVER'] 22 | CONFIG.LOG_TO_SERVER_ENABLED = config['LOG_TO_SERVER_ENABLED'] 23 | CONFIG.LOG_LEVEL = int(config['LOG_LEVEL']) 24 | CONFIG.MAX_PLOT_POINTS = int(config['MAX_PLOT_POINTS']) 25 | CONFIG.TIME_COLUMN = config['TIME_COLUMN'] 26 | CONFIG.EVENTS_STRING = config['EVENTS_STRING'] 27 | CONFIG.GTI_STRING = config['GTI_STRING'] 28 | CONFIG.FRACEXP_LIMIT = float(config['FRACEXP_LIMIT']) 29 | CONFIG.PRECISION = int(config['SERVER_DATA_PRECISION']) 30 | 31 | return "IS_LOCAL_SERVER: " + str(CONFIG.IS_LOCAL_SERVER) \ 32 | + ", DEBUG_MODE: " + str(CONFIG.DEBUG_MODE) \ 33 | + ", LOG_TO_SERVER_ENABLED: " + str(CONFIG.LOG_TO_SERVER_ENABLED) \ 34 | + ", LOG_LEVEL: " + str(CONFIG.LOG_LEVEL) \ 35 | + ", BIG_NUMBER: " + str(CONFIG.BIG_NUMBER) \ 36 | + ", MAX_PLOT_POINTS: " + str(CONFIG.MAX_PLOT_POINTS) \ 37 | + ", PRECISION: " + str(CONFIG.PRECISION) \ 38 | + ", TIME_COLUMN: " + str(CONFIG.TIME_COLUMN) \ 39 | + ", EVENTS_STRING: " + str(CONFIG.EVENTS_STRING) \ 40 | + ", GTI_STRING: " + str(CONFIG.GTI_STRING) \ 41 | + ", FRACEXP_LIMIT: " + str(CONFIG.FRACEXP_LIMIT) \ 42 | + ", USE_JAVASCRIPT_CACHE: " + str(CONFIG.USE_JAVASCRIPT_CACHE) 43 | -------------------------------------------------------------------------------- /src/main/python/model/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/python/model/__init__.py -------------------------------------------------------------------------------- /src/main/python/model/column.py: -------------------------------------------------------------------------------- 1 | import copy 2 | import numbers 3 | import numpy as np 4 | 5 | class Column: 6 | id = "" 7 | values = [] 8 | error_values = [] 9 | has_error_values = False 10 | extra = None 11 | 12 | def __init__(self, id): 13 | self.id = id 14 | self.values = [] 15 | self.error_values = [] 16 | 17 | def get_schema(self): 18 | if not self.has_extra("FAKE_COLUMN"): 19 | schema = dict() 20 | schema["id"] = self.id 21 | self.add_list_to_schema("", self.values, schema) 22 | #self.add_list_to_schema("error_", self.error_values, schema) 23 | return schema 24 | else: 25 | return None 26 | 27 | def add_list_to_schema(self, list_prefix, dlist, schema): 28 | count = len(dlist) 29 | if (count > 0 and isinstance(dlist[0], numbers.Number)): 30 | schema[list_prefix + "count"] = count 31 | schema[list_prefix + "min_value"] = min(dlist) 32 | schema[list_prefix + "max_value"] = max(dlist) 33 | else: 34 | schema[list_prefix + "count"] = 0 35 | schema[list_prefix + "min_value"] = 0 36 | schema[list_prefix + "max_value"] = 0 37 | return schema 38 | 39 | def clone(self, with_values=True): 40 | column = Column(self.id) 41 | if with_values: 42 | column.values = list(self.values) 43 | column.error_values = list(self.error_values) 44 | if self.extra: 45 | column.extra = dict(self.extra) 46 | return column 47 | 48 | def get_value(self, index): 49 | if index >= 0 and index < len(self.values): 50 | return self.values[index] 51 | else: 52 | return None 53 | 54 | def get_values(self, indexes=None): 55 | if indexes is None: 56 | return self.values, self.error_values 57 | else: 58 | values = np.array(self.values)[indexes] 59 | error_values = None 60 | if len(self.error_values): 61 | error_values = np.array(self.error_values)[indexes] 62 | return values, error_values 63 | 64 | def get_error_value(self, index): 65 | if self.has_error_values: 66 | if index >= 0 and index < len(self.error_values): 67 | return self.error_values[index] 68 | else: 69 | return None 70 | else: 71 | return 0 72 | 73 | def add_value(self, value, error=None): 74 | if error is None: 75 | self.add_values([value]) 76 | else: 77 | self.add_values([value], [error]) 78 | 79 | def add_values(self, values, errors=None): 80 | self.values.extend(values) 81 | self.has_error_values = not (errors is None) 82 | if self.has_error_values: 83 | self.error_values.extend(errors) 84 | 85 | def set_extra(self, key, value): 86 | if self.extra is None: 87 | self.extra = dict() 88 | self.extra[key] = value 89 | 90 | def get_extra(self, key): 91 | if not (self.extra is None) and key in self.extra: 92 | return self.extra[key] 93 | else: 94 | return None 95 | 96 | def has_extra(self, key): 97 | return not (self.extra is None) and key in self.extra 98 | 99 | def clear(self): 100 | self.values = [] 101 | self.error_values = [] 102 | self.has_error_values = False; 103 | self.extra = None 104 | -------------------------------------------------------------------------------- /src/main/python/model/table.py: -------------------------------------------------------------------------------- 1 | from model.column import Column 2 | import numpy as np 3 | import utils.dave_logger as logging 4 | 5 | 6 | class Table: 7 | id = "" 8 | header = dict() 9 | header_comments = dict() 10 | columns = dict() 11 | 12 | def __init__(self, id): 13 | self.id = id 14 | self.columns = dict() 15 | 16 | def add_columns(self, column_names): 17 | for i in range(len(column_names)): 18 | self.columns[column_names[i]] = Column(column_names[i]) 19 | 20 | def set_header_info(self, header, header_comments): 21 | self.header = header 22 | self.header_comments = header_comments 23 | 24 | def get_header(self): 25 | return self.header 26 | 27 | def get_schema(self): 28 | schema = dict() 29 | schema["HEADER"] = self.header 30 | schema["HEADER_COMMENTS"] = self.header_comments 31 | for column_name in self.columns: 32 | column_shema = self.columns[column_name].get_schema() 33 | if not (column_shema is None): 34 | schema[column_name] = column_shema 35 | return schema 36 | 37 | def clone(self, with_values=True): 38 | table = Table(self.id) 39 | table.header = self.header 40 | table.header_comments = self.header_comments 41 | for column_name in self.columns: 42 | table.columns[column_name] = self.columns[column_name].clone(with_values) 43 | return table 44 | 45 | def apply_filter(self, filter): 46 | column_name = filter["column"] 47 | if column_name not in self.columns: 48 | logging.error("table.apply_filter wrong column: %s" % column_name) 49 | return self 50 | 51 | if filter["from"] > filter["to"]: 52 | logging.error("table.apply_filter wrong from-to: %s" % column_name) 53 | return self 54 | 55 | filtered_table = Table(self.id) 56 | for tmp_column_name in self.columns: 57 | filtered_table.columns[tmp_column_name] = Column(tmp_column_name) 58 | 59 | column = self.columns[column_name] 60 | 61 | values = np.array(column.values) 62 | filtered_indexes = np.where((values >= filter["from"]) & (values <= filter["to"]))[0] 63 | 64 | for column_name in self.columns: 65 | col_values, col_error_values = self.columns[column_name].get_values(filtered_indexes) 66 | filtered_table.columns[column_name].add_values(col_values, col_error_values) 67 | 68 | return filtered_table 69 | 70 | def get_row(self, index): 71 | row = dict() 72 | for column_name in self.columns: 73 | column = self.columns[column_name] 74 | row[column_name] = dict() 75 | row[column_name]["value"] = column.get_value(index) 76 | row[column_name]["error_value"] = column.get_error_value(index) 77 | return row 78 | 79 | def add_row(self, row): 80 | for column_name in row: 81 | value = row[column_name]["value"] 82 | error = row[column_name]["error_value"] 83 | self.columns[column_name].add_value(value, error) 84 | 85 | def join(self, table): 86 | res_table = self.clone(True) 87 | for column_name in table.columns: 88 | col_values, col_error_values = table.columns[column_name].get_values() 89 | res_table.columns[column_name].add_values(col_values, col_error_values) 90 | return res_table 91 | -------------------------------------------------------------------------------- /src/main/python/utils/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/python/utils/__init__.py -------------------------------------------------------------------------------- /src/main/python/utils/dataset_cache.py: -------------------------------------------------------------------------------- 1 | import hashlib 2 | import utils.exception_helper as ExHelper 3 | from random import randint 4 | from config import CONFIG 5 | import pylru 6 | 7 | cached_datasets = pylru.lrucache(CONFIG.PYTHON_CACHE_SIZE) 8 | 9 | # DATASET CACHE METHODS 10 | def add(key, dataset): 11 | try: 12 | cached_datasets[key] = dataset 13 | except: 14 | logging.error(ExHelper.getException('dataset_cache.add')) 15 | 16 | def contains(key): 17 | try: 18 | return key in cached_datasets 19 | except: 20 | logging.error(ExHelper.getException('dataset_cache.contains')) 21 | return False 22 | 23 | def get(key): 24 | try: 25 | if contains(key): 26 | return cached_datasets[key] 27 | except: 28 | logging.error(ExHelper.getException('dataset_cache.get')) 29 | 30 | return None 31 | 32 | 33 | def remove(key): 34 | try: 35 | if contains(key): 36 | del cached_datasets[key] 37 | return True 38 | except: 39 | logging.error(ExHelper.getException('dataset_cache.remove')) 40 | 41 | return False 42 | 43 | 44 | def remove_with_prefix(key_prefix): 45 | try: 46 | remove_keys = [] 47 | for key in cached_datasets.keys(): 48 | if key.startswith(key_prefix): 49 | remove_keys.append(key) 50 | for key in remove_keys: 51 | remove(key) 52 | except: 53 | logging.error(ExHelper.getException('dataset_cache.remove_with_prefix')) 54 | 55 | 56 | def get_key(value, strict=False): 57 | try: 58 | m = hashlib.md5() 59 | if strict: 60 | m.update(str(value).encode('utf-8')) 61 | else: 62 | m.update(str(value + str(randint(0,99999))).encode('utf-8')) 63 | ugly_key = str(m.digest()) 64 | return "".join(e for e in ugly_key if e.isalnum()) 65 | except: 66 | logging.error(ExHelper.getException('dataset_cache.remove_with_prefix')) 67 | 68 | return "" 69 | 70 | def count(): 71 | return len(cached_datasets) 72 | 73 | def clear(): 74 | cached_datasets.clear() 75 | -------------------------------------------------------------------------------- /src/main/python/utils/dave_logger.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import utils.gevent_helper as GeHelper 3 | from datetime import datetime 4 | from config import CONFIG 5 | 6 | # LOGGING WRAPPED METHODS 7 | # ALL = -1, DEBUG = 0, INFO = 1, WARN = 2, ERROR = 3, NONE = 4 8 | 9 | def debug(obj): 10 | if CONFIG.LOG_LEVEL <= 0: 11 | logging.debug(obj) 12 | log_to_server("DEBUG: " + str(obj)) 13 | 14 | 15 | def info(obj): 16 | if CONFIG.LOG_LEVEL <= 1: 17 | logging.info(obj) 18 | log_to_server("INFO: " + str(obj)) 19 | 20 | 21 | def warn(obj): 22 | if CONFIG.LOG_LEVEL <= 2: 23 | logging.warning(obj) 24 | log_to_server("WARN: " + str(obj)) 25 | 26 | 27 | def error(obj): 28 | if CONFIG.LOG_LEVEL <= 3: 29 | logging.error(obj) 30 | log_to_server("ERROR: " + str(obj)) 31 | 32 | 33 | # User GeHelper to send msg to client 34 | def log_to_server(msg): 35 | if CONFIG.LOG_TO_SERVER_ENABLED: 36 | GeHelper.publish(msg) 37 | -------------------------------------------------------------------------------- /src/main/python/utils/exception_helper.py: -------------------------------------------------------------------------------- 1 | 2 | import sys 3 | import inspect 4 | 5 | def print_full_stack(): 6 | print ('Traceback (most recent call last):') 7 | for item in reversed(inspect.stack()[2:]): 8 | print (' File "{1}", line {2}, in {3}\n'.format(*item)), 9 | for line in item[4]: 10 | print (' ' + line.lstrip()), 11 | for item in inspect.trace(): 12 | print (' File "{1}", line {2}, in {3}\n'.format(*item)), 13 | for line in item[4]: 14 | print (' ' + line.lstrip()), 15 | 16 | def getException(method_name): 17 | exc_type, exc_obj, tb = sys.exc_info() 18 | f = tb.tb_frame 19 | lineno = tb.tb_lineno 20 | filename = f.f_code.co_filename 21 | 22 | print ('EXCEPTION {} IN ({}, LINE {}): {}'.format(method_name, filename, lineno, exc_obj)) 23 | print_full_stack() 24 | 25 | return 'EXCEPTION {} IN ({}, LINE {}): {}'.format(method_name, filename, lineno, exc_obj) 26 | 27 | def getWarnMsg(): 28 | return str(sys.exc_info()[1]) 29 | -------------------------------------------------------------------------------- /src/main/python/utils/file_utils.py: -------------------------------------------------------------------------------- 1 | 2 | import os 3 | import magic 4 | import utils.dave_logger as logging 5 | import utils.exception_helper as ExHelper 6 | from shutil import copyfile 7 | from werkzeug import secure_filename 8 | from config import CONFIG 9 | 10 | 11 | def get_destination(target, filename): 12 | try: 13 | if CONFIG.IS_LOCAL_SERVER: 14 | if filename.startswith('/') and os.path.isfile(filename): 15 | # This is supposed to be an absolute path 16 | return filename 17 | else: 18 | # Relative path 19 | return "/".join([target, filename]) 20 | else: 21 | return "/".join([target, secure_filename(filename)]) 22 | except: 23 | logging.error(ExHelper.getException('get_destination')) 24 | return "" 25 | 26 | def file_exist(target, filename): 27 | return os.path.isfile(get_destination(target, filename)) 28 | 29 | def is_valid_file(destination): 30 | try: 31 | if not destination or not os.path.isfile(destination): 32 | return False 33 | 34 | ext = magic.from_file(destination) 35 | 36 | base=os.path.basename(destination) 37 | file_extension = os.path.splitext(base)[1] 38 | 39 | return (ext.find("ASCII") == 0) \ 40 | or (ext.find("FITS") == 0) \ 41 | or (ext.find("gzip") > -1) \ 42 | or ((ext == "data") and (file_extension in [".p", ".nc"])) 43 | except: 44 | return False 45 | 46 | # save_file: Upload a data file to the Flask server path 47 | # Only called if not IS_LOCAL_SERVER 48 | # @param: file: file to upload 49 | # @param: target: folder name for upload destination 50 | # 51 | def save_file(target, file): 52 | 53 | logging.debug("save_file: %s - %s" % (type(file), file)) 54 | 55 | if not os.path.isdir(target): 56 | os.mkdir(target) 57 | 58 | destination = get_destination(target, file.filename) 59 | file.save(destination) 60 | 61 | return destination 62 | 63 | 64 | # get_intermediate_filename: Upload a data file to the Flask server path 65 | # 66 | # @param: filepath: file to upload 67 | # @param: target: folder name for upload destination 68 | # 69 | def get_intermediate_filename(target, filepath, extension): 70 | 71 | if not os.path.isdir(target): 72 | os.mkdir(target) 73 | 74 | base=os.path.basename(filepath) 75 | filename = os.path.splitext(base)[0] 76 | destination = get_destination(target, filename + extension) 77 | 78 | if os.path.isfile(destination): 79 | os.remove(destination) 80 | 81 | return destination 82 | 83 | 84 | def get_files_in_dir(dirpath): 85 | return [f for f in os.listdir(dirpath) if os.path.isfile(os.path.join(dirpath, f))] 86 | -------------------------------------------------------------------------------- /src/main/python/utils/filters_helper.py: -------------------------------------------------------------------------------- 1 | import math 2 | import copy 3 | from config import CONFIG 4 | 5 | 6 | def createFilter(table, column, from_val, to_val, source=None): 7 | filter = dict() 8 | filter["table"] = table 9 | filter["column"] = column 10 | filter["from"] = from_val 11 | filter["to"] = to_val 12 | if source: 13 | filter["source"] = source 14 | return filter 15 | 16 | 17 | # Creates a filter from-to in EVENTS.TIME axis 18 | def createTimeFilter(from_val, to_val): 19 | return createFilter ("EVENTS", CONFIG.TIME_COLUMN, from_val, to_val) 20 | 21 | 22 | # Returns the filter refered to TIME from a list of filters 23 | def get_time_filter(filters): 24 | return get_named_filter(filters, CONFIG.TIME_COLUMN) 25 | 26 | 27 | # Returns the filter refered to RATE from a list of filters 28 | def get_rate_filter(filters): 29 | return get_named_filter(filters, "RATE") 30 | 31 | 32 | def get_named_filter(filters, column): 33 | for filter in filters: 34 | if filter["column"] == column: 35 | return filter 36 | 37 | return None 38 | 39 | 40 | # Returns the filters applied to a passed bin size 41 | def apply_bin_size_to_filters(filters, bin_size): 42 | 43 | time_filter = get_time_filter(filters) 44 | if time_filter: 45 | if time_filter["from"] < time_filter["to"]: 46 | time_filter["from"] = math.floor(time_filter["from"] / bin_size) * bin_size 47 | time_filter["to"] = math.ceil(time_filter["to"] / bin_size) * bin_size 48 | 49 | return filters 50 | 51 | 52 | # Returns the filters removing all color filters 53 | def get_filters_clean_color_filters(filters): 54 | return get_filters_from_color_filters(filters, None) 55 | 56 | 57 | # Returns the filters removing unmatched color filters, and renaming color_column_name by column_name 58 | def get_filters_from_color_filters(filters, color_column_name): 59 | ret_filters = [] 60 | for filter in filters: 61 | if "source" not in filter: 62 | # This filter is general dataset filter, must be appended 63 | new_filter = copy.copy(filter) 64 | ret_filters.append(new_filter) 65 | elif filter["column"] == color_column_name: 66 | new_filter = copy.copy(filter) 67 | new_filter["column"] = filter["replaceColumn"] 68 | ret_filters.append(new_filter) 69 | 70 | return ret_filters 71 | 72 | 73 | # Returns the color keys from a given filters 74 | def get_color_keys_from_filters(filters): 75 | ret_keys = [] 76 | for filter in filters: 77 | if "source" in filter: 78 | # This filter is a color filter 79 | ret_keys.append(filter["column"]) 80 | 81 | return ret_keys 82 | -------------------------------------------------------------------------------- /src/main/python/utils/gevent_helper.py: -------------------------------------------------------------------------------- 1 | # from: http://flask.pocoo.org/snippets/116/ 2 | # 3 | # THIS FILE IS FOR SENDING EVENTS TO DAVE GUI LOGGER 4 | # 5 | # Make sure your gevent version is >= 1.0 6 | import gevent 7 | from gevent.wsgi import WSGIServer 8 | from gevent.queue import Queue 9 | from flask import Response 10 | 11 | subscriptions = [] 12 | 13 | 14 | # SSE "protocol" is described here: http://mzl.la/UPFyxY 15 | class ServerSentEvent(object): 16 | 17 | def __init__(self, data): 18 | self.data = data 19 | self.event = None 20 | self.id = None 21 | self.desc_map = { 22 | self.data: "data", 23 | self.event: "event", 24 | self.id: "id" 25 | } 26 | 27 | def encode(self): 28 | if not self.data: 29 | return "" 30 | lines = ["%s: %s" % (v, k) 31 | for k, v in self.desc_map.items() if k] 32 | 33 | return "%s\n\n" % "\n".join(lines) 34 | 35 | 36 | def start(server_port, app): 37 | server = WSGIServer(("", server_port), app) 38 | try: 39 | server.serve_forever() 40 | except KeyboardInterrupt: 41 | pass 42 | finally: 43 | # Clean-up server (close socket, etc.) 44 | server.close() 45 | 46 | 47 | def subscribe(): 48 | def join(): 49 | q = Queue() 50 | subscriptions.append(q) 51 | try: 52 | while True: 53 | result = q.get() 54 | ev = ServerSentEvent(str(result)) 55 | yield ev.encode() 56 | except GeneratorExit: # Or maybe use flask signals 57 | subscriptions.remove(q) 58 | 59 | return Response(join(), mimetype="text/event-stream") 60 | 61 | 62 | def publish(message): 63 | def notify(message): 64 | for sub in subscriptions[:]: 65 | sub.put(message) 66 | 67 | gevent.spawn(notify(message)) 68 | -------------------------------------------------------------------------------- /src/main/python/utils/np_encoder.py: -------------------------------------------------------------------------------- 1 | import json 2 | import numpy 3 | import utils.exception_helper as ExHelper 4 | import utils.dave_logger as logging 5 | from config import CONFIG 6 | 7 | 8 | class NPEncoder(json.JSONEncoder): 9 | 10 | """Minify JSON output.""" 11 | item_separator = ',' 12 | key_separator = ':' 13 | 14 | def default(self, obj): 15 | try: 16 | if isinstance(obj, int): 17 | if obj > CONFIG.BIG_NUMBER: 18 | return CONFIG.BIG_NUMBER 19 | if obj < -CONFIG.BIG_NUMBER: 20 | return -CONFIG.BIG_NUMBER 21 | return int(obj) 22 | elif isinstance(obj, float): 23 | if obj > CONFIG.BIG_NUMBER: 24 | return CONFIG.BIG_NUMBER 25 | if obj < -CONFIG.BIG_NUMBER: 26 | return -CONFIG.BIG_NUMBER 27 | return float(obj) 28 | if isinstance(obj, numpy.integer): 29 | if obj > CONFIG.BIG_NUMBER: 30 | return CONFIG.BIG_NUMBER 31 | if obj < -CONFIG.BIG_NUMBER: 32 | return -CONFIG.BIG_NUMBER 33 | return int(obj) 34 | elif isinstance(obj, numpy.floating): 35 | if obj > CONFIG.BIG_NUMBER: 36 | return CONFIG.BIG_NUMBER 37 | if obj < -CONFIG.BIG_NUMBER: 38 | return -CONFIG.BIG_NUMBER 39 | return float(obj) 40 | elif isinstance(obj, complex): 41 | return self.default(numpy.real(obj)) 42 | elif isinstance(obj, numpy.ndarray): 43 | return obj.tolist() 44 | else: 45 | return super(NPEncoder, self).default(obj) 46 | except: 47 | logging.error(ExHelper.getException('NPEncoder')) 48 | return None 49 | -------------------------------------------------------------------------------- /src/main/python/utils/plotter.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import utils.dave_logger as logging 3 | from config import CONFIG 4 | 5 | 6 | def get_plotdiv_xy(dataset, axis): 7 | data = build_data_list(dataset, axis) 8 | return data 9 | 10 | 11 | def get_plotdiv_xyz(dataset, axis): 12 | data = build_data_list(dataset, axis) 13 | 14 | color_array = np.random.uniform(-5, 5, size=len(data[0]["values"])) 15 | color_data = dict() 16 | color_data["values"] = color_array 17 | data = np.append(data, [color_data]) 18 | 19 | ramdom_values = np.random.uniform(-8, 8, size=len(data[0]["values"])) 20 | data[2]["error_values"] = ramdom_values 21 | 22 | return data 23 | 24 | 25 | def get_plotdiv_scatter(dataset, axis): 26 | data = build_data_list(dataset, axis) 27 | amplitude_array = np.random.uniform(-5, 5, size=len(data[0]["values"])) 28 | amplitude_data = dict() 29 | amplitude_data["values"] = amplitude_array 30 | data = np.append(data, [amplitude_data]) 31 | 32 | return data 33 | 34 | 35 | def build_data_list(dataset, axis): 36 | axis = get_axis_with_gtis(axis) 37 | data = [] 38 | for i in range(len(axis)): 39 | table_name = axis[i]["table"] 40 | if table_name in dataset.tables: 41 | column_name = axis[i]["column"] 42 | if column_name in dataset.tables[table_name].columns: 43 | column = dataset.tables[table_name].columns[column_name] 44 | column_data = dict() 45 | column_data["values"] = column.values 46 | column_data["error_values"] = column.error_values 47 | data = np.append(data, [column_data]) 48 | else: 49 | logging.error("Accessing unknown column: %s" % column_name) 50 | else: 51 | logging.error("Accessing unknown table: %s" % table_name) 52 | return data 53 | 54 | 55 | def get_axis_with_gtis (axis): 56 | for i in range(len(axis)): 57 | # If TIME in axis append GTIs 58 | if axis[i]["table"] in ["EVENTS", "RATE"] and axis[i]["column"] == CONFIG.TIME_COLUMN: 59 | axis = np.append(axis, [{"table":"GTI", "column":"START"}]) 60 | axis = np.append(axis, [{"table":"GTI", "column":"STOP"}]) 61 | return axis 62 | 63 | 64 | def convert_fig_to_html(fig): 65 | """ Convert Matplotlib figure 'fig' into a tag for HTML use using base64 encoding. """ 66 | import base64 67 | from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas 68 | from io import BytesIO 69 | 70 | canvas = FigureCanvas(fig) 71 | png_output = BytesIO() 72 | canvas.print_png(png_output) 73 | data = png_output.getvalue() 74 | 75 | return ''.format(base64.encodebytes(data).decode()) 76 | -------------------------------------------------------------------------------- /src/main/python/utils/session_helper.py: -------------------------------------------------------------------------------- 1 | from flask import session 2 | 3 | 4 | # SESSION METHODS 5 | def add_uploaded_file_to_session(filename): 6 | if 'uploaded_filenames' not in session: 7 | session['uploaded_filenames'] = [] 8 | 9 | if filename not in session['uploaded_filenames']: 10 | session['uploaded_filenames'].extend([filename]) 11 | 12 | 13 | def is_file_uploaded(filename): 14 | if 'uploaded_filenames' not in session: 15 | return False 16 | 17 | return filename in session['uploaded_filenames'] 18 | -------------------------------------------------------------------------------- /src/main/resources/bash/activate_and_launch.bash: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | function stopServer { 4 | #Kills Python server and exits 5 | echo "Sending kill to Python -> $python_pid" 6 | kill -s 9 $python_pid 7 | exit 0 8 | } 9 | 10 | sendError() 11 | { 12 | #Notifies Node.js that create_env script crashed 13 | if [ "$#" -gt "0" ];then 14 | echo "$1" 15 | echo "@ERROR@|$1|" 16 | if [ "$#" -gt "1" ];then 17 | if [[ ! -z "$2" ]];then 18 | rm -rf $2 19 | fi 20 | fi 21 | fi 22 | exit 10 23 | } 24 | 25 | checkReturnCode() 26 | { 27 | #Checks if return code is an error code and sends error to Node.js 28 | if [[ $1 -ne 0 ]] ; then 29 | sendError "$2" "$3" 30 | fi 31 | } 32 | 33 | # Activate environment progress notification 34 | echo "@PROGRESS@|5|Checking previous version|" 35 | 36 | # Determine the directory containing this script 37 | if [[ -n $BASH_VERSION ]]; then 38 | _SCRIPT_FOLDER=$(dirname "${BASH_SOURCE[0]}") 39 | else 40 | sendError "Only bash supported" 41 | fi 42 | 43 | RES_DIR=$_SCRIPT_FOLDER/../.. 44 | OLD_PWD=$(pwd) 45 | cd $RES_DIR 46 | RES_DIR=$(pwd) 47 | cd - 48 | 49 | ENVDIR=$HOME/.dave 50 | echo "Python Environment folder: $ENVDIR" 51 | 52 | #Check DAVE environment version 53 | VERSION_FILE=$ENVDIR/version.txt 54 | VERSION=$(cat $RES_DIR/resources/version.txt) 55 | if [ -e $VERSION_FILE ]; then 56 | if [[ $(cat $VERSION_FILE) != $VERSION ]]; then 57 | echo "Wrong DAVE Version found, updating Python Environment" 58 | rm -rf $ENVDIR 59 | else 60 | echo "DAVE Version matches the Python Environment Version" 61 | fi 62 | else 63 | #If no version file found, sure is a wrong DAVE version 64 | echo "Wrong DAVE Version, updating Python Environment" 65 | rm -rf $ENVDIR 66 | fi 67 | 68 | #Creates environment if not found 69 | if [ ! -e $ENVDIR ]; then 70 | echo "Installing Python Environment" 71 | SETUP_CMD="$RES_DIR/resources/bash/create_env.bash" 72 | . $SETUP_CMD 73 | fi 74 | 75 | echo "@PROGRESS@|70|Activating Python environment|" 76 | echo "Activating Python environment" 77 | ACTIVATE_CMD="$ENVDIR/miniconda/bin/activate" 78 | source $ACTIVATE_CMD dave 79 | checkReturnCode $? "Can´t activate Python environment, error $?" 80 | 81 | #Installing Stingray 82 | PYTHON_FOLDER=$RES_DIR/python 83 | echo "@PROGRESS@|80|Installing Stingray dependencies|" 84 | echo "Installing Stingray dependencies" 85 | cd $PYTHON_FOLDER 86 | pip install -r requirements.txt 87 | checkReturnCode $? "Can´t install Stingray dependencies, error $?" 88 | 89 | # LAUNCH PYTHON SERVER AND PREPARE FURTHER PROCESS KILL 90 | echo "Launching Python Server" 91 | echo "@PROGRESS@|90|Launching Python Server|" 92 | python server.py $ENVDIR . 5000 $VERSION & >> $ENVDIR/flaskserver.log 2>&1 93 | python_pid=$! 94 | trap stopServer SIGHUP SIGINT SIGTERM SIGKILL 95 | cd - 96 | 97 | echo "@PROGRESS@|100|Python Server ready|" 98 | wait $python_pid 99 | 100 | exit $? 101 | -------------------------------------------------------------------------------- /src/main/resources/bash/activate_and_launch_dev.bash: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | function stopServer { 4 | #Kills Python server and exits 5 | echo "Sending kill to Python -> $python_pid" 6 | kill -s 9 $python_pid 7 | exit 0 8 | } 9 | trap stopServer SIGHUP SIGINT SIGTERM SIGKILL 10 | 11 | # Determine the directory containing this script 12 | if [[ -n $BASH_VERSION ]]; then 13 | _SCRIPT_FOLDER=$(dirname "${BASH_SOURCE[0]}") 14 | else 15 | echo "Only bash supported .." 16 | exit 1 17 | fi 18 | 19 | DIR=$_SCRIPT_FOLDER/../../../.. 20 | OLD_PWD=$(pwd) 21 | cd $DIR 22 | DIR=$(pwd) 23 | cd - 24 | 25 | ENVDIR=${DIR}/work 26 | 27 | if [ ! -e $ENVDIR ]; then 28 | echo "Please run ( source src/main/resources/bash/create_env.bash ) first to setup and install DAVE environment before continue." 29 | exit 1 30 | fi 31 | 32 | echo "Activating Python environment" 33 | ACTIVATE_CMD="$DIR/work/miniconda/bin/activate dave" 34 | . $ACTIVATE_CMD 35 | 36 | #Installing Stingray 37 | STINGRAY_FOLDER=$DIR/work/stingray 38 | echo "Installing Stingray" 39 | cd $STINGRAY_FOLDER 40 | pip install -r requirements.txt 41 | cd - 42 | 43 | # LAUNCH PYTHON SERVER 44 | echo Launching Python Server 45 | python $DIR/src/main/python/server.py . . 5000 "DEV_ENV_BASH" & >> /tmp/flaskserver.log 2>&1 46 | python_pid=$! 47 | 48 | wait $python_pid 49 | 50 | exit $? 51 | -------------------------------------------------------------------------------- /src/main/resources/bash/build_publish.bash: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # This script will run the tests for the project and build the exexutable 4 | # packages. It will also publish the packages to a given directory or set of 5 | # directories. If multiple directories are provided, the packages will be copied 6 | # to all of them. 7 | # 8 | # The script should be executed in the top-level directory of the Git repo. 9 | # 10 | # The following variables control the script: 11 | # 12 | # PUBLISH_ALL: Build and publish packages for all supported OSs 13 | # PUBLISH_LINUX: Build and publish packages for Linux (64-bit) 14 | # PUBLISH_MACOS: Build and publish packages for Mac OS X 15 | # DIST_DIRS: Space separated list of directories where the packages shall be 16 | # copied. 17 | # 18 | 19 | rm -rf work 20 | rm -rf ~/.cache/pip/* # Cleans pip cache folder 21 | 22 | source setup/setup.bash 23 | 24 | echo "Running Python unit tests" 25 | echo "=========================" 26 | echo 27 | python -m pytest src/test/python 28 | 29 | test_result=$? 30 | 31 | echo "Result of tests: $test_result" 32 | 33 | if [ ! $test_result -eq "0" ]; then exit $test_result; fi 34 | 35 | function publish_file { 36 | FILE=$1 37 | echo "DIST_DIRS=$DIST_DIRS" 38 | for DIR in $DIST_DIRS; do 39 | if [ ! -d $DIR ]; then 40 | mkdir -p $DIR || exit 1 # exit if this fails 41 | fi 42 | echo "Publishing $FILE to $DIR" 43 | cp $FILE $DIR 44 | done 45 | } 46 | 47 | if ! [ -z "$PUBLISH_ALL" -a -z "$PUBLISH_LINUX" ]; then 48 | echo "Building Linux x64 package" 49 | echo "=========================" 50 | 51 | setup/build_linux-x64.bash 52 | publish_file build/DAVEApp-linux-x64.zip 53 | fi 54 | 55 | if ! [ -z "$PUBLISH_ALL" -a -z "$PUBLISH_MACOS" ]; then 56 | echo "Building OS X package" 57 | echo "=========================" 58 | 59 | setup/build_MacOS.bash 60 | publish_file build/DAVEApp-darwin-x64.zip 61 | fi 62 | 63 | echo "Done" 64 | -------------------------------------------------------------------------------- /src/main/resources/static/font-awesome-4.7.0/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/font-awesome-4.7.0/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /src/main/resources/static/font-awesome-4.7.0/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/font-awesome-4.7.0/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /src/main/resources/static/font-awesome-4.7.0/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/font-awesome-4.7.0/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /src/main/resources/static/font-awesome-4.7.0/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/font-awesome-4.7.0/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /src/main/resources/static/font-awesome-4.7.0/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/font-awesome-4.7.0/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /src/main/resources/static/fonts/Archangelsk.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/fonts/Archangelsk.ttf -------------------------------------------------------------------------------- /src/main/resources/static/img/bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/img/bg.jpg -------------------------------------------------------------------------------- /src/main/resources/static/img/icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/img/icon.icns -------------------------------------------------------------------------------- /src/main/resources/static/img/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/img/icon.ico -------------------------------------------------------------------------------- /src/main/resources/static/img/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/img/icon.png -------------------------------------------------------------------------------- /src/main/resources/static/img/icon/128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/img/icon/128x128.png -------------------------------------------------------------------------------- /src/main/resources/static/img/icon/16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/img/icon/16x16.png -------------------------------------------------------------------------------- /src/main/resources/static/img/icon/24x24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/img/icon/24x24.png -------------------------------------------------------------------------------- /src/main/resources/static/img/icon/256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/img/icon/256x256.png -------------------------------------------------------------------------------- /src/main/resources/static/img/icon/32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/img/icon/32x32.png -------------------------------------------------------------------------------- /src/main/resources/static/img/icon/48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/img/icon/48x48.png -------------------------------------------------------------------------------- /src/main/resources/static/img/icon/512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/img/icon/512x512.png -------------------------------------------------------------------------------- /src/main/resources/static/img/icon/64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/img/icon/64x64.png -------------------------------------------------------------------------------- /src/main/resources/static/img/icon/96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/img/icon/96x96.png -------------------------------------------------------------------------------- /src/main/resources/static/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/img/loading.gif -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/BoxDrawing.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/BoxDrawing.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS.MathJax_AMS,{9484:[694,-306,500,55,444,"76 306Q62 306 59 319T55 386V500V596Q55 664 57 676T68 692Q71 694 250 694Q428 694 432 692Q444 685 444 674Q444 665 432 656Q428 654 261 654H95V487Q95 355 95 336T90 312Q84 306 76 306"],9488:[694,-306,500,55,445,"424 306Q418 306 413 310T406 318L404 321V654H238Q71 654 68 656Q55 662 55 674T68 692Q71 694 250 694H379Q432 694 438 688Q443 683 443 662T444 500T444 338T438 312Q432 306 424 306"],9492:[366,22,500,55,444,"55 172V287Q55 341 58 353T76 366Q88 366 95 351V18H261Q428 18 432 16Q444 9 444 -2Q444 -11 432 -20Q428 -22 250 -22H120Q67 -22 61 -16Q56 -11 56 10T55 172"],9496:[366,22,500,55,444,"404 351Q410 366 424 366Q437 366 440 353T444 288V172V72Q444 8 443 -4T432 -20Q428 -22 250 -22Q71 -22 68 -20Q55 -14 55 -2T68 16Q71 18 238 18H404V351"],9585:[694,195,889,0,860,"19 -195Q13 -195 7 -188T0 -176Q0 -169 18 -151L822 683Q835 694 840 694T852 688T860 674Q860 667 810 614T460 252Q57 -167 44 -179Q27 -195 19 -195"],9586:[694,195,889,0,860,"0 675Q0 681 6 687T19 694Q27 694 44 678L460 247Q759 -62 809 -115T860 -175Q860 -183 852 -189T840 -195Q835 -195 822 -184L18 649Q0 667 0 675"]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/AMS/Regular/BoxDrawing.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/CombDiacritMarks.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/CombDiacritMarks.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS.MathJax_AMS,{770:[845,-561,0,-2347,13,"-2332 561Q-2336 563 -2340 577T-2346 604L-2347 618Q-2347 625 -2340 628T-2310 635Q-2302 636 -2297 637Q-2270 641 -1712 745Q-1185 845 -1168 845Q-1166 845 -581 739L5 630Q13 630 13 618Q7 565 -1 561Q-4 561 -584 654Q-716 675 -867 699T-1092 736T-1166 748Q-1168 748 -1240 737T-1466 700T-1750 654Q-2330 561 -2332 561"],771:[899,-628,0,-2332,-3,"-1529 788Q-1616 788 -1727 772T-1936 732T-2120 685T-2258 645T-2315 628Q-2322 628 -2322 632Q-2325 637 -2329 668T-2331 704Q-2331 713 -2297 732Q-2278 739 -2091 795Q-1711 898 -1507 898Q-1440 898 -1386 895Q-1324 887 -1277 872T-1146 819Q-1047 776 -977 758T-806 739Q-719 739 -608 755T-399 795T-215 842T-77 882T-20 899Q-13 899 -13 895Q-10 890 -6 860T-4 824Q-4 818 -37 795Q-60 787 -244 732Q-523 657 -735 632Q-771 629 -841 629Q-944 629 -1013 644T-1189 708Q-1285 751 -1356 769T-1529 788"]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/AMS/Regular/CombDiacritMarks.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/Dingbats.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/Dingbats.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS.MathJax_AMS,{10003:[706,34,833,84,749,"84 231Q84 244 114 264T170 285Q176 285 183 274T224 205Q267 129 268 129Q271 141 279 163T318 250T389 378T502 523T662 673Q702 706 732 706H734Q749 706 749 695Q749 682 730 666T660 607T559 505Q387 299 328 29Q324 0 295 -17T245 -34H241Q234 -34 225 -21T185 46Q166 79 154 101Q84 223 84 231"],10016:[716,22,833,48,786,"195 702T195 706T201 716H632Q638 710 638 706T636 700T621 690Q436 581 427 374V357H430Q554 357 645 421Q682 447 711 483T755 542T770 567Q775 572 786 563V131Q777 125 774 125T762 139Q709 228 642 274T482 333Q452 337 430 337H427V320Q430 279 437 247T462 170T521 82T621 4Q630 -2 633 -4T637 -7T638 -12Q638 -16 632 -22H201Q195 -16 195 -12T197 -6T212 4Q397 113 406 320V337H403Q279 337 188 273Q151 247 122 211T78 152T63 127Q58 122 48 131V563Q54 569 59 569Q62 569 71 555Q124 466 191 420T351 361Q381 357 403 357H406V374Q403 415 396 447T371 525T312 613T212 690Q199 697 197 699"]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/AMS/Regular/Dingbats.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/EnclosedAlphanum.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/EnclosedAlphanum.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS.MathJax_AMS,{9416:[709,175,902,8,894,"451 -175Q328 -175 226 -115T66 47T8 267Q8 303 15 342T39 431T94 531T186 622Q239 663 307 686T424 709H440Q604 709 716 622Q757 592 788 555T838 482T869 414T886 350T892 301T894 267Q894 147 835 45T674 -116T451 -175ZM854 268Q854 375 802 467T657 614T450 670Q283 670 166 552T49 267Q49 99 167 -18T453 -136Q617 -136 735 -18T854 268ZM273 378Q273 430 309 474T409 527Q411 527 417 527T428 528Q498 528 549 484L567 505Q583 528 590 528H594Q600 528 606 522V350L600 344H586Q577 344 574 344T569 347T566 357Q542 491 432 491Q389 491 365 465T340 407Q340 391 344 378T358 356T377 340T400 328T421 321T443 316T459 313Q499 305 517 300T559 279T601 238Q629 195 629 148Q629 80 583 33T471 -14Q392 -14 330 30Q312 6 293 -13Q292 -14 285 -14Q279 -14 273 -8V77V138Q273 160 275 165T286 170H294H307Q313 164 313 158Q313 108 350 67T471 26Q512 26 537 54T562 119Q562 137 558 151T544 176T527 193T504 205T483 212T459 218T441 222Q391 232 368 241T318 273Q273 316 273 378"]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/AMS/Regular/EnclosedAlphanum.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/GeneralPunctuation.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/GeneralPunctuation.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS.MathJax_AMS,{8245:[560,-43,275,12,244,"12 501Q12 527 31 542T63 558Q73 560 77 560Q114 560 128 528Q133 518 188 293T244 61Q244 56 223 50T195 43Q192 43 190 45T102 263T14 486Q12 496 12 501"]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/AMS/Regular/GeneralPunctuation.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/GeometricShapes.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/GeometricShapes.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS.MathJax_AMS,{9632:[689,0,778,55,722,"71 0Q59 4 55 16V346L56 676Q64 686 70 689H709Q719 681 722 674V15Q719 10 709 1L390 0H71"],9633:[689,0,778,55,722,"71 0Q59 4 55 16V346L56 676Q64 686 70 689H709Q719 681 722 674V15Q719 10 709 1L390 0H71ZM682 40V649H95V40H682"],9650:[575,20,722,84,637,"99 -20Q84 -11 84 0Q84 5 148 145T278 424L342 563Q347 575 360 575Q368 575 375 570Q376 569 441 430T571 148T637 0Q637 -11 622 -20H99"],9651:[575,20,722,84,637,"99 -20Q84 -11 84 0Q84 5 148 145T278 424L342 563Q347 575 360 575Q368 575 375 570Q376 569 441 430T571 148T637 0Q637 -11 622 -20H99ZM476 260L360 509L248 266Q137 24 135 22Q135 20 360 20Q586 20 586 21L476 260"],9654:[540,41,778,83,694,"83 523Q83 524 85 527T92 535T103 539Q107 539 389 406T680 268Q694 260 694 249Q694 239 687 234Q685 232 395 95L107 -41H101Q90 -40 83 -26V523"],9660:[576,19,722,84,637,"84 556Q84 567 99 576H622Q637 567 637 556Q637 551 572 409T441 127T375 -14Q368 -19 360 -19H358Q349 -19 342 -7T296 92Q249 193 211 275Q84 550 84 556"],9661:[576,19,722,84,637,"84 556Q84 567 99 576H622Q637 567 637 556Q637 551 572 409T441 127T375 -14Q368 -19 360 -19H358Q349 -19 342 -7T296 92Q249 193 211 275Q84 550 84 556ZM586 534Q586 536 361 536Q135 536 135 535L358 52L361 47L473 290Q584 532 586 534"],9664:[539,41,778,83,694,"694 -26Q686 -40 676 -41H670L382 95Q92 232 90 234Q83 239 83 249Q83 262 96 267Q101 270 379 401T665 537Q671 539 674 539Q686 539 694 524V-26"],9674:[716,132,667,56,611,"318 709Q325 716 332 716Q340 716 344 713T474 511Q611 298 611 292Q611 285 526 152Q494 103 474 72Q347 -128 344 -130Q340 -132 333 -132T322 -130Q319 -128 257 -31T131 169T60 278Q56 285 56 292Q56 298 60 305Q73 326 194 516T318 709ZM567 290T567 291T451 475T333 658L100 293Q100 288 215 108L333 -74Q334 -74 450 108"]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/AMS/Regular/GeometricShapes.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/GreekAndCoptic.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/GreekAndCoptic.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS.MathJax_AMS,{989:[605,85,778,55,719,"477 261Q477 257 473 256T455 253T417 251T348 250H235L155 -77L146 -82Q137 -85 109 -85Q55 -85 55 -77L139 261Q224 596 226 598Q229 603 239 603Q240 603 254 603T290 603T341 604T405 605T477 605Q656 603 687 602T719 596Q719 589 692 588T513 585H319L282 427L242 272Q242 270 351 270Q388 270 410 270T444 269T460 267T469 265T477 261"],1008:[434,6,667,37,734,"228 325Q170 322 156 316T127 309Q108 309 104 314Q99 319 99 322T108 341Q125 376 171 400T268 425H271Q302 425 319 396Q328 377 328 358Q328 332 324 314Q311 270 286 221Q274 194 274 192H275Q339 234 484 325T639 421Q669 434 691 434T723 425T734 406Q734 394 719 381Q715 376 644 330L575 287L566 267Q543 233 526 176Q520 160 515 143T508 115T506 105Q506 103 533 103Q585 103 607 110T641 118Q670 118 670 107Q670 100 661 85Q643 50 598 27T504 3Q465 3 450 36Q441 51 441 73Q441 84 444 96Q452 146 484 205L497 236L324 125Q143 12 135 10Q103 -6 77 -6Q61 -6 49 2T37 21Q37 36 49 46T124 96L195 141L204 156Q219 179 243 248T264 323Q264 325 228 325"]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/AMS/Regular/GreekAndCoptic.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/LatinExtendedA.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/LatinExtendedA.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS.MathJax_AMS,{295:[695,13,540,42,562,"182 599Q182 611 174 615T133 619Q118 619 114 621T109 630Q109 636 114 656T122 681Q125 685 202 688Q272 695 286 695Q304 695 304 684Q304 682 295 644T282 597Q282 592 360 592H399Q430 592 445 587T460 563Q460 552 451 541L442 535H266L251 468Q247 453 243 436T236 409T233 399Q233 395 244 404Q295 441 357 441Q405 441 445 417T485 333Q485 284 449 178T412 58T426 44Q447 44 466 68Q485 87 500 130L509 152H531H543Q562 152 562 144Q562 128 546 93T494 23T415 -13Q385 -13 359 3T322 44Q318 52 318 77Q318 99 352 196T386 337Q386 386 346 386Q318 386 286 370Q267 361 245 338T211 292Q207 287 193 235T162 113T138 21Q128 7 122 4Q105 -12 83 -12Q66 -12 54 -2T42 26L166 530Q166 534 161 534T129 535Q127 535 122 535T112 534Q74 534 74 562Q74 570 77 576T84 585T96 589T109 591T124 592T138 592L182 595V599"]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/AMS/Regular/LatinExtendedA.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/MiscMathSymbolsB.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/MiscMathSymbolsB.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS.MathJax_AMS,{10731:[716,132,667,56,611,"318 709Q325 716 332 716Q340 716 344 713T474 511Q611 298 611 292Q611 285 526 152Q494 103 474 72Q347 -128 344 -130Q340 -132 333 -132T322 -130Q319 -128 257 -31T131 169T60 278Q56 285 56 292Q56 298 60 305Q73 326 194 516T318 709"]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/AMS/Regular/MiscMathSymbolsB.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/MiscSymbols.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/MiscSymbols.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS.MathJax_AMS,{9733:[694,111,944,49,895,"367 395Q374 416 398 492T442 627T463 688Q463 692 467 692Q471 694 472 694Q478 694 484 680T523 562Q553 469 576 400L577 395H731H819Q872 395 883 394T895 384Q895 380 891 376T832 333Q794 305 767 285Q643 195 643 194L690 47Q737 -96 737 -103Q737 -111 727 -111Q721 -111 594 -18L472 71L350 -18Q223 -111 217 -111Q207 -111 207 -103Q207 -96 254 47L301 194Q301 195 241 239T118 328T51 378Q49 382 49 384Q49 392 58 393T110 395H213H367"]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/AMS/Regular/MiscSymbols.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/MiscTechnical.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/MiscTechnical.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS.MathJax_AMS,{8994:[378,-122,778,55,722,"77 122Q68 122 63 126T57 135T55 142Q55 151 68 176T111 235T177 302T271 356T388 378Q451 378 508 355T602 300T668 233T709 174T722 142Q722 124 704 122Q692 122 685 134T658 179T606 243Q511 338 390 338Q354 338 320 329Q251 312 193 263T97 141Q87 123 77 122"],8995:[378,-142,778,54,722,"389 143Q324 143 266 164T171 215T107 277T67 330T55 358T60 371T77 378Q85 377 92 367T116 331T158 280Q256 182 389 182Q475 182 552 227T675 351Q688 378 704 378Q722 376 722 358Q722 352 710 330T670 276T605 215T511 164T389 143"]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/AMS/Regular/MiscTechnical.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/SpacingModLetters.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/SpacingModLetters.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS.MathJax_AMS,{710:[845,-561,2333,-14,2346,"1 561Q-3 563 -6 577T-12 604L-14 618Q-14 625 -7 628T23 635Q31 636 36 637Q63 641 621 745Q1148 845 1165 845Q1167 845 1752 739L2338 630Q2346 630 2346 618Q2340 565 2332 561Q2329 561 1749 654Q1617 675 1466 699T1241 736T1167 748Q1165 748 1093 737T867 700T583 654Q3 561 1 561"],732:[899,-628,2333,1,2330,"804 788Q717 788 606 772T397 732T213 685T75 645T18 628Q11 628 11 632Q8 637 4 668T2 704Q2 713 36 732Q55 739 242 795Q622 898 826 898Q893 898 947 895Q1009 887 1056 872T1187 819Q1286 776 1356 758T1527 739Q1614 739 1725 755T1934 795T2118 842T2256 882T2313 899Q2320 899 2320 895Q2323 890 2327 860T2329 824Q2329 818 2296 795Q2273 787 2089 732Q1810 657 1598 632Q1562 629 1492 629Q1389 629 1320 644T1144 708Q1048 751 977 769T804 788"]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/AMS/Regular/SpacingModLetters.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/Fraktur/Bold/Main.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/Fraktur/Bold/Main.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.OutputJax.SVG.FONTDATA.FONTS["MathJax_Fraktur-bold"]={directory:"Fraktur/Bold",family:"MathJax_Fraktur",id:"MJFRAKB",weight:"bold",Ranges:[[0,127,"BasicLatin"],[128,57343,"Other"],[58112,58128,"PUA"]]};MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/Fraktur/Bold/Main.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/Fraktur/Bold/Other.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/Fraktur/Bold/Other.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS["MathJax_Fraktur-bold"],{8216:[708,-411,254,53,187,"187 456Q187 437 169 424T138 411Q114 411 84 454T53 538Q53 565 75 597Q109 648 155 697L166 708L181 694L173 681Q124 610 124 577Q124 549 155 511T187 456"],8217:[692,-394,254,58,193,"125 524Q125 545 92 588T58 651Q58 661 61 667Q65 674 80 683T107 692Q131 692 162 645T193 564Q193 540 176 509T144 460T87 394L78 400L68 406L79 421Q125 489 125 524"]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/Fraktur/Bold/Other.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/Fraktur/Regular/Main.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/Fraktur/Regular/Main.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.OutputJax.SVG.FONTDATA.FONTS.MathJax_Fraktur={directory:"Fraktur/Regular",family:"MathJax_Fraktur",id:"MJFRAK",Ranges:[[0,127,"BasicLatin"],[128,57343,"Other"],[58112,58128,"PUA"]]};MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/Fraktur/Regular/Main.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/Fraktur/Regular/Other.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/Fraktur/Regular/Other.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS.MathJax_Fraktur,{8216:[708,-410,215,45,158,"117 410Q97 410 71 455T45 539Q45 588 129 694L140 708Q142 708 153 694L147 682Q106 609 106 582V577V571Q106 548 132 511T158 455Q158 434 143 422T117 410"],8217:[692,-395,215,49,163,"105 529Q105 546 77 588T49 651Q49 658 51 666Q53 672 67 682T92 692Q111 692 137 644T163 563Q163 534 143 497T99 428T74 395Q72 395 65 400T58 407Q105 476 105 523V529"]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/Fraktur/Regular/Other.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/Main/Bold/CombDiactForSymbols.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/Main/Bold/CombDiactForSymbols.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS["MathJax_Main-bold"],{8407:[723,-513,0,-542,-33,"-169 694Q-169 707 -160 715T-142 723Q-127 723 -119 716T-107 698T-90 673T-53 648Q-33 637 -33 619Q-33 602 -45 595T-87 573T-144 532Q-165 513 -176 513Q-189 513 -197 522T-206 543Q-206 556 -188 574L-175 588H-347L-519 589Q-542 597 -542 618Q-542 623 -541 627T-537 635T-532 640T-527 644T-522 648L-519 649H-149Q-169 676 -169 694"]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/Main/Bold/CombDiactForSymbols.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/Main/Bold/GeometricShapes.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/Main/Bold/GeometricShapes.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS["MathJax_Main-bold"],{9651:[711,-1,1022,69,953,"91 1Q69 10 69 31Q69 39 81 59T168 197Q327 447 485 697Q493 711 510 711Q523 711 532 702Q536 697 743 371T951 41Q953 35 953 31Q953 12 931 1H91ZM690 340Q651 401 604 476T534 586L512 621Q511 622 507 616Q498 604 332 342L154 62L333 61H689L867 62L690 340"],9657:[540,39,575,33,542,"33 518Q45 540 63 540H65Q72 540 174 481Q247 439 302 407Q529 276 533 272Q542 263 542 250Q542 238 533 229Q528 224 304 95T71 -38Q69 -39 63 -39Q42 -39 33 -16V518ZM449 251L94 456Q93 456 93 251Q93 45 94 45L106 52Q119 59 139 71T186 98T242 131T301 165T357 197T404 225T437 244L449 251"],9661:[500,210,1022,68,953,"68 470Q68 481 75 489T91 499H93Q296 500 512 500H931Q932 499 937 496T945 490T950 482T953 469Q953 465 951 459Q950 455 743 129T532 -202Q524 -210 511 -210Q497 -210 489 -202Q486 -199 281 124T71 456Q68 462 68 470ZM154 439Q155 437 332 158T510 -122Q510 -123 533 -87T600 18T688 157Q866 437 866 438Q867 439 805 439T511 439H154"],9667:[539,38,575,33,542,"542 -14Q533 -38 514 -38H512Q503 -38 498 -35Q494 -34 270 95T42 229Q33 238 33 251Q33 259 35 264Q36 265 38 268T42 272Q48 278 271 407T504 539H508Q533 539 542 515V-14ZM481 251Q481 456 480 456Q125 252 124 251Q124 250 301 148T480 45T481 251"],9711:[711,212,1150,65,1084,"65 42T65 250T204 584T574 711Q795 711 935 594Q955 577 974 555T1022 490T1067 385T1084 250Q1084 42 945 -84T574 -211T204 -85ZM1024 250Q1024 431 903 540T578 650Q482 650 404 627T274 565T189 474T140 366T125 250Q125 123 186 31T347 -106T573 -150Q772 -150 898 -45T1024 250"]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/Main/Bold/GeometricShapes.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/Main/Bold/Latin1Supplement.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/Main/Bold/Latin1Supplement.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS["MathJax_Main-bold"],{168:[695,-535,575,96,478,"96 615Q96 650 120 672T178 695Q214 693 234 669T255 615Q255 583 232 559T176 535Q147 535 122 556T96 615ZM319 615Q319 651 343 673T399 695Q426 695 452 675T478 615Q478 578 454 557T395 535Q364 537 342 559T319 615"],172:[371,-61,767,64,703,"680 371Q683 369 688 366T695 361T698 356T701 346T701 332T702 308V216Q702 196 702 168T703 130Q703 90 697 76T671 61Q650 61 643 81Q641 86 641 198V310H364L87 311Q64 319 64 341Q64 362 84 369Q89 371 385 371H680"],175:[607,-540,575,80,494,"80 540V607H494V540H80"],176:[702,-535,575,160,414,"160 618Q160 653 193 677T279 702H284Q381 702 407 647Q414 634 414 618Q414 607 410 596T395 570T355 546T287 536T220 545T181 568T165 594T160 618ZM352 618Q352 645 341 652T301 659H292Q286 659 278 659T268 660Q247 660 236 653T224 638T222 619Q222 591 234 585T287 578Q315 578 326 580T345 590T352 618"],177:[728,35,894,64,829,"64 328T64 346T87 377H416V542L417 707Q431 728 443 728Q467 728 475 709Q477 704 477 540V377H807Q808 376 811 374T817 370T823 365T827 358T829 347Q829 326 807 317L642 316H477V25H807Q808 24 811 22T817 18T823 13T827 6T829 -5Q829 -26 807 -35H87Q64 -24 64 -6T87 25H416V316H251L87 317Q64 328 64 346"],180:[706,-503,575,236,460,"391 706Q419 706 439 683T460 634Q460 608 441 593T366 550Q356 545 351 543L275 503L256 527Q236 552 237 553Q242 558 292 620Q299 629 309 641T324 659T336 673T346 685T354 693T363 699T371 703T380 705T391 706"],215:[530,28,894,168,726,"168 500Q168 515 178 522T195 530H198Q207 530 218 521T282 458Q312 428 331 409L447 294L563 409Q674 520 682 525Q687 529 695 529Q711 529 718 520T726 499V498Q726 489 720 481T666 427Q631 392 606 367L490 251L606 135Q717 23 721 17T726 2Q726 -9 719 -18T695 -28H692Q685 -28 674 -18T608 47Q581 74 563 92L447 207L331 91Q217 -22 208 -27Q206 -28 203 -28H197Q168 -28 168 2Q168 13 178 24T288 135L404 250L288 366Q177 479 173 485T168 500"],247:[597,96,894,64,828,"344 495Q344 535 372 566T447 597Q490 597 519 566T548 495Q548 452 518 423T446 393Q404 393 374 423T344 495ZM87 221Q64 230 64 251T84 279Q89 281 448 281H806Q807 280 810 278T816 274T822 269T826 262T828 251Q828 230 806 221H87ZM344 -36T344 6T373 78T446 108Q487 108 517 79T548 6Q548 -35 519 -65T446 -96Q406 -96 375 -66"]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/Main/Bold/Latin1Supplement.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/Main/Bold/LatinExtendedA.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/Main/Bold/LatinExtendedA.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS["MathJax_Main-bold"],{305:[452,8,394,24,367,"24 296Q24 305 34 328T63 380T115 430T187 452Q205 452 223 448T262 435T295 406T308 360Q308 345 287 290T240 170T207 87Q202 67 202 57Q202 42 215 42Q235 42 257 64Q288 92 302 140Q307 156 310 159T330 162H336H347Q367 162 367 148Q367 140 357 117T329 65T276 14T201 -8Q158 -8 121 15T83 84Q83 104 133 229T184 358Q189 376 189 388Q189 402 177 402Q156 402 134 380Q103 352 89 304Q84 288 81 285T61 282H55H44Q24 282 24 296"]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/Main/Bold/LatinExtendedA.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/Main/Bold/LatinExtendedB.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/Main/Bold/LatinExtendedB.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS["MathJax_Main-bold"],{567:[451,201,439,-12,420,"297 360T297 373T294 392T288 400T278 401H276Q237 398 200 363Q181 343 170 325T156 299T149 287T129 282H123H116Q102 282 97 284T92 298Q93 303 98 315T118 349T151 390T201 427T267 451H279Q357 451 388 422T420 354V339L370 138Q321 -60 317 -69Q287 -157 163 -194Q133 -201 99 -201Q39 -201 14 -178T-12 -125Q-12 -94 11 -69T68 -43Q93 -43 108 -57T123 -95Q123 -121 100 -151H104Q131 -151 155 -125T193 -60Q195 -54 244 141T294 345Q297 360 297 373"]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/Main/Bold/LatinExtendedB.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/Main/Bold/MiscMathSymbolsA.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/Main/Bold/MiscMathSymbolsA.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS["MathJax_Main-bold"],{10216:[750,249,447,127,382,"127 243V259L223 491Q251 557 286 642Q318 719 324 732T340 748H341Q347 750 351 750Q365 750 373 740T382 723Q382 713 286 482L190 251Q190 249 286 20T382 -219Q382 -232 373 -240T352 -249Q332 -249 323 -229Q320 -220 223 10L127 243"],10217:[750,249,447,64,319,"64 720Q64 732 72 741T94 750Q106 750 113 743Q118 741 122 732L319 259V243L122 -231Q112 -249 95 -249Q83 -249 74 -240T64 -218Q64 -210 160 20L256 251L160 482Q64 715 64 720"]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/Main/Bold/MiscMathSymbolsA.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/Main/Bold/MiscTechnical.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/Main/Bold/MiscTechnical.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS["MathJax_Main-bold"],{8968:[751,248,511,194,494,"194 728Q199 743 216 749H220Q223 749 229 749T245 749T265 750T289 750T316 750T345 750H471Q472 749 477 746T484 741T490 732T493 719Q493 701 471 690L362 689H254V-224Q244 -248 223 -248T194 -226V728"],8969:[750,248,511,17,317,"317 -224Q307 -248 286 -248Q267 -248 257 -226L256 231V689H148L40 690Q17 698 17 720Q17 741 37 748Q42 750 169 750H295Q314 737 317 725V-224"],8970:[749,248,511,194,494,"194 728Q204 749 220 749Q245 749 254 725V-188H471Q472 -189 477 -192T484 -197T490 -206T493 -219Q493 -237 471 -248H216Q200 -242 194 -226V728"],8971:[749,248,511,17,317,"17 -219Q17 -201 40 -188H256V270L257 728Q271 749 283 749Q308 749 317 725V-224Q310 -242 295 -248H40L38 -247Q35 -246 34 -245T30 -243T25 -239T21 -234T18 -227T17 -219"],8994:[405,-107,1150,65,1084,"95 108Q85 108 75 114T65 139Q65 159 129 227Q316 405 573 405Q654 405 729 387T854 344T950 286T1015 232T1053 191Q1078 160 1083 152Q1084 148 1084 139Q1084 121 1074 115T1054 108Q1040 108 1029 122T990 167T922 223Q819 291 680 309Q641 315 575 315Q508 315 469 309Q303 288 197 201Q168 179 148 155T118 119T95 108"],8995:[393,-126,1150,64,1085,"1054 392Q1067 392 1076 384T1085 362Q1085 351 1079 342T1050 310Q983 243 901 200Q753 126 575 126Q494 126 420 141T298 176T205 225T140 272T100 310Q64 346 64 362Q64 370 67 374Q75 393 93 393Q107 393 124 375Q272 214 575 214Q877 214 1025 375Q1039 392 1054 392"]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/Main/Bold/MiscTechnical.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/Main/Bold/SpacingModLetters.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/Main/Bold/SpacingModLetters.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS["MathJax_Main-bold"],{710:[694,-520,575,126,449,"207 632L287 694Q289 693 368 632T448 570T431 545T413 520Q410 520 350 559L287 597L224 559Q164 520 161 520Q160 520 143 544T126 570T207 632"],711:[660,-515,575,130,443,"131 603Q130 604 136 618T150 646T158 659L223 635L287 611L351 635L416 659Q417 660 424 647T437 619T443 603Q440 601 364 558T287 515T210 558T131 603"],713:[607,-540,575,80,494,"80 540V607H494V540H80"],714:[706,-503,575,236,460,"391 706Q419 706 439 683T460 634Q460 608 441 593T366 550Q356 545 351 543L275 503L256 527Q236 552 237 553Q242 558 292 620Q299 629 309 641T324 659T336 673T346 685T354 693T363 699T371 703T380 705T391 706"],715:[706,-503,575,113,338,"114 634Q114 663 136 684T183 706Q191 706 196 705T208 700T219 693T232 681T245 666T262 645T282 620Q332 558 337 553Q338 552 318 527L299 503L223 543Q215 547 202 553T183 563T167 571T153 580T141 587T131 595T124 603T118 612T115 622T114 634"],728:[694,-500,575,102,472,"287 500Q208 500 155 558T102 689V694H153V685Q153 681 154 674T164 648T186 615T226 590T287 578Q347 578 382 611T421 685V694H472V689Q472 623 422 562T287 500"],729:[695,-525,575,202,372,"202 610Q202 647 227 671T283 695Q324 695 348 669T372 610T350 551T287 525Q248 525 225 551T202 610"],730:[702,-535,575,160,414,"160 618Q160 653 193 677T279 702H284Q381 702 407 647Q414 634 414 618Q414 607 410 596T395 570T355 546T287 536T220 545T181 568T165 594T160 618ZM352 618Q352 645 341 652T301 659H292Q286 659 278 659T268 660Q247 660 236 653T224 638T222 619Q222 591 234 585T287 578Q315 578 326 580T345 590T352 618"],732:[694,-552,575,96,478,"343 552Q320 552 278 575T215 599Q181 599 146 564L134 552L115 569Q111 572 106 576T98 584L96 586Q158 656 165 663Q199 694 230 694Q239 694 244 693Q262 689 300 668T359 647Q393 647 428 682L440 694L459 677Q463 674 468 670T476 662L478 660Q416 590 409 583Q375 552 343 552"]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/Main/Bold/SpacingModLetters.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/Main/Bold/SuppMathOperators.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/Main/Bold/SuppMathOperators.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS["MathJax_Main-bold"],{10815:[686,0,900,39,860,"39 655Q39 675 43 680T69 686Q110 684 225 684Q267 684 303 684T360 685T385 686Q401 686 405 680T409 651Q409 632 403 628T367 624H348H301V62H598V624H551H532Q502 624 496 628T490 651Q490 673 494 679T514 686Q518 686 558 685T675 684T792 685T836 686Q852 686 856 680T860 651Q860 632 854 628T818 624H799H752V62H799H809Q846 62 853 59T860 36V31V21Q860 6 850 2Q846 0 450 0H156Q75 0 60 1T40 11V18Q39 26 39 31Q39 54 44 58T82 63Q84 63 90 63T100 62H147V624H100H90Q53 624 46 627T39 650V655"],10927:[696,199,894,96,797,"796 54Q796 40 788 32T767 24Q741 24 735 57Q729 107 705 148T646 216T563 264T465 297T356 316T245 326T136 330H134Q96 330 96 360Q96 391 134 391H136Q193 392 239 394T347 403T457 421T556 453T643 502T703 571T735 664Q741 696 763 696Q781 696 789 686T797 667Q797 651 792 624T758 545T682 456Q605 396 481 365L462 360Q483 357 526 344T633 296T733 215Q767 173 781 128T796 54ZM119 -199Q96 -190 96 -169T116 -141Q121 -139 448 -139H775Q776 -140 779 -142T785 -146T791 -151T795 -158T797 -169Q797 -190 775 -199H119"],10928:[697,199,894,96,797,"127 24Q115 24 106 32T97 55Q97 95 124 156T211 265Q288 325 412 356L431 361Q410 363 367 376T259 425T160 506Q127 546 112 594T96 667Q96 679 104 688T126 697Q152 697 158 664Q164 614 188 573T247 505T331 456T429 424T539 405T649 395T758 391Q797 391 797 360Q797 330 761 330H758Q701 329 655 327T547 318T437 300T337 268T251 219T190 150T158 57Q151 24 127 24ZM119 -199Q96 -190 96 -169T116 -141Q121 -139 448 -139H775Q776 -140 779 -142T785 -146T791 -151T795 -158T797 -169Q797 -190 775 -199H119"]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/Main/Bold/SuppMathOperators.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/Main/Italic/CombDiacritMarks.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/Main/Italic/CombDiacritMarks.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS["MathJax_Main-italic"],{768:[697,-500,0,-222,-74,"-222 651Q-222 668 -206 682T-174 697Q-155 697 -145 680Q-140 671 -107 599T-74 526Q-74 522 -88 511T-107 500Q-109 500 -113 502T-167 568T-219 637Q-222 643 -222 651"],769:[697,-500,0,-173,39,"-148 500Q-154 500 -163 511T-173 528Q-173 529 -172 530V532Q-170 534 -97 610T-21 688Q-8 697 4 697Q19 697 29 688T39 663T30 638Q26 631 -50 573L-135 507Q-144 500 -148 500"],770:[694,-527,0,-251,17,"17 555Q17 549 3 538T-15 527Q-20 527 -41 554Q-53 569 -62 580L-97 625L-158 578Q-172 567 -188 555T-212 536L-221 529Q-225 527 -226 527Q-232 527 -238 533T-248 546L-251 553Q-251 559 -248 562Q-246 564 -169 628T-90 693T-86 694Q-81 694 -78 691Q17 563 17 555"],771:[668,-558,0,-264,60,"-245 558Q-249 558 -256 565T-264 578Q-264 583 -261 586T-237 609Q-176 668 -142 668Q-117 668 -91 642T-47 615Q-26 615 5 641T39 668Q43 668 51 661T60 647Q59 643 40 623T-9 581T-60 559H-64Q-90 559 -115 585T-156 611Q-177 611 -210 585T-245 558"],772:[589,-544,0,-282,54,"-275 544Q-282 548 -282 554Q-282 561 -279 573T-271 588Q-269 589 -111 589H-27H12Q38 589 46 587T54 578Q54 574 51 563T47 550Q45 546 32 545Q15 544 -118 544H-275"],774:[694,-515,0,-237,62,"-237 641Q-237 694 -218 694H-213Q-195 694 -195 684Q-195 683 -195 679T-197 667T-198 650Q-198 611 -176 589T-117 566Q-74 566 -34 597T23 678Q27 689 30 691T43 694Q62 694 62 684Q62 671 49 645T14 589T-46 537T-123 515Q-175 515 -206 550T-237 641"],775:[669,-548,0,-165,-41,"-165 599Q-162 631 -139 650T-93 669Q-65 669 -53 653T-41 620Q-41 593 -63 571T-116 548Q-134 548 -149 559T-165 599"],776:[669,-554,0,-251,45,"-251 601Q-251 626 -230 647T-180 669Q-139 669 -133 625Q-133 595 -155 575T-203 554Q-223 554 -237 567T-251 601ZM-72 599Q-72 632 -48 650T-2 669Q18 669 31 657T45 623Q45 592 22 573T-25 554Q-68 554 -72 599"],778:[716,-542,0,-199,3,"-199 610Q-199 654 -161 685T-79 716Q-39 716 -16 693Q3 674 3 647Q3 607 -34 575T-118 542Q-199 542 -199 610ZM-41 631T-41 655T-83 679H-89Q-129 679 -142 656Q-146 650 -151 632T-156 604Q-156 578 -113 578H-108Q-94 578 -86 579T-69 586T-52 605Q-41 631 -41 655"],779:[697,-503,0,-248,65,"-217 503Q-221 503 -234 510T-248 523Q-248 528 -205 602Q-200 610 -192 623T-180 644T-170 661T-159 676T-151 686T-142 694T-134 696Q-132 697 -121 697Q-88 694 -88 664Q-88 652 -97 640T-152 574Q-214 504 -217 503ZM-64 503Q-68 503 -81 510T-95 523Q-95 528 -52 602Q-47 610 -39 623T-27 644T-17 661T-6 676T2 686T11 694T19 696Q21 697 32 697Q65 694 65 664Q65 652 56 640T1 574Q-61 504 -64 503"],780:[638,-502,0,-236,29,"11 637Q16 637 22 624T29 607Q29 606 27 602Q26 600 -47 552T-125 502H-127Q-133 502 -184 553Q-236 602 -236 608Q-236 612 -224 625T-206 638L-202 637L-196 632Q-190 628 -179 620T-158 603L-116 570Q-109 572 -52 604T11 637"]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/Main/Italic/CombDiacritMarks.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/Main/Italic/GeneralPunctuation.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/Main/Italic/GeneralPunctuation.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS["MathJax_Main-italic"],{8211:[285,-248,511,91,554,"98 248Q91 252 91 259Q91 279 100 284Q102 285 324 285H442H500Q536 285 545 283T554 274Q554 260 548 254Q546 250 538 249Q520 248 319 248H98"],8212:[285,-248,1022,117,1038,"124 248Q117 252 117 259Q117 279 126 284Q128 285 579 285T1033 284Q1037 280 1037 278Q1038 276 1038 274Q1038 253 1029 250Q1026 248 575 248H124"],8216:[694,-379,307,197,362,"249 379Q228 379 213 396T197 448Q197 533 271 627L278 635Q286 643 295 652T314 671T332 687T344 694Q349 694 355 685T362 671Q362 668 345 654T301 608T256 537Q238 493 240 491Q241 491 245 493T258 498T275 500Q296 500 311 488T326 454Q326 426 304 403T249 379"],8217:[694,-378,307,212,377,"250 620Q250 647 272 670T325 694Q348 694 362 677T377 633V624Q377 566 343 506T275 412T231 379Q226 379 220 388T213 401T232 421T279 472T323 547Q335 573 335 582L331 580Q327 578 318 576T300 573Q277 573 264 585T250 620"],8220:[694,-379,514,243,606,"295 379Q274 379 259 396T243 448Q243 533 317 627Q326 638 354 666T391 694Q395 694 402 686T409 673Q409 668 392 654T348 608T302 537Q284 493 286 491Q287 491 291 493T304 498T321 500Q342 500 357 488T372 454Q372 426 350 403T295 379ZM492 379Q471 379 456 396T440 448Q440 533 514 627Q523 638 551 666T588 694Q592 694 599 685T606 672T589 654T544 608T499 537Q481 493 483 491Q484 491 488 493T501 498T518 500Q539 500 554 488T569 454Q569 426 547 403T492 379"],8221:[694,-379,514,176,538,"214 620Q214 647 236 670T289 694Q312 694 326 677T341 633V624Q341 588 327 550T294 482T253 428T216 392T196 379Q191 379 184 388T176 401Q176 404 195 421T243 472T287 547Q299 576 299 582L295 580Q291 578 282 576T264 573Q241 573 228 585T214 620ZM411 620Q411 647 433 670T486 694Q509 694 523 677T538 633V624Q538 588 524 550T491 482T450 428T413 392T393 379Q388 379 381 388T373 401Q373 404 392 421T440 472T484 547Q496 576 496 582L492 580Q488 578 479 576T461 573Q438 573 425 585T411 620"]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/Main/Italic/GeneralPunctuation.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/Main/Italic/LatinExtendedA.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/Main/Italic/LatinExtendedA.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS["MathJax_Main-italic"],{305:[441,10,307,75,341,"75 287Q75 292 82 313T103 362T142 413T196 441H214Q248 441 270 419T293 357Q292 338 289 330T245 208Q193 72 193 46Q193 26 209 26Q228 26 247 43Q273 71 292 136Q295 148 297 150T311 153H317Q327 153 330 153T337 150T340 143Q340 133 330 105T292 41T228 -8Q220 -10 204 -10Q160 -10 141 15T122 71Q122 98 171 227T221 384Q221 396 218 400T203 405Q175 403 156 374T128 312T116 279Q115 278 97 278H81Q75 284 75 287"]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/Main/Italic/LatinExtendedA.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/Main/Italic/LatinExtendedB.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/Main/Italic/LatinExtendedB.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS["MathJax_Main-italic"],{567:[442,204,332,-32,327,"75 284T75 287T81 305T101 343T133 389T180 426T240 442Q273 440 300 420T327 350V332L278 134Q267 92 253 37T233 -45T225 -73Q208 -123 162 -163T54 -204Q8 -204 -15 -181Q-32 -164 -32 -140Q-32 -112 -14 -96T27 -79Q48 -79 57 -91T67 -114Q67 -146 39 -166L44 -167H59H60Q112 -167 145 -74Q148 -65 198 134T251 347Q252 353 252 370Q252 382 251 388T245 399T230 405Q204 405 175 378Q157 360 145 337T126 298T117 280T98 278H81Q75 284 75 287"]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/Main/Italic/LatinExtendedB.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/Main/Italic/LetterlikeSymbols.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/Main/Italic/LetterlikeSymbols.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS["MathJax_Main-italic"],{8463:[695,13,540,42,562,"150 475Q147 475 118 466T82 457Q73 457 64 467T54 487Q54 490 55 492Q63 506 64 506Q67 512 118 526Q162 541 169 546Q173 559 175 575Q181 596 181 604Q181 613 166 617Q164 617 153 618T135 619Q119 619 114 621T109 630Q109 636 114 656T122 681Q125 685 202 688Q272 695 286 695Q304 695 304 684Q304 682 291 628L278 577L386 612Q466 635 476 635T492 627T499 607Q499 593 489 586Q485 583 373 546L262 512Q262 511 248 455T233 397T236 397T244 404Q295 441 357 441Q405 441 445 417T485 333Q485 284 449 178T412 58T426 44Q447 44 466 68Q485 87 500 130L509 152H531H543Q562 152 562 144Q562 128 546 93T494 23T415 -13Q385 -13 359 3T322 44Q318 52 318 77Q318 99 352 196T386 337Q386 386 346 386Q318 386 286 370Q267 361 245 338T211 292Q207 287 193 235T162 113T138 21Q128 7 122 4Q105 -12 83 -12Q66 -12 54 -2T42 26Q42 45 98 257L151 475H150"]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/Main/Italic/LetterlikeSymbols.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/Main/Italic/Main.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/Main/Italic/Main.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.OutputJax.SVG.FONTDATA.FONTS["MathJax_Main-italic"]={directory:"Main/Italic",family:"MathJax_Main",id:"MJMAINI",style:"italic",Ranges:[[32,127,"BasicLatin"],[256,383,"LatinExtendedA"],[384,591,"LatinExtendedB"],[768,879,"CombDiacritMarks"],[880,1023,"GreekAndCoptic"],[8192,8303,"GeneralPunctuation"],[8448,8527,"LetterlikeSymbols"]],163:[714,11,769,88,699,"699 578Q699 473 635 473Q597 473 595 508Q595 559 654 569V576Q654 619 637 648T581 677Q545 677 513 647T463 561Q460 554 437 464T414 371Q414 370 458 370H502Q508 364 508 362Q505 334 495 324H402L382 241Q377 224 373 206T366 180T361 163T358 151T354 142T350 133T344 120Q340 112 338 107T336 101L354 90Q398 63 422 54T476 44Q515 44 539 73T574 133Q578 144 580 146T598 148Q622 148 622 139Q622 138 620 130Q602 74 555 32T447 -11Q395 -11 317 38L294 51Q271 28 233 9T155 -10Q117 -10 103 5T88 39Q88 73 126 106T224 139Q236 139 247 138T266 134L273 132Q275 132 302 239L323 324H259Q253 330 253 332Q253 350 265 370H300L334 371L355 453Q356 457 360 477T366 501T372 522T379 545T387 565T397 587T409 606T425 627Q453 664 497 689T583 714Q640 714 669 676T699 578ZM245 76Q211 85 195 85Q173 85 158 71T142 42Q142 26 160 26H163Q211 30 245 76"]};MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/Main/Italic/Main.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/Main/Italic/MathOperators.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/Main/Italic/MathOperators.js 3 | * 4 | * Copyright (c) 2009-2015 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS["MathJax_Main-italic"],{8710:[716,0,818,70,751,""]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/Main/Italic/MathOperators.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/Main/Regular/CombDiacritMarks.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/Main/Regular/CombDiacritMarks.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS.MathJax_Main,{768:[699,-505,0,-394,-204,"-394 655Q-394 671 -381 685T-350 699Q-334 699 -323 688Q-310 671 -278 629T-225 561T-205 533T-218 519L-233 505L-304 563Q-381 626 -387 634Q-394 643 -394 655"],769:[699,-505,0,-297,-107,"-151 699Q-133 699 -120 686T-107 656Q-107 651 -108 647T-113 637T-120 627T-133 616T-149 602T-170 585T-197 563L-268 505L-283 519Q-297 533 -296 533Q-296 534 -271 567T-218 636T-187 678L-184 681Q-182 684 -179 686T-172 692T-163 697T-151 699"],770:[694,-531,0,-388,-113,"-388 560L-251 694L-243 686Q-113 562 -113 560L-139 531Q-141 532 -197 581L-250 627L-305 580Q-318 569 -331 557T-352 538L-360 532Q-362 530 -375 546L-388 560"],771:[668,-565,0,-417,-84,"-321 601Q-336 601 -349 595T-369 584T-389 565L-403 577L-417 588Q-417 589 -405 603T-379 633T-358 654Q-335 668 -313 668T-247 650T-180 632Q-165 632 -152 638T-132 649T-112 668L-98 656L-84 645Q-125 586 -156 572Q-170 565 -187 565Q-208 565 -252 583T-321 601"],772:[590,-544,0,-431,-70,"-431 544V590H-70V544H-431"],774:[694,-515,0,-408,-93,"-250 515Q-321 515 -362 565T-408 683V694H-371V689Q-371 688 -371 683T-370 675Q-363 631 -331 599T-252 567Q-196 567 -163 608T-130 689V694H-93V683Q-97 617 -139 566T-250 515"],775:[669,-549,0,-310,-191,"-310 609Q-310 637 -292 653T-248 669Q-225 667 -208 652T-191 609Q-191 579 -208 564T-250 549Q-275 549 -292 564T-310 609"],776:[669,-554,0,-405,-95,"-405 612Q-405 633 -388 651T-347 669T-307 652T-290 612Q-290 588 -306 571T-348 554L-373 560Q-405 577 -405 612ZM-211 611Q-211 634 -196 649T-165 668Q-164 668 -160 668T-154 669Q-131 669 -114 652T-96 612T-113 572T-154 554Q-177 554 -194 570T-211 611"],778:[715,-542,0,-353,-148,"-353 628Q-353 669 -321 692T-256 715Q-202 715 -175 689T-148 629Q-148 592 -177 567T-251 542Q-298 542 -325 567T-353 628ZM-187 628Q-187 660 -200 669T-241 678H-247Q-252 678 -258 678T-266 679Q-283 679 -293 674T-308 659T-312 644T-313 629Q-313 600 -302 590Q-290 579 -250 579H-235Q-221 579 -212 581T-195 595T-187 628"],779:[701,-510,0,-378,-80,"-292 701Q-278 701 -262 690T-246 658Q-246 649 -250 641Q-252 637 -297 574T-344 510L-378 528Q-378 530 -355 598T-327 676Q-316 701 -292 701ZM-126 701Q-112 701 -96 690T-80 658Q-80 649 -84 641Q-86 637 -131 574T-178 510L-212 528Q-212 530 -189 598T-161 676Q-150 701 -126 701"],780:[644,-513,0,-386,-115,"-386 611L-373 630L-364 644Q-362 644 -307 612Q-252 581 -250 581L-194 612Q-139 644 -137 644L-115 611L-182 562L-251 513L-386 611"],824:[716,215,0,-639,-140,"-612 -215T-619 -215T-631 -212T-637 -204T-639 -197Q-639 -190 -634 -183Q-621 -157 -400 274T-176 707Q-173 716 -160 716Q-153 716 -148 712T-142 703T-140 696Q-140 691 -372 241T-608 -212Q-612 -215 -619 -215"]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/Main/Regular/CombDiacritMarks.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/Main/Regular/GeometricShapes.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/Main/Regular/GeometricShapes.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS.MathJax_Main,{9651:[716,0,889,59,828,"75 0L72 2Q69 3 67 5T62 11T59 20Q59 24 62 30Q65 37 245 370T428 707Q428 708 430 710T436 714T444 716Q451 716 455 712Q459 710 644 368L828 27V20Q828 7 814 0H75ZM610 347L444 653Q443 653 278 347T113 40H775Q775 42 610 347"],9657:[505,5,500,26,473,"26 489Q33 505 43 505Q51 505 260 385Q464 266 471 259Q473 257 473 250Q473 242 469 239Q459 231 260 115Q51 -5 43 -5Q39 -5 35 -1T28 7L26 11V489ZM412 250L67 450Q66 450 66 250T67 50Q69 51 240 150T412 250"],9661:[500,215,889,59,828,"59 480Q59 485 61 489T66 495T72 498L75 500H814Q828 493 828 480V474L644 132Q458 -210 455 -212Q451 -215 444 -215T433 -212Q429 -210 342 -49T164 282T64 466Q59 478 59 480ZM775 460H113Q113 459 278 153T444 -153T610 153T775 460"],9667:[505,5,500,26,473,"473 10Q466 -5 454 -5Q451 -5 445 -3Q444 -3 343 56T140 173T35 234Q26 239 26 250T35 266Q40 269 240 384T445 503Q451 505 453 505Q466 505 473 490V10ZM433 50T433 250T432 450T259 351T87 250T258 150T432 50Q433 50 433 250"],9711:[715,215,1000,56,944,"56 250Q56 353 95 442T196 589T335 681T491 715Q573 715 635 693Q694 673 747 635T846 543T917 412T944 250Q944 58 815 -78T500 -215Q457 -215 429 -210Q274 -183 165 -56T56 250ZM500 -176Q664 -176 784 -54T904 250Q904 418 799 536T543 674Q534 675 493 675Q425 675 357 647T229 567T133 432T96 250Q96 160 129 80T217 -56T346 -144T500 -176"]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/Main/Regular/GeometricShapes.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/Main/Regular/LatinExtendedA.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/Main/Regular/LatinExtendedA.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS.MathJax_Main,{305:[443,0,278,26,255,"247 0Q232 3 143 3Q132 3 106 3T56 1L34 0H26V46H42Q70 46 91 49Q100 53 102 60T104 102V205V293Q104 345 102 359T88 378Q74 385 41 385H30V408Q30 431 32 431L42 432Q52 433 70 434T106 436Q123 437 142 438T171 441T182 442H185V62Q190 52 197 50T232 46H255V0H247"]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/Main/Regular/LatinExtendedA.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/Main/Regular/LatinExtendedB.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/Main/Regular/LatinExtendedB.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS.MathJax_Main,{567:[443,205,306,-55,218,"28 -163Q58 -168 64 -168Q124 -168 135 -77Q137 -65 137 141T136 353Q132 371 120 377T72 385H52V408Q52 431 54 431L58 432Q62 432 70 432T87 433T108 434T133 436Q151 437 171 438T202 441T214 442H218V184Q217 -36 217 -59T211 -98Q195 -145 153 -175T58 -205Q9 -205 -23 -179T-55 -117Q-55 -94 -40 -79T-2 -64T36 -79T52 -118Q52 -143 28 -163"]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/Main/Regular/LatinExtendedB.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/Main/Regular/MathOperators.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/Main/Regular/MathOperators.js 3 | * 4 | * Copyright (c) 2009-2015 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS.MathJax_Main,{8710:[716,0,833,46,786,""]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/Main/Regular/MathOperators.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/Main/Regular/SpacingModLetters.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/Main/Regular/SpacingModLetters.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS.MathJax_Main,{730:[715,-542,500,147,352,"147 628Q147 669 179 692T244 715Q298 715 325 689T352 629Q352 592 323 567T249 542Q202 542 175 567T147 628ZM313 628Q313 660 300 669T259 678H253Q248 678 242 678T234 679Q217 679 207 674T192 659T188 644T187 629Q187 600 198 590Q210 579 250 579H265Q279 579 288 581T305 595T313 628"]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/Main/Regular/SpacingModLetters.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/Main/Regular/SuppMathOperators.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/Main/Regular/SuppMathOperators.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS.MathJax_Main,{10815:[683,0,750,28,721,"28 660Q28 676 31 679T46 683H50Q87 681 182 681Q217 681 247 681T294 682T315 682Q321 682 323 682T328 679T331 673T332 660Q332 643 328 640T304 637Q239 637 231 626Q229 620 229 334V46H520V334Q520 620 518 626Q510 637 445 637Q426 637 422 640T417 660Q417 675 420 678T432 682H435Q437 682 467 682T569 681T671 681T703 682Q714 682 717 679T721 660Q721 643 717 640T693 637Q628 637 620 626Q619 623 619 342Q619 60 620 57Q628 46 693 46Q714 46 717 43T721 23Q721 5 715 1Q713 0 374 0Q36 0 34 1Q28 5 28 23Q28 40 31 43T56 46Q121 46 129 57Q131 63 131 342Q131 620 129 626Q121 637 56 637Q35 637 32 640T28 660"]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/Main/Regular/SuppMathOperators.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/SansSerif/Bold/Main.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/SansSerif/Bold/Main.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.OutputJax.SVG.FONTDATA.FONTS["MathJax_SansSerif-bold"]={directory:"SansSerif/Bold",family:"MathJax_SansSerif",id:"MJSSB",weight:"bold",Ranges:[[0,127,"BasicLatin"],[128,65535,"Other"],[768,879,"CombDiacritMarks"]]};MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/SansSerif/Bold/Main.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/SansSerif/Italic/CombDiacritMarks.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/SansSerif/Italic/CombDiacritMarks.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS["MathJax_SansSerif-italic"],{768:[694,-527,0,-270,-87,"-262 681L-270 694H-177L-132 612Q-89 530 -87 528Q-87 527 -125 527H-163L-208 598Q-254 670 -262 681"],769:[694,-527,0,-190,63,"-96 625L-29 694H63Q42 673 -31 605L-114 527H-190L-176 541Q-160 559 -96 625"],770:[694,-527,0,-310,33,"-310 527L-140 694H-66L-16 611Q33 528 33 527H-43L-110 632L-115 639L-234 527H-310"],771:[677,-543,0,-301,60,"-170 677Q-144 676 -112 648T-54 619Q-30 619 -16 677H22Q60 677 60 675L57 666Q54 656 49 642T35 613T12 582T-20 558Q-47 543 -71 543T-130 572T-185 601Q-215 601 -225 543H-301V547Q-286 607 -249 642T-170 677"],772:[631,-552,0,-314,64,"-314 553L-297 631H-116Q64 631 64 630Q60 612 56 591L47 553L-133 552Q-314 552 -314 553"],774:[694,-508,0,-284,73,"-142 508Q-205 508 -244 548T-284 652Q-284 666 -281 683L-280 694H-204Q-205 689 -205 677Q-205 650 -196 631T-173 604T-147 593T-125 590Q-85 590 -50 618T-5 686L-2 694H73V690Q53 610 -10 559T-142 508"],775:[680,-576,0,-180,-54,"-180 578Q-179 579 -170 627T-158 678V680H-54V678Q-56 675 -65 627T-76 578V576H-180V578"],776:[680,-582,0,-273,40,"-273 584Q-272 585 -262 632L-252 678V680H-154V678L-164 632Q-174 585 -175 584Q-175 582 -224 582T-273 584ZM-78 586Q-78 587 -69 632T-58 678V680H40L39 677Q39 676 38 670T34 651T29 628L19 583L-30 582H-79L-78 586"],778:[693,-527,0,-227,-2,"-227 597Q-227 639 -186 666T-102 693H-97Q-29 693 -8 649Q-2 637 -2 623Q-2 582 -43 555T-132 527Q-171 527 -199 546T-227 597ZM-59 619Q-59 635 -68 643T-104 652Q-142 652 -156 636T-171 602Q-171 569 -123 569Q-119 569 -111 570T-99 571Q-59 582 -59 619"],779:[694,-527,0,-287,63,"-236 619L-195 694H-149Q-103 694 -103 693L-211 527H-287L-282 536Q-281 539 -236 619ZM-70 619L-29 694H17Q63 694 63 693L-45 527H-121L-116 536Q-115 539 -70 619"],780:[654,-487,0,-283,60,"-283 654H-207L-140 549L-135 542L-16 654H60L-109 487H-147L-184 488L-234 570Q-283 653 -283 654"]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/SansSerif/Italic/CombDiacritMarks.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/SansSerif/Italic/Main.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/SansSerif/Italic/Main.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.OutputJax.SVG.FONTDATA.FONTS["MathJax_SansSerif-italic"]={directory:"SansSerif/Italic",family:"MathJax_SansSerif",id:"MJSSI",style:"italic",Ranges:[[0,127,"BasicLatin"],[128,65535,"Other"],[768,879,"CombDiacritMarks"]]};MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/SansSerif/Italic/Main.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/SansSerif/Regular/CombDiacritMarks.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/SansSerif/Regular/CombDiacritMarks.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS.MathJax_SansSerif,{768:[694,-527,0,-417,-200,"-415 692L-417 694H-324L-262 612Q-249 594 -233 572T-208 539L-200 528L-237 527H-275L-344 608Q-359 625 -378 647T-406 680T-415 692"],769:[694,-527,0,-301,-84,"-239 612L-177 694H-84L-86 692Q-86 691 -95 681T-123 648T-157 608L-226 527H-264L-301 528L-293 539Q-285 550 -269 572T-239 612"],770:[694,-527,0,-421,-79,"-354 612L-288 694H-213L-147 612Q-83 532 -80 529Q-79 528 -82 527Q-86 527 -117 527H-155L-250 639Q-256 633 -301 580L-346 527H-384Q-421 528 -421 529Q-418 532 -354 612"],771:[677,-543,0,-417,-84,"-417 554Q-414 604 -387 640T-314 677Q-289 677 -249 649T-188 620Q-163 620 -160 665V677H-84V666Q-87 608 -118 576T-185 543Q-211 543 -251 571T-313 600Q-338 600 -341 555V543H-417V554"],772:[631,-552,0,-431,-70,"-431 552V631H-70V552H-431"],774:[694,-508,0,-427,-74,"-250 508Q-331 508 -379 567T-427 689V694H-351V685Q-348 649 -321 620T-250 591Q-206 591 -180 619T-150 685V694H-74V689Q-74 624 -122 566T-250 508"],775:[680,-576,0,-302,-198,"-302 576V680H-198V576H-302"],776:[680,-582,0,-397,-104,"-397 582V680H-299V582H-397ZM-202 582V680H-104V582H-202"],778:[694,-526,0,-319,-99,"-319 611Q-319 649 -285 671T-211 694Q-164 694 -132 671T-99 611Q-99 572 -133 550T-209 527T-285 549T-319 611ZM-155 610Q-155 635 -171 643T-215 651Q-263 651 -263 610Q-263 570 -211 570H-209H-207Q-155 570 -155 610"],779:[694,-527,0,-399,-84,"-250 693Q-317 544 -323 527H-399L-343 694H-296Q-250 694 -250 693ZM-84 693Q-151 544 -157 527H-233L-177 694H-130Q-84 694 -84 693"],780:[654,-487,0,-422,-80,"-421 652Q-422 653 -419 654Q-415 654 -384 654H-346L-301 601Q-287 585 -275 571T-258 551T-250 542L-155 654H-117Q-80 653 -80 652Q-83 649 -147 569L-213 487H-288L-354 569Q-418 649 -421 652"]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/SansSerif/Regular/CombDiacritMarks.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/SansSerif/Regular/Main.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/SansSerif/Regular/Main.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.OutputJax.SVG.FONTDATA.FONTS.MathJax_SansSerif={directory:"SansSerif/Regular",family:"MathJax_SansSerif",id:"MJSS",Ranges:[[0,127,"BasicLatin"],[128,65535,"Other"],[768,879,"CombDiacritMarks"]]};MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/SansSerif/Regular/Main.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/Script/Regular/Main.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/Script/Regular/Main.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.OutputJax.SVG.FONTDATA.FONTS.MathJax_Script={directory:"Script/Regular",family:"MathJax_Script",id:"MJSCR",skew:{65:0.389,66:0.194,67:0.278,68:0.111,69:0.139,70:0.222,71:0.25,72:0.333,73:0.333,74:0.417,75:0.361,76:0.306,77:0.444,78:0.389,79:0.167,80:0.222,81:0.278,82:0.194,83:0.333,84:0.222,85:0.25,86:0.222,87:0.25,88:0.278,89:0.194,90:0.306},Ranges:[[0,127,"BasicLatin"]]};MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/Script/Regular/Main.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/Typewriter/Regular/CombDiacritMarks.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/Typewriter/Regular/CombDiacritMarks.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS.MathJax_Typewriter,{768:[611,-485,0,-409,-195,"-409 569Q-409 586 -399 596T-377 610Q-376 610 -372 610T-365 611Q-355 610 -284 588T-210 563Q-195 556 -195 537Q-195 533 -197 522T-208 498T-229 485Q-238 485 -312 508T-388 533Q-400 538 -405 552Q-409 559 -409 569"],769:[611,-485,0,-331,-117,"-297 485Q-315 485 -323 505T-331 537Q-331 556 -316 563Q-307 569 -170 610Q-169 610 -165 610T-157 611Q-141 609 -131 600T-119 584T-117 569Q-117 555 -124 545T-138 533Q-140 531 -214 508T-297 485"],770:[611,-460,0,-429,-97,"-387 460Q-404 460 -416 479T-429 512Q-429 527 -419 534Q-416 536 -347 571T-272 609Q-269 611 -261 611Q-254 610 -182 574Q-168 567 -156 561T-136 550T-123 543T-114 538T-109 535T-105 532T-103 529T-100 525Q-97 518 -97 512Q-97 498 -109 479T-139 460H-141Q-148 460 -209 496L-263 526L-317 496Q-378 460 -387 460"],771:[611,-466,0,-438,-88,"-400 467Q-412 467 -425 480T-438 509Q-437 520 -414 543Q-353 602 -316 609Q-306 611 -301 611Q-279 611 -262 596T-235 566T-221 551Q-206 551 -158 594Q-142 610 -129 610H-125Q-114 610 -101 597T-88 568Q-89 557 -112 534Q-177 469 -220 466Q-247 466 -265 481T-291 511T-305 526Q-320 526 -368 483Q-384 467 -396 467H-400"],772:[578,-500,0,-452,-74,"-429 500Q-440 504 -445 511T-450 522T-452 536Q-452 552 -451 556Q-445 571 -434 574T-379 578Q-369 578 -330 578T-261 577H-96Q-94 575 -90 573T-85 569T-81 564T-77 558T-75 550T-74 538Q-74 522 -78 515T-96 500H-429"],774:[611,-504,0,-447,-79,"-446 579Q-446 611 -412 611H-407Q-383 609 -378 599T-358 587Q-340 583 -263 583H-235Q-159 583 -152 593Q-145 611 -120 611H-117H-115Q-79 611 -79 577Q-80 552 -95 536T-140 514T-191 506T-251 504H-263H-274Q-311 504 -334 505T-386 513T-431 536T-446 579"],776:[612,-519,0,-421,-104,"-421 565Q-421 590 -405 600T-370 611Q-350 611 -345 610Q-308 599 -308 565Q-308 545 -323 532T-359 519H-366H-370Q-405 519 -418 547Q-421 553 -421 565ZM-218 565Q-218 580 -208 593T-179 610Q-177 610 -175 610T-171 611Q-170 612 -158 612Q-130 611 -117 597T-104 565T-116 534T-160 519H-167Q-189 519 -203 532T-218 565"],778:[619,-499,0,-344,-182,"-344 558Q-344 583 -321 601T-262 619Q-225 619 -204 600T-182 560Q-182 536 -205 518T-264 499Q-301 499 -322 519T-344 558ZM-223 559Q-223 570 -234 579T-261 588T-289 580T-303 559Q-303 549 -293 540T-263 530T-234 539T-223 559"],780:[577,-449,0,-427,-99,"-427 525Q-427 542 -417 559T-392 577Q-385 577 -323 553L-263 530L-203 553Q-143 576 -136 576Q-118 576 -109 559T-99 525Q-99 508 -107 502T-161 481Q-177 475 -186 472Q-256 449 -263 449Q-272 449 -339 472T-412 498Q-420 501 -423 508T-427 520V525"]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/Typewriter/Regular/CombDiacritMarks.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/MathJax/jax/output/SVG/fonts/TeX/Typewriter/Regular/Main.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/Typewriter/Regular/Main.js 3 | * 4 | * Copyright (c) 2009-2017 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.OutputJax.SVG.FONTDATA.FONTS.MathJax_Typewriter={directory:"Typewriter/Regular",family:"MathJax_Typewriter",id:"MJTT",Ranges:[[0,127,"BasicLatin"],[128,65535,"Other"],[768,879,"CombDiacritMarks"]]};MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/Typewriter/Regular/Main.js"); 20 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/external/waiting_dialog.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Module for displaying "Waiting for..." dialog using Bootstrap 3 | * 4 | * @author Eugene Maslovich 5 | */ 6 | 7 | var waitingDialog = waitingDialog || (function ($) { 8 | 'use strict'; 9 | 10 | // Creating modal dialog's DOM 11 | var $dialog = $( 12 | ''); 21 | 22 | return { 23 | /** 24 | * Opens our dialog 25 | * @param message Custom message 26 | * @param options Custom options: 27 | * options.dialogSize - bootstrap postfix for dialog size, e.g. "sm", "m"; 28 | * options.progressType - bootstrap postfix for progress bar type, e.g. "success", "warning". 29 | */ 30 | show: function (message, options) { 31 | // Assigning defaults 32 | if (typeof options === 'undefined') { 33 | options = {}; 34 | } 35 | if (typeof message === 'undefined') { 36 | message = 'Loading...'; 37 | } 38 | var settings = $.extend({ 39 | dialogSize: 'm', 40 | progressType: '', 41 | onHide: null, // This callback runs after the dialog was hidden 42 | ignoreCalls: false 43 | }, options); 44 | 45 | if (!$dialog.hasClass('ignoreCalls') || settings.ignoreCalls) { 46 | // Configuring dialog 47 | $dialog.find('.modal-dialog').attr('class', 'modal-dialog').addClass('modal-' + settings.dialogSize); 48 | $dialog.find('.progress-bar').attr('class', 'progress-bar'); 49 | if (settings.progressType) { 50 | $dialog.find('.progress-bar').addClass('progress-bar-' + settings.progressType); 51 | } 52 | $dialog.find('h3').text(message); 53 | // Adding callbacks 54 | if (typeof settings.onHide === 'function') { 55 | $dialog.off('hidden.bs.modal').on('hidden.bs.modal', function (e) { 56 | settings.onHide.call($dialog); 57 | }); 58 | } 59 | $dialog.find('.ui-dialog-titlebar-close').html('').click(function(event){ 60 | $dialog.modal('hide'); 61 | }); 62 | // Opening dialog 63 | $dialog.modal(); 64 | } 65 | 66 | if (settings.ignoreCalls) { 67 | $dialog.addClass('ignoreCalls'); 68 | } 69 | }, 70 | /** 71 | * Closes dialog 72 | */ 73 | hide: function (ignoreCalls) { 74 | if (!$dialog.hasClass('ignoreCalls') || (!isNull(ignoreCalls) && ignoreCalls)) { 75 | $dialog.modal('hide'); 76 | $dialog.removeClass('ignoreCalls'); 77 | $(".modal-backdrop").remove(); 78 | } 79 | }, 80 | 81 | hideProgress: function () { 82 | $dialog.find(".progress").html('
'); 83 | }, 84 | 85 | setProgress: function (progressPercent) { 86 | $dialog.find(".progress").html('
' + 87 | progressPercent + '%' + 88 | '
'); 89 | } 90 | }; 91 | 92 | })(jQuery); 93 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/ganalytics.js: -------------------------------------------------------------------------------- 1 | 2 | function GoogleAnalyticsTracker (trackingId) { 3 | 4 | var currentObj = this; 5 | this.trackingId = trackingId; 6 | this.clientId = null; 7 | this.measurementRestApiUrl = 'https://ssl.google-analytics.com/collect'; 8 | 9 | this.sendEvent = function(category, action, label) { 10 | $.post(this.measurementRestApiUrl, { 11 | "t": "event", 12 | "ec": category, 13 | "ea": action, 14 | "el": label, 15 | "v": "1", 16 | "tid": this.trackingId, 17 | "cid": ((!isNull(this.clientId) && (this.clientId != "")) ? this.clientId : "anonymous"), 18 | "z": (new Date()).getTime() 19 | }); 20 | }; 21 | 22 | this.sendPage = function(pageName) { 23 | $.post(this.measurementRestApiUrl, { 24 | "t": "pageview", 25 | "dp": pageName, 26 | "v": "1", 27 | "tid": this.trackingId, 28 | "cid": ((!isNull(this.clientId) && (this.clientId != "")) ? this.clientId : "anonymous"), 29 | "z": (new Date()).getTime() 30 | }); 31 | }; 32 | 33 | this.init = function () { 34 | new Fingerprint2().get(function(uniqueUserId, userData){ 35 | currentObj.clientId = uniqueUserId; 36 | 37 | //Send user data for analysis 38 | for (var i = 0; i < 15; i ++) { 39 | currentObj.sendEvent("UserData", userData[i].key, JSON.stringify(userData[i].value)); 40 | } 41 | }); 42 | } 43 | 44 | return this; 45 | } 46 | 47 | var gaTracker = new GoogleAnalyticsTracker("UA-108661407-2"); 48 | gaTracker.init(); 49 | 50 | //trackEvent("bla", "bla1", "bla2"); 51 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/historyManager.js: -------------------------------------------------------------------------------- 1 | //Actions history manager 2 | function HistoryManager(applyActionFn){ 3 | 4 | this.applyActionFn = applyActionFn 5 | this.actionsHistory = []; 6 | this.prevAction = null; 7 | 8 | this.addToHistory = function (action){ 9 | //Adds a action to actionsHistory, uses { obj } for cloning data (new obj reference) 10 | if (this.prevAction != null) { 11 | this.actionsHistory.push( $.extend(true, {}, this.prevAction) ); 12 | } 13 | 14 | //Stores a action on prevAction tmp var, uses $.extend for cloning data (new obj reference) 15 | this.prevAction = $.extend(true, [], action); 16 | } 17 | 18 | this.undoHistory = function () { 19 | if (this.actionsHistory.length > 0) { 20 | this.applyAction(this.actionsHistory.pop()); 21 | } 22 | } 23 | 24 | this.resetHistory = function () { 25 | if (this.actionsHistory.length > 0) { 26 | var action = this.actionsHistory[0]; 27 | this.actionsHistory = []; // Clears action history keeping default state 28 | this.applyAction(action); 29 | this.prevAction = null; 30 | this.addToHistory(action); 31 | } else { 32 | this.applyAction(this.prevAction); 33 | } 34 | } 35 | 36 | this.applyAction = function(action){ 37 | this.applyActionFn(action); 38 | this.prevAction = $.extend(true, [], action); 39 | } 40 | 41 | return this; 42 | } 43 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/plots/confidencePlot.js: -------------------------------------------------------------------------------- 1 | //Confidence Intervals Plot 2 | 3 | function ConfidencePlot(id, plotConfig, getDataFromServerFn, onFiltersChangedFn, onPlotReadyFn, toolbar, cssClass, switchable, projectConfig) { 4 | 5 | var currentObj = this; 6 | 7 | Plot.call(this, id, plotConfig, getDataFromServerFn, onFiltersChangedFn, onPlotReadyFn, toolbar, cssClass, switchable); 8 | 9 | this.btnLoad.hide(); 10 | 11 | this.getPlotlyConfig = function (data) { 12 | 13 | var coords = this.getSwitchedCoords( { x: 0, y: 1} ); 14 | var plotDefaultConfig = currentObj.getDefaultPlotlyConfig(); 15 | 16 | var plotlyConfig = get_plotdiv_scatter(data[coords.x].values, data[coords.y].values, 17 | this.getLabel(coords.x), 18 | this.getLabel(coords.y), 19 | this.getTitle(), 20 | plotDefaultConfig); 21 | 22 | plotlyConfig.data.push(getCrossLine ([this.minX, this.maxX], [ data[2].values[0], data[2].values[0] ], '#222222', 2, 'solid')); 23 | plotlyConfig.data.push(getCrossLine ([this.minX, this.maxX], [ data[2].values[1], data[2].values[1] ], '#666666', 2, 'dot')); 24 | plotlyConfig.data.push(getCrossLine ([this.minX, this.maxX], [ data[2].values[2], data[2].values[2] ], '#666666', 2, 'dot')); 25 | 26 | plotlyConfig.data.push(getCrossLine ([this.minX, this.maxX], [ data[3].values[1], data[3].values[1] ], '#888888', 2, 'dash')); 27 | plotlyConfig.data.push(getCrossLine ([this.minX, this.maxX], [ data[3].values[2], data[3].values[2] ], '#888888', 2, 'dash')); 28 | 29 | plotlyConfig = this.addExtraDataConfig(plotlyConfig, plotDefaultConfig); 30 | plotlyConfig = this.prepareAxis(plotlyConfig); 31 | 32 | return plotlyConfig; 33 | } 34 | 35 | log ("new ConfidencePlot id: " + this.id); 36 | 37 | return this; 38 | } 39 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/plots/covariancePlot.js: -------------------------------------------------------------------------------- 1 | //Covariance plot 2 | 3 | function CovariancePlot(id, plotConfig, getDataFromServerFn, onFiltersChangedFn, onPlotReadyFn, toolbar, cssClass, switchable, projectConfig) { 4 | 5 | var currentObj = this; 6 | 7 | if (projectConfig.schema.isEventsFile()) { 8 | var column = projectConfig.schema.getTable()["E"]; 9 | if (!isNull(column)){ 10 | 11 | //Adds Reference Band filter 12 | plotConfig.ref_band_interest = [column.min_value, column.max_value]; 13 | plotConfig.energy_range = [column.min_value, column.max_value]; 14 | plotConfig.default_energy_range = [column.min_value, column.max_value]; 15 | plotConfig.n_bands = Math.floor(column.max_value - column.min_value); 16 | plotConfig.std = -1; 17 | 18 | } else { 19 | log("CovariancePlot error, plot" + currentObj.id + ", NO ENERGY COLUMN ON SCHEMA"); 20 | } 21 | } else { 22 | log("CovariancePlot error, plot" + currentObj.id + ", NO EVENTS TABLE ON SCHEMA"); 23 | } 24 | 25 | PlotWithSettings.call(this, id, plotConfig, getDataFromServerFn, onFiltersChangedFn, onPlotReadyFn, toolbar, cssClass, switchable); 26 | 27 | //Covariance plot methods: 28 | 29 | this.onReferenceBandValuesChanged = function() { 30 | try { 31 | currentObj.plotConfig.ref_band_interest = [currentObj.refBandSelector.fromValue, currentObj.refBandSelector.toValue]; 32 | } catch (e) { 33 | log("onReferenceBandValuesChanged error, plot" + currentObj.id + ", error: " + e); 34 | } 35 | } 36 | 37 | this.onStdChanged = function(){ 38 | currentObj.plotConfig.std = getInputIntValueCropped(currentObj.settingsPanel.find(".inputStd"), currentObj.plotConfig.std, -1, CONFIG.MAX_PLOT_POINTS); 39 | } 40 | 41 | //CovariancePlot plot attributes: 42 | if (!isNull(this.plotConfig.ref_band_interest)){ 43 | 44 | //Adds Band of Interest selector 45 | this.addEnergyRangeControlToSetting("Band of interest (keV)", ".leftCol"); 46 | 47 | //Adds Reference Band selector 48 | this.refBandSelector = new sliderSelector(this.id + "_RefBand", 49 | "Reference Band (keV):", 50 | { table:"EVENTS", column:"E", source: "RefBand" }, 51 | this.plotConfig.ref_band_interest[0], this.plotConfig.ref_band_interest[1], 52 | this.onReferenceBandValuesChanged, 53 | null, 54 | function( event, ui ) { 55 | currentObj.refBandSelector.setValues( ui.values[ 0 ], ui.values[ 1 ], "slider"); 56 | currentObj.onReferenceBandValuesChanged(); 57 | }); 58 | this.refBandSelector.setFixedStep(CONFIG.ENERGY_FILTER_STEP); 59 | this.refBandSelector.setEnabled(true); 60 | this.settingsPanel.find(".leftCol").append(this.refBandSelector.$html); 61 | this.settingsPanel.find(".leftCol").append("
"); 62 | 63 | //Adds number of point control of rms plot 64 | this.addNumberOfBandsControlToSettings("Nº Bands", ".rightCol"); 65 | 66 | this.settingsPanel.find(".rightCol").append('

Standard deviation (<0 Default):

'); 67 | this.settingsPanel.find(".rightCol").find(".inputStd").on('change', this.onStdChanged); 68 | } 69 | 70 | log ("new CovariancePlot id: " + this.id); 71 | 72 | return this; 73 | } 74 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/plots/pgPlot.js: -------------------------------------------------------------------------------- 1 | //Periodogram plot 2 | 3 | function PgPlot(id, plotConfig, getDataFromServerFn, onFiltersChangedFn, onPlotReadyFn, toolbar, cssClass, switchable, projectConfig, plotStyle) { 4 | 5 | var currentObj = this; 6 | plotConfig.freq_range = [-1, -1]; 7 | plotConfig.default_freq_range = [-1, -1]; 8 | 9 | PDSPlot.call(this, id, plotConfig, getDataFromServerFn, onFiltersChangedFn, onPlotReadyFn, toolbar, cssClass, switchable, projectConfig); 10 | 11 | this.plotStyle = !isNull(plotStyle) ? plotStyle : null; 12 | this.ls_opts = {}; 13 | this.ls_opts.samples_per_peak = { default:5, min:1, max: 100}; //Samples per peak for LombScargle method 14 | this.ls_opts.nyquist_factor = { default:1, min:1, max: 100}; //The nyquist factor for LombScargle method 15 | 16 | this.plotConfig.xAxisType = "linear"; 17 | this.plotConfig.yAxisType = "log"; 18 | this.plotConfig.plotType = "X"; 19 | this.plotConfig.ls_norm = "standard"; 20 | this.plotConfig.samples_per_peak = this.ls_opts.samples_per_peak.default; 21 | this.plotConfig.nyquist_factor = this.ls_opts.nyquist_factor.default; 22 | 23 | this.onSettingsCreated = function(){ 24 | this.settingsPanel.find(".leftCol").hide(); 25 | } 26 | 27 | this.getDefaultFreqRange = function (){ 28 | if (this.plotConfig.default_freq_range[0] < 0 29 | && !isNull(this.data) && this.data.length >= 4) { 30 | var minMax = minMax2DArray(this.data[0].values); 31 | this.plotConfig.default_freq_range = [ minMax.min, minMax.max ]; 32 | } 33 | return this.plotConfig.default_freq_range; 34 | } 35 | 36 | this.mustPropagateAxisFilter = function (axis) { 37 | return axis == 0; 38 | } 39 | 40 | this.getLabel = function (axis) { 41 | if (axis == this.XYLabelAxis){ 42 | var yLabel = this.plotConfig.styles.labels[this.XYLabelAxis]; 43 | if (this.plotConfig.plotType == "X*Y" && 44 | (isNull(this.plotConfig.styles.XYLabelIsCustom) 45 | || !this.plotConfig.styles.XYLabelIsCustom)) { 46 | yLabel += " x " + this.plotConfig.styles.labels[0]; 47 | } 48 | return yLabel; 49 | } else { 50 | return this.plotConfig.styles.labels[axis]; 51 | } 52 | } 53 | 54 | log ("new PgPlot id: " + this.id); 55 | 56 | return this; 57 | } 58 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/plots/phaseLagPlot.js: -------------------------------------------------------------------------------- 1 | function PhaseLagPlot(id, plotConfig, getDataFromServerFn, onFiltersChangedFn, onPlotReadyFn, toolbar, cssClass, switchable, projectConfig) { 2 | 3 | var currentObj = this; 4 | RmsPlot.call(this, id, plotConfig, getDataFromServerFn, onFiltersChangedFn, onPlotReadyFn, toolbar, cssClass, switchable, projectConfig); 5 | 6 | this.freq_range_title = "Phase lag frequency range (Hz):"; 7 | this.energy_range_title = "Reference energy range (keV)"; 8 | 9 | log ("new PhaseLagPlot id: " + this.id); 10 | 11 | return this; 12 | } 13 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/plots/profilePlot.js: -------------------------------------------------------------------------------- 1 | //Profile plot 2 | 3 | function ProfilePlot(id, plotConfig, getDataFromServerFn, onFiltersChangedFn, onPlotReadyFn, toolbar, cssClass, switchable) { 4 | 5 | var currentObj = this; 6 | 7 | Plot.call(this, id, plotConfig, getDataFromServerFn, onFiltersChangedFn, onPlotReadyFn, toolbar, cssClass, switchable); 8 | 9 | this.btnFullScreen.remove(); 10 | this.btnLoad.remove(); 11 | 12 | this.getPlotlyConfig = function (data) { 13 | 14 | var coords = this.getSwitchedCoords( { x: 0, y: 1} ); 15 | var plotDefaultConfig = currentObj.getDefaultPlotlyConfig(); 16 | 17 | var plotlyConfig = get_plotdiv_lightcurve(data[0].values, data[1].values, [], [], [], 18 | this.plotConfig.styles.labels[coords.x], 19 | this.plotConfig.styles.labels[coords.y], 20 | this.getTitle(), 21 | plotDefaultConfig); 22 | 23 | plotlyConfig.layout.shapes = [ getConfidenceShape( [ data[2].values[0], data[2].values[1] ], 24 | plotDefaultConfig.CONFIDENCE_FILLCOLOR, 25 | plotDefaultConfig.CONFIDENCE_OPACITY ) ]; 26 | 27 | plotlyConfig = this.prepareAxis(plotlyConfig); 28 | 29 | return plotlyConfig; 30 | } 31 | 32 | this.getCoordsFromPlotlyHoverEvent = function (){ 33 | return null; 34 | } 35 | 36 | log ("new ProfilePlot id: " + this.id); 37 | 38 | return this; 39 | } 40 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/plots/pulseSearchPlot.js: -------------------------------------------------------------------------------- 1 | //Pulse Search Plot 2 | 3 | function PulseSearchPlot(id, plotConfig, getDataFromServerFn, onFiltersChangedFn, onPlotReadyFn, toolbar, cssClass, switchable) { 4 | 5 | var currentObj = this; 6 | 7 | plotConfig.freq_range = [-1, -1]; 8 | plotConfig.mode = "z_n_search"; 9 | plotConfig.oversampling = 15; 10 | plotConfig.nharm = 1; 11 | plotConfig.nbin = 128; 12 | plotConfig.segment_size = 5000; 13 | 14 | Plot.call(this, id, plotConfig, getDataFromServerFn, onFiltersChangedFn, onPlotReadyFn, toolbar, cssClass, switchable); 15 | 16 | this.btnLoad.remove(); 17 | 18 | this.ps_opts = {}; 19 | this.ps_opts.oversampling = { default:15, min:1, max: 100}; //Pulse peak oversampling for Z-squared search 20 | this.ps_opts.nharm = { default:1, min:1, max: 100}; //Number of harmonics for Z-squared search 21 | this.ps_opts.nbin = { default:128, min:1, max: 2048}; //Number of bins of the folded profiles for Z-squared search 22 | this.ps_opts.segment_size = { default:5000, min:1, max: 100000}; //Length of the segments to be averaged in the periodogram for Z-squared search 23 | 24 | this.candidateFreq = -1; 25 | 26 | this.getPlotlyConfig = function (data) { 27 | 28 | var coords = this.getSwitchedCoords( { x: 0, y: 1} ); 29 | var plotDefaultConfig = currentObj.getDefaultPlotlyConfig(); 30 | 31 | var plotlyConfig = get_plotdiv_xy(data[coords.x].values, data[coords.y].values, 32 | data[coords.x].error_values, data[coords.y].error_values, [], 33 | this.getLabel(coords.x), 34 | this.getLabel(coords.y), 35 | this.getTitle(), 36 | plotDefaultConfig); 37 | 38 | //Reset the candidateFreqs array 39 | this.candidateFreqs = []; 40 | 41 | if (data.length == 4) { 42 | if (data[2].values.length > 0) { 43 | 44 | //Calculates the sum of stats 45 | var totalStats = 0; 46 | for (i = 0; i < data[3].values.length; i++) { 47 | totalStats += data[3].values[i]; 48 | } 49 | 50 | //Calculates and plots the candidate frequencies 51 | for (i = 0; i < data[2].values.length; i++) { 52 | var freq = data[2].values[i]; 53 | var ratio = data[3].values[i] / totalStats; 54 | var opacity = parseFloat(fixedPrecision(Math.max(Math.min(Math.pow(ratio, 1/2) + 0.15, 1.0), 0.15), 3)); 55 | this.candidateFreqs.push({ freq: freq, ratio: ratio }); 56 | plotlyConfig.data.push(getCrossLine ([freq, freq], 57 | [this.minY, this.maxY], 58 | plotDefaultConfig.CANDIDATE_FREQ_COLOR, Math.ceil(5 * ratio), 'solid', opacity)); 59 | } 60 | } else { 61 | this.showWarn("No pulses found in the range of frequencies"); 62 | } 63 | } 64 | 65 | plotlyConfig = this.prepareAxis(plotlyConfig); 66 | 67 | return plotlyConfig; 68 | } 69 | 70 | log ("new PulseSearchPlot id: " + this.id); 71 | 72 | return this; 73 | } 74 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/plots/timingPlot.js: -------------------------------------------------------------------------------- 1 | //Timing plot 2 | 3 | function TimingPlot(id, plotConfig, getDataFromServerFn, onFiltersChangedFn, onPlotReadyFn, toolbar, cssClass, switchable) { 4 | 5 | var currentObj = this; 6 | 7 | PlotWithSettings.call(this, id, plotConfig, getDataFromServerFn, onFiltersChangedFn, onPlotReadyFn, toolbar, cssClass, switchable); 8 | 9 | this.plotConfig.xAxisType = "linear"; 10 | this.plotConfig.yAxisType = "linear"; 11 | 12 | //Overrides Btn back from setting for redraw plot with current data, without server call 13 | this.btnBack.click(function(event){ 14 | currentObj.hideSettings(); 15 | if (!isNull(currentObj.data)) { 16 | var plotlyConfig = currentObj.getPlotlyConfig(currentObj.data); 17 | currentObj.redrawPlot(plotlyConfig); 18 | } 19 | currentObj.setReadyState(true); 20 | currentObj.onPlotReady(); 21 | gaTracker.sendEvent("Plots", "HidePlotSettings", currentObj.getTitle()); 22 | }); 23 | 24 | //TimingPlot plot methods: 25 | this.addSettingsControls = function(){ 26 | 27 | if (this.settingsPanel.find(".AxisType").length == 0) { 28 | this.addAxesTypeControlsToSettings(".leftCol"); 29 | this.onSettingsCreated(); 30 | } 31 | } 32 | 33 | this.getPlotlyConfig = function (data) { 34 | 35 | var coords = this.getSwitchedCoords( { x: 0, y: 1} ); 36 | var plotDefaultConfig = currentObj.getDefaultPlotlyConfig(); 37 | 38 | var plotlyConfig = get_plotdiv_lightcurve(data[0].values, data[1].values, 39 | [], data[2].values, 40 | (data.length > 4) ? this.getWtiRangesFromGtis(data[3].values, data[4].values, data[0].values) : [], 41 | this.plotConfig.styles.labels[coords.x], 42 | this.plotConfig.styles.labels[coords.y], 43 | this.getTitle(), 44 | plotDefaultConfig); 45 | 46 | plotlyConfig = this.addExtraDataConfig(plotlyConfig, plotDefaultConfig); 47 | plotlyConfig = this.prepareAxis(plotlyConfig); 48 | 49 | return plotlyConfig; 50 | } 51 | 52 | log ("new TimingPlot id: " + this.id); 53 | 54 | return this; 55 | } 56 | -------------------------------------------------------------------------------- /src/main/resources/static/scripts/version.js: -------------------------------------------------------------------------------- 1 | BUILD_VERSION='DEV VERSION'; 2 | -------------------------------------------------------------------------------- /src/main/resources/static/styles/external/images/blank.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/styles/external/images/blank.gif -------------------------------------------------------------------------------- /src/main/resources/static/styles/external/images/colorpicker_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/styles/external/images/colorpicker_background.png -------------------------------------------------------------------------------- /src/main/resources/static/styles/external/images/colorpicker_hex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/styles/external/images/colorpicker_hex.png -------------------------------------------------------------------------------- /src/main/resources/static/styles/external/images/colorpicker_hsb_b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/styles/external/images/colorpicker_hsb_b.png -------------------------------------------------------------------------------- /src/main/resources/static/styles/external/images/colorpicker_hsb_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/styles/external/images/colorpicker_hsb_h.png -------------------------------------------------------------------------------- /src/main/resources/static/styles/external/images/colorpicker_hsb_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/styles/external/images/colorpicker_hsb_s.png -------------------------------------------------------------------------------- /src/main/resources/static/styles/external/images/colorpicker_indic.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/styles/external/images/colorpicker_indic.gif -------------------------------------------------------------------------------- /src/main/resources/static/styles/external/images/colorpicker_overlay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/styles/external/images/colorpicker_overlay.png -------------------------------------------------------------------------------- /src/main/resources/static/styles/external/images/colorpicker_rgb_b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/styles/external/images/colorpicker_rgb_b.png -------------------------------------------------------------------------------- /src/main/resources/static/styles/external/images/colorpicker_rgb_g.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/styles/external/images/colorpicker_rgb_g.png -------------------------------------------------------------------------------- /src/main/resources/static/styles/external/images/colorpicker_rgb_r.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/styles/external/images/colorpicker_rgb_r.png -------------------------------------------------------------------------------- /src/main/resources/static/styles/external/images/colorpicker_select.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/styles/external/images/colorpicker_select.gif -------------------------------------------------------------------------------- /src/main/resources/static/styles/external/images/colorpicker_submit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/styles/external/images/colorpicker_submit.png -------------------------------------------------------------------------------- /src/main/resources/static/styles/external/images/custom_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/styles/external/images/custom_background.png -------------------------------------------------------------------------------- /src/main/resources/static/styles/external/images/custom_hex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/styles/external/images/custom_hex.png -------------------------------------------------------------------------------- /src/main/resources/static/styles/external/images/custom_hsb_b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/styles/external/images/custom_hsb_b.png -------------------------------------------------------------------------------- /src/main/resources/static/styles/external/images/custom_hsb_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/styles/external/images/custom_hsb_h.png -------------------------------------------------------------------------------- /src/main/resources/static/styles/external/images/custom_hsb_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/styles/external/images/custom_hsb_s.png -------------------------------------------------------------------------------- /src/main/resources/static/styles/external/images/custom_indic.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/styles/external/images/custom_indic.gif -------------------------------------------------------------------------------- /src/main/resources/static/styles/external/images/custom_rgb_b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/styles/external/images/custom_rgb_b.png -------------------------------------------------------------------------------- /src/main/resources/static/styles/external/images/custom_rgb_g.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/styles/external/images/custom_rgb_g.png -------------------------------------------------------------------------------- /src/main/resources/static/styles/external/images/custom_rgb_r.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/styles/external/images/custom_rgb_r.png -------------------------------------------------------------------------------- /src/main/resources/static/styles/external/images/custom_submit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/styles/external/images/custom_submit.png -------------------------------------------------------------------------------- /src/main/resources/static/styles/external/images/select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/styles/external/images/select.png -------------------------------------------------------------------------------- /src/main/resources/static/styles/external/images/select2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/styles/external/images/select2.png -------------------------------------------------------------------------------- /src/main/resources/static/styles/external/images/ui-bg_flat_0_aaaaaa_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/styles/external/images/ui-bg_flat_0_aaaaaa_40x100.png -------------------------------------------------------------------------------- /src/main/resources/static/styles/external/images/ui-icons_444444_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/styles/external/images/ui-icons_444444_256x240.png -------------------------------------------------------------------------------- /src/main/resources/static/styles/external/images/ui-icons_555555_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/styles/external/images/ui-icons_555555_256x240.png -------------------------------------------------------------------------------- /src/main/resources/static/styles/external/images/ui-icons_777620_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/styles/external/images/ui-icons_777620_256x240.png -------------------------------------------------------------------------------- /src/main/resources/static/styles/external/images/ui-icons_777777_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/styles/external/images/ui-icons_777777_256x240.png -------------------------------------------------------------------------------- /src/main/resources/static/styles/external/images/ui-icons_cc0000_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/styles/external/images/ui-icons_cc0000_256x240.png -------------------------------------------------------------------------------- /src/main/resources/static/styles/external/images/ui-icons_ffffff_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/main/resources/static/styles/external/images/ui-icons_ffffff_256x240.png -------------------------------------------------------------------------------- /src/main/resources/templates/error.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Flask Intro 5 | 6 | 7 | 8 |
9 |

OOPS! Something went Wrong

10 |
11 |

Click here to go home.

12 | Error: {{error}} 13 |
14 | 15 | 16 | -------------------------------------------------------------------------------- /src/main/resources/templates/includes/nav_bar.html: -------------------------------------------------------------------------------- 1 | 24 | -------------------------------------------------------------------------------- /src/main/resources/templates/includes/output_panel.html: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /src/main/resources/templates/includes/tab_panel.html: -------------------------------------------------------------------------------- 1 | 2 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /src/main/resources/templates/includes/tool_panel.html: -------------------------------------------------------------------------------- 1 | 2 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /src/test/python/test/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/test/python/test/__init__.py -------------------------------------------------------------------------------- /src/test/python/test/fixture.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import os 3 | 4 | import matplotlib 5 | matplotlib.use('TkAgg') # Changes the matplotlib framework 6 | 7 | myPath = os.path.dirname(os.path.abspath(__file__)) 8 | sys.path.insert(0, myPath + '/../../../main/python') 9 | 10 | print("Syspath: %s" % sys.path) 11 | 12 | APP_ROOT = os.path.dirname(os.path.abspath(__file__)) 13 | TEST_RESOURCES = os.path.join(APP_ROOT, '../../resources/pytest') 14 | -------------------------------------------------------------------------------- /src/test/python/test/model/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/test/python/test/model/__init__.py -------------------------------------------------------------------------------- /src/test/python/test/model/test_column.py: -------------------------------------------------------------------------------- 1 | from test.fixture import * 2 | 3 | from hypothesis import given 4 | import hypothesis.strategies as st 5 | 6 | from model.column import Column 7 | 8 | 9 | @given(st.text()) 10 | def test_init(s): 11 | column = Column(s) 12 | assert column and column.id == s 13 | 14 | 15 | @given( 16 | st.text(), 17 | st.integers(), 18 | st.floats(allow_nan=False, allow_infinity=False) 19 | ) 20 | def test_add_value(s, v, e): 21 | column = Column(s) 22 | column.add_value(v, e) 23 | assert len(column.values) == 1 24 | 25 | 26 | @given( 27 | st.text(), 28 | st.integers(), 29 | st.floats(allow_nan=False, allow_infinity=False) 30 | ) 31 | def test_get_value(s, v, e): 32 | column = Column(s) 33 | column.add_value(v, e) 34 | assert column.get_value(0) == v 35 | 36 | 37 | @given( 38 | st.text(), 39 | st.integers(), 40 | st.floats(allow_nan=False, allow_infinity=False) 41 | ) 42 | def test_get_error_value(s, v, e): 43 | column = Column(s) 44 | column.add_value(v, e) 45 | assert column.get_error_value(0) == e 46 | 47 | 48 | @given( 49 | st.text(), 50 | st.integers(), 51 | st.floats(allow_nan=False, allow_infinity=False) 52 | ) 53 | def test_get_shema(s, v, e): 54 | column = Column(s) 55 | column.add_value(v, e) 56 | schema = column.get_schema() 57 | assert "id" in schema 58 | assert schema["id"] == s 59 | assert "count" in schema 60 | assert schema["count"] == 1 61 | assert "min_value" in schema 62 | assert schema["min_value"] == v 63 | assert "max_value" in schema 64 | assert schema["max_value"] == v 65 | 66 | 67 | @given( 68 | st.text(), 69 | st.integers(), 70 | st.floats(allow_nan=False, allow_infinity=False) 71 | ) 72 | def test_clone(s, v, e): 73 | column1 = Column(s) 74 | column1.add_value(v, e) 75 | schema1 = column1.get_schema() 76 | column2 = column1.clone() 77 | schema2 = column2.get_schema() 78 | assert schema1 == schema2 79 | -------------------------------------------------------------------------------- /src/test/python/test/utils/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/test/python/test/utils/__init__.py -------------------------------------------------------------------------------- /src/test/python/test/utils/test_dataset_helper.py: -------------------------------------------------------------------------------- 1 | from test.fixture import * 2 | import os 3 | 4 | from hypothesis import given 5 | import hypothesis.strategies as st 6 | from hypothesis import example 7 | 8 | import utils.dave_reader as DaveReader 9 | import utils.file_utils as FileUtils 10 | import utils.filters_helper as FltHelper 11 | import utils.dataset_helper as DsHelper 12 | 13 | 14 | @given(st.text(min_size=1)) 15 | @example("test.evt") 16 | @example("test_Gtis.evt") 17 | def test_get_eventlist_from_evt_dataset(s): 18 | destination = FileUtils.get_destination(TEST_RESOURCES, s) 19 | 20 | if not FileUtils.is_valid_file(destination): 21 | return None 22 | 23 | dataset, cache_key = DaveReader.get_file_dataset(destination) 24 | 25 | if not dataset: 26 | return None 27 | 28 | eventList = DsHelper.get_eventlist_from_evt_dataset(dataset) 29 | 30 | assert not os.path.isfile(destination) or len(eventList.time) > 0 31 | -------------------------------------------------------------------------------- /src/test/python/test/utils/test_dave_engine.py: -------------------------------------------------------------------------------- 1 | from test.fixture import * 2 | 3 | from hypothesis import given 4 | from hypothesis import example 5 | from hypothesis.strategies import text 6 | 7 | import utils.dave_engine as DaveEngine 8 | import utils.file_utils as FileUtils 9 | import utils.dave_reader as DaveReader 10 | import utils.filters_helper as FltHelper 11 | 12 | @given(text(min_size=1)) 13 | @example("Test_Input_1.txt") 14 | @example("test.evt") 15 | def test_get_dataset_schema(s): 16 | destination = FileUtils.get_destination(TEST_RESOURCES, s) 17 | schema = None 18 | 19 | if FileUtils.is_valid_file(destination): 20 | schema = DaveEngine.get_dataset_schema(destination) 21 | assert schema is not None 22 | 23 | 24 | @given(text(min_size=1)) 25 | @example("test.evt") 26 | @example("test_Gtis.evt") 27 | def test_get_lightcurve(s): 28 | destination = FileUtils.get_destination(TEST_RESOURCES, s) 29 | result = None 30 | 31 | axis = [dict() for i in range(2)] 32 | axis[0]["table"] = "EVENTS" 33 | axis[0]["column"] = "TIME" 34 | axis[1]["table"] = "EVENTS" 35 | axis[1]["column"] = "PHA" 36 | 37 | baseline_opts = dict() 38 | baseline_opts["niter"] = 10 39 | baseline_opts["lam"] = 1000 40 | baseline_opts["p"] = 0.01 41 | 42 | meanflux_opts = dict() 43 | meanflux_opts["niter"] = 10 44 | meanflux_opts["lam"] = 1000 45 | meanflux_opts["p"] = 0.01 46 | 47 | if FileUtils.is_valid_file(destination): 48 | result = DaveEngine.get_lightcurve(destination, "", "", [], axis, 16., baseline_opts, meanflux_opts, None) 49 | assert result is not None 50 | 51 | 52 | @given(text(min_size=1)) 53 | def test_get_divided_lightcurve_ds(s): 54 | destination = FileUtils.get_destination(TEST_RESOURCES, "Test_Input_2.lc") 55 | result = "" 56 | 57 | if FileUtils.is_valid_file(destination): 58 | result = DaveEngine.get_divided_lightcurve_ds(destination, destination, "", "") 59 | assert len(result) > 0 60 | 61 | 62 | @given(text(min_size=1)) 63 | @example("test.evt") 64 | @example("test_Gtis.evt") 65 | def test_get_power_density_spectrum(s): 66 | destination = FileUtils.get_destination(TEST_RESOURCES, s) 67 | result = None 68 | 69 | axis = [dict() for i in range(2)] 70 | axis[0]["table"] = "EVENTS" 71 | axis[0]["column"] = "TIME" 72 | axis[1]["table"] = "EVENTS" 73 | axis[1]["column"] = "PHA" 74 | 75 | if FileUtils.is_valid_file(destination): 76 | result = DaveEngine.get_power_density_spectrum(destination, "", "", [], axis, 16., 1, 0, 'leahy', 'Sng') 77 | assert result is not None 78 | 79 | 80 | @given(text(min_size=1)) 81 | @example("test.evt") 82 | @example("/\x00") 83 | def test_get_cross_spectrum(s): 84 | destination = FileUtils.get_destination(TEST_RESOURCES, s) 85 | result = None 86 | 87 | axis = [dict() for i in range(2)] 88 | axis[0]["table"] = "EVENTS" 89 | axis[0]["column"] = "TIME" 90 | axis[1]["table"] = "EVENTS" 91 | axis[1]["column"] = "PHA" 92 | 93 | if FileUtils.is_valid_file(destination): 94 | result = DaveEngine.get_cross_spectrum(destination, "", "", [], axis, 16., 95 | destination, "", "", [], axis, 16., 96 | 1, 0, 'leahy', 'Avg') 97 | assert result is not None 98 | -------------------------------------------------------------------------------- /src/test/python/test/utils/test_file_utils.py: -------------------------------------------------------------------------------- 1 | from test.fixture import * 2 | import os 3 | 4 | from hypothesis import given 5 | from hypothesis.strategies import text 6 | from hypothesis import example 7 | 8 | import utils.file_utils as FileUtils 9 | 10 | 11 | @given(text(min_size=1)) 12 | @example("Test_Input_1.txt") 13 | @example("Test_Input_2.lc") 14 | def test_is_valid_file(s): 15 | destination = FileUtils.get_destination(TEST_RESOURCES, s) 16 | try: 17 | assert FileUtils.is_valid_file(destination) == os.path.isfile(destination) 18 | except: 19 | assert FileUtils.is_valid_file(destination) == False 20 | -------------------------------------------------------------------------------- /src/test/python/test/utils/test_filters_helper.py: -------------------------------------------------------------------------------- 1 | from test.fixture import * 2 | import os 3 | 4 | from hypothesis import given 5 | import hypothesis.strategies as st 6 | 7 | import utils.filters_helper as FltHelper 8 | 9 | @given( 10 | st.text(min_size=1), 11 | st.text(min_size=1), 12 | st.floats(allow_nan=False, allow_infinity=False), 13 | st.floats(allow_nan=False, allow_infinity=False) 14 | ) 15 | def test_createFilter(tn, c, f, t): 16 | 17 | filter = FltHelper.createFilter(tn, c, f, t) 18 | assert len(filter) == 4 19 | assert filter["table"] == tn 20 | assert filter["column"] == c 21 | assert filter["from"] == f 22 | assert filter["to"] == t 23 | 24 | 25 | @given(st.text(min_size=1)) 26 | def test_get_time_filter(s): 27 | 28 | filter1 = FltHelper.createFilter("EVENTS", "1", 0, 1) 29 | filter2 = FltHelper.createFilter("EVENTS", "2", 0, 1) 30 | filter3 = FltHelper.createTimeFilter(0, 1) 31 | time_filter = FltHelper.get_time_filter ([filter1, filter2, filter3]) 32 | assert time_filter 33 | assert time_filter["column"] == "TIME" 34 | 35 | 36 | @given(st.text(min_size=1)) 37 | def test_get_color_keys_from_filters(s): 38 | 39 | filter1 = FltHelper.createFilter("EVENTS", "1", 0, 1) 40 | filter2 = FltHelper.createFilter("EVENTS", "2", 0, 1, "ColorSelector") 41 | filter3 = FltHelper.createFilter("EVENTS", "3", 0, 1, "ColorSelector") 42 | filter4 = FltHelper.createTimeFilter(0, 1) 43 | color_keys = FltHelper.get_color_keys_from_filters ([filter1, filter2, filter3, filter4]) 44 | assert color_keys 45 | assert len(color_keys) == 2 46 | -------------------------------------------------------------------------------- /src/test/resources/datasets/Input1.txt: -------------------------------------------------------------------------------- 1 | 0 3830 61.886993 0.5 2 | 1 3791 61.5711 0.5 3 | 2 3681 60.671246 0.5 4 | 3 3605 60.041653 0.5 5 | 4 3815 61.765686 0.5 6 | 5 3785 61.522354 0.5 7 | 6 3733 61.09828 0.5 8 | 7 3889 62.361847 0.5 9 | 8 3762 61.335144 0.5 10 | 9 3725 61.03278 0.5 11 | 10 3854 62.080593 0.5 12 | 11 3785 61.522354 0.5 13 | 12 3797 61.6198 0.5 14 | 13 3758 61.30253 0.5 15 | 14 3776 61.449165 0.5 16 | 15 3799 61.63603 0.5 17 | 16 3646 60.38212 0.5 18 | 17 3705 60.86871 0.5 19 | 18 3742 61.17189 0.5 20 | 19 3922 62.625874 0.5 21 | 20 3674 60.61353 0.5 22 | 21 3926 62.657803 0.5 23 | 22 3791 61.5711 0.5 24 | 23 3739 61.14736 0.5 25 | 24 3817 61.781876 0.5 26 | 25 3788 61.54673 0.5 27 | 26 3623 60.19136 0.5 28 | 27 3721 61 0.5 29 | 28 3712 60.926186 0.5 30 | 29 3716 60.959003 0.5 31 | 30 3674 60.61353 0.5 32 | 31 3831 61.895073 0.5 33 | 32 3743 61.18006 0.5 34 | 33 3705 60.86871 0.5 35 | 34 3794 61.595455 0.5 36 | 35 3841 61.975803 0.5 37 | 36 3802 61.66036 0.5 38 | 37 3679 60.654762 0.5 39 | 38 3813 61.749493 0.5 40 | 39 3691 60.7536 0.5 41 | 40 3832 61.90315 0.5 42 | 41 3823 61.830414 0.5 43 | 42 3787 61.538605 0.5 44 | 43 3880 62.289646 0.5 45 | 44 3736 61.122826 0.5 46 | 45 3677 60.63827 0.5 47 | 46 3693 60.770058 0.5 48 | 47 3663 60.522724 0.5 49 | 48 3719 60.983604 0.5 50 | 49 3920 62.609905 0.5 51 | 50 3726 61.04097 0.5 52 | 51 3726 61.04097 0.5 53 | 52 3763 61.343296 0.5 54 | 53 3744 61.188232 0.5 55 | 54 3839 61.959663 0.5 56 | 55 3864 62.16108 0.5 57 | 56 3812 61.741398 0.5 58 | 57 3741 61.163715 0.5 59 | 58 3828 61.870834 0.5 60 | 59 3803 61.66847 0.5 61 | 60 3804 61.676575 0.5 62 | 61 3764 61.351448 0.5 63 | 62 3804 61.676575 0.5 64 | 63 3791 61.5711 0.5 65 | 64 3779 61.47357 0.5 66 | 65 3848 62.03225 0.5 67 | 66 3787 61.538605 0.5 68 | 67 3707 60.88514 0.5 69 | 68 3751 61.245407 0.5 70 | 69 3751 61.245407 0.5 71 | 70 3797 61.6198 0.5 72 | 71 3680 60.663002 0.5 73 | 72 3674 60.61353 0.5 74 | 73 3715 60.950798 0.5 75 | 74 3596 59.966656 0.5 76 | 75 3682 60.679485 0.5 77 | 76 3785 61.522354 0.5 78 | 77 3745 61.196404 0.5 79 | 78 3840 61.967735 0.5 80 | 79 3681 60.671246 0.5 81 | 80 3876 62.25753 0.5 82 | 81 3737 61.13101 0.5 83 | 82 3802 61.66036 0.5 84 | 83 3808 61.708996 0.5 85 | 84 3691 60.7536 0.5 86 | 85 3803 61.66847 0.5 87 | 86 3739 61.14736 0.5 88 | 87 3777 61.457302 0.5 89 | 88 3948 62.83311 0.5 90 | 89 3870 62.209324 0.5 91 | 90 3706 60.876926 0.5 92 | 91 3769 61.39218 0.5 93 | 92 3719 60.983604 0.5 94 | 93 3760 61.31884 0.5 95 | 94 3681 60.671246 0.5 96 | 95 3756 61.286213 0.5 97 | 96 3723 61.01639 0.5 98 | 97 3775 61.44103 0.5 99 | 98 3781 61.489838 0.5 100 | 99 3814 61.75759 0.5 101 | 100 3658 60.481403 0.5 102 | -------------------------------------------------------------------------------- /src/test/resources/datasets/Input_funnycolor.txt: -------------------------------------------------------------------------------- 1 | 0.000 3830.000 61.887 0.500 2800.000 1300.000 0.000 0.000 2 | 1.000 3791.000 61.571 0.500 2772.931 1291.379 0.000 0.000 3 | 2.000 3681.000 60.671 0.500 2745.940 1282.759 0.000 0.000 4 | 3.000 3605.000 60.042 0.500 2719.109 1274.138 0.000 0.000 5 | 4.000 3815.000 61.766 0.500 2692.515 1265.517 0.000 0.000 6 | 5.000 3785.000 61.522 0.500 2666.236 1256.897 0.000 0.000 7 | 6.000 3733.000 61.098 0.500 2640.349 1248.276 0.000 0.000 8 | 7.000 3889.000 62.362 0.500 2614.931 1239.655 0.000 0.000 9 | 8.000 3762.000 61.335 0.500 2590.055 1231.034 0.000 0.000 10 | 9.000 3725.000 61.033 0.500 2565.796 1222.414 0.000 0.000 11 | 10.000 3854.000 62.081 0.500 2542.223 1213.793 0.000 0.000 12 | 11.000 3785.000 61.522 0.500 2519.406 1205.172 0.000 0.000 13 | 12.000 3797.000 61.620 0.500 2497.413 1196.552 0.000 0.000 14 | 13.000 3758.000 61.303 0.500 2476.307 1187.931 0.000 0.000 15 | 14.000 3776.000 61.449 0.500 2456.150 1179.310 0.000 0.000 16 | 15.000 3799.000 61.636 0.500 2437.002 1170.690 0.000 0.000 17 | 16.000 3646.000 60.382 0.500 2418.919 1162.069 0.000 0.000 18 | 17.000 3705.000 60.869 0.500 2401.953 1153.448 0.000 0.000 19 | 18.000 3742.000 61.172 0.500 2386.156 1144.828 0.000 0.000 20 | 19.000 3922.000 62.626 0.500 2371.571 1136.207 0.000 0.000 21 | 20.000 3674.000 60.614 0.500 2358.244 1127.586 0.000 0.000 22 | 21.000 3926.000 62.658 0.500 2346.212 1118.966 0.000 0.000 23 | 22.000 3791.000 61.571 0.500 2335.512 1110.345 0.000 0.000 24 | 23.000 3739.000 61.147 0.500 2326.173 1101.724 0.000 0.000 25 | 24.000 3817.000 61.782 0.500 2318.225 1093.103 0.000 0.000 26 | 25.000 3788.000 61.547 0.500 2311.690 1084.483 0.000 0.000 27 | 26.000 3623.000 60.191 0.500 2306.587 1075.862 0.000 0.000 28 | 27.000 3721.000 61.000 0.500 2302.931 1067.241 0.000 0.000 29 | 28.000 3712.000 60.926 0.500 2300.733 1058.621 0.000 0.000 30 | 29.000 3716.000 60.959 0.500 2300.000 1050.000 0.000 0.000 31 | 30.000 3674.000 60.614 0.500 2300.733 1041.379 0.000 0.000 32 | 31.000 3831.000 61.895 0.500 2302.931 1032.759 0.000 0.000 33 | 32.000 3743.000 61.180 0.500 2306.587 1024.138 0.000 0.000 34 | 33.000 3705.000 60.869 0.500 2311.690 1015.517 0.000 0.000 35 | 34.000 3794.000 61.595 0.500 2318.225 1006.897 0.000 0.000 36 | 35.000 3841.000 61.976 0.500 2326.173 998.276 0.000 0.000 37 | 36.000 3802.000 61.660 0.500 2335.512 989.655 0.000 0.000 38 | 37.000 3679.000 60.655 0.500 2346.212 981.034 0.000 0.000 39 | 38.000 3813.000 61.749 0.500 2358.244 972.414 0.000 0.000 40 | 39.000 3691.000 60.754 0.500 2371.571 963.793 0.000 0.000 41 | 40.000 3832.000 61.903 0.500 2386.156 955.172 0.000 0.000 42 | 41.000 3823.000 61.830 0.500 2401.953 946.552 0.000 0.000 43 | 42.000 3787.000 61.539 0.500 2418.919 937.931 0.000 0.000 44 | 43.000 3880.000 62.290 0.500 2437.002 929.310 0.000 0.000 45 | 44.000 3736.000 61.123 0.500 2456.150 920.690 0.000 0.000 46 | 45.000 3677.000 60.638 0.500 2476.307 912.069 0.000 0.000 47 | 46.000 3693.000 60.770 0.500 2497.413 903.448 0.000 0.000 48 | 47.000 3663.000 60.523 0.500 2519.406 894.828 0.000 0.000 49 | 48.000 3719.000 60.984 0.500 2542.223 886.207 0.000 0.000 50 | 49.000 3920.000 62.610 0.500 2565.796 877.586 0.000 0.000 51 | 50.000 3726.000 61.041 0.500 2590.055 868.966 0.000 0.000 52 | 51.000 3726.000 61.041 0.500 2614.931 860.345 0.000 0.000 53 | 52.000 3763.000 61.343 0.500 2640.349 851.724 0.000 0.000 54 | 53.000 3744.000 61.188 0.500 2666.236 843.103 0.000 0.000 55 | 54.000 3839.000 61.960 0.500 2692.515 834.483 0.000 0.000 56 | 55.000 3864.000 62.161 0.500 2719.109 825.862 0.000 0.000 57 | 56.000 3812.000 61.741 0.500 2745.940 817.241 0.000 0.000 58 | 57.000 3741.000 61.164 0.500 2772.931 808.621 0.000 0.000 59 | 58.000 3828.000 61.871 0.500 2800.000 800.000 0.000 0.000 60 | -------------------------------------------------------------------------------- /src/test/resources/datasets/Input_funnycolor_selectcolor.txt: -------------------------------------------------------------------------------- 1 | 0.000 3830.000 61.887 0.500 2800.000 1300.000 0.000 0.000 2 | 1.000 3791.000 61.571 0.500 2772.931 1291.379 0.000 0.000 3 | 2.000 3681.000 60.671 0.500 2745.940 1282.759 0.000 0.000 4 | 3.000 3605.000 60.042 0.500 2719.109 1274.138 0.000 0.000 5 | 4.000 3815.000 61.766 0.500 2692.515 1265.517 0.000 0.000 6 | 5.000 3785.000 61.522 0.500 2666.236 1256.897 0.000 0.000 7 | 6.000 3733.000 61.098 0.500 2640.349 1248.276 0.000 0.000 8 | 7.000 3889.000 62.362 0.500 2614.931 1239.655 0.000 0.000 9 | 51.000 3726.000 61.041 0.500 2614.931 860.345 0.000 0.000 10 | 52.000 3763.000 61.343 0.500 2640.349 851.724 0.000 0.000 11 | 53.000 3744.000 61.188 0.500 2666.236 843.103 0.000 0.000 12 | 54.000 3839.000 61.960 0.500 2692.515 834.483 0.000 0.000 13 | 55.000 3864.000 62.161 0.500 2719.109 825.862 0.000 0.000 14 | 56.000 3812.000 61.741 0.500 2745.940 817.241 0.000 0.000 15 | 57.000 3741.000 61.164 0.500 2772.931 808.621 0.000 0.000 16 | 58.000 3828.000 61.871 0.500 2800.000 800.000 0.000 0.000 17 | -------------------------------------------------------------------------------- /src/test/resources/datasets/Input_funnycolor_selecttime.txt: -------------------------------------------------------------------------------- 1 | 0.000 3830.000 61.887 0.500 2800.000 1300.000 0.000 0.000 2 | 1.000 3791.000 61.571 0.500 2772.931 1291.379 0.000 0.000 3 | 2.000 3681.000 60.671 0.500 2745.940 1282.759 0.000 0.000 4 | 3.000 3605.000 60.042 0.500 2719.109 1274.138 0.000 0.000 5 | 4.000 3815.000 61.766 0.500 2692.515 1265.517 0.000 0.000 6 | 5.000 3785.000 61.522 0.500 2666.236 1256.897 0.000 0.000 7 | 6.000 3733.000 61.098 0.500 2640.349 1248.276 0.000 0.000 8 | 7.000 3889.000 62.362 0.500 2614.931 1239.655 0.000 0.000 9 | 8.000 3762.000 61.335 0.500 2590.055 1231.034 0.000 0.000 10 | 9.000 3725.000 61.033 0.500 2565.796 1222.414 0.000 0.000 11 | 10.000 3854.000 62.081 0.500 2542.223 1213.793 0.000 0.000 12 | 11.000 3785.000 61.522 0.500 2519.406 1205.172 0.000 0.000 13 | 12.000 3797.000 61.620 0.500 2497.413 1196.552 0.000 0.000 14 | 13.000 3758.000 61.303 0.500 2476.307 1187.931 0.000 0.000 15 | 14.000 3776.000 61.449 0.500 2456.150 1179.310 0.000 0.000 16 | 15.000 3799.000 61.636 0.500 2437.002 1170.690 0.000 0.000 17 | 16.000 3646.000 60.382 0.500 2418.919 1162.069 0.000 0.000 18 | 17.000 3705.000 60.869 0.500 2401.953 1153.448 0.000 0.000 19 | 18.000 3742.000 61.172 0.500 2386.156 1144.828 0.000 0.000 20 | 19.000 3922.000 62.626 0.500 2371.571 1136.207 0.000 0.000 21 | 20.000 3674.000 60.614 0.500 2358.244 1127.586 0.000 0.000 22 | -------------------------------------------------------------------------------- /src/test/resources/datasets/Input_reorderedcolor.txt: -------------------------------------------------------------------------------- 1 | 0.000 0.500 3830.000 61.887 2800.000 0.000 1300.000 0.000 2 | 1.000 0.500 3791.000 61.571 2772.931 0.000 1291.379 0.000 3 | 2.000 0.500 3681.000 60.671 2745.940 0.000 1282.759 0.000 4 | 3.000 0.500 3605.000 60.042 2719.109 0.000 1274.138 0.000 5 | 4.000 0.500 3815.000 61.766 2692.515 0.000 1265.517 0.000 6 | 5.000 0.500 3785.000 61.522 2666.236 0.000 1256.897 0.000 7 | 6.000 0.500 3733.000 61.098 2640.349 0.000 1248.276 0.000 8 | 7.000 0.500 3889.000 62.362 2614.931 0.000 1239.655 0.000 9 | 8.000 0.500 3762.000 61.335 2590.055 0.000 1231.034 0.000 10 | 9.000 0.500 3725.000 61.033 2565.796 0.000 1222.414 0.000 11 | 10.000 0.500 3854.000 62.081 2542.223 0.000 1213.793 0.000 12 | 11.000 0.500 3785.000 61.522 2519.406 0.000 1205.172 0.000 13 | 12.000 0.500 3797.000 61.620 2497.413 0.000 1196.552 0.000 14 | 13.000 0.500 3758.000 61.303 2476.307 0.000 1187.931 0.000 15 | 14.000 0.500 3776.000 61.449 2456.150 0.000 1179.310 0.000 16 | 15.000 0.500 3799.000 61.636 2437.002 0.000 1170.690 0.000 17 | 16.000 0.500 3646.000 60.382 2418.919 0.000 1162.069 0.000 18 | 17.000 0.500 3705.000 60.869 2401.953 0.000 1153.448 0.000 19 | 18.000 0.500 3742.000 61.172 2386.156 0.000 1144.828 0.000 20 | 19.000 0.500 3922.000 62.626 2371.571 0.000 1136.207 0.000 21 | 20.000 0.500 3674.000 60.614 2358.244 0.000 1127.586 0.000 22 | 21.000 0.500 3926.000 62.658 2346.212 0.000 1118.966 0.000 23 | 22.000 0.500 3791.000 61.571 2335.512 0.000 1110.345 0.000 24 | 23.000 0.500 3739.000 61.147 2326.173 0.000 1101.724 0.000 25 | 24.000 0.500 3817.000 61.782 2318.225 0.000 1093.103 0.000 26 | 25.000 0.500 3788.000 61.547 2311.690 0.000 1084.483 0.000 27 | 26.000 0.500 3623.000 60.191 2306.587 0.000 1075.862 0.000 28 | 27.000 0.500 3721.000 61.000 2302.931 0.000 1067.241 0.000 29 | 28.000 0.500 3712.000 60.926 2300.733 0.000 1058.621 0.000 30 | 29.000 0.500 3716.000 60.959 2300.000 0.000 1050.000 0.000 31 | 30.000 0.500 3674.000 60.614 2300.733 0.000 1041.379 0.000 32 | 31.000 0.500 3831.000 61.895 2302.931 0.000 1032.759 0.000 33 | 32.000 0.500 3743.000 61.180 2306.587 0.000 1024.138 0.000 34 | 33.000 0.500 3705.000 60.869 2311.690 0.000 1015.517 0.000 35 | 34.000 0.500 3794.000 61.595 2318.225 0.000 1006.897 0.000 36 | 35.000 0.500 3841.000 61.976 2326.173 0.000 998.276 0.000 37 | 36.000 0.500 3802.000 61.660 2335.512 0.000 989.655 0.000 38 | 37.000 0.500 3679.000 60.655 2346.212 0.000 981.034 0.000 39 | 38.000 0.500 3813.000 61.749 2358.244 0.000 972.414 0.000 40 | 39.000 0.500 3691.000 60.754 2371.571 0.000 963.793 0.000 41 | 40.000 0.500 3832.000 61.903 2386.156 0.000 955.172 0.000 42 | 41.000 0.500 3823.000 61.830 2401.953 0.000 946.552 0.000 43 | 42.000 0.500 3787.000 61.539 2418.919 0.000 937.931 0.000 44 | 43.000 0.500 3880.000 62.290 2437.002 0.000 929.310 0.000 45 | 44.000 0.500 3736.000 61.123 2456.150 0.000 920.690 0.000 46 | 45.000 0.500 3677.000 60.638 2476.307 0.000 912.069 0.000 47 | 46.000 0.500 3693.000 60.770 2497.413 0.000 903.448 0.000 48 | 47.000 0.500 3663.000 60.523 2519.406 0.000 894.828 0.000 49 | 48.000 0.500 3719.000 60.984 2542.223 0.000 886.207 0.000 50 | 49.000 0.500 3920.000 62.610 2565.796 0.000 877.586 0.000 51 | 50.000 0.500 3726.000 61.041 2590.055 0.000 868.966 0.000 52 | 51.000 0.500 3726.000 61.041 2614.931 0.000 860.345 0.000 53 | 52.000 0.500 3763.000 61.343 2640.349 0.000 851.724 0.000 54 | 53.000 0.500 3744.000 61.188 2666.236 0.000 843.103 0.000 55 | 54.000 0.500 3839.000 61.960 2692.515 0.000 834.483 0.000 56 | 55.000 0.500 3864.000 62.161 2719.109 0.000 825.862 0.000 57 | 56.000 0.500 3812.000 61.741 2745.940 0.000 817.241 0.000 58 | 57.000 0.500 3741.000 61.164 2772.931 0.000 808.621 0.000 59 | 58.000 0.500 3828.000 61.871 2800.000 0.000 800.000 0.000 60 | -------------------------------------------------------------------------------- /src/test/resources/datasets/Input_withcolor.txt: -------------------------------------------------------------------------------- 1 | 0 3830 61.886993 0.5 0 3830 61.886993 0.5 2 | 1 3791 61.5711 0.5 1 3791 61.5711 0.5 3 | 2 3681 60.671246 0.5 2 3681 60.671246 0.5 4 | 3 3605 60.041653 0.5 3 3605 60.041653 0.5 5 | 4 3815 61.765686 0.5 4 3815 61.765686 0.5 6 | 5 3785 61.522354 0.5 5 3785 61.522354 0.5 7 | 6 3733 61.09828 0.5 6 3733 61.09828 0.5 8 | 7 3889 62.361847 0.5 7 3889 62.361847 0.5 9 | 8 3762 61.335144 0.5 8 3762 61.335144 0.5 10 | 9 3725 61.03278 0.5 9 3725 61.03278 0.5 11 | 10 3854 62.080593 0.5 10 3854 62.080593 0.5 12 | 11 3785 61.522354 0.5 11 3785 61.522354 0.5 13 | 12 3797 61.6198 0.5 12 3797 61.6198 0.5 14 | 13 3758 61.30253 0.5 13 3758 61.30253 0.5 15 | 14 3776 61.449165 0.5 14 3776 61.449165 0.5 16 | 15 3799 61.63603 0.5 15 3799 61.63603 0.5 17 | 16 3646 60.38212 0.5 16 3646 60.38212 0.5 18 | 17 3705 60.86871 0.5 17 3705 60.86871 0.5 19 | 18 3742 61.17189 0.5 18 3742 61.17189 0.5 20 | 19 3922 62.625874 0.5 19 3922 62.625874 0.5 21 | 20 3674 60.61353 0.5 20 3674 60.61353 0.5 22 | 21 3926 62.657803 0.5 21 3926 62.657803 0.5 23 | 22 3791 61.5711 0.5 22 3791 61.5711 0.5 24 | 23 3739 61.14736 0.5 23 3739 61.14736 0.5 25 | 24 3817 61.781876 0.5 24 3817 61.781876 0.5 26 | 25 3788 61.54673 0.5 25 3788 61.54673 0.5 27 | 26 3623 60.19136 0.5 26 3623 60.19136 0.5 28 | 27 3721 61 0.5 27 3721 61 0.5 29 | 28 3712 60.926186 0.5 28 3712 60.926186 0.5 30 | 29 3716 60.959003 0.5 29 3716 60.959003 0.5 31 | 30 3674 60.61353 0.5 30 3674 60.61353 0.5 32 | 31 3831 61.895073 0.5 31 3831 61.895073 0.5 33 | 32 3743 61.18006 0.5 32 3743 61.18006 0.5 34 | 33 3705 60.86871 0.5 33 3705 60.86871 0.5 35 | 34 3794 61.595455 0.5 34 3794 61.595455 0.5 36 | 35 3841 61.975803 0.5 35 3841 61.975803 0.5 37 | 36 3802 61.66036 0.5 36 3802 61.66036 0.5 38 | 37 3679 60.654762 0.5 37 3679 60.654762 0.5 39 | 38 3813 61.749493 0.5 38 3813 61.749493 0.5 40 | 39 3691 60.7536 0.5 39 3691 60.7536 0.5 41 | 40 3832 61.90315 0.5 40 3832 61.90315 0.5 42 | 41 3823 61.830414 0.5 41 3823 61.830414 0.5 43 | 42 3787 61.538605 0.5 42 3787 61.538605 0.5 44 | 43 3880 62.289646 0.5 43 3880 62.289646 0.5 45 | 44 3736 61.122826 0.5 44 3736 61.122826 0.5 46 | 45 3677 60.63827 0.5 45 3677 60.63827 0.5 47 | 46 3693 60.770058 0.5 46 3693 60.770058 0.5 48 | 47 3663 60.522724 0.5 47 3663 60.522724 0.5 49 | 48 3719 60.983604 0.5 48 3719 60.983604 0.5 50 | 49 3920 62.609905 0.5 49 3920 62.609905 0.5 51 | 50 3726 61.04097 0.5 50 3726 61.04097 0.5 52 | 51 3726 61.04097 0.5 51 3726 61.04097 0.5 53 | 52 3763 61.343296 0.5 52 3763 61.343296 0.5 54 | 53 3744 61.188232 0.5 53 3744 61.188232 0.5 55 | 54 3839 61.959663 0.5 54 3839 61.959663 0.5 56 | 55 3864 62.16108 0.5 55 3864 62.16108 0.5 57 | 56 3812 61.741398 0.5 56 3812 61.741398 0.5 58 | 57 3741 61.163715 0.5 57 3741 61.163715 0.5 59 | 58 3828 61.870834 0.5 58 3828 61.870834 0.5 -------------------------------------------------------------------------------- /src/test/resources/datasets/PN_source_lightcurve_raw.lc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/test/resources/datasets/PN_source_lightcurve_raw.lc -------------------------------------------------------------------------------- /src/test/resources/datasets/bulk_example.txt: -------------------------------------------------------------------------------- 1 | # Rename /Users/ricardo/TimeLab/dave with your absolute path to dave folder 2 | /Users/ricardo/TimeLab/dave/src/test/resources/datasets/std1_ao9_01_01.lc 3 | /Users/ricardo/TimeLab/dave/src/test/resources/datasets/std2_ao9_01_00.lc 4 | /Users/ricardo/TimeLab/dave/src/test/resources/datasets/PN_source_lightcurve_raw.lc 5 | -------------------------------------------------------------------------------- /src/test/resources/datasets/gen_colordata.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | from math import sin,pi 3 | 4 | filedata = np.loadtxt('Input_withcolor.txt') 5 | 6 | npoints = 58 7 | def gencolor1(x): return 1300 - x*500/npoints 8 | def gencolor2(x): return 2800 - 500 * sin(x*pi/float(npoints)) 9 | 10 | newdata = [ [row[0],row[3],row[1],row[2],gencolor2(row[0]), 0,gencolor1(row[0]), 0] for row in filedata ] 11 | 12 | np.savetxt('Input_funnycolor.txt', newdata, fmt="%.3f") -------------------------------------------------------------------------------- /src/test/resources/datasets/in.txt: -------------------------------------------------------------------------------- 1 | 1.109110400703125000e+08 4.120000061392784119e+03 2 | 1.109110401953125000e+08 4.200000062584877014e+03 3 | 1.109110403203125000e+08 4.238400063157081604e+03 4 | 1.109110404453125000e+08 4.308800064206123352e+03 5 | 1.109110405703125000e+08 4.350400064826011658e+03 6 | 1.109110406953125000e+08 4.187200062394142151e+03 7 | 1.109110408203125000e+08 4.150400061845779419e+03 8 | 1.109110409453125000e+08 4.310400064229965210e+03 9 | 1.109110410703125000e+08 4.033600060105323792e+03 10 | 1.109110411953125000e+08 3.992000059485435486e+03 11 | 1.109110413203125000e+08 4.225600062966346741e+03 12 | 1.109110414453125000e+08 4.113600061297416687e+03 13 | 1.109110415703125000e+08 4.297600064039230347e+03 14 | 1.109110416953125000e+08 4.193600062489509583e+03 15 | 1.109110418203125000e+08 4.355200064897537231e+03 16 | 1.109110419453125000e+08 3.976000059247016907e+03 17 | 1.109110420703125000e+08 4.196800062537193298e+03 18 | 1.109110421953125000e+08 4.000000059604644775e+03 19 | 1.109110423203125000e+08 4.019200059890747070e+03 20 | 1.109110424453125000e+08 3.958400058984756470e+03 21 | 1.109110425703125000e+08 4.065600060582160950e+03 22 | 1.109110426953125000e+08 4.315200064301490784e+03 23 | 1.109110428203125000e+08 4.361600064992904663e+03 24 | 1.109110429453125000e+08 4.104000061154365540e+03 25 | -------------------------------------------------------------------------------- /src/test/resources/datasets/std1_ao9_01_01.lc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/test/resources/datasets/std1_ao9_01_01.lc -------------------------------------------------------------------------------- /src/test/resources/datasets/std2_ao9_01_00.lc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/test/resources/datasets/std2_ao9_01_00.lc -------------------------------------------------------------------------------- /src/test/resources/datasets/test.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/test/resources/datasets/test.evt -------------------------------------------------------------------------------- /src/test/resources/images/testimage1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/test/resources/images/testimage1.jpg -------------------------------------------------------------------------------- /src/test/resources/images/testimage1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/test/resources/images/testimage1.png -------------------------------------------------------------------------------- /src/test/resources/images/testimage2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/test/resources/images/testimage2.png -------------------------------------------------------------------------------- /src/test/resources/pytest/PN_source_lightcurve_raw.lc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/test/resources/pytest/PN_source_lightcurve_raw.lc -------------------------------------------------------------------------------- /src/test/resources/pytest/Test_Input_1.txt: -------------------------------------------------------------------------------- 1 | 0.000 0.500 3830.000 61.887 2800.000 0.000 1300.000 0.000 2 | 1.000 0.500 3791.000 61.571 2772.931 0.000 1291.379 0.000 3 | 2.000 0.500 3681.000 60.671 2745.940 0.000 1282.759 0.000 4 | 3.000 0.500 3605.000 60.042 2719.109 0.000 1274.138 0.000 5 | 4.000 0.500 3815.000 61.766 2692.515 0.000 1265.517 0.000 6 | 5.000 0.500 3785.000 61.522 2666.236 0.000 1256.897 0.000 7 | 6.000 0.500 3733.000 61.098 2640.349 0.000 1248.276 0.000 8 | 7.000 0.500 3889.000 62.362 2614.931 0.000 1239.655 0.000 9 | 8.000 0.500 3762.000 61.335 2590.055 0.000 1231.034 0.000 10 | 9.000 0.500 3725.000 61.033 2565.796 0.000 1222.414 0.000 11 | -------------------------------------------------------------------------------- /src/test/resources/pytest/Test_Input_2.lc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/test/resources/pytest/Test_Input_2.lc -------------------------------------------------------------------------------- /src/test/resources/pytest/test.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/test/resources/pytest/test.evt -------------------------------------------------------------------------------- /src/test/resources/pytest/test_Gtis.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StingraySoftware/dave/e7188025763cb3a2840aef0e1dd15b52be8de9a1/src/test/resources/pytest/test_Gtis.evt -------------------------------------------------------------------------------- /src/test/resources/python_examples/3D.py: -------------------------------------------------------------------------------- 1 | import plotly 2 | from plotly.offline import plot 3 | 4 | import plotly.graph_objs as go 5 | 6 | import numpy 7 | import numpy as np 8 | 9 | x, y, z = np.random.multivariate_normal(np.array([0,0,0]), np.eye(3), 400).transpose() 10 | error = numpy.random.uniform(-1, 1, size=len(x)) 11 | trace1 = go.Scatter3d( 12 | x=x, 13 | y=y, 14 | z=z, 15 | mode='markers', 16 | error_x = dict( 17 | type = 'data', 18 | array = error, 19 | visible = True 20 | ), 21 | error_y = dict( 22 | type = 'data', 23 | array = error, 24 | visible = True 25 | ), 26 | error_z = dict( 27 | type = 'data', 28 | array = error, 29 | visible = True 30 | ), 31 | marker=dict( 32 | size=12, 33 | color=z, # set color to an array/list of desired values 34 | colorscale='Viridis', # choose a colorscale 35 | opacity=0.8 36 | ) 37 | ) 38 | 39 | data = [trace1] 40 | layout = go.Layout( 41 | title="simple example", # more about "layout's" "title": /python/reference/#layout-title 42 | xaxis=dict( # all "layout's" "xaxis" attributes: /python/reference/#layout-xaxis 43 | title="time" # more about "layout's" "xaxis's" "title": /python/reference/#layout-xaxis-title 44 | ) 45 | ) 46 | 47 | fig = go.Figure(data=data, layout=layout) 48 | plot(fig, filename='my-graph.html') 49 | 50 | -------------------------------------------------------------------------------- /src/test/resources/python_examples/load.py: -------------------------------------------------------------------------------- 1 | import pandas as pd 2 | import numpy as np 3 | import pkg_resources 4 | 5 | light_curve = pkg_resources.resource_stream(__name__,"datasets/Input1.txt") 6 | data = np.loadtxt(light_curve) 7 | Time = data[0:len(data),0] 8 | Rate = data[0:len(data),1] 9 | Error_y= data[0:len(data),2] 10 | Error_x= data[0:len(data),3] 11 | 12 | start_time=10 13 | end_time=50 14 | start_count=3600 15 | end_count=3700 16 | if (not start_time) and (not end_time): 17 | start_time = max(Time) 18 | end_time = min(Time) 19 | 20 | if (not start_count) and (not end_count): 21 | start_rate = max(Rate) 22 | end_rate = min(Rate) 23 | newTime=[] 24 | newRate=[] 25 | newError_y=[] 26 | newError_x=[] 27 | 28 | for i in range(len(Time)): 29 | if (Time[i] <= int(start_time) or Time[i] >= int(end_time)) and (Rate[i] <= int(start_count) or Rate[i] >= int(end_count)) : 30 | newTime.append(Time[i]) 31 | newRate.append(Rate[i]) 32 | newError_y.append(Error_y[i]) 33 | newError_x.append(Error_x[i]) 34 | 35 | print(newRate) 36 | 37 | 38 | -------------------------------------------------------------------------------- /src/test/resources/python_examples/test1.py: -------------------------------------------------------------------------------- 1 | import plotly.offline as plt 2 | import plotly.graph_objs as go 3 | 4 | from datetime import datetime 5 | import pandas.io.data as web 6 | 7 | df = web.DataReader("aapl", 'yahoo', 8 | datetime(2007, 10, 1), 9 | datetime(2009, 4, 1)) 10 | 11 | trace = go.Scatter(x=[1,2,3,4,5,6,7,8,9], 12 | y=[2,3,4,5,9,0,9,9,1], 13 | error_y=dict( 14 | type='data', 15 | array=[1,2,1,2,1,2,1,2,3], 16 | visible=True 17 | ) 18 | ) 19 | 20 | data = [trace] 21 | layout = dict( 22 | title='Time series with range slider and selectors', 23 | xaxis=dict( 24 | rangeslider=dict(), 25 | ), 26 | yaxis=dict( 27 | range=[2, 5] 28 | ) 29 | ) 30 | 31 | fig = dict(data=data, layout=layout) 32 | plt.plot(fig) -------------------------------------------------------------------------------- /src/test/resources/python_examples/test2.py: -------------------------------------------------------------------------------- 1 | import plotly.offline as plt 2 | 3 | trace1 = dict( 4 | type = 'scatter', 5 | x=[1,2,3,4], 6 | y=[5,6,7,8], 7 | 8 | ) 9 | layout=dict( 10 | title='', 11 | xaxis=dict( 12 | title='Time', 13 | titlefont=dict( 14 | family='Courier New, monospace', 15 | size=18, 16 | color='#7f7f7f' 17 | ) 18 | ), 19 | yaxis=dict( 20 | title='Count Rate', 21 | titlefont=dict( 22 | family='Courier New, monospace', 23 | size=18, 24 | color='#7f7f7f' 25 | ) 26 | ) 27 | ) 28 | fig = dict(data = [trace1], layout = layout) 29 | plt.plot(fig, filename='basic' + '__plot.html') -------------------------------------------------------------------------------- /src/test/resources/python_examples/testing_fits.py: -------------------------------------------------------------------------------- 1 | from astropy.io import fits 2 | import numpy as np 3 | 4 | fits_file = '../std1_ao9_01_09.lc' 5 | hdulist = fits.open(fits_file) 6 | tbdata = hdulist['RATE'].data 7 | tbdata['RATE'] = 20 8 | hdulist.writeto('../src20.lc') 9 | --------------------------------------------------------------------------------