Compare commits
231 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
9fb53f4297 | ||
|
69ef08bfd4 | ||
|
0159f116c1 | ||
|
da6f2ce044 | ||
|
053001186e | ||
|
177e8ad783 | ||
|
047f682030 | ||
|
041db246b1 | ||
|
54888a3988 | ||
|
c726551ec7 | ||
|
a36ba0413a | ||
|
79d0bda1ef | ||
|
a7def3c367 | ||
|
1ee9867ea6 | ||
|
44f209f331 | ||
|
274017806f | ||
|
90adb6539a | ||
|
be4ec9ea51 | ||
|
b89fab51c3 | ||
|
6247c7997f | ||
|
9baa4450b0 | ||
|
2a449eba1a | ||
|
dfd5366112 | ||
|
dc180862df | ||
|
9d9dcbbb71 | ||
|
ed151f1707 | ||
|
302f6b794d | ||
|
1925943660 | ||
|
0e358a9a14 | ||
|
2c9e553b57 | ||
|
ee4ee316dd | ||
|
12e39ecc84 | ||
|
eb20ad907e | ||
|
61b286c258 | ||
|
77231d00cc | ||
|
4322396088 | ||
|
c5dc49f442 | ||
|
0684f982b7 | ||
|
b5d8851c44 | ||
|
b0782ed74e | ||
|
3e76c55801 | ||
|
834068244e | ||
|
d833d0a183 | ||
|
1f50c6dd16 | ||
|
9ca336934a | ||
|
251390fddf | ||
|
aaa548fb65 | ||
|
7710da503b | ||
|
18969b4179 | ||
|
ecb6400b06 | ||
|
67393e0e09 | ||
|
442d9a9682 | ||
|
7434263165 | ||
|
d20d0e4e7a | ||
|
836abc427a | ||
|
8cc6b2774e | ||
|
e98e66bdf0 | ||
|
791c4e82a5 | ||
|
110da31d50 | ||
|
0e9a706904 | ||
|
28b5f9d6a2 | ||
|
00af69a3f5 | ||
|
e61403174d | ||
|
632a2472a2 | ||
|
d62a07a69e | ||
|
85d4a29cf2 | ||
|
6678e49cbf | ||
|
839c5d2943 | ||
|
79b4cf1158 | ||
|
9b9d6bcd23 | ||
|
2b1dd3ed9b | ||
|
7afe68e315 | ||
|
0f58ce0fd7 | ||
|
badcb373ae | ||
|
e5cf8a43d4 | ||
|
aba4b44da4 | ||
|
c4fa9c5f23 | ||
|
22688de9e8 | ||
|
042efb2b5a | ||
|
060a77f4b7 | ||
|
ffd64eb3d2 | ||
|
4822be0ece | ||
|
d3b71287c4 | ||
|
67ac98b9ab | ||
|
9e0c6e36ee | ||
|
d0d431fb54 | ||
|
718ca83a1d | ||
|
e0c159de00 | ||
|
6652918ae8 | ||
|
4f3ecf4361 | ||
|
dd5da3b1e8 | ||
|
45a4387c68 | ||
|
c6b2840e07 | ||
|
6362f50fd3 | ||
|
d5622c8672 | ||
|
3abc50cf7a | ||
|
0f68468f14 | ||
|
6d45200ca3 | ||
|
80aee80548 | ||
|
3d27f3c127 | ||
|
9fd7966c55 | ||
|
4529ee32e2 | ||
|
3a5629f0ba | ||
|
fe74aea4de | ||
|
76ac58dbab | ||
|
db0ddec2c6 | ||
|
c6980ff71d | ||
|
a4840003f5 | ||
|
aad41e57a9 | ||
|
24a8500588 | ||
|
63c69ecc14 | ||
|
1c775fca2c | ||
|
1073bc458a | ||
|
f8dafe61f8 | ||
|
c97e51d9bd | ||
|
2e779a95d2 | ||
|
0c609064a6 | ||
|
059509e018 | ||
|
2c9951d2c9 | ||
|
290110274b | ||
|
7d02c6373c | ||
|
0b0d36d660 | ||
|
807c66dd3a | ||
|
f0c0d646b5 | ||
|
390f3d9c4d | ||
|
19a9995875 | ||
|
95eab24247 | ||
|
3da5a0cbd7 | ||
|
447e3e12a3 | ||
|
5b922fc10b | ||
|
e661af1add | ||
|
192d023325 | ||
|
6b91fe9819 | ||
|
82231cb04b | ||
|
39dc72add2 | ||
|
ac158bf0a9 | ||
|
7b2915f4f2 | ||
|
64354dbe19 | ||
|
901c8d25f8 | ||
|
b346b01223 | ||
|
73b419dfd6 | ||
|
48f34f0472 | ||
|
e1769235f3 | ||
|
ac00138ca8 | ||
|
28b5801bcc | ||
|
f2ed8ab04c | ||
|
781b4dc8b5 | ||
|
19a236251a | ||
|
0d481b01df | ||
|
5de2528d34 | ||
|
317ca72377 | ||
|
c6e719240a | ||
|
e554a1df99 | ||
|
d9e7a1ed1e | ||
|
d968f10737 | ||
|
dc80127dee | ||
|
c591c84c75 | ||
|
e290f5ae11 | ||
|
b8d209b283 | ||
|
f195b81974 | ||
|
1293de346e | ||
|
1b41c409cc | ||
|
38d471113f | ||
|
b31beb25be | ||
|
e3db22d262 | ||
|
e2d2e6687f | ||
|
b64ec05134 | ||
|
511e627899 | ||
|
ab0b2b9992 | ||
|
0021eed5fb | ||
|
8c35d8a3f6 | ||
|
e5420844de | ||
|
0fca5f58db | ||
|
07880038b0 | ||
|
d2d5d4c04e | ||
|
d7301e26c3 | ||
|
752b981e37 | ||
|
5f2db375f3 | ||
|
cac1b4fba4 | ||
|
236c4d02b6 | ||
|
8645eace5b | ||
|
47cce54b3b | ||
|
5a0fe35f86 | ||
|
d3f8b474d0 | ||
|
27145495e7 | ||
|
1a8da3fdd5 | ||
|
444bfb5945 | ||
|
cfee240e9c | ||
|
83a1dd5ced | ||
|
bf75e804cc | ||
|
83e4f60a37 | ||
|
ae11605013 | ||
|
08b336cf15 | ||
|
eeeec86be6 | ||
|
9dbd897323 | ||
|
71337c0fd5 | ||
|
4e015180b6 | ||
|
70591bc581 | ||
|
288f97a3fd | ||
|
1126373bf2 | ||
|
fd0d43d29c | ||
|
cc6a7697cf | ||
|
2140ea8f77 | ||
|
9dd5cc76f6 | ||
|
7b1e54eed8 | ||
|
188a7bbf1f | ||
|
b7a0c5286a | ||
|
32a2d6321c | ||
|
d2f6961693 | ||
|
107076ac35 | ||
|
0b73460446 | ||
|
39d5522650 | ||
|
68d6c87589 | ||
|
222c536631 | ||
|
bd3f695938 | ||
|
1b1a7c45bf | ||
|
8a58fe28fa | ||
|
9c67e6f927 | ||
|
8d2dedc5a2 | ||
|
944cb31883 | ||
|
b38ffe1f08 | ||
|
19f89d3f35 | ||
|
504fc92feb | ||
|
5eb5e5ed8e | ||
|
88be42de45 | ||
|
704a2d5808 | ||
|
e915fe538e | ||
|
5295bef18b | ||
|
ae69eb7a40 | ||
|
46f434b815 | ||
|
cce111bd6a |
6
.gitignore
vendored
@@ -1,2 +1,8 @@
|
||||
|
||||
benchmark_data.csv
|
||||
|
||||
|
||||
data analysis/keys/keytemp.json
|
||||
data analysis/__pycache__/analysis.cpython-37.pyc
|
||||
apps/android/source/app/src/main/res/drawable-v24/uuh.png
|
||||
apps/android/source/app/src/main/java/com/example/titanscouting/tits.java
|
||||
|
2
README.md
Normal file
@@ -0,0 +1,2 @@
|
||||
# tr2022-strategy
|
||||
Titan Robotics 2022 Strategy Team Repository
|
BIN
apps/android/apk/1.0.0.000/app-debug.apk
Normal file
BIN
apps/android/apk/1.0.0.001/app-release.apk
Normal file
BIN
apps/android/apk/1.0.0.002/app-debug.apk
Normal file
BIN
apps/android/apk/1.0.0.003/app-debug.apk
Normal file
BIN
apps/android/apk/debug/app-debug.apk
Normal file
1
apps/android/apk/debug/output.json
Normal file
@@ -0,0 +1 @@
|
||||
[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.0","enabled":true,"outputFile":"app-debug.apk","fullName":"debug","baseName":"debug"},"path":"app-debug.apk","properties":{}}]
|
13
apps/android/source/.gitignore
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
*.iml
|
||||
.gradle
|
||||
/local.properties
|
||||
/.idea/caches
|
||||
/.idea/libraries
|
||||
/.idea/modules.xml
|
||||
/.idea/workspace.xml
|
||||
/.idea/navEditor.xml
|
||||
/.idea/assetWizardSettings.xml
|
||||
.DS_Store
|
||||
/build
|
||||
/captures
|
||||
.externalNativeBuild
|
29
apps/android/source/.idea/codeStyles/Project.xml
generated
Normal file
@@ -0,0 +1,29 @@
|
||||
<component name="ProjectCodeStyleConfiguration">
|
||||
<code_scheme name="Project" version="173">
|
||||
<Objective-C-extensions>
|
||||
<file>
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Import" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Macro" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Typedef" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Enum" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Constant" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Global" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Struct" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="FunctionPredecl" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Function" />
|
||||
</file>
|
||||
<class>
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Property" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Synthesize" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InitMethod" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="StaticMethod" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InstanceMethod" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="DeallocMethod" />
|
||||
</class>
|
||||
<extensions>
|
||||
<pair source="cpp" header="h" fileNamingConvention="NONE" />
|
||||
<pair source="c" header="h" fileNamingConvention="NONE" />
|
||||
</extensions>
|
||||
</Objective-C-extensions>
|
||||
</code_scheme>
|
||||
</component>
|
18
apps/android/source/.idea/gradle.xml
generated
Normal file
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="GradleSettings">
|
||||
<option name="linkedExternalProjectsSettings">
|
||||
<GradleProjectSettings>
|
||||
<option name="distributionType" value="DEFAULT_WRAPPED" />
|
||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||
<option name="modules">
|
||||
<set>
|
||||
<option value="$PROJECT_DIR$" />
|
||||
<option value="$PROJECT_DIR$/app" />
|
||||
</set>
|
||||
</option>
|
||||
<option name="resolveModulePerSourceSet" value="false" />
|
||||
</GradleProjectSettings>
|
||||
</option>
|
||||
</component>
|
||||
</project>
|
9
apps/android/source/.idea/misc.xml
generated
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="11" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||
</component>
|
||||
<component name="ProjectType">
|
||||
<option name="id" value="Android" />
|
||||
</component>
|
||||
</project>
|
12
apps/android/source/.idea/runConfigurations.xml
generated
Normal file
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="RunConfigurationProducerService">
|
||||
<option name="ignoredProducers">
|
||||
<set>
|
||||
<option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" />
|
||||
<option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" />
|
||||
<option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" />
|
||||
</set>
|
||||
</option>
|
||||
</component>
|
||||
</project>
|
6
apps/android/source/.idea/vcs.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$/../../.." vcs="Git" />
|
||||
</component>
|
||||
</project>
|
1
apps/android/source/app/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
/build
|
28
apps/android/source/app/build.gradle
Normal file
@@ -0,0 +1,28 @@
|
||||
apply plugin: 'com.android.application'
|
||||
|
||||
android {
|
||||
compileSdkVersion 28
|
||||
defaultConfig {
|
||||
applicationId "com.example.titanscouting"
|
||||
minSdkVersion 16
|
||||
targetSdkVersion 28
|
||||
versionCode 1
|
||||
versionName "1.0"
|
||||
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
buildTypes {
|
||||
release {
|
||||
minifyEnabled false
|
||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||
implementation 'com.android.support:appcompat-v7:28.0.0'
|
||||
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
|
||||
testImplementation 'junit:junit:4.12'
|
||||
androidTestImplementation 'com.android.support.test:runner:1.0.2'
|
||||
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
|
||||
}
|
21
apps/android/source/app/proguard-rules.pro
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
# Add project specific ProGuard rules here.
|
||||
# You can control the set of applied configuration files using the
|
||||
# proguardFiles setting in build.gradle.
|
||||
#
|
||||
# For more details, see
|
||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||
|
||||
# If your project uses WebView with JS, uncomment the following
|
||||
# and specify the fully qualified class name to the JavaScript interface
|
||||
# class:
|
||||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
||||
# public *;
|
||||
#}
|
||||
|
||||
# Uncomment this to preserve the line number information for
|
||||
# debugging stack traces.
|
||||
#-keepattributes SourceFile,LineNumberTable
|
||||
|
||||
# If you keep the line number information, uncomment this to
|
||||
# hide the original source file name.
|
||||
#-renamesourcefileattribute SourceFile
|
BIN
apps/android/source/app/release/app-release.apk
Normal file
1
apps/android/source/app/release/output.json
Normal file
@@ -0,0 +1 @@
|
||||
[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.0","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}]
|
@@ -0,0 +1,26 @@
|
||||
package com.example.titanscouting;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.test.InstrumentationRegistry;
|
||||
import android.support.test.runner.AndroidJUnit4;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
/**
|
||||
* Instrumented test, which will execute on an Android device.
|
||||
*
|
||||
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
|
||||
*/
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
public class ExampleInstrumentedTest {
|
||||
@Test
|
||||
public void useAppContext() {
|
||||
// Context of the app under test.
|
||||
Context appContext = InstrumentationRegistry.getTargetContext();
|
||||
|
||||
assertEquals("com.example.titanscouting", appContext.getPackageName());
|
||||
}
|
||||
}
|
28
apps/android/source/app/src/main/AndroidManifest.xml
Normal file
@@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.example.titanscouting">
|
||||
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
|
||||
<application
|
||||
android:allowBackup="true"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:label="@string/app_name"
|
||||
android:roundIcon="@drawable/binoculars_big"
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/AppTheme"
|
||||
android:usesCleartextTraffic="true">
|
||||
<activity android:name=".tits"></activity>
|
||||
<activity android:name=".launcher">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity android:name=".MainActivity">
|
||||
|
||||
</activity>
|
||||
</application>
|
||||
|
||||
</manifest>
|
@@ -0,0 +1,32 @@
|
||||
package com.example.titanscouting;
|
||||
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.os.Bundle;
|
||||
import android.webkit.WebView;
|
||||
import android.webkit.WebSettings;
|
||||
import android.webkit.WebViewClient;
|
||||
|
||||
public class MainActivity extends AppCompatActivity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_main);
|
||||
|
||||
|
||||
|
||||
WebView myWebView = (WebView) findViewById(R.id.webview);
|
||||
|
||||
myWebView.getSettings().setJavaScriptEnabled(true);
|
||||
myWebView.setWebViewClient(new WebViewClient());
|
||||
myWebView.loadUrl("http://titanrobotics.ddns.net:60080/public/");
|
||||
|
||||
myWebView.getSettings().setJavaScriptEnabled(true);
|
||||
myWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
|
||||
myWebView.getSettings().setDomStorageEnabled(true);
|
||||
myWebView.getSettings().setDomStorageEnabled(true);
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
@@ -0,0 +1,49 @@
|
||||
package com.example.titanscouting;
|
||||
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.os.Bundle;
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.view.Menu;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
public class launcher extends AppCompatActivity {
|
||||
|
||||
Button button;
|
||||
EditText passField;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_launcher);
|
||||
|
||||
// Locate the button in activity_main.xml
|
||||
button = (Button) findViewById(R.id.launch_button);
|
||||
final EditText passField = (EditText)findViewById(R.id.editText);
|
||||
// Capture button clicks
|
||||
button.setOnClickListener(new OnClickListener() {
|
||||
public void onClick(View arg0) {
|
||||
|
||||
// Start NewActivity.class
|
||||
if(passField.getText().toString().equals("gimmetits")){
|
||||
|
||||
Intent myIntent = new Intent(launcher.this,
|
||||
tits.class);
|
||||
startActivity(myIntent);
|
||||
|
||||
}
|
||||
else {
|
||||
Intent myIntent = new Intent(launcher.this,
|
||||
MainActivity.class);
|
||||
startActivity(myIntent);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,30 @@
|
||||
package com.example.titanscouting;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
|
||||
public class tits extends AppCompatActivity {
|
||||
Button button;
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_tits);
|
||||
|
||||
button = (Button) findViewById(R.id.button);
|
||||
// Capture button clicks
|
||||
button.setOnClickListener(new View.OnClickListener() {
|
||||
public void onClick(View arg0) {
|
||||
|
||||
|
||||
Intent myIntent = new Intent(tits.this,
|
||||
MainActivity.class);
|
||||
startActivity(myIntent);
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
@@ -0,0 +1,34 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:width="108dp"
|
||||
android:height="108dp"
|
||||
android:viewportWidth="108"
|
||||
android:viewportHeight="108">
|
||||
<path
|
||||
android:fillType="evenOdd"
|
||||
android:pathData="M32,64C32,64 38.39,52.99 44.13,50.95C51.37,48.37 70.14,49.57 70.14,49.57L108.26,87.69L108,109.01L75.97,107.97L32,64Z"
|
||||
android:strokeWidth="1"
|
||||
android:strokeColor="#00000000">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:endX="78.5885"
|
||||
android:endY="90.9159"
|
||||
android:startX="48.7653"
|
||||
android:startY="61.0927"
|
||||
android:type="linear">
|
||||
<item
|
||||
android:color="#44000000"
|
||||
android:offset="0.0" />
|
||||
<item
|
||||
android:color="#00000000"
|
||||
android:offset="1.0" />
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
<path
|
||||
android:fillColor="#FFFFFF"
|
||||
android:fillType="nonZero"
|
||||
android:pathData="M66.94,46.02L66.94,46.02C72.44,50.07 76,56.61 76,64L32,64C32,56.61 35.56,50.11 40.98,46.06L36.18,41.19C35.45,40.45 35.45,39.3 36.18,38.56C36.91,37.81 38.05,37.81 38.78,38.56L44.25,44.05C47.18,42.57 50.48,41.71 54,41.71C57.48,41.71 60.78,42.57 63.68,44.05L69.11,38.56C69.84,37.81 70.98,37.81 71.71,38.56C72.44,39.3 72.44,40.45 71.71,41.19L66.94,46.02ZM62.94,56.92C64.08,56.92 65,56.01 65,54.88C65,53.76 64.08,52.85 62.94,52.85C61.8,52.85 60.88,53.76 60.88,54.88C60.88,56.01 61.8,56.92 62.94,56.92ZM45.06,56.92C46.2,56.92 47.13,56.01 47.13,54.88C47.13,53.76 46.2,52.85 45.06,52.85C43.92,52.85 43,53.76 43,54.88C43,56.01 43.92,56.92 45.06,56.92Z"
|
||||
android:strokeWidth="1"
|
||||
android:strokeColor="#00000000" />
|
||||
</vector>
|
BIN
apps/android/source/app/src/main/res/drawable/binoculars_big.png
Normal file
After Width: | Height: | Size: 6.8 KiB |
After Width: | Height: | Size: 925 B |
After Width: | Height: | Size: 1.6 KiB |
@@ -0,0 +1,170 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="108dp"
|
||||
android:height="108dp"
|
||||
android:viewportWidth="108"
|
||||
android:viewportHeight="108">
|
||||
<path
|
||||
android:fillColor="#008577"
|
||||
android:pathData="M0,0h108v108h-108z" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M9,0L9,108"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,0L19,108"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M29,0L29,108"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M39,0L39,108"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M49,0L49,108"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M59,0L59,108"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M69,0L69,108"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M79,0L79,108"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M89,0L89,108"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M99,0L99,108"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,9L108,9"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,19L108,19"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,29L108,29"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,39L108,39"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,49L108,49"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,59L108,59"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,69L108,69"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,79L108,79"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,89L108,89"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,99L108,99"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,29L89,29"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,39L89,39"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,49L89,49"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,59L89,59"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,69L89,69"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,79L89,79"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M29,19L29,89"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M39,19L39,89"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M49,19L49,89"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M59,19L59,89"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M69,19L69,89"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M79,19L79,89"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
</vector>
|
@@ -0,0 +1,42 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:context=".launcher">
|
||||
|
||||
<Button
|
||||
android:id="@+id/launch_button"
|
||||
android:layout_width="253dp"
|
||||
android:layout_height="56dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginLeft="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:layout_marginRight="8dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:text="Launch Titan Scouting"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/editText"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginLeft="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:layout_marginRight="8dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:ems="10"
|
||||
android:inputType="textPassword"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/launch_button"
|
||||
app:layout_constraintVertical_bias="0.0" />
|
||||
</android.support.constraint.ConstraintLayout>
|
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:context=".MainActivity">
|
||||
|
||||
<WebView
|
||||
android:id="@+id/webview"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintVertical_bias="0.48000002" />
|
||||
|
||||
</android.support.constraint.ConstraintLayout>
|
@@ -0,0 +1,36 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:context=".tits">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/imageView"
|
||||
android:layout_width="372dp"
|
||||
android:layout_height="487dp"
|
||||
android:layout_marginTop="4dp"
|
||||
android:layout_marginBottom="215dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:srcCompat="@drawable/uuh" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/button"
|
||||
android:layout_width="198dp"
|
||||
android:layout_height="86dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginLeft="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:layout_marginRight="8dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:text="Fuck Get Me Out"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/imageView" />
|
||||
</android.support.constraint.ConstraintLayout>
|
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@drawable/ic_launcher_background" />
|
||||
<foreground android:drawable="@drawable/ic_launcher_foreground" />
|
||||
</adaptive-icon>
|
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@drawable/ic_launcher_background" />
|
||||
<foreground android:drawable="@drawable/ic_launcher_foreground" />
|
||||
</adaptive-icon>
|
BIN
apps/android/source/app/src/main/res/mipmap-hdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 4.8 KiB |
BIN
apps/android/source/app/src/main/res/mipmap-mdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 4.4 KiB |
After Width: | Height: | Size: 6.7 KiB |
After Width: | Height: | Size: 6.2 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 8.9 KiB |
After Width: | Height: | Size: 15 KiB |
6
apps/android/source/app/src/main/res/values/colors.xml
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<color name="colorPrimary">#008577</color>
|
||||
<color name="colorPrimaryDark">#00574B</color>
|
||||
<color name="colorAccent">#D81B60</color>
|
||||
</resources>
|
3
apps/android/source/app/src/main/res/values/strings.xml
Normal file
@@ -0,0 +1,3 @@
|
||||
<resources>
|
||||
<string name="app_name">TitanScout</string>
|
||||
</resources>
|
11
apps/android/source/app/src/main/res/values/styles.xml
Normal file
@@ -0,0 +1,11 @@
|
||||
<resources>
|
||||
|
||||
<!-- Base application theme. -->
|
||||
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
|
||||
<!-- Customize your theme here. -->
|
||||
<item name="colorPrimary">@color/colorPrimary</item>
|
||||
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
|
||||
<item name="colorAccent">@color/colorAccent</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
@@ -0,0 +1,17 @@
|
||||
package com.example.titanscouting;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
/**
|
||||
* Example local unit test, which will execute on the development machine (host).
|
||||
*
|
||||
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
|
||||
*/
|
||||
public class ExampleUnitTest {
|
||||
@Test
|
||||
public void addition_isCorrect() {
|
||||
assertEquals(4, 2 + 2);
|
||||
}
|
||||
}
|
27
apps/android/source/build.gradle
Normal file
@@ -0,0 +1,27 @@
|
||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||
|
||||
buildscript {
|
||||
repositories {
|
||||
google()
|
||||
jcenter()
|
||||
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:3.3.0'
|
||||
|
||||
// NOTE: Do not place your application dependencies here; they belong
|
||||
// in the individual module build.gradle files
|
||||
}
|
||||
}
|
||||
|
||||
allprojects {
|
||||
repositories {
|
||||
google()
|
||||
jcenter()
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
task clean(type: Delete) {
|
||||
delete rootProject.buildDir
|
||||
}
|
15
apps/android/source/gradle.properties
Normal file
@@ -0,0 +1,15 @@
|
||||
# Project-wide Gradle settings.
|
||||
# IDE (e.g. Android Studio) users:
|
||||
# Gradle settings configured through the IDE *will override*
|
||||
# any settings specified in this file.
|
||||
# For more details on how to configure your build environment visit
|
||||
# http://www.gradle.org/docs/current/userguide/build_environment.html
|
||||
# Specifies the JVM arguments used for the daemon process.
|
||||
# The setting is particularly useful for tweaking memory settings.
|
||||
org.gradle.jvmargs=-Xmx1536m
|
||||
# When configured, Gradle will run in incubating parallel mode.
|
||||
# This option should only be used with decoupled projects. More details, visit
|
||||
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
|
||||
# org.gradle.parallel=true
|
||||
|
||||
|
BIN
apps/android/source/gradle/wrapper/gradle-wrapper.jar
vendored
Normal file
6
apps/android/source/gradle/wrapper/gradle-wrapper.properties
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
#Wed Feb 06 15:44:44 CST 2019
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip
|
172
apps/android/source/gradlew
vendored
Normal file
@@ -0,0 +1,172 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
##############################################################################
|
||||
##
|
||||
## Gradle start up script for UN*X
|
||||
##
|
||||
##############################################################################
|
||||
|
||||
# Attempt to set APP_HOME
|
||||
# Resolve links: $0 may be a link
|
||||
PRG="$0"
|
||||
# Need this for relative symlinks.
|
||||
while [ -h "$PRG" ] ; do
|
||||
ls=`ls -ld "$PRG"`
|
||||
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||
if expr "$link" : '/.*' > /dev/null; then
|
||||
PRG="$link"
|
||||
else
|
||||
PRG=`dirname "$PRG"`"/$link"
|
||||
fi
|
||||
done
|
||||
SAVED="`pwd`"
|
||||
cd "`dirname \"$PRG\"`/" >/dev/null
|
||||
APP_HOME="`pwd -P`"
|
||||
cd "$SAVED" >/dev/null
|
||||
|
||||
APP_NAME="Gradle"
|
||||
APP_BASE_NAME=`basename "$0"`
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS=""
|
||||
|
||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||
MAX_FD="maximum"
|
||||
|
||||
warn () {
|
||||
echo "$*"
|
||||
}
|
||||
|
||||
die () {
|
||||
echo
|
||||
echo "$*"
|
||||
echo
|
||||
exit 1
|
||||
}
|
||||
|
||||
# OS specific support (must be 'true' or 'false').
|
||||
cygwin=false
|
||||
msys=false
|
||||
darwin=false
|
||||
nonstop=false
|
||||
case "`uname`" in
|
||||
CYGWIN* )
|
||||
cygwin=true
|
||||
;;
|
||||
Darwin* )
|
||||
darwin=true
|
||||
;;
|
||||
MINGW* )
|
||||
msys=true
|
||||
;;
|
||||
NONSTOP* )
|
||||
nonstop=true
|
||||
;;
|
||||
esac
|
||||
|
||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||
|
||||
# Determine the Java command to use to start the JVM.
|
||||
if [ -n "$JAVA_HOME" ] ; then
|
||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||
# IBM's JDK on AIX uses strange locations for the executables
|
||||
JAVACMD="$JAVA_HOME/jre/sh/java"
|
||||
else
|
||||
JAVACMD="$JAVA_HOME/bin/java"
|
||||
fi
|
||||
if [ ! -x "$JAVACMD" ] ; then
|
||||
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
fi
|
||||
else
|
||||
JAVACMD="java"
|
||||
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
fi
|
||||
|
||||
# Increase the maximum file descriptors if we can.
|
||||
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
|
||||
MAX_FD_LIMIT=`ulimit -H -n`
|
||||
if [ $? -eq 0 ] ; then
|
||||
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
||||
MAX_FD="$MAX_FD_LIMIT"
|
||||
fi
|
||||
ulimit -n $MAX_FD
|
||||
if [ $? -ne 0 ] ; then
|
||||
warn "Could not set maximum file descriptor limit: $MAX_FD"
|
||||
fi
|
||||
else
|
||||
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
|
||||
fi
|
||||
fi
|
||||
|
||||
# For Darwin, add options to specify how the application appears in the dock
|
||||
if $darwin; then
|
||||
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
|
||||
fi
|
||||
|
||||
# For Cygwin, switch paths to Windows format before running java
|
||||
if $cygwin ; then
|
||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
||||
JAVACMD=`cygpath --unix "$JAVACMD"`
|
||||
|
||||
# We build the pattern for arguments to be converted via cygpath
|
||||
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
|
||||
SEP=""
|
||||
for dir in $ROOTDIRSRAW ; do
|
||||
ROOTDIRS="$ROOTDIRS$SEP$dir"
|
||||
SEP="|"
|
||||
done
|
||||
OURCYGPATTERN="(^($ROOTDIRS))"
|
||||
# Add a user-defined pattern to the cygpath arguments
|
||||
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
|
||||
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
|
||||
fi
|
||||
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
||||
i=0
|
||||
for arg in "$@" ; do
|
||||
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
|
||||
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
|
||||
|
||||
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
|
||||
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
|
||||
else
|
||||
eval `echo args$i`="\"$arg\""
|
||||
fi
|
||||
i=$((i+1))
|
||||
done
|
||||
case $i in
|
||||
(0) set -- ;;
|
||||
(1) set -- "$args0" ;;
|
||||
(2) set -- "$args0" "$args1" ;;
|
||||
(3) set -- "$args0" "$args1" "$args2" ;;
|
||||
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
||||
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
||||
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
||||
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
||||
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
||||
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Escape application args
|
||||
save () {
|
||||
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
|
||||
echo " "
|
||||
}
|
||||
APP_ARGS=$(save "$@")
|
||||
|
||||
# Collect all arguments for the java command, following the shell quoting and substitution rules
|
||||
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
|
||||
|
||||
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
|
||||
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
|
||||
cd "$(dirname "$0")"
|
||||
fi
|
||||
|
||||
exec "$JAVACMD" "$@"
|
84
apps/android/source/gradlew.bat
vendored
Normal file
@@ -0,0 +1,84 @@
|
||||
@if "%DEBUG%" == "" @echo off
|
||||
@rem ##########################################################################
|
||||
@rem
|
||||
@rem Gradle startup script for Windows
|
||||
@rem
|
||||
@rem ##########################################################################
|
||||
|
||||
@rem Set local scope for the variables with windows NT shell
|
||||
if "%OS%"=="Windows_NT" setlocal
|
||||
|
||||
set DIRNAME=%~dp0
|
||||
if "%DIRNAME%" == "" set DIRNAME=.
|
||||
set APP_BASE_NAME=%~n0
|
||||
set APP_HOME=%DIRNAME%
|
||||
|
||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
set DEFAULT_JVM_OPTS=
|
||||
|
||||
@rem Find java.exe
|
||||
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||
|
||||
set JAVA_EXE=java.exe
|
||||
%JAVA_EXE% -version >NUL 2>&1
|
||||
if "%ERRORLEVEL%" == "0" goto init
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
echo.
|
||||
echo Please set the JAVA_HOME variable in your environment to match the
|
||||
echo location of your Java installation.
|
||||
|
||||
goto fail
|
||||
|
||||
:findJavaFromJavaHome
|
||||
set JAVA_HOME=%JAVA_HOME:"=%
|
||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||
|
||||
if exist "%JAVA_EXE%" goto init
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
||||
echo.
|
||||
echo Please set the JAVA_HOME variable in your environment to match the
|
||||
echo location of your Java installation.
|
||||
|
||||
goto fail
|
||||
|
||||
:init
|
||||
@rem Get command-line arguments, handling Windows variants
|
||||
|
||||
if not "%OS%" == "Windows_NT" goto win9xME_args
|
||||
|
||||
:win9xME_args
|
||||
@rem Slurp the command line arguments.
|
||||
set CMD_LINE_ARGS=
|
||||
set _SKIP=2
|
||||
|
||||
:win9xME_args_slurp
|
||||
if "x%~1" == "x" goto execute
|
||||
|
||||
set CMD_LINE_ARGS=%*
|
||||
|
||||
:execute
|
||||
@rem Setup the command line
|
||||
|
||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||
|
||||
@rem Execute Gradle
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
|
||||
|
||||
:end
|
||||
@rem End local scope for the variables with windows NT shell
|
||||
if "%ERRORLEVEL%"=="0" goto mainEnd
|
||||
|
||||
:fail
|
||||
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
||||
rem the _cmd.exe /c_ return code!
|
||||
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
|
||||
exit /b 1
|
||||
|
||||
:mainEnd
|
||||
if "%OS%"=="Windows_NT" endlocal
|
||||
|
||||
:omega
|
1
apps/android/source/settings.gradle
Normal file
@@ -0,0 +1 @@
|
||||
include ':app'
|
0
apps/ios/temp.txt
Normal file
BIN
data analysis/__pycache__/repack_json.cpython-37.pyc
Normal file
BIN
data analysis/__pycache__/superscript.cpython-37.pyc
Normal file
BIN
data analysis/__pycache__/titanlearn.cpython-37.pyc
Normal file
BIN
data analysis/__pycache__/visualization.cpython-37.pyc
Normal file
@@ -7,10 +7,37 @@
|
||||
#number of easter eggs: 2
|
||||
#setup:
|
||||
|
||||
__version__ = "1.0.6.004"
|
||||
__version__ = "1.0.8.005"
|
||||
|
||||
#changelog should be viewed using print(analysis.__changelog__)
|
||||
__changelog__ = """changelog:
|
||||
1.0.8.005:
|
||||
- minor fixes
|
||||
1.0.8.004:
|
||||
- removed a few unused dependencies
|
||||
1.0.8.003:
|
||||
- added p_value function
|
||||
1.0.8.002:
|
||||
- updated __all__ correctly to contain changes made in v 1.0.8.000 and v 1.0.8.001
|
||||
1.0.8.001:
|
||||
- refactors
|
||||
- bugfixes
|
||||
1.0.8.000:
|
||||
- depreciated histo_analysis_old
|
||||
- depreciated debug
|
||||
- altered basic_analysis to take array data instead of filepath
|
||||
- refactor
|
||||
- optimization
|
||||
1.0.7.002:
|
||||
- bug fixes
|
||||
1.0.7.001:
|
||||
- bug fixes
|
||||
1.0.7.000:
|
||||
- added tanh_regression (logistical regression)
|
||||
- bug fixes
|
||||
1.0.6.005:
|
||||
- added z_normalize function to normalize dataset
|
||||
- bug fixes
|
||||
1.0.6.004:
|
||||
- bug fixes
|
||||
1.0.6.003:
|
||||
@@ -85,8 +112,9 @@ __all__ = [
|
||||
'load_csv',
|
||||
'basic_stats',
|
||||
'z_score',
|
||||
'z_normalize',
|
||||
'stdev_z_split',
|
||||
'histo_analysis', #histo_analysis_old is intentionally left out as it has been depreciated since v 1.0.1.005
|
||||
'histo_analysis',
|
||||
'poly_regression',
|
||||
'log_regression',
|
||||
'exp_regression',
|
||||
@@ -95,6 +123,7 @@ __all__ = [
|
||||
'calc_overfit',
|
||||
'strip_data',
|
||||
'optimize_regression',
|
||||
'select_best_regression',
|
||||
'basic_analysis',
|
||||
#all statistics functions left out due to integration in other functions
|
||||
]
|
||||
@@ -114,8 +143,11 @@ import math
|
||||
import matplotlib
|
||||
import numbers
|
||||
import numpy as np
|
||||
import pandas
|
||||
import random
|
||||
import scipy
|
||||
from scipy.optimize import curve_fit
|
||||
from scipy import stats
|
||||
from sklearn import *
|
||||
#import statistics <-- statistics.py functions have been integrated into analysis.py as of v 1.0.3.002
|
||||
import time
|
||||
@@ -126,16 +158,13 @@ class error(ValueError):
|
||||
|
||||
def _init_device (setting, arg): #initiates computation device for ANNs
|
||||
if setting == "cuda":
|
||||
temp = setting + ":" + str(arg)
|
||||
try:
|
||||
the_device_woman = torch.device(temp if torch.cuda.is_available() else "cpu")
|
||||
return the_device_woman #name that reference
|
||||
return torch.device(setting + ":" + str(arg) if torch.cuda.is_available() else "cpu")
|
||||
except:
|
||||
raise error("could not assign cuda or cpu")
|
||||
elif setting == "cpu":
|
||||
try:
|
||||
the_device_woman = torch.device("cpu")
|
||||
return the_device_woman #name that reference
|
||||
return torch.device("cpu")
|
||||
except:
|
||||
raise error("could not assign cpu")
|
||||
else:
|
||||
@@ -382,19 +411,19 @@ class objectives:
|
||||
def load_csv(filepath):
|
||||
with open(filepath, newline = '') as csvfile:
|
||||
file_array = list(csv.reader(csvfile))
|
||||
csvfile.close()
|
||||
return file_array
|
||||
|
||||
def basic_stats(data, method, arg): # data=array, mode = ['1d':1d_basic_stats, 'column':c_basic_stats, 'row':r_basic_stats], arg for mode 1 or mode 2 for column or row
|
||||
|
||||
if method == 'debug':
|
||||
out = "basic_stats requires 3 args: data, mode, arg; where data is data to be analyzed, mode is an int from 0 - 2 depending on type of analysis (by column or by row) and is only applicable to 2d arrays (for 1d arrays use mode 1), and arg is row/column number for mode 1 or mode 2; function returns: [mean, median, mode, stdev, variance]"
|
||||
return out
|
||||
return "basic_stats requires 3 args: data, mode, arg; where data is data to be analyzed, mode is an int from 0 - 2 depending on type of analysis (by column or by row) and is only applicable to 2d arrays (for 1d arrays use mode 1), and arg is row/column number for mode 1 or mode 2; function returns: [mean, median, mode, stdev, variance]"
|
||||
|
||||
if method == "1d" or method == 0:
|
||||
|
||||
data_t = []
|
||||
|
||||
for i in range (0, len(data) - 1, 1):
|
||||
for i in range (0, len(data), 1):
|
||||
data_t.append(float(data[i]))
|
||||
|
||||
_mean = mean(data_t)
|
||||
@@ -412,7 +441,7 @@ def basic_stats(data, method, arg): # data=array, mode = ['1d':1d_basic_stats, '
|
||||
except:
|
||||
_variance = None
|
||||
|
||||
return [_mean, _median, _mode, _stdev, _variance]
|
||||
return _mean, _median, _mode, _stdev, _variance
|
||||
|
||||
elif method == "column" or method == 1:
|
||||
|
||||
@@ -440,7 +469,7 @@ def basic_stats(data, method, arg): # data=array, mode = ['1d':1d_basic_stats, '
|
||||
except:
|
||||
_variance = None
|
||||
|
||||
return [_mean, _median, _mode, _stdev, _variance]
|
||||
return _mean, _median, _mode, _stdev, _variance
|
||||
|
||||
elif method == "row" or method == 2:
|
||||
|
||||
@@ -464,7 +493,7 @@ def basic_stats(data, method, arg): # data=array, mode = ['1d':1d_basic_stats, '
|
||||
except:
|
||||
_variance = None
|
||||
|
||||
return [_mean, _median, _mode, _stdev, _variance]
|
||||
return _mean, _median, _mode, _stdev, _variance
|
||||
|
||||
else:
|
||||
raise error("method error")
|
||||
@@ -473,6 +502,47 @@ def z_score(point, mean, stdev): #returns z score with inputs of point, mean and
|
||||
score = (point - mean)/stdev
|
||||
return score
|
||||
|
||||
def z_normalize(x, y, mode): #mode is either 'x' or 'y' or 'both' depending on the variable(s) to be normalized
|
||||
|
||||
x_norm = []
|
||||
y_norm = []
|
||||
|
||||
mean = 0
|
||||
stdev = 0
|
||||
|
||||
if mode == 'x':
|
||||
_mean, _median, _mode, _stdev, _variance = basic_stats(x, "1d", 0)
|
||||
|
||||
for i in range (0, len(x), 1):
|
||||
x_norm.append(z_score(x[i], _mean, _stdev))
|
||||
|
||||
return x_norm, y
|
||||
|
||||
if mode == 'y':
|
||||
_mean, _median, _mode, _stdev, _variance = basic_stats(y, "1d", 0)
|
||||
|
||||
for i in range (0, len(y), 1):
|
||||
y_norm.append(z_score(y[i], _mean, _stdev))
|
||||
|
||||
return x, y_norm
|
||||
|
||||
if mode == 'both':
|
||||
_mean, _median, _mode, _stdev, _variance = basic_stats(x, "1d", 0)
|
||||
|
||||
for i in range (0, len(x), 1):
|
||||
x_norm.append(z_score(x[i], _mean, _stdev))
|
||||
|
||||
_mean, _median, _mode, _stdev, _variance = basic_stats(y, "1d", 0)
|
||||
|
||||
for i in range (0, len(y), 1):
|
||||
y_norm.append(z_score(y[i], _mean, _stdev))
|
||||
|
||||
return x_norm, y_norm
|
||||
|
||||
else:
|
||||
|
||||
return error('method error')
|
||||
|
||||
def stdev_z_split(mean, stdev, delta, low_bound, high_bound): #returns n-th percentile of spread given mean, standard deviation, lower z-score, and upper z-score
|
||||
|
||||
z_split = []
|
||||
@@ -486,44 +556,18 @@ def stdev_z_split(mean, stdev, delta, low_bound, high_bound): #returns n-th perc
|
||||
|
||||
return z_split
|
||||
|
||||
def histo_analysis_old(hist_data): #note: depreciated since v 1.0.1.005
|
||||
|
||||
if hist_data == 'debug':
|
||||
return['lower estimate (5%)', 'lower middle estimate (25%)', 'middle estimate (50%)', 'higher middle estimate (75%)', 'high estimate (95%)', 'standard deviation', 'note: this has been depreciated']
|
||||
|
||||
derivative = []
|
||||
for i in range(0, len(hist_data) - 1, 1):
|
||||
derivative.append(float(hist_data[i+1]) - float(hist_data[i]))
|
||||
|
||||
derivative_sorted = sorted(derivative, key=int)
|
||||
mean_derivative = basic_stats(derivative_sorted, "1d", 0)[0]
|
||||
|
||||
print(mean_derivative)
|
||||
stdev_derivative = basic_stats(derivative_sorted, "1d", 0)[3]
|
||||
|
||||
low_bound = mean_derivative + -1.645 * stdev_derivative
|
||||
lm_bound = mean_derivative + -0.674 * stdev_derivative
|
||||
mid_bound = mean_derivative * 0 * stdev_derivative
|
||||
hm_bound = mean_derivative + 0.674 * stdev_derivative
|
||||
high_bound = mean_derivative + 1.645 * stdev_derivative
|
||||
|
||||
low_est = float(hist_data[-1:][0]) + low_bound
|
||||
lm_est = float(hist_data[-1:][0]) + lm_bound
|
||||
mid_est = float(hist_data[-1:][0]) + mid_bound
|
||||
hm_est = float(hist_data[-1:][0]) + hm_bound
|
||||
high_est = float(hist_data[-1:][0]) + high_bound
|
||||
|
||||
return [low_est, lm_est, mid_est, hm_est, high_est, stdev_derivative]
|
||||
|
||||
def histo_analysis(hist_data, delta, low_bound, high_bound):
|
||||
|
||||
if hist_data == 'debug':
|
||||
return ('returns list of predicted values based on historical data; input delta for delta step in z-score and lower and higher bounds in number for standard deviations')
|
||||
return ('returns list of predicted values based on historical data; input delta for delta step in z-score and lower and higher bounds in number of standard deviations')
|
||||
|
||||
derivative = []
|
||||
|
||||
for i in range(0, len(hist_data) - 1, 1):
|
||||
derivative.append(float(hist_data[i + 1]) - float(hist_data [i]))
|
||||
for i in range(0, len(hist_data), 1):
|
||||
try:
|
||||
derivative.append(float(hist_data[i - 1]) - float(hist_data [i]))
|
||||
except:
|
||||
pass
|
||||
|
||||
derivative_sorted = sorted(derivative, key=int)
|
||||
mean_derivative = basic_stats(derivative_sorted,"1d", 0)[0]
|
||||
@@ -571,7 +615,11 @@ def poly_regression(x, y, power):
|
||||
|
||||
for i in range(0, len(x), 1):
|
||||
z = x[i]
|
||||
|
||||
try:
|
||||
exec("vals.append(" + eq_str + ")")
|
||||
except:
|
||||
pass
|
||||
|
||||
_rms = rms(vals, y)
|
||||
r2_d2 = r_squared(vals, y)
|
||||
@@ -583,27 +631,37 @@ def log_regression(x, y, base):
|
||||
x_fit = []
|
||||
|
||||
for i in range(len(x)):
|
||||
try:
|
||||
x_fit.append(np.log(x[i]) / np.log(base)) #change of base for logs
|
||||
except:
|
||||
pass
|
||||
|
||||
reg_eq = np.polyfit(x_fit, y, 1) # y = reg_eq[0] * log(x, base) + reg_eq[1]
|
||||
eq_str = str(reg_eq[0]) + "* (np.log(z) / np.log(" + str(base) +"))+" + str(reg_eq[1])
|
||||
q_str = str(reg_eq[0]) + "* (np.log(z) / np.log(" + str(base) +"))+" + str(reg_eq[1])
|
||||
vals = []
|
||||
|
||||
for i in range(len(x)):
|
||||
z = x[i]
|
||||
|
||||
try:
|
||||
exec("vals.append(" + eq_str + ")")
|
||||
except:
|
||||
pass
|
||||
|
||||
_rms = rms(vals, y)
|
||||
r2_d2 = r_squared(vals, y)
|
||||
|
||||
return [eq_str, _rms, r2_d2]
|
||||
return eq_str, _rms, r2_d2
|
||||
|
||||
def exp_regression(x, y, base):
|
||||
|
||||
y_fit = []
|
||||
|
||||
for i in range(len(y)):
|
||||
try:
|
||||
y_fit.append(np.log(y[i]) / np.log(base)) #change of base for logs
|
||||
except:
|
||||
pass
|
||||
|
||||
reg_eq = np.polyfit(x, y_fit, 1, w=np.sqrt(y_fit)) # y = base ^ (reg_eq[0] * x) * base ^ (reg_eq[1])
|
||||
eq_str = "(" + str(base) + "**(" + str(reg_eq[0]) + "*z))*(" + str(base) + "**(" + str(reg_eq[1]) + "))"
|
||||
@@ -611,22 +669,45 @@ def exp_regression(x, y, base):
|
||||
|
||||
for i in range(len(x)):
|
||||
z = x[i]
|
||||
|
||||
try:
|
||||
exec("vals.append(" + eq_str + ")")
|
||||
except:
|
||||
pass
|
||||
|
||||
_rms = rms(vals, y)
|
||||
r2_d2 = r_squared(vals, y)
|
||||
|
||||
return [eq_str, _rms, r2_d2]
|
||||
return eq_str, _rms, r2_d2
|
||||
|
||||
def tanh_regression(x, y):
|
||||
|
||||
def tanh (x, a, b, c, d):
|
||||
|
||||
return a * np.tanh(b * (x - c)) + d
|
||||
|
||||
reg_eq = np.float64(curve_fit(tanh, np.array(x), np.array(y))[0]).tolist()
|
||||
eq_str = str(reg_eq[0]) + " * np.tanh(" + str(reg_eq[1]) + "*(z - " + str(reg_eq[2]) + ")) + " + str(reg_eq[3])
|
||||
vals = []
|
||||
|
||||
for i in range(len(x)):
|
||||
z = x[i]
|
||||
try:
|
||||
exec("vals.append(" + eq_str + ")")
|
||||
except:
|
||||
pass
|
||||
|
||||
_rms = rms(vals, y)
|
||||
r2_d2 = r_squared(vals, y)
|
||||
|
||||
return eq_str, _rms, r2_d2
|
||||
|
||||
def r_squared(predictions, targets): # assumes equal size inputs
|
||||
|
||||
out = metrics.r2_score(targets, predictions)
|
||||
|
||||
return out
|
||||
return metrics.r2_score(np.array(targets), np.array(predictions))
|
||||
|
||||
def rms(predictions, targets): # assumes equal size inputs
|
||||
|
||||
out = 0
|
||||
_sum = 0
|
||||
|
||||
for i in range(0, len(targets), 1):
|
||||
@@ -650,7 +731,7 @@ def calc_overfit(equation, rms_train, r2_train, x_test, y_test):
|
||||
r2_test = r_squared(vals, y_test)
|
||||
rms_test = rms(vals, y_test)
|
||||
|
||||
return rms_train - rms_test, r2_train - r2_test
|
||||
return r2_train - r2_test
|
||||
|
||||
def strip_data(data, mode):
|
||||
|
||||
@@ -669,16 +750,19 @@ def optimize_regression(x, y, _range, resolution):#_range in poly regression is
|
||||
raise error("resolution must be int")
|
||||
|
||||
x_train = x
|
||||
y_train = y
|
||||
y_train = []
|
||||
|
||||
for i in range(len(y)):
|
||||
y_train.append(float(y[i]))
|
||||
|
||||
x_test = []
|
||||
y_test = []
|
||||
|
||||
for i in range (0, math.floor(len(x) * 0.4), 1):
|
||||
for i in range (0, math.floor(len(x) * 0.5), 1):
|
||||
index = random.randint(0, len(x) - 1)
|
||||
|
||||
x_test.append(x[index])
|
||||
y_test.append(y[index])
|
||||
y_test.append(float(y[index]))
|
||||
|
||||
x_train.pop(index)
|
||||
y_train.pop(index)
|
||||
@@ -691,23 +775,38 @@ def optimize_regression(x, y, _range, resolution):#_range in poly regression is
|
||||
r2s = []
|
||||
|
||||
for i in range (0, _range + 1, 1):
|
||||
eqs.append(poly_regression(x_train, y_train, i)[0])
|
||||
rmss.append(poly_regression(x_train, y_train, i)[1])
|
||||
r2s.append(poly_regression(x_train, y_train, i)[2])
|
||||
|
||||
for i in range (1, 100 * resolution + 1):
|
||||
try:
|
||||
eqs.append(exp_regression(x_train, y_train, float(i / resolution))[0])
|
||||
rmss.append(exp_regression(x_train, y_train, float(i / resolution))[1])
|
||||
r2s.append(exp_regression(x_train, y_train, float(i / resolution))[2])
|
||||
x, y, z = poly_regression(x_train, y_train, i)
|
||||
eqs.append(x)
|
||||
rmss.append(y)
|
||||
r2s.append(z)
|
||||
except:
|
||||
pass
|
||||
|
||||
for i in range (1, 100 * resolution + 1):
|
||||
try:
|
||||
eqs.append(log_regression(x_train, y_train, float(i / resolution))[0])
|
||||
rmss.append(log_regression(x_train, y_train, float(i / resolution))[1])
|
||||
r2s.append(log_regression(x_train, y_train, float(i / resolution))[2])
|
||||
x, y, z = exp_regression(x_train, y_train, float(i / resolution))
|
||||
eqs.append(x)
|
||||
rmss.append(y)
|
||||
r2s.append(z)
|
||||
except:
|
||||
pass
|
||||
|
||||
for i in range (1, 100 * resolution + 1):
|
||||
try:
|
||||
x, y, z = log_regression(x_train, y_train, float(i / resolution))
|
||||
eqs.append(x)
|
||||
rmss.append(y)
|
||||
r2s.append(z)
|
||||
except:
|
||||
pass
|
||||
|
||||
try:
|
||||
x, y, z = tanh_regression(x_train, y_train)
|
||||
|
||||
eqs.append(x)
|
||||
rmss.append(y)
|
||||
r2s.append(z)
|
||||
except:
|
||||
pass
|
||||
|
||||
@@ -728,15 +827,46 @@ def optimize_regression(x, y, _range, resolution):#_range in poly regression is
|
||||
overfit = []
|
||||
|
||||
for i in range (0, len(eqs), 1):
|
||||
|
||||
overfit.append(calc_overfit(eqs[i], rmss[i], r2s[i], x_test, y_test))
|
||||
|
||||
return eqs, rmss, r2s, overfit
|
||||
|
||||
def basic_analysis(filepath): #assumes that rows are the independent variable and columns are the dependant. also assumes that time flows from lowest column to highest column.
|
||||
def select_best_regression(eqs, rmss, r2s, overfit, selector):
|
||||
|
||||
b_eq = ""
|
||||
b_rms = 0
|
||||
b_r2 = 0
|
||||
b_overfit = 0
|
||||
|
||||
ind = 0
|
||||
|
||||
if selector == "min_overfit":
|
||||
|
||||
ind = np.argmin(overfit)
|
||||
|
||||
b_eq = eqs[ind]
|
||||
b_rms = rmss[ind]
|
||||
b_r2 = r2s[ind]
|
||||
b_overfit = overfit[ind]
|
||||
|
||||
if selector == "max_r2s":
|
||||
|
||||
ind = np.argmax(r2s)
|
||||
b_eq = eqs[ind]
|
||||
b_rms = rmss[ind]
|
||||
b_r2 = r2s[ind]
|
||||
b_overfit = overfit[ind]
|
||||
|
||||
return b_eq, b_rms, b_r2, b_overfit
|
||||
|
||||
def p_value(x, y): #takes 2 1d arrays
|
||||
|
||||
return stats.ttest_ind(x, y)[1]
|
||||
|
||||
def basic_analysis(data): #assumes that rows are the independent variable and columns are the dependant. also assumes that time flows from lowest column to highest column.
|
||||
|
||||
data = load_csv(filepath)
|
||||
row = len(data)
|
||||
|
||||
column = []
|
||||
|
||||
for i in range(0, row, 1):
|
||||
@@ -757,14 +887,15 @@ def basic_analysis(filepath): #assumes that rows are the independent variable an
|
||||
|
||||
return[row_b_stats, column_b_stats, row_histo]
|
||||
|
||||
|
||||
def benchmark(x, y):
|
||||
|
||||
start_g = time.time()
|
||||
generate_data("benchmark_data.csv", x, y, -10, 10)
|
||||
generate_data("data/data.csv", x, y, -10, 10)
|
||||
end_g = time.time()
|
||||
|
||||
start_a = time.time()
|
||||
basic_analysis("benchmark_data.csv")
|
||||
basic_analysis("data/data.csv")
|
||||
end_a = time.time()
|
||||
|
||||
return [(end_g - start_g), (end_a - start_a)]
|
||||
@@ -782,68 +913,6 @@ def generate_data(filename, x, y, low, high):
|
||||
temp = temp + str(random.uniform(low, high))
|
||||
file.write(temp + "\n")
|
||||
|
||||
def debug():
|
||||
|
||||
data = load_csv('data.csv')
|
||||
|
||||
print("--------------------------------")
|
||||
|
||||
print(basic_stats(0, 'debug', 0))
|
||||
print(basic_stats(data, "column", 0))
|
||||
print(basic_stats(data, "row", 0))
|
||||
print(z_score(10, basic_stats(data, "column", 0)[0], basic_stats(data, "column", 0)[3]))
|
||||
print(histo_analysis(data[0], 0.01, -1, 1))
|
||||
print(stdev_z_split(3.3, 0.2, 0.1, -5, 5))
|
||||
|
||||
print("--------------------------------")
|
||||
|
||||
game_c_entities = c_entities(["bot", "bot", "bot"], [0, 1, 2], [[10, 10], [-10, -10], [10, -10]], ["shit", "bad", "worse"], ["triangle", "square", "circle"])
|
||||
game_c_entities.append("bot", 3, [-10, 10], "useless", "pentagram")
|
||||
game_c_entities.edit(0, "null", "null", "null", "null", "triagon")
|
||||
print(game_c_entities.search(0))
|
||||
print(game_c_entities.debug())
|
||||
print(game_c_entities.regurgitate())
|
||||
|
||||
print("--------------------------------")
|
||||
|
||||
game_nc_entities = nc_entities(["cube", "cube", "ball"], [0, 1, 2], [[0, 0.5], [1, 1.5], [2, 2]], ["1;1;1;10', '2;1;1;20", "r=0.5, 5"], ["1", "1", "0"])
|
||||
game_nc_entities.append("cone", 3, [1, -1], "property", "effect")
|
||||
game_nc_entities.edit(2, "sphere", 10, [5, -5], "new prop", "new effect")
|
||||
print(game_nc_entities.search(10))
|
||||
print(game_nc_entities.debug())
|
||||
print(game_nc_entities.regurgitate())
|
||||
|
||||
print("--------------------------------")
|
||||
|
||||
game_obstacles = obstacles(["wall", "fortress", "castle"], [0, 1, 2],[[[10, 10], [10, 9], [9, 10], [9, 9]], [[-10, 9], [-10, -9], [-9, -10]], [[5, 0], [4, -1], [-4, -1]]] , [0, 0.01, 10])
|
||||
game_obstacles.append("bastion", 3, [[50, 50], [49, 50], [50, 49], [49, 49]], 75)
|
||||
game_obstacles.edit(0, "motte and bailey", "null", [[10, 10], [9, 10], [10, 9], [9, 9]], 0.01)
|
||||
print(game_obstacles.search(0))
|
||||
print(game_obstacles.debug())
|
||||
print(game_obstacles.regurgitate())
|
||||
|
||||
print("--------------------------------")
|
||||
|
||||
game_objectives = objectives(["switch", "scale", "climb"], [0,1,2], [[0,0],[1,1],[2,0]], ["0,1", "1,1", "0,5"])
|
||||
game_objectives.append("auto", 3, [0, 10], "1, 10")
|
||||
game_objectives.edit(3, "null", 4, "null", "null")
|
||||
print(game_objectives.search(4))
|
||||
print(game_objectives.debug())
|
||||
print(game_objectives.regurgitate())
|
||||
|
||||
print("--------------------------------")
|
||||
|
||||
print(poly_regression([1, 2, 3, 4, 5], [1, 2, 4, 8, 16], 2))
|
||||
print(log_regression([1, 2, 3, 4], [2, 4, 8, 16], 2.717))
|
||||
print(exp_regression([1, 2, 3, 4], [2, 4, 8, 16], 2.717))
|
||||
|
||||
x, y, z = optimize_regression([0, 1, 2, 3, 4], [1, 2, 4, 7, 19], 10, 100)
|
||||
|
||||
for i in range(0, len(x), 1):
|
||||
print(str(x[i]) + " | " + str(y[i]) + " | " + str(z[i]))
|
||||
|
||||
#statistics def below
|
||||
|
||||
class StatisticsError(ValueError):
|
||||
pass
|
||||
|
||||
|
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"cells": [],
|
||||
"metadata": {},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
@@ -0,0 +1,6 @@
|
||||
2,3
|
||||
6,5
|
||||
5,5
|
||||
5,8
|
||||
6,6
|
||||
6,8
|
|
53
data analysis/data/.ipynb_checkpoints/teams-checkpoint.csv
Normal file
@@ -0,0 +1,53 @@
|
||||
4,6,4,5
|
||||
3,4,8,8
|
||||
2,8,3,0
|
||||
5,8,4,7
|
||||
4,0,9,6
|
||||
2,0,1,6
|
||||
5,3,5,0
|
||||
2,0,2,2
|
||||
4,8
|
||||
6,6,5,1
|
||||
2,1,5,1
|
||||
2,0,3,9
|
||||
2,2,5,2
|
||||
1,1,1
|
||||
6,8,2,3
|
||||
2,1,3,6
|
||||
4,2,9,2
|
||||
5,8,2,2
|
||||
7,6,0,8
|
||||
2,3,5,8
|
||||
4,2,4,1
|
||||
3,1,1,0
|
||||
7,6,0,9
|
||||
5,1,2,5
|
||||
6,9,0,6
|
||||
9,3,0
|
||||
2,0,6,2
|
||||
3,0,6,7
|
||||
4,7,8,7
|
||||
2,7,0,9
|
||||
7,5,6,0
|
||||
5,9,3,4
|
||||
4,7,0,2
|
||||
5,1,4,8
|
||||
1,6
|
||||
4,1,5,6
|
||||
1,8,8,4
|
||||
1,6,7,5
|
||||
1,7,9,7
|
||||
2,4,5,1
|
||||
7,7,3,8
|
||||
1,0,1
|
||||
1,7,3,9
|
||||
3,7,3,4
|
||||
1,7,3,6
|
||||
3,0,6,1
|
||||
2,7,2,5
|
||||
7,2,3,7
|
||||
3,6,9,5
|
||||
6,9,6,8
|
||||
1,7,8,1
|
||||
4,2,9,6
|
||||
2,3,3,8
|
|
1
data analysis/data/scores.csv
Normal file
@@ -0,0 +1 @@
|
||||
21, 23, 39, 50, 89, 97, 191, 213, 233, 236, 272, 289, 308, 310, 314, 317, 329, 355, 428, 436
|
|
1
data analysis/data/teams.csv
Normal file
@@ -0,0 +1 @@
|
||||
2022
|
|
178
data analysis/documentation/analysis.docs
Normal file
@@ -0,0 +1,178 @@
|
||||
Doccumentation of python module: analysis.py
|
||||
|
||||
revision version: 1.0.8.003
|
||||
|
||||
|
||||
|
||||
analysis.py{
|
||||
|
||||
analysis.py should be imported as a python module using "import analysis" in the tr2022 directory, or using "from tr2022 import analysis" if tr2022 modules are installed in the python Libs directory
|
||||
|
||||
analysis.py is a module designed for statistical analyses and artifician neural network analyses
|
||||
|
||||
functions{
|
||||
|
||||
|
||||
_init_device{
|
||||
|
||||
|
||||
initiates device for tensor flow with either a cuda device (device specified via the "arg" argument) or cpu (ignored "arg" argument)
|
||||
|
||||
usage{
|
||||
|
||||
analysis._init_device("cuda", arg) , where arg is the cuda device number
|
||||
|
||||
analysis._init_device("cpu", 0) , which initiates the cpu as the tensorflow device
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
load_csv{
|
||||
|
||||
loads a csv file as a 2 dimentional array
|
||||
|
||||
usage{
|
||||
|
||||
analysis.load_csv(filepath) , where filepath is the path to the csv file to be loaded
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
basic_stats{
|
||||
|
||||
performs basic stats such as mean, median, mode, standard deviation, and varaince on a set of data
|
||||
|
||||
the function can do stats on a 1 dimentional array, or on a specified row or column in a 2 dimentional array
|
||||
|
||||
the method in which it does the statistics is specified by the "method" argument
|
||||
|
||||
usage{
|
||||
|
||||
analysis.basic_stats(data, "1d", 0) , where data is a 1 dimentional array
|
||||
|
||||
analysis.basic_stats(data, "row", rownum) , where data is a 2 dimentional array and "rownum" is the row to run statistics on
|
||||
|
||||
analysis.basic_stats(data, "column", columnnum) , where data is a 2 dimentional array and "columnnum" is the column to run statistics on
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
z_score{
|
||||
|
||||
returns the z score of a point relative to the population mean and standard deviation
|
||||
|
||||
usage{
|
||||
|
||||
analysis.z_score(datapoint, mean, stdev) , where "datapoint" is the specific data point to assign a z score, mean is the mean of the entire data set, and stdev is the standard deviation of the data set
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
z_normalize{
|
||||
|
||||
used in other functions, not important
|
||||
|
||||
}
|
||||
|
||||
stdev_z_split{
|
||||
|
||||
used in other functions, not important
|
||||
|
||||
}
|
||||
|
||||
histo_analysis{
|
||||
|
||||
returns an analysis of historical data, the analysis predicts a range of possible next data poins given historical data
|
||||
|
||||
usage{
|
||||
|
||||
analysis.histo_analysis(data, delta, low, high) , where data is the historical data to be predicted, delta are the steps (in standard deviations) that the predictor uses, and the low and high bounds are the ranges of standard deviations that the function predicts within
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
poly_regression{
|
||||
|
||||
used in other functions, not important
|
||||
|
||||
}
|
||||
|
||||
log_regression{
|
||||
|
||||
used in other functions, not important
|
||||
|
||||
}
|
||||
|
||||
exp_regression{
|
||||
|
||||
used in other functions, not important
|
||||
|
||||
}
|
||||
|
||||
tanh_regression{
|
||||
|
||||
used in other functions, not important
|
||||
|
||||
}
|
||||
|
||||
r_squared{
|
||||
|
||||
used in other functions
|
||||
|
||||
returns the r^2 score of a curve and corresponding data
|
||||
|
||||
}
|
||||
|
||||
rms{
|
||||
|
||||
used in other functions
|
||||
|
||||
returns the root mean squared score of a curve and corresponding data
|
||||
|
||||
}
|
||||
|
||||
calc_overfit{
|
||||
|
||||
used in other functions, not important
|
||||
|
||||
}
|
||||
|
||||
optimize_regression{
|
||||
|
||||
returns a list of possible regressions given the x and y coordinates of the data
|
||||
|
||||
usage{
|
||||
|
||||
analysis.optimize_regression(x, y, range, resolution) , where x and y are the x and y values of each data point, range is the range of polynomial equations tried, and resolution is the detail of bases used for exponential and logorithmic regressions
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
select_best_regression{
|
||||
|
||||
takes a list of equations and returns the best equation, either based on minimizing overfit or based on maximizing root mean squareds
|
||||
|
||||
}
|
||||
|
||||
p_value{
|
||||
|
||||
returns the p value of two data sets
|
||||
|
||||
}
|
||||
|
||||
basic_analysis{
|
||||
|
||||
runs every stat on a given file
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
0
data analysis/documentation/visualizer.docs
Normal file
@@ -1,16 +0,0 @@
|
||||
import random
|
||||
|
||||
def generate(filename, x, y, low, high):
|
||||
|
||||
file = open(filename, "w")
|
||||
|
||||
for i in range (0, y, 1):
|
||||
|
||||
temp = ""
|
||||
|
||||
for j in range (0, x - 1, 1):
|
||||
|
||||
temp = str(random.uniform(low, high)) + "," + temp
|
||||
|
||||
temp = temp + str(random.uniform(low, high))
|
||||
file.write(temp + "\n")
|
12
data analysis/keys/firebasekey.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"type": "service_account",
|
||||
"project_id": "titanscoutandroid",
|
||||
"private_key_id": "e7cde706a13a6fade555cce2bc46ee53f05a0b11",
|
||||
"private_key": "-----BEGIN PRIVATE KEY-----\(gottem)/B\ntvFNxi7l6IsHUa+ijrDKGP3O2jbQCWjfBS0gNxpx65JXdKw4l+5p1lIyO5xe5b2m\nKOGQQf9Vd3X6xP9ttHD9ILjvdDRGvtR/bkD3e1ZdFSvt1PDddcLLPnIeDgkNQHXd\nzAYv0TIspJe6bUL3a5+HGK7nyfH7dGXZksNB/hiy3WS/eAgAnL6xzCRsdjK40Cf4\nP7B79bCNNnxnOy/GBpXG/CE8H+xGRr1Xuj5pmJFTc6GbaDbLc8bKMvVOzbCPYKgu\nbCaidtDoiMEJqy8AakrvN39DrlUOT3+kbAhJpw/fk9Rq4A2Mo+J2BuApze2hoYET\noI5HysuLAgMBAAECggEAGYkXgTTrxFmKLUC1+yFI3YO6yaIxrH4bdEStgF6Rq784\nWX+SZCjBKAYC5BrDOrp66/pavEJDo2Oi3WU9su2OqTu3nRJyD+2Uplan//3VnH+p\nOg06XVtGMQxoKghIcvRtj03z4K2CeQsGYXs/juIF4MOUCmMMezbVpkrn0CvyMZGM\n5vrFXvOwdKHyZaDXvql8nQIq6b46RC6ozLUBidEW37pHvuZm+QWD0W7VS2na4DKw\n+jIJz8zjsg3vCLpdTOMFxymW/LmusFTubn3evv4/8BLvw69seWPOyNi/PEjZWwgR\npQA7VYkETlZopZ6paHutmD5Yy4N0FjcJ6PMocwgKQQKBgQDnf6oFvZFV/QO1RACi\nhc0skytc7h96ePUWLwIMSMed3Jdr5ANC6tD4OIwGyrCDfKuLvsUCyEjHKhW8tarb\nTioaqgzM8Jwn+HMTyLJjzU4j8KhxgQWoLWri2HgRlqZV2Y1XNO3fRA8Zs3CsT7Fa\nIyEnKylWM6u0kQ2mMQicgQpulQKBgQC/BjSELv43ZGZKBg5m+Ps+PEFxJArvJgqA\nd+lXSHYkALWynyvukAuhmciAEKN1NKL7/DvxzfNRRXB32kmQkcjcsFZnnqbEkpq+\nzCOIJcesYN0k3kiCJuoNENdQXtAKGJrtHF1ilJfpt5Yuw67VC/B/JwkPF2wCsSfU\nHusyguFpnwKBgGKzVaRY7KxC0d/o/HROo+nLXYOjqxwmkihBJphiN2mg8ZZ4gsN3\nJl2OjnUe2h9VejZ8wbar+gugb+AjfJNAQkdYFVkThSCtlzLqMNTIZfaA1vB92BGa\nO6Y4MQkeuBCGTvLNiFXWyLFmhjWRTMZnj+0JQ/iS0zSLW8xtv4QqqG35AoGBAIee\n3zAtsP0gweKyNA11neLMouWx4jVx+6jD+Z2na4EaI+YiTe18xVVBOnF53qM68LAY\nn3KIdsRvmW7uQqZqaoIMi/vbTqlnMIhfpKZntEC1MKyZSD9nY2pNV6DO/8L7Pxsy\ntTZlKwma9vxSn9DQPjn4O91EEsJChnV6Uh+1flYfAoGADfomBP+kLm0jdvKm3Q+u\nA5S4ng3erDbCbZK0ADeVY5H0fNNJihx1yXx12g02T0biH6Efj+VpCeYC6W0wb2A1\nT/HqY1JSSsKQ7cPe1VEPKbbfn6PPrs+HbsHB8DDVPi9pysVfG7351PgNX/tb+iz/\nvJCSRvjRtxyFafuX4YQzWu0=\n-----END PRIVATE KEY-----\n",
|
||||
"client_email": "firebase-adminsdk-wpsvx@titanscoutandroid.iam.gserviceaccount.com",
|
||||
"client_id": "114864465329268712237",
|
||||
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
|
||||
"token_uri": "https://oauth2.googleapis.com/token",
|
||||
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
|
||||
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-wpsvx%40titanscoutandroid.iam.gserviceaccount.com"
|
||||
}
|
@@ -0,0 +1,132 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import firebase_admin\n",
|
||||
"from firebase_admin import credentials\n",
|
||||
"from firebase_admin import firestore\n",
|
||||
"import csv\n",
|
||||
"import numpy as np\n",
|
||||
"# Use a service account\n",
|
||||
"cred = credentials.Certificate(r'../keys/fsk.json')\n",
|
||||
"#add your own key as this is public. email me for details\n",
|
||||
"firebase_admin.initialize_app(cred)\n",
|
||||
"\n",
|
||||
"db = firestore.client()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"teams=db.collection('data').document('team-2022').collection(\"Midwest 2019\").get()\n",
|
||||
"full=[]\n",
|
||||
"tms=[]\n",
|
||||
"for team in teams:\n",
|
||||
" data=[]\n",
|
||||
" tms.append(team.id)\n",
|
||||
" reports=db.collection('data').document('team-2022').collection(\"Midwest 2019\").document(team.id).collection(\"matches\").get()\n",
|
||||
" for report in reports:\n",
|
||||
" data.append(db.collection('data').document('team-2022').collection(\"Midwest 2019\").document(team.id).collection(\"matches\").document(report.id).get().to_dict())\n",
|
||||
" full.append(data)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def expcsv(loc,data):\n",
|
||||
" with open(loc+'.csv', 'w', newline='', encoding='utf-8') as csvfile:\n",
|
||||
" w = csv.writer(csvfile, delimiter=',', quotechar=\"\\\"\", quoting=csv.QUOTE_MINIMAL)\n",
|
||||
" for i in data:\n",
|
||||
" w.writerow(i)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 12,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def keymatch(ld):\n",
|
||||
" keys=set([])\n",
|
||||
" for i in ld:\n",
|
||||
" for j in i.keys():\n",
|
||||
" keys.add(j)\n",
|
||||
" kl=list(keys)\n",
|
||||
" data=[]\n",
|
||||
" for i in kl:\n",
|
||||
" data.append([i])\n",
|
||||
" for i in kl:\n",
|
||||
" for j in ld:\n",
|
||||
" try:\n",
|
||||
" (data[kl.index(i)]).append(j[i])\n",
|
||||
" except:\n",
|
||||
" (data[kl.index(i)]).append(\"\")\n",
|
||||
" return data\n",
|
||||
"wn=[]\n",
|
||||
"for i in full:\n",
|
||||
" wn.append(np.transpose(np.array(keymatch(i))).tolist())\n",
|
||||
"for i in range(len(wn)):\n",
|
||||
" expcsv(tms[i],wn[i])"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.6.5"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
@@ -0,0 +1,191 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import operator\n",
|
||||
"import csv\n",
|
||||
"#constants\n",
|
||||
"k=100\n",
|
||||
"rdf=400\n",
|
||||
"\n",
|
||||
"def win_prob(yas,oas):\n",
|
||||
" return 1/(1+10**(1/rdf*(oas-yas)))\n",
|
||||
"def new_score(oscore,yas,oas,outcome):\n",
|
||||
" return (oscore)+k*(outcome-win_prob(yas,oas))\n",
|
||||
"\n",
|
||||
"def readFile(filepath):\n",
|
||||
"\n",
|
||||
" with open(filepath) as csvfile:\n",
|
||||
" lines = csv.reader(csvfile, delimiter=',', quotechar='|')\n",
|
||||
" data = []\n",
|
||||
" try:\n",
|
||||
" for row in lines:\n",
|
||||
" data.append((', '.join(row)).split(\", \"))\n",
|
||||
" except:\n",
|
||||
" pass\n",
|
||||
"\n",
|
||||
" return data\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"sb=readFile('scoreboard.csv')\n",
|
||||
"teams=set([])\n",
|
||||
"for i in sb:\n",
|
||||
" teams.add(i[2])\n",
|
||||
" teams.add(i[3])\n",
|
||||
" teams.add(i[4])\n",
|
||||
" teams.add(i[5])\n",
|
||||
" teams.add(i[6])\n",
|
||||
" teams.add(i[7])\n",
|
||||
"list(teams)\n",
|
||||
"tsd={}\n",
|
||||
"for i in list(teams):\n",
|
||||
" tsd[i]=500\n",
|
||||
"for i in sb:\n",
|
||||
" ras=tsd[i[2]]+tsd[i[3]]+tsd[i[4]]\n",
|
||||
" bas=tsd[i[5]]+tsd[i[6]]+tsd[i[7]]\n",
|
||||
" outcome=0\n",
|
||||
" if i[8]>i[9]:\n",
|
||||
" outcome=1\n",
|
||||
" elif i[9]==i[8]:\n",
|
||||
" outcome=.5\n",
|
||||
" for j in range(2,5,1):\n",
|
||||
" tsd[i[j]]=new_score(tsd[i[j]],ras,bas,outcome)\n",
|
||||
" for j in range(5,8,1):\n",
|
||||
" tsd[i[j]]=new_score(tsd[i[j]],bas,ras,1-outcome)\n",
|
||||
" \n",
|
||||
"rankinfs = sorted(tsd.items(), key=operator.itemgetter(1), reverse=True) "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"[('5934', 833.1830859510761),\n",
|
||||
" ('48', 739.9728094005745),\n",
|
||||
" ('16', 705.9551102513088),\n",
|
||||
" ('3061', 702.9024075826381),\n",
|
||||
" ('3695', 700.1366129603175),\n",
|
||||
" ('2338', 696.932652524603),\n",
|
||||
" ('4096', 652.7038522070818),\n",
|
||||
" ('3488', 648.9766694246662),\n",
|
||||
" ('4156', 638.0881039843185),\n",
|
||||
" ('101', 626.9019952260375),\n",
|
||||
" ('6823', 613.1453027540894),\n",
|
||||
" ('930', 610.7992869961017),\n",
|
||||
" ('2062', 608.0647276785079),\n",
|
||||
" ('2830', 600.0239706519325),\n",
|
||||
" ('5847', 589.0350788865741),\n",
|
||||
" ('1736', 584.367394696335),\n",
|
||||
" ('2358', 577.5524744241919),\n",
|
||||
" ('5822', 575.4792058357157),\n",
|
||||
" ('1675', 569.9944280943398),\n",
|
||||
" ('111', 559.5150813478114),\n",
|
||||
" ('1797', 537.9429025884093),\n",
|
||||
" ('5148', 533.9623603303631),\n",
|
||||
" ('1781', 519.5609268991466),\n",
|
||||
" ('6651', 516.3195829730869),\n",
|
||||
" ('6906', 501.7408783344565),\n",
|
||||
" ('2022', 482.2765218696747),\n",
|
||||
" ('7237', 474.4616019824547),\n",
|
||||
" ('1884', 468.87487164611116),\n",
|
||||
" ('2039', 467.0990375388428),\n",
|
||||
" ('2451', 462.70812165138807),\n",
|
||||
" ('7608', 462.0188420364676),\n",
|
||||
" ('1739', 459.00590084129664),\n",
|
||||
" ('2252', 456.43201385653043),\n",
|
||||
" ('2151', 439.4118535382677),\n",
|
||||
" ('4702', 435.5729578944645),\n",
|
||||
" ('7738', 423.16353418538296),\n",
|
||||
" ('4296', 420.5085609998351),\n",
|
||||
" ('3734', 418.47615429198186),\n",
|
||||
" ('7609', 409.29347746836567),\n",
|
||||
" ('2709', 403.9793052336144),\n",
|
||||
" ('3067', 402.77020998279653),\n",
|
||||
" ('2136', 386.0798688817299),\n",
|
||||
" ('5350', 383.4109800245315),\n",
|
||||
" ('5125', 377.1609505922246),\n",
|
||||
" ('4292', 357.43188113820975),\n",
|
||||
" ('3110', 344.8643460008074),\n",
|
||||
" ('2725', 332.21429556184444),\n",
|
||||
" ('4645', 329.6452389079341),\n",
|
||||
" ('6968', 329.08368400289095),\n",
|
||||
" ('4241', 315.12115012426335),\n",
|
||||
" ('4787', 288.64374620808815),\n",
|
||||
" ('7560', 279.7779164676232),\n",
|
||||
" ('2016', 247.25607506869346)]"
|
||||
]
|
||||
},
|
||||
"execution_count": 3,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"rankinfs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.6.5"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
@@ -0,0 +1,57 @@
|
||||
Match,Time,Red1,Red2,Red3,Blue1,Blue2,Blue3,RedScore,BlueScore
|
||||
Qualification 1 ,Fri 3/8 - 9:00 AM,7560,3061,3488,1675,2451,5148,37,26
|
||||
Qualification 2 ,Fri 3/8 - 9:09 AM,7608,1884,2338,4702,2151,111,23,33
|
||||
Qualification 3 ,Fri 3/8 - 9:18 AM,2830,7609,101,2039,4292,16,45,35
|
||||
Qualification 4 ,Fri 3/8 - 9:27 AM,6968,1736,4096,4645,3067,2252,40,20
|
||||
Qualification 5 ,Fri 3/8 - 9:36 AM,4156,2016,3695,2022,3110,3734,46,29
|
||||
Qualification 6 ,Fri 3/8 - 9:45 AM,5934,5822,1739,7738,2062,4296,38,33
|
||||
Qualification 7 ,Fri 3/8 - 9:54 AM,930,5125,4787,7237,6906,1781,37,41
|
||||
Qualification 8 ,Fri 3/8 - 10:03 AM,2725,5847,5350,2709,1797,4241,25,24
|
||||
Qualification 9 ,Fri 3/8 - 10:12 AM,2358,6823,2136,48,6651,3734,17,40
|
||||
Qualification 10 ,Fri 3/8 - 10:21 AM,3067,7608,5148,2062,4292,5822,15,39
|
||||
Qualification 11 ,Fri 3/8 - 10:30 AM,111,6968,4787,16,2022,1675,41,63
|
||||
Qualification 12 ,Fri 3/8 - 10:39 AM,4702,7738,2830,6906,2725,2016,52,24
|
||||
Qualification 13 ,Fri 3/8 - 10:48 AM,2709,2358,7609,101,930,6823,16,42
|
||||
Qualification 14 ,Fri 3/8 - 10:56 AM,2136,5934,3695,1736,7237,2151,45,25
|
||||
Qualification 15 ,Fri 3/8 - 11:04 AM,3110,1781,2252,1797,2338,3488,35,65
|
||||
Qualification 16 ,Fri 3/8 - 11:12 AM,48,4156,4241,4296,1884,3061,48,34
|
||||
Qualification 17 ,Fri 3/8 - 11:20 AM,2039,6651,5125,4096,7560,5350,31,23
|
||||
Qualification 18 ,Fri 3/8 - 11:28 AM,5847,2451,16,4645,1739,7237,62,15
|
||||
Qualification 19 ,Fri 3/8 - 11:36 AM,3734,3067,1797,7609,5148,5934,18,31
|
||||
Qualification 20 ,Fri 3/8 - 11:44 AM,5822,2725,4241,2338,4156,930,20,55
|
||||
Qualification 21 ,Fri 3/8 - 11:52 AM,6968,2016,2709,7608,2151,6823,12,14
|
||||
Qualification 22,Fri 3/8 - 1:00 PM,1736,7560,1739,4292,5350,48,43,58
|
||||
Qualification 23,Fri 3/8 - 1:09 PM,2062,1781,2022,2451,4096,6651,35,45
|
||||
Qualification 24,Fri 3/8 - 1:18 PM,111,4296,3488,4787,2136,2039,49,27
|
||||
Qualification 25,Fri 3/8 - 1:27 PM,101,3061,5847,2252,2830,6906,53,40
|
||||
Qualification 26,Fri 3/8 - 1:36 PM,1675,4645,4702,3695,3110,7738,15,71
|
||||
Qualification 27,Fri 3/8 - 1:44 PM,1736,1884,2358,2016,5125,7560,25,23
|
||||
Qualification 28,Fri 3/8 - 1:52 PM,4156,2725,6651,3488,7237,3067,42,39
|
||||
Qualification 29,Fri 3/8 - 2:00 PM,3734,5350,2151,6906,2062,101,18,36
|
||||
Qualification 30,Fri 3/8 - 2:08 PM,5847,7738,6823,2338,111,4096,54,58
|
||||
Qualification 31,Fri 3/8 - 2:16 PM,2709,48,4702,5934,2039,2252,20,49
|
||||
Qualification 32,Fri 3/8 - 2:24 PM,1884,930,2830,1797,1675,6968,61,49
|
||||
Qualification 33,Fri 3/8 - 2:32 PM,7609,1739,3695,5148,4241,4787,85,54
|
||||
Qualification 34,Fri 3/8 - 2:40 PM,5125,4645,2022,3061,2136,4292,37,39
|
||||
Qualification 35,Fri 3/8 - 2:48 PM,2451,2358,7608,4296,16,3110,37,18
|
||||
Qualification 36,Fri 3/8 - 2:56 PM,1781,2039,3734,5822,7237,5847,30,61
|
||||
Qualification 37,Fri 3/8 - 3:04 PM,3488,5350,930,1884,3695,111,52,54
|
||||
Qualification 38,Fri 3/8 - 3:12 PM,2016,5934,2338,7609,7560,4156,66,24
|
||||
Qualification 39,Fri 3/8 - 3:20 PM,2252,6651,2136,4787,7608,1739,27,23
|
||||
Qualification 40,Fri 3/8 - 3:28 PM,4096,4702,5148,2358,4241,101,37,28
|
||||
Qualification 41,Fri 3/8 - 3:36 PM,3110,5822,2451,48,6968,6906,42,68
|
||||
Qualification 42,Fri 3/8 - 3:44 PM,16,1736,1781,7738,3061,2725,56,43
|
||||
Qualification 43,Fri 3/8 - 3:52 PM,1797,5125,4292,6823,2709,2062,32,42
|
||||
Qualification 44,Fri 3/8 - 4:00 PM,2022,4296,3067,2151,2830,1675,26,31
|
||||
Qualification 45,Fri 3/8 - 4:08 PM,4645,48,5847,5148,3488,2016,63,48
|
||||
Qualification 46,Fri 3/8 - 4:16 PM,3110,4096,930,3061,4787,5934,42,56
|
||||
Qualification 47,Fri 3/8 - 4:24 PM,2725,6823,2451,7608,3695,2039,29,57
|
||||
Qualification 48,Fri 3/8 - 4:32 PM,2062,1675,4156,101,4702,2136,40,31
|
||||
Qualification 49,Fri 3/8 - 4:40 PM,2022,7738,7237,5350,2252,7609,51,37
|
||||
Qualification 50,Fri 3/8 - 4:48 PM,7560,4296,2151,1781,1797,4645,21,39
|
||||
Qualification 51,Fri 3/8 - 4:56 PM,2338,1736,5822,2830,2709,6651,68,37
|
||||
Qualification 52,Fri 3/8 - 5:04 PM,6906,1739,2358,4292,6968,1884,33,29
|
||||
Qualification 53,Fri 3/8 - 5:12 PM,111,16,3067,4241,3734,5125,65,41
|
||||
Qualification 54,Fri 3/8 - 5:20 PM,3061,1675,48,7609,5847,7608,65,42
|
||||
Qualification 55,Fri 3/8 - 5:28 PM,6651,2016,2062,930,2252,4296,43,77
|
||||
Qualification 56,Fri 3/8 - 5:36 PM,4292,5148,2725,2151,4787,3110,19,3
|
|
@@ -0,0 +1,4 @@
|
||||
gmkR7hN4D1fQguey5X5V48d3PhO2,sandstormRocketCargoFailure,teleOpRocketCargoSuccess,sandstormRocketHatchSuccess,strongMediumTeleop,teleOpCargoShipHatchFailure,sandstormRocketCargoSuccess,size,speed,strategy,teamDBRef,sandstormCross,sandstormCrossBonus,teleOpCargoShipHatchSuccess,teleOpRocketHatchSuccess,sandstormCargoShipCargoFailure,lowRocketSuccessTeleop,teleOpRocketHatchFailure,teleOpRocketCargoFailure,cargoSuccessTeleop,sandstormCargoShipHatchSuccess,startingHatch,9fv7QhcLPsfU59sRrPq7LcJlD8J3,fillChoice,sandstormCargoShipCargoSuccess,strongMedium,functional,teleOpCargoShipCargoFailure,sandstormRocketHatchFailure,sandstormCargoShipHatchFailure,fillChoiceTeleop,contrubution,HABClimb,match,hiRocketSuccessTeleop,endingHab,teleOpCargoShipCargoSuccess
|
||||
,0,0,0,,1,0,,slow,,team-101,L2,,1,2,0,,0,0,,0,,"{'notes': 'not good with balls, was able to reach high with hatch', 'contribution': '', 'fillChoice': 'Cargo', 'strategy': 'place hatches, shoe off long arm. not defensive', 'strongMedium': 'Hatch', 'cargoSuccessTeleop': '', 'teamDBRef': 'team-101', 'speed': 'Medium', 'hiRocketSuccessTeleop': 'High', 'size': '', 'match': 'match-13', 'fillChoiceTeleop': 'High Rocket', 'strongMediumTeleop': 'Hatch', 'endingHab': '', 'functional': 'Yes', 'lowRocketSuccessTeleop': '', 'startingHatch': 'Hab I'}",,0,,,0,0,0,,,None,match-13,,,0
|
||||
,,,,Neither,,,Medium,Medium,"Cargo, but couldn't pick up",team-101,L1,L1,,,,High,,,Mid,,Hab I,,Cargo,,Hatch,Yes,,,,Low Rocket,Weak,,match-25,N/A,L1,
|
||||
"{'notes': '', 'contribution': 'Great', 'fillChoice': '', 'strategy': 'quick bottom hatches but still slow', 'strongMedium': 'Hatch', 'cargoSuccessTeleop': 'High', 'teamDBRef': 'team-101', 'speed': 'Medium', 'hiRocketSuccessTeleop': '', 'size': 'Medium', 'match': 'match-29', 'fillChoiceTeleop': 'Low Rocket', 'strongMediumTeleop': 'Both', 'endingHab': 'None', 'functional': 'No', 'lowRocketSuccessTeleop': 'Mid', 'startingHatch': 'Hab I'}",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
@@ -0,0 +1,4 @@
|
||||
gmkR7hN4D1fQguey5X5V48d3PhO2,strongMediumTeleop,jouGPhPF0qME5wNIbd86MzYFsGw2,size,nTG6cThsi9TB9mTkcwuo5bKEo9B3,speed,strategy,teamDBRef,sandstormCross,sandstormCrossBonus,lowRocketSuccessTeleop,cargoSuccessTeleop,functional,fillChoice,strongMedium,fillChoiceTeleop,contrubution,hiRocketSuccessTeleop,match,endingHab,startingHatch
|
||||
"{'contribution': 'Weak', 'notes': 'team ups, robot malfunction VOID THIS INFO', 'fillChoice': '', 'cargoSuccess': '', 'cargoSuccessTeleop': '', 'strongMedium': '', 'teamDBRef': 'team-1675', 'hiRocketSuccessTeleop': '', 'speed': 'Slow', 'lowRocketSuccess': '', 'match': 'match-1', 'size': 'Medium', 'fillChoiceTeleop': '', 'strongMediumTeleop': '', 'lowRocketSuccessTeleop': '', 'startingHatch': 'Hab II', 'hiRocketSuccess': ''}",,"{'notes': '', 'contribution': 'Weak', 'cargoSuccess': '', 'fillChoice': '', 'strongMedium': '', 'cargoSuccessTeleop': '', 'teamDBRef': 'team-1675', 'speed': '', 'hiRocketSuccessTeleop': '', 'lowRocketSuccess': '', 'match': 'match-1', 'size': 'Large', 'fillChoiceTeleop': '', 'strongMediumTeleop': '', 'lowRocketSuccessTeleop': '', 'startingHatch': 'Hab II', 'hiRocketSuccess': ''}",,,,,,,,,,,,,,,,,,
|
||||
,Hatch,,IDK,,slow,Hatch panels for rocket,team-1675,None,None,High,N/A,Yes,None,Neither,Low Rocket,Weak,N/A,match-26,L1,IDK
|
||||
,,,,"{'notes': '', 'contribution': 'Equal', 'fillChoice': 'Cargo', 'strategy': 'pinning opponent and placing hatches on rocket', 'strongMedium': 'Hatch', 'cargoSuccessTeleop': '', 'teamDBRef': 'team-1675', 'speed': 'Medium', 'hiRocketSuccessTeleop': 'High', 'size': 'Large', 'match': 'match-54', 'fillChoiceTeleop': 'Low Rocket', 'strongMediumTeleop': 'Hatch', 'endingHab': 'Hab 1', 'functional': 'Yes', 'lowRocketSuccessTeleop': 'High', 'startingHatch': 'Hab I'}",,,,,,,,,,,,,,,,
|
|
@@ -0,0 +1,3 @@
|
||||
sandstormCrossBonus,9fv7QhcLPsfU59sRrPq7LcJlD8J3,strongMediumTeleop,fillChoiceTeleop,cargoSuccessTeleop,contrubution,functional,lowRocketSuccessTeleop,startingHatch,size,hiRocketSuccessTeleop,speed,strategy,match,fillChoice,endingHab,teamDBRef,strongMedium,sandstormCross
|
||||
,"{'contribution': '', 'notes': '', 'fillChoice': 'High Rocket', 'strategy': 'place high hatches. except- it’s very inaccurate. has the reach, though ', 'cargoSuccessTeleop': '', 'strongMedium': 'Hatch', 'teamDBRef': 'team-1736', 'hiRocketSuccessTeleop': 'Low', 'speed': '', 'match': 'match-14', 'size': '', 'fillChoiceTeleop': 'High Rocket', 'strongMediumTeleop': '', 'endingHab': '', 'functional': 'Yes', 'startingHatch': 'Hab II', 'lowRocketSuccessTeleop': ''}",,,,,,,,,,,,,,,,,
|
||||
L2,,Ball,Cargo,Low,Equal,No,N/A,Hab II,Medium,N/A,Medium,"Hatches, then balls",match-27,Cargo,None,team-1736,Neither,L2
|
|
@@ -0,0 +1,4 @@
|
||||
sandstormRocketCargoFailure,teleOpRocketCargoSuccess,strongMediumTeleop,sandstormRocketHatchSuccess,teleOpCargoShipHatchFailure,nTG6cThsi9TB9mTkcwuo5bKEo9B3,size,sandstormRocketCargoSuccess,speed,strategy,teamDBRef,sandstormCross,sandstormCrossBonus,teleOpCargoShipHatchSuccess,teleOpRocketHatchSuccess,sandstormCargoShipCargoFailure,lowRocketSuccessTeleop,teleOpRocketHatchFailure,teleOpRocketCargoFailure,cargoSuccessTeleop,sandstormCargoShipHatchSuccess,teleOpCargoShipCargoSuccess,functional,fillChoice,sandstormCargoShipCargoSuccess,strongMedium,teleOpCargoShipCargoFailure,sandstormRocketHatchFailure,sandstormCargoShipHatchFailure,fillChoiceTeleop,contrubution,HABClimb,hiRocketSuccessTeleop,match,endingHab,startingHatch
|
||||
,,,,,"{'contribution': 'Equal', 'notes': '', 'fillChoice': 'Cargo', 'strategy': 'hatch panels ', 'cargoSuccessTeleop': 'High', 'strongMedium': 'Ball', 'teamDBRef': 'team-5934', 'hiRocketSuccessTeleop': '', 'speed': 'Fast', 'match': 'match-31', 'size': 'Large', 'fillChoiceTeleop': 'Cargo', 'strongMediumTeleop': 'Hatch', 'endingHab': 'Hab 1', 'functional': 'Yes', 'lowRocketSuccessTeleop': '', 'startingHatch': 'Hab I'}",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
,,Both,,,,Large,,Fast,,team-5934,L1,L1,,,,N/A,,,Mid,,,Yes,Cargo,,Ball,,,,Cargo,Equal,,N/A,match-37,None,Hab I
|
||||
0,0,,0,0,,,0,Ludicrous,,team-5934,L1,,2,0,0,,0,0,,0,5,,,1,,0,0,0,,,L1,,match-6,,
|
|
@@ -0,0 +1,5 @@
|
||||
sandstormRocketCargoFailure,teleOpRocketCargoSuccess,sandstormRocketHatchSuccess,strongMediumTeleop,teleOpCargoShipHatchFailure,nTG6cThsi9TB9mTkcwuo5bKEo9B3,sandstormRocketCargoSuccess,jouGPhPF0qME5wNIbd86MzYFsGw2,size,speed,strategy,teamDBRef,sandstormCross,sandstormCrossBonus,teleOpCargoShipHatchSuccess,teleOpRocketHatchSuccess,sandstormCargoShipCargoFailure,lowRocketSuccessTeleop,teleOpRocketHatchFailure,teleOpRocketCargoFailure,cargoSuccessTeleop,sandstormCargoShipHatchSuccess,startingHatch,fillChoice,functional,sandstormCargoShipCargoSuccess,strongMedium,9fv7QhcLPsfU59sRrPq7LcJlD8J3,teleOpCargoShipCargoFailure,sandstormRocketHatchFailure,sandstormCargoShipHatchFailure,fillChoiceTeleop,contrubution,HABClimb,match,hiRocketSuccessTeleop,endingHab,teleOpCargoShipCargoSuccess
|
||||
0,0,0,,0,"{'notes': '', 'contribution': 'Weak', 'fillChoice': '', 'strategy': 'did not do anything ', 'strongMedium': '', 'cargoSuccessTeleop': '', 'teamDBRef': 'team-6906', 'speed': 'Slow', 'hiRocketSuccessTeleop': 'N/A', 'size': 'Jumbo', 'match': 'match-12', 'fillChoiceTeleop': 'Low Rocket', 'strongMediumTeleop': '', 'endingHab': 'Hab 1', 'functional': 'Yes', 'lowRocketSuccessTeleop': '', 'startingHatch': 'Hab I'}",0,,,slow,,team-6906,L1,,0,0,0,,0,0,,0,,,,0,,,0,0,0,,,L1,match-12,,,0
|
||||
,,,,,,,"{'notes': 'plays defense', 'contribution': 'Equal', 'fillChoice': 'None', 'strategy': 'very strong defensive robot also had limited capability to attach hatch panels', 'strongMedium': 'Neither', 'cargoSuccessTeleop': 'Low', 'teamDBRef': 'team-6906', 'speed': 'Medium', 'hiRocketSuccessTeleop': '', 'size': 'Jumbo', 'match': 'match-29', 'fillChoiceTeleop': 'Cargo', 'strongMediumTeleop': 'Hatch', 'endingHab': '', 'functional': 'Yes', 'lowRocketSuccessTeleop': 'Mid', 'startingHatch': 'Hab I'}",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
,,,Neither,,,,,Medium,slow,Defense,team-6906,L1,L1,,,,N/A,,,N/A,,Hab I,None,Yes,,Neither,,,,,None,Weak,,match-53,N/A,L1,
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,"{'contribution': 'Weak', 'notes': 'defensive but miserably slow', 'fillChoice': '', 'strongMedium': '', 'cargoSuccessTeleop': '', 'teamDBRef': 'team-6906', 'speed': 'Slow', 'hiRocketSuccessTeleop': '', 'match': 'match-7', 'size': '', 'fillChoiceTeleop': 'Low Rocket', 'strongMediumTeleop': 'Neither', 'endingHab': 'None', 'functional': 'Sorta', 'lowRocketSuccessTeleop': 'Low', 'startingHatch': 'None'}",,,,,,,,,,
|
|
132
data analysis/matches/Untitled.ipynb
Normal file
@@ -0,0 +1,132 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import firebase_admin\n",
|
||||
"from firebase_admin import credentials\n",
|
||||
"from firebase_admin import firestore\n",
|
||||
"import csv\n",
|
||||
"import numpy as np\n",
|
||||
"# Use a service account\n",
|
||||
"cred = credentials.Certificate(r'../keys/fsk.json')\n",
|
||||
"#add your own key as this is public. email me for details\n",
|
||||
"firebase_admin.initialize_app(cred)\n",
|
||||
"\n",
|
||||
"db = firestore.client()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"teams=db.collection('data').document('team-2022').collection(\"Midwest 2019\").get()\n",
|
||||
"full=[]\n",
|
||||
"tms=[]\n",
|
||||
"for team in teams:\n",
|
||||
" data=[]\n",
|
||||
" tms.append(team.id)\n",
|
||||
" reports=db.collection('data').document('team-2022').collection(\"Midwest 2019\").document(team.id).collection(\"matches\").get()\n",
|
||||
" for report in reports:\n",
|
||||
" data.append(db.collection('data').document('team-2022').collection(\"Midwest 2019\").document(team.id).collection(\"matches\").document(report.id).get().to_dict())\n",
|
||||
" full.append(data)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def expcsv(loc,data):\n",
|
||||
" with open(loc+'.csv', 'w', newline='', encoding='utf-8') as csvfile:\n",
|
||||
" w = csv.writer(csvfile, delimiter=',', quotechar=\"\\\"\", quoting=csv.QUOTE_MINIMAL)\n",
|
||||
" for i in data:\n",
|
||||
" w.writerow(i)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 12,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def keymatch(ld):\n",
|
||||
" keys=set([])\n",
|
||||
" for i in ld:\n",
|
||||
" for j in i.keys():\n",
|
||||
" keys.add(j)\n",
|
||||
" kl=list(keys)\n",
|
||||
" data=[]\n",
|
||||
" for i in kl:\n",
|
||||
" data.append([i])\n",
|
||||
" for i in kl:\n",
|
||||
" for j in ld:\n",
|
||||
" try:\n",
|
||||
" (data[kl.index(i)]).append(j[i])\n",
|
||||
" except:\n",
|
||||
" (data[kl.index(i)]).append(\"\")\n",
|
||||
" return data\n",
|
||||
"wn=[]\n",
|
||||
"for i in full:\n",
|
||||
" wn.append(np.transpose(np.array(keymatch(i))).tolist())\n",
|
||||
"for i in range(len(wn)):\n",
|
||||
" expcsv(tms[i],wn[i])"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.6.5"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
191
data analysis/matches/frc-elo.ipynb
Normal file
@@ -0,0 +1,191 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import operator\n",
|
||||
"import csv\n",
|
||||
"#constants\n",
|
||||
"k=100\n",
|
||||
"rdf=400\n",
|
||||
"\n",
|
||||
"def win_prob(yas,oas):\n",
|
||||
" return 1/(1+10**(1/rdf*(oas-yas)))\n",
|
||||
"def new_score(oscore,yas,oas,outcome):\n",
|
||||
" return (oscore)+k*(outcome-win_prob(yas,oas))\n",
|
||||
"\n",
|
||||
"def readFile(filepath):\n",
|
||||
"\n",
|
||||
" with open(filepath) as csvfile:\n",
|
||||
" lines = csv.reader(csvfile, delimiter=',', quotechar='|')\n",
|
||||
" data = []\n",
|
||||
" try:\n",
|
||||
" for row in lines:\n",
|
||||
" data.append((', '.join(row)).split(\", \"))\n",
|
||||
" except:\n",
|
||||
" pass\n",
|
||||
"\n",
|
||||
" return data\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"sb=readFile('scoreboard.csv')\n",
|
||||
"teams=set([])\n",
|
||||
"for i in sb:\n",
|
||||
" teams.add(i[2])\n",
|
||||
" teams.add(i[3])\n",
|
||||
" teams.add(i[4])\n",
|
||||
" teams.add(i[5])\n",
|
||||
" teams.add(i[6])\n",
|
||||
" teams.add(i[7])\n",
|
||||
"list(teams)\n",
|
||||
"tsd={}\n",
|
||||
"for i in list(teams):\n",
|
||||
" tsd[i]=500\n",
|
||||
"for i in sb:\n",
|
||||
" ras=tsd[i[2]]+tsd[i[3]]+tsd[i[4]]\n",
|
||||
" bas=tsd[i[5]]+tsd[i[6]]+tsd[i[7]]\n",
|
||||
" outcome=0\n",
|
||||
" if i[8]>i[9]:\n",
|
||||
" outcome=1\n",
|
||||
" elif i[9]==i[8]:\n",
|
||||
" outcome=.5\n",
|
||||
" for j in range(2,5,1):\n",
|
||||
" tsd[i[j]]=new_score(tsd[i[j]],ras,bas,outcome)\n",
|
||||
" for j in range(5,8,1):\n",
|
||||
" tsd[i[j]]=new_score(tsd[i[j]],bas,ras,1-outcome)\n",
|
||||
" \n",
|
||||
"rankinfs = sorted(tsd.items(), key=operator.itemgetter(1), reverse=True) "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"[('5934', 833.1830859510761),\n",
|
||||
" ('48', 739.9728094005745),\n",
|
||||
" ('16', 705.9551102513088),\n",
|
||||
" ('3061', 702.9024075826381),\n",
|
||||
" ('3695', 700.1366129603175),\n",
|
||||
" ('2338', 696.932652524603),\n",
|
||||
" ('4096', 652.7038522070818),\n",
|
||||
" ('3488', 648.9766694246662),\n",
|
||||
" ('4156', 638.0881039843185),\n",
|
||||
" ('101', 626.9019952260375),\n",
|
||||
" ('6823', 613.1453027540894),\n",
|
||||
" ('930', 610.7992869961017),\n",
|
||||
" ('2062', 608.0647276785079),\n",
|
||||
" ('2830', 600.0239706519325),\n",
|
||||
" ('5847', 589.0350788865741),\n",
|
||||
" ('1736', 584.367394696335),\n",
|
||||
" ('2358', 577.5524744241919),\n",
|
||||
" ('5822', 575.4792058357157),\n",
|
||||
" ('1675', 569.9944280943398),\n",
|
||||
" ('111', 559.5150813478114),\n",
|
||||
" ('1797', 537.9429025884093),\n",
|
||||
" ('5148', 533.9623603303631),\n",
|
||||
" ('1781', 519.5609268991466),\n",
|
||||
" ('6651', 516.3195829730869),\n",
|
||||
" ('6906', 501.7408783344565),\n",
|
||||
" ('2022', 482.2765218696747),\n",
|
||||
" ('7237', 474.4616019824547),\n",
|
||||
" ('1884', 468.87487164611116),\n",
|
||||
" ('2039', 467.0990375388428),\n",
|
||||
" ('2451', 462.70812165138807),\n",
|
||||
" ('7608', 462.0188420364676),\n",
|
||||
" ('1739', 459.00590084129664),\n",
|
||||
" ('2252', 456.43201385653043),\n",
|
||||
" ('2151', 439.4118535382677),\n",
|
||||
" ('4702', 435.5729578944645),\n",
|
||||
" ('7738', 423.16353418538296),\n",
|
||||
" ('4296', 420.5085609998351),\n",
|
||||
" ('3734', 418.47615429198186),\n",
|
||||
" ('7609', 409.29347746836567),\n",
|
||||
" ('2709', 403.9793052336144),\n",
|
||||
" ('3067', 402.77020998279653),\n",
|
||||
" ('2136', 386.0798688817299),\n",
|
||||
" ('5350', 383.4109800245315),\n",
|
||||
" ('5125', 377.1609505922246),\n",
|
||||
" ('4292', 357.43188113820975),\n",
|
||||
" ('3110', 344.8643460008074),\n",
|
||||
" ('2725', 332.21429556184444),\n",
|
||||
" ('4645', 329.6452389079341),\n",
|
||||
" ('6968', 329.08368400289095),\n",
|
||||
" ('4241', 315.12115012426335),\n",
|
||||
" ('4787', 288.64374620808815),\n",
|
||||
" ('7560', 279.7779164676232),\n",
|
||||
" ('2016', 247.25607506869346)]"
|
||||
]
|
||||
},
|
||||
"execution_count": 3,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"rankinfs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.6.5"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
80
data analysis/matches/scoreboard.csv
Normal file
@@ -0,0 +1,80 @@
|
||||
Qualification 1 ,Fri 3/8 - 9:00 AM,7560,3061,3488,1675,2451,5148,37,26
|
||||
Qualification 2 ,Fri 3/8 - 9:09 AM,7608,1884,2338,4702,2151,111,23,33
|
||||
Qualification 3 ,Fri 3/8 - 9:18 AM,2830,7609,101,2039,4292,16,45,35
|
||||
Qualification 4 ,Fri 3/8 - 9:27 AM,6968,1736,4096,4645,3067,2252,40,20
|
||||
Qualification 5 ,Fri 3/8 - 9:36 AM,4156,2016,3695,2022,3110,3734,46,29
|
||||
Qualification 6 ,Fri 3/8 - 9:45 AM,5934,5822,1739,7738,2062,4296,38,33
|
||||
Qualification 7 ,Fri 3/8 - 9:54 AM,930,5125,4787,7237,6906,1781,37,41
|
||||
Qualification 8 ,Fri 3/8 - 10:03 AM,2725,5847,5350,2709,1797,4241,25,24
|
||||
Qualification 9 ,Fri 3/8 - 10:12 AM,2358,6823,2136,48,6651,3734,17,40
|
||||
Qualification 10 ,Fri 3/8 - 10:21 AM,3067,7608,5148,2062,4292,5822,15,39
|
||||
Qualification 11 ,Fri 3/8 - 10:30 AM,111,6968,4787,16,2022,1675,41,63
|
||||
Qualification 12 ,Fri 3/8 - 10:39 AM,4702,7738,2830,6906,2725,2016,52,24
|
||||
Qualification 13 ,Fri 3/8 - 10:48 AM,2709,2358,7609,101,930,6823,16,42
|
||||
Qualification 14 ,Fri 3/8 - 10:56 AM,2136,5934,3695,1736,7237,2151,45,25
|
||||
Qualification 15 ,Fri 3/8 - 11:04 AM,3110,1781,2252,1797,2338,3488,35,65
|
||||
Qualification 16 ,Fri 3/8 - 11:12 AM,48,4156,4241,4296,1884,3061,48,34
|
||||
Qualification 17 ,Fri 3/8 - 11:20 AM,2039,6651,5125,4096,7560,5350,31,23
|
||||
Qualification 18 ,Fri 3/8 - 11:28 AM,5847,2451,16,4645,1739,7237,62,15
|
||||
Qualification 19 ,Fri 3/8 - 11:36 AM,3734,3067,1797,7609,5148,5934,18,31
|
||||
Qualification 20 ,Fri 3/8 - 11:44 AM,5822,2725,4241,2338,4156,930,20,55
|
||||
Qualification 21 ,Fri 3/8 - 11:52 AM,6968,2016,2709,7608,2151,6823,12,14
|
||||
Qualification 22,Fri 3/8 - 1:00 PM,1736,7560,1739,4292,5350,48,43,58
|
||||
Qualification 23,Fri 3/8 - 1:09 PM,2062,1781,2022,2451,4096,6651,35,45
|
||||
Qualification 24,Fri 3/8 - 1:18 PM,111,4296,3488,4787,2136,2039,49,27
|
||||
Qualification 25,Fri 3/8 - 1:27 PM,101,3061,5847,2252,2830,6906,53,40
|
||||
Qualification 26,Fri 3/8 - 1:36 PM,1675,4645,4702,3695,3110,7738,15,71
|
||||
Qualification 27,Fri 3/8 - 1:44 PM,1736,1884,2358,2016,5125,7560,25,23
|
||||
Qualification 28,Fri 3/8 - 1:52 PM,4156,2725,6651,3488,7237,3067,42,39
|
||||
Qualification 29,Fri 3/8 - 2:00 PM,3734,5350,2151,6906,2062,101,18,36
|
||||
Qualification 30,Fri 3/8 - 2:08 PM,5847,7738,6823,2338,111,4096,54,58
|
||||
Qualification 31,Fri 3/8 - 2:16 PM,2709,48,4702,5934,2039,2252,20,49
|
||||
Qualification 32,Fri 3/8 - 2:24 PM,1884,930,2830,1797,1675,6968,61,49
|
||||
Qualification 33,Fri 3/8 - 2:32 PM,7609,1739,3695,5148,4241,4787,85,54
|
||||
Qualification 34,Fri 3/8 - 2:40 PM,5125,4645,2022,3061,2136,4292,37,39
|
||||
Qualification 35,Fri 3/8 - 2:48 PM,2451,2358,7608,4296,16,3110,37,18
|
||||
Qualification 36,Fri 3/8 - 2:56 PM,1781,2039,3734,5822,7237,5847,30,61
|
||||
Qualification 37,Fri 3/8 - 3:04 PM,3488,5350,930,1884,3695,111,52,54
|
||||
Qualification 38,Fri 3/8 - 3:12 PM,2016,5934,2338,7609,7560,4156,66,24
|
||||
Qualification 39,Fri 3/8 - 3:20 PM,2252,6651,2136,4787,7608,1739,27,23
|
||||
Qualification 40,Fri 3/8 - 3:28 PM,4096,4702,5148,2358,4241,101,37,28
|
||||
Qualification 41,Fri 3/8 - 3:36 PM,3110,5822,2451,48,6968,6906,42,68
|
||||
Qualification 42,Fri 3/8 - 3:44 PM,16,1736,1781,7738,3061,2725,56,43
|
||||
Qualification 43,Fri 3/8 - 3:52 PM,1797,5125,4292,6823,2709,2062,32,42
|
||||
Qualification 44,Fri 3/8 - 4:00 PM,2022,4296,3067,2151,2830,1675,26,31
|
||||
Qualification 45,Fri 3/8 - 4:08 PM,4645,48,5847,5148,3488,2016,63,48
|
||||
Qualification 46,Fri 3/8 - 4:16 PM,3110,4096,930,3061,4787,5934,42,56
|
||||
Qualification 47,Fri 3/8 - 4:24 PM,2725,6823,2451,7608,3695,2039,29,57
|
||||
Qualification 48,Fri 3/8 - 4:32 PM,2062,1675,4156,101,4702,2136,40,31
|
||||
Qualification 49,Fri 3/8 - 4:40 PM,2022,7738,7237,5350,2252,7609,51,37
|
||||
Qualification 50,Fri 3/8 - 4:48 PM,7560,4296,2151,1781,1797,4645,21,39
|
||||
Qualification 51,Fri 3/8 - 4:56 PM,2338,1736,5822,2830,2709,6651,68,37
|
||||
Qualification 52,Fri 3/8 - 5:04 PM,6906,1739,2358,4292,6968,1884,33,29
|
||||
Qualification 53,Fri 3/8 - 5:12 PM,111,16,3067,4241,3734,5125,65,41
|
||||
Qualification 54,Fri 3/8 - 5:20 PM,3061,1675,48,7609,5847,7608,65,42
|
||||
Qualification 55,Fri 3/8 - 5:28 PM,6651,2016,2062,930,2252,4296,43,77
|
||||
Qualification 56,Fri 3/8 - 5:36 PM,4292,5148,2725,2151,4787,3110,19,3
|
||||
Qualification 57,Sat 3/9 - 9:00 AM,2136,6906,1884,4096,16,2709,15,42
|
||||
Qualification 58,Sat 3/9 - 9:09 AM,4156,101,1797,2451,111,1736,99,59
|
||||
Qualification 59,Sat 3/9 - 9:18 AM,7237,3695,7560,3067,7738,6968,52,27
|
||||
Qualification 60,Sat 3/9 - 9:27 AM,3734,3488,2830,1739,4702,5125,60,35
|
||||
Qualification 61,Sat 3/9 - 9:36 AM,2039,2022,4241,4645,2338,2358,35,41
|
||||
Qualification 62,Sat 3/9 - 9:44 AM,6823,5934,16,5822,5350,1781,77,48
|
||||
Qualification 63,Sat 3/9 - 9:52 AM,7237,4096,4292,4296,2016,1675,43,35
|
||||
Qualification 64,Sat 3/9 - 10:00 AM,7609,2151,7738,5125,3488,2451,29,44
|
||||
Qualification 65,Sat 3/9 - 10:08 AM,2725,7608,1797,1739,101,2022,43,58
|
||||
Qualification 66,Sat 3/9 - 10:16 AM,3695,3067,48,1781,111,2709,66,49
|
||||
Qualification 67,Sat 3/9 - 10:24 AM,4241,3110,6906,6651,6823,1736,27,46
|
||||
Qualification 68,Sat 3/9 - 10:32 AM,4702,930,5822,5847,2136,7560,65,14
|
||||
Qualification 69,Sat 3/9 - 10:40 AM,4787,4156,4645,2358,2830,5350,39,42
|
||||
Qualification 70,Sat 3/9 - 10:48 AM,5148,2062,3061,6968,2039,2338,56,34
|
||||
Qualification 71,Sat 3/9 - 10:56 AM,1884,2252,2451,5934,3734,2725,40,46
|
||||
Qualification 72,Sat 3/9 - 11:04 AM,2151,2022,4096,930,48,1736,30,72
|
||||
Qualification 73,Sat 3/9 - 11:12 AM,4241,4292,7608,3488,1781,7738,28,71
|
||||
Qualification 74,Sat 3/9 - 11:20 AM,16,1797,3061,6651,3695,4702,82,47
|
||||
Qualification 75,Sat 3/9 - 11:28 AM,5350,6906,4645,3067,2338,7609,15,53
|
||||
Qualification 76,Sat 3/9 - 11:36 AM,1675,2709,2039,1739,3734,4156,41,41
|
||||
Qualification 77,Sat 3/9 - 11:44 AM,2830,4787,7237,6823,5148,1884,44,69
|
||||
Qualification 78,Sat 3/9 - 11:52 AM,5125,101,6968,5934,5847,4296,35,59
|
||||
Qualification 79,Sat 3/9 - 12:00 PM,2252,111,2062,7560,2358,3110,56,33
|
||||
Qualification 80,Sat 3/9 - 12:08 PM,2016,7609,4241,2136,5822,1797,32,48
|
|
2
data analysis/matches/team-1.csv
Normal file
@@ -0,0 +1,2 @@
|
||||
sandstormRocketCargoFailure,teleOpRocketCargoSuccess,sandstormRocketHatchSuccess,teleOpCargoShipHatchFailure,sandstormRocketCargoSuccess,speed,teamDBRef,sandstormCross,teleOpCargoShipHatchSuccess,teleOpRocketHatchSuccess,sandstormCargoShipCargoFailure,teleOpRocketHatchFailure,teleOpRocketCargoFailure,sandstormCargoShipHatchSuccess,sandstormCargoShipCargoSuccess,teleOpCargoShipCargoFailure,sandstormRocketHatchFailure,sandstormCargoShipHatchFailure,HABClimb,match,teleOpCargoShipCargoSuccess
|
||||
0,0,0,0,0,slow,team-1,L1,0,0,0,0,0,0,0,0,0,0,L1,match-5148,2
|
|
4
data analysis/matches/team-101.csv
Normal file
@@ -0,0 +1,4 @@
|
||||
gmkR7hN4D1fQguey5X5V48d3PhO2,sandstormRocketCargoFailure,teleOpRocketCargoSuccess,sandstormRocketHatchSuccess,strongMediumTeleop,teleOpCargoShipHatchFailure,sandstormRocketCargoSuccess,size,speed,strategy,teamDBRef,sandstormCross,sandstormCrossBonus,teleOpCargoShipHatchSuccess,teleOpRocketHatchSuccess,sandstormCargoShipCargoFailure,lowRocketSuccessTeleop,teleOpRocketHatchFailure,teleOpRocketCargoFailure,cargoSuccessTeleop,sandstormCargoShipHatchSuccess,startingHatch,9fv7QhcLPsfU59sRrPq7LcJlD8J3,fillChoice,sandstormCargoShipCargoSuccess,strongMedium,functional,teleOpCargoShipCargoFailure,sandstormRocketHatchFailure,sandstormCargoShipHatchFailure,fillChoiceTeleop,contrubution,HABClimb,match,hiRocketSuccessTeleop,endingHab,teleOpCargoShipCargoSuccess
|
||||
,0,0,0,,1,0,,slow,,team-101,L2,,1,2,0,,0,0,,0,,"{'notes': 'not good with balls, was able to reach high with hatch', 'contribution': '', 'fillChoice': 'Cargo', 'strategy': 'place hatches, shoe off long arm. not defensive', 'strongMedium': 'Hatch', 'cargoSuccessTeleop': '', 'teamDBRef': 'team-101', 'speed': 'Medium', 'hiRocketSuccessTeleop': 'High', 'size': '', 'match': 'match-13', 'fillChoiceTeleop': 'High Rocket', 'strongMediumTeleop': 'Hatch', 'endingHab': '', 'functional': 'Yes', 'lowRocketSuccessTeleop': '', 'startingHatch': 'Hab I'}",,0,,,0,0,0,,,None,match-13,,,0
|
||||
,,,,Neither,,,Medium,Medium,"Cargo, but couldn't pick up",team-101,L1,L1,,,,High,,,Mid,,Hab I,,Cargo,,Hatch,Yes,,,,Low Rocket,Weak,,match-25,N/A,L1,
|
||||
"{'notes': '', 'contribution': 'Great', 'fillChoice': '', 'strategy': 'quick bottom hatches but still slow', 'strongMedium': 'Hatch', 'cargoSuccessTeleop': 'High', 'teamDBRef': 'team-101', 'speed': 'Medium', 'hiRocketSuccessTeleop': '', 'size': 'Medium', 'match': 'match-29', 'fillChoiceTeleop': 'Low Rocket', 'strongMediumTeleop': 'Both', 'endingHab': 'None', 'functional': 'No', 'lowRocketSuccessTeleop': 'Mid', 'startingHatch': 'Hab I'}",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
6
data analysis/matches/team-111.csv
Normal file
@@ -0,0 +1,6 @@
|
||||
gmkR7hN4D1fQguey5X5V48d3PhO2,sandstormRocketCargoFailure,teleOpRocketCargoSuccess,sandstormRocketHatchSuccess,strongMediumTeleop,teleOpCargoShipHatchFailure,sandstormRocketCargoSuccess,size,nTG6cThsi9TB9mTkcwuo5bKEo9B3,speed,strategy,teamDBRef,sandstormCross,sandstormCrossBonus,teleOpCargoShipHatchSuccess,teleOpRocketHatchSuccess,sandstormCargoShipCargoFailure,lowRocketSuccessTeleop,teleOpRocketHatchFailure,teleOpRocketCargoFailure,cargoSuccessTeleop,sandstormCargoShipHatchSuccess,startingHatch,fillChoice,functional,sandstormCargoShipCargoSuccess,strongMedium,teleOpCargoShipCargoFailure,sandstormRocketHatchFailure,sandstormCargoShipHatchFailure,fillChoiceTeleop,contrubution,HABClimb,match,hiRocketSuccessTeleop,endingHab,teleOpCargoShipCargoSuccess
|
||||
,0,5,1,,0,0,,,Medium,,team-111,L1,,0,4,0,,1,1,,0,,,,0,,0,0,0,,,None,match-11,,,0
|
||||
"{'contribution': 'Great', 'notes': '', 'cargoSuccess': '', 'fillChoice': 'Cargo', 'cargoSuccessTeleop': 'High', 'strongMedium': 'Hatch', 'teamDBRef': 'team-111', 'speed': 'Fast', 'hiRocketSuccessTeleop': 'High', 'lowRocketSuccess': '', 'size': 'Medium', 'match': 'match-2', 'fillChoiceTeleop': '', 'strongMediumTeleop': 'Hatch', 'startingHatch': 'Hab I', 'lowRocketSuccessTeleop': '', 'hiRocketSuccess': 'High'}",0,0,0,,0,0,,,Fast,,team-111,L1,,0,1,0,,1,1,,1,,,,0,,0,0,0,,,L1,match-2,,,0
|
||||
,,,,Ball,,,Large,,Fast,Top-down rocket fill,team-111,L1,L1,,,,N/A,,,N/A,,Hab I,High Rocket,Yes,,Hatch,,,,High Rocket,Strong,,match-24,High,L2,
|
||||
,,,,,,,,"{'contribution': 'Equal', 'notes': '', 'fillChoice': 'High Rocket', 'strategy': 'rocket. i lost track of the robot', 'cargoSuccessTeleop': 'Mid', 'strongMedium': 'Hatch', 'teamDBRef': 'team-111', 'speed': 'Fast', 'hiRocketSuccessTeleop': 'High', 'size': 'Large', 'match': 'match-30', 'fillChoiceTeleop': 'High Rocket', 'strongMediumTeleop': 'Hatch', 'endingHab': 'Hab 1', 'functional': 'Yes', 'startingHatch': 'Hab I', 'lowRocketSuccessTeleop': 'N/A'}",,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
,,,,,,,,"{'notes': '', 'contribution': 'Great', 'fillChoice': 'High Rocket', 'strategy': 'hatch and ball in rocket', 'strongMedium': 'Hatch', 'cargoSuccessTeleop': 'High', 'teamDBRef': 'team-111', 'speed': 'Medium', 'hiRocketSuccessTeleop': 'High', 'size': 'Medium', 'match': 'match-37', 'fillChoiceTeleop': '', 'strongMediumTeleop': 'Hatch', 'endingHab': 'Hab 1', 'functional': 'Yes', 'lowRocketSuccessTeleop': 'High', 'startingHatch': 'Hab II'}",,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
6
data analysis/matches/team-16.csv
Normal file
@@ -0,0 +1,6 @@
|
||||
gmkR7hN4D1fQguey5X5V48d3PhO2,sandstormRocketCargoFailure,teleOpRocketCargoSuccess,sandstormRocketHatchSuccess,strongMediumTeleop,teleOpCargoShipHatchFailure,jouGPhPF0qME5wNIbd86MzYFsGw2,sandstormRocketCargoSuccess,nTG6cThsi9TB9mTkcwuo5bKEo9B3,size,speed,strategy,teamDBRef,sandstormCross,sandstormCrossBonus,teleOpCargoShipHatchSuccess,teleOpRocketHatchSuccess,sandstormCargoShipCargoFailure,lowRocketSuccessTeleop,teleOpRocketHatchFailure,teleOpRocketCargoFailure,cargoSuccessTeleop,sandstormCargoShipHatchSuccess,startingHatch,fillChoice,functional,sandstormCargoShipCargoSuccess,strongMedium,teleOpCargoShipCargoFailure,sandstormRocketHatchFailure,sandstormCargoShipHatchFailure,fillChoiceTeleop,contrubution,HABClimb,match,hiRocketSuccessTeleop,endingHab,teleOpCargoShipCargoSuccess
|
||||
,0,0,0,,1,"{'notes': 'working with us didn’t see most of the match', 'contribution': 'Idk', 'fillChoice': 'Cargo', 'strategy': '', 'cargoSuccessTeleop': '', 'strongMedium': 'Ball', 'teamDBRef': 'team-16', 'speed': '', 'hiRocketSuccessTeleop': '', 'size': 'Jumbo', 'match': 'match-11', 'fillChoiceTeleop': 'Cargo', 'strongMediumTeleop': 'Ball', 'endingHab': '', 'functional': 'Sorta', 'startingHatch': 'Hab I', 'lowRocketSuccessTeleop': ''}",0,,,slow,,team-16,L2,,0,1,0,,0,0,,0,,,,0,,0,0,1,,,L3,match-11,,,4
|
||||
,0,0,0,,0,,0,,,Ludicrous,,team-16,L1,,0,0,0,,0,0,,0,,,,0,,0,0,1,,,L3,match-18,,,4
|
||||
"{'contribution': 'Great', 'notes': 'almost ended on hab 3', 'cargoSuccess': 'High', 'fillChoice': 'Cargo', 'cargoSuccessTeleop': 'High', 'strongMedium': 'Hatch', 'teamDBRef': 'team-16', 'speed': 'Fast', 'hiRocketSuccessTeleop': '', 'lowRocketSuccess': '', 'size': 'Large', 'match': 'match-3', 'fillChoiceTeleop': 'Cargo', 'strongMediumTeleop': 'Both', 'startingHatch': 'Hab I', 'lowRocketSuccessTeleop': '', 'hiRocketSuccess': ''}",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
,,,,,,,,"{'notes': 'tipped over', 'contribution': 'Weak', 'fillChoice': 'Cargo', 'strategy': 'did not stay up long enough to determine ', 'strongMedium': 'Hatch', 'cargoSuccessTeleop': '', 'teamDBRef': 'team-16', 'speed': 'Fast', 'hiRocketSuccessTeleop': '', 'size': 'Large', 'match': 'match-35', 'fillChoiceTeleop': 'Cargo', 'strongMediumTeleop': 'Ball', 'endingHab': '', 'functional': 'Yes', 'lowRocketSuccessTeleop': '', 'startingHatch': 'Hab I'}",,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
,,,,Both,,,,,Large,Ludicrous,,team-16,L1,L1,,,,Mid,,,High,,Hab I,Cargo,No,,Neither,,,,Cargo,Strong,,match-41,N/A,L3,
|
|
4
data analysis/matches/team-1675.csv
Normal file
@@ -0,0 +1,4 @@
|
||||
gmkR7hN4D1fQguey5X5V48d3PhO2,strongMediumTeleop,jouGPhPF0qME5wNIbd86MzYFsGw2,size,nTG6cThsi9TB9mTkcwuo5bKEo9B3,speed,strategy,teamDBRef,sandstormCross,sandstormCrossBonus,lowRocketSuccessTeleop,cargoSuccessTeleop,functional,fillChoice,strongMedium,fillChoiceTeleop,contrubution,hiRocketSuccessTeleop,match,endingHab,startingHatch
|
||||
"{'contribution': 'Weak', 'notes': 'team ups, robot malfunction VOID THIS INFO', 'fillChoice': '', 'cargoSuccess': '', 'cargoSuccessTeleop': '', 'strongMedium': '', 'teamDBRef': 'team-1675', 'hiRocketSuccessTeleop': '', 'speed': 'Slow', 'lowRocketSuccess': '', 'match': 'match-1', 'size': 'Medium', 'fillChoiceTeleop': '', 'strongMediumTeleop': '', 'lowRocketSuccessTeleop': '', 'startingHatch': 'Hab II', 'hiRocketSuccess': ''}",,"{'notes': '', 'contribution': 'Weak', 'cargoSuccess': '', 'fillChoice': '', 'strongMedium': '', 'cargoSuccessTeleop': '', 'teamDBRef': 'team-1675', 'speed': '', 'hiRocketSuccessTeleop': '', 'lowRocketSuccess': '', 'match': 'match-1', 'size': 'Large', 'fillChoiceTeleop': '', 'strongMediumTeleop': '', 'lowRocketSuccessTeleop': '', 'startingHatch': 'Hab II', 'hiRocketSuccess': ''}",,,,,,,,,,,,,,,,,,
|
||||
,Hatch,,IDK,,slow,Hatch panels for rocket,team-1675,None,None,High,N/A,Yes,None,Neither,Low Rocket,Weak,N/A,match-26,L1,IDK
|
||||
,,,,"{'notes': '', 'contribution': 'Equal', 'fillChoice': 'Cargo', 'strategy': 'pinning opponent and placing hatches on rocket', 'strongMedium': 'Hatch', 'cargoSuccessTeleop': '', 'teamDBRef': 'team-1675', 'speed': 'Medium', 'hiRocketSuccessTeleop': 'High', 'size': 'Large', 'match': 'match-54', 'fillChoiceTeleop': 'Low Rocket', 'strongMediumTeleop': 'Hatch', 'endingHab': 'Hab 1', 'functional': 'Yes', 'lowRocketSuccessTeleop': 'High', 'startingHatch': 'Hab I'}",,,,,,,,,,,,,,,,
|
|
2
data analysis/matches/team-1702.csv
Normal file
@@ -0,0 +1,2 @@
|
||||
sandstormCrossBonus,strongMediumTeleop,fillChoiceTeleop,cargoSuccessTeleop,contrubution,functional,lowRocketSuccessTeleop,startingHatch,size,hiRocketSuccessTeleop,speed,strategy,match,fillChoice,endingHab,teamDBRef,strongMedium,sandstormCross
|
||||
L1,Neither,Cargo,Low,Weak,No,N/A,Hab I,Small,N/A,slow,,match-31,None,L1,team-1702,Neither,L1
|
|
3
data analysis/matches/team-1736.csv
Normal file
@@ -0,0 +1,3 @@
|
||||
sandstormCrossBonus,9fv7QhcLPsfU59sRrPq7LcJlD8J3,strongMediumTeleop,fillChoiceTeleop,cargoSuccessTeleop,contrubution,functional,lowRocketSuccessTeleop,startingHatch,size,hiRocketSuccessTeleop,speed,strategy,match,fillChoice,endingHab,teamDBRef,strongMedium,sandstormCross
|
||||
,"{'contribution': '', 'notes': '', 'fillChoice': 'High Rocket', 'strategy': 'place high hatches. except- it’s very inaccurate. has the reach, though ', 'cargoSuccessTeleop': '', 'strongMedium': 'Hatch', 'teamDBRef': 'team-1736', 'hiRocketSuccessTeleop': 'Low', 'speed': '', 'match': 'match-14', 'size': '', 'fillChoiceTeleop': 'High Rocket', 'strongMediumTeleop': '', 'endingHab': '', 'functional': 'Yes', 'startingHatch': 'Hab II', 'lowRocketSuccessTeleop': ''}",,,,,,,,,,,,,,,,,
|
||||
L2,,Ball,Cargo,Low,Equal,No,N/A,Hab II,Medium,N/A,Medium,"Hatches, then balls",match-27,Cargo,None,team-1736,Neither,L2
|
|
6
data analysis/matches/team-1739.csv
Normal file
@@ -0,0 +1,6 @@
|
||||
sandstormRocketCargoFailure,teleOpRocketCargoSuccess,strongMediumTeleop,sandstormRocketHatchSuccess,teleOpCargoShipHatchFailure,nTG6cThsi9TB9mTkcwuo5bKEo9B3,size,sandstormRocketCargoSuccess,speed,strategy,teamDBRef,sandstormCross,sandstormCrossBonus,teleOpCargoShipHatchSuccess,teleOpRocketHatchSuccess,sandstormCargoShipCargoFailure,lowRocketSuccessTeleop,teleOpRocketHatchFailure,teleOpRocketCargoFailure,cargoSuccessTeleop,sandstormCargoShipHatchSuccess,teleOpCargoShipCargoSuccess,functional,fillChoice,sandstormCargoShipCargoSuccess,strongMedium,teleOpCargoShipCargoFailure,sandstormRocketHatchFailure,sandstormCargoShipHatchFailure,fillChoiceTeleop,contrubution,HABClimb,hiRocketSuccessTeleop,match,endingHab,startingHatch
|
||||
,,,,,"{'notes': 'don’t know how accurate storm is', 'contribution': '', 'fillChoice': '', 'strategy': 'i got confused. i didnt really see what the robot did', 'cargoSuccessTeleop': 'N/A', 'strongMedium': 'Ball', 'teamDBRef': 'team-1739', 'speed': '', 'hiRocketSuccessTeleop': '', 'size': 'Large', 'match': 'match-18', 'fillChoiceTeleop': 'Low Rocket', 'strongMediumTeleop': '', 'endingHab': 'Hab 1', 'functional': 'Yes', 'startingHatch': 'Hab I', 'lowRocketSuccessTeleop': ''}",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
,,Ball,,,,Medium,,Medium,,team-1739,L1,L1,,,,Low,,,High,,,Sorta,Cargo,,Hatch,,,,Cargo,Equal,,Low,match-22,L2,Hab I
|
||||
,,Neither,,,,Jumbo,,Medium,,team-1739,L1,L1,,,,N/A,,,Low,,,No,None,,Neither,,,,Cargo,Weak,,N/A,match-33,None,Hab I
|
||||
,,Neither,,,,Small,,Medium,,team-1739,L1,L1,,,,N/A,,,Low,,,No,None,,Neither,,,,Cargo,Weak,,N/A,match-52,L1,Hab I
|
||||
0,0,,0,0,,,0,slow,,team-1739,L1,,0,0,0,,0,0,,0,0,,,0,,0,0,0,,,L1,,match-6,,
|
|
4
data analysis/matches/team-1781.csv
Normal file
@@ -0,0 +1,4 @@
|
||||
sandstormCrossBonus,9fv7QhcLPsfU59sRrPq7LcJlD8J3,gmkR7hN4D1fQguey5X5V48d3PhO2,strongMediumTeleop,fillChoiceTeleop,cargoSuccessTeleop,contrubution,functional,lowRocketSuccessTeleop,startingHatch,size,speed,hiRocketSuccessTeleop,strategy,match,fillChoice,endingHab,teamDBRef,strongMedium,sandstormCross
|
||||
,"{'contribution': 'Equal', 'notes': '', 'fillChoice': '', 'strategy': 'place balls in rocket, offensive, close to base', 'cargoSuccessTeleop': '', 'strongMedium': '', 'teamDBRef': 'team-1781', 'speed': 'Medium', 'hiRocketSuccessTeleop': '', 'size': '', 'match': 'match-15', 'fillChoiceTeleop': 'Low Rocket', 'strongMediumTeleop': 'Ball', 'endingHab': 'Hab 3', 'functional': 'Yes', 'startingHatch': '', 'lowRocketSuccessTeleop': ''}",,,,,,,,,,,,,,,,,,
|
||||
None,,,Neither,None,N/A,IDK,No,N/A,None,IDK,slow,N/A,FTA Deactivation,match-36,None,None,team-1781,Neither,None
|
||||
,,"{'contribution': 'Great', 'notes': 'potential for hab 3', 'fillChoice': 'Cargo', 'cargoSuccessTeleop': '', 'strongMedium': 'Ball', 'teamDBRef': 'team-1781', 'hiRocketSuccessTeleop': 'N/A', 'speed': 'Medium', 'match': 'match-7', 'size': 'Large', 'fillChoiceTeleop': 'Cargo', 'strongMediumTeleop': 'Ball', 'endingHab': 'Hab 2', 'functional': 'Yes', 'lowRocketSuccessTeleop': 'N/A', 'startingHatch': 'Hab I'}",,,,,,,,,,,,,,,,,
|
|
3
data analysis/matches/team-1797.csv
Normal file
@@ -0,0 +1,3 @@
|
||||
sandstormCrossBonus,9fv7QhcLPsfU59sRrPq7LcJlD8J3,strongMediumTeleop,fillChoiceTeleop,cargoSuccessTeleop,contrubution,functional,lowRocketSuccessTeleop,startingHatch,size,speed,hiRocketSuccessTeleop,strategy,match,fillChoice,endingHab,teamDBRef,strongMedium,sandstormCross
|
||||
L1,,Ball,Cargo,High,Equal,Yes,N/A,Hab I,Medium,slow,N/A,Cargo only,match-43,None,L1,team-1797,Neither,L1
|
||||
,"{'contribution': '', 'notes': 'had a reach with the height of their grabber, yet it was extremely inaccurate. with the fast frequency they could make attempts, they were able to land 3', 'fillChoice': '', 'cargoSuccessTeleop': 'Low', 'strongMedium': '', 'teamDBRef': 'team-1797', 'hiRocketSuccessTeleop': '', 'speed': 'Medium', 'match': 'match-8', 'size': 'Jumbo', 'fillChoiceTeleop': 'Cargo', 'strongMediumTeleop': 'Ball', 'endingHab': '', 'functional': '', 'lowRocketSuccessTeleop': '', 'startingHatch': 'None'}",,,,,,,,,,,,,,,,,
|
|
5
data analysis/matches/team-1884.csv
Normal file
@@ -0,0 +1,5 @@
|
||||
sandstormRocketCargoFailure,teleOpRocketCargoSuccess,sandstormRocketHatchSuccess,strongMediumTeleop,teleOpCargoShipHatchFailure,jouGPhPF0qME5wNIbd86MzYFsGw2,sandstormRocketCargoSuccess,size,speed,strategy,teamDBRef,sandstormCross,sandstormCrossBonus,teleOpCargoShipHatchSuccess,teleOpRocketHatchSuccess,sandstormCargoShipCargoFailure,lowRocketSuccessTeleop,teleOpRocketHatchFailure,teleOpRocketCargoFailure,klQQqapPjwO3jnpN8Dieequh3OI3,cargoSuccessTeleop,sandstormCargoShipHatchSuccess,startingHatch,fillChoice,functional,sandstormCargoShipCargoSuccess,strongMedium,teleOpCargoShipCargoFailure,sandstormRocketHatchFailure,sandstormCargoShipHatchFailure,fillChoiceTeleop,contrubution,HABClimb,match,hiRocketSuccessTeleop,endingHab,teleOpCargoShipCargoSuccess
|
||||
,,,,,"{'contribution': '', 'notes': 'very unstable ', 'fillChoice': 'Cargo', 'strategy': 'ineffective ', 'cargoSuccessTeleop': 'Low', 'strongMedium': 'Hatch', 'teamDBRef': 'team-1884', 'hiRocketSuccessTeleop': 'N/A', 'speed': 'Fast', 'match': 'match-16', 'size': '', 'fillChoiceTeleop': 'Cargo', 'strongMediumTeleop': 'Hatch', 'endingHab': '', 'functional': 'Yes', 'lowRocketSuccessTeleop': 'N/A', 'startingHatch': 'Hab I'}",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
0,0,0,,0,,0,,slow,,team-1884,L1,,0,0,0,,0,0,,,0,,,,0,,0,0,1,,,None,match-2,,,0
|
||||
,,,,,,,,,,,,,,,,,,,"{'notes': '', 'contribution': 'Equal', 'fillChoice': 'Cargo', 'strategy': '', 'strongMedium': 'Hatch', 'cargoSuccessTeleop': 'Mid', 'teamDBRef': 'team-1884', 'speed': 'Slow', 'hiRocketSuccessTeleop': '', 'size': 'Medium', 'match': 'match-27', 'fillChoiceTeleop': 'Cargo', 'strongMediumTeleop': 'Ball', 'endingHab': 'None', 'functional': 'Yes', 'lowRocketSuccessTeleop': '', 'startingHatch': 'Hab I'}",,,,,,,,,,,,,,,,,
|
||||
,,,Both,,,,Large,Fast,,team-1884,L1,L1,,,,N/A,,,,High,,Hab I,Cargo,Yes,,Ball,,,,Cargo,Equal,,match-32,N/A,None,
|
|
5
data analysis/matches/team-2016.csv
Normal file
@@ -0,0 +1,5 @@
|
||||
sandstormRocketCargoFailure,teleOpRocketCargoSuccess,strongMediumTeleop,sandstormRocketHatchSuccess,teleOpCargoShipHatchFailure,jouGPhPF0qME5wNIbd86MzYFsGw2,size,sandstormRocketCargoSuccess,speed,strategy,teamDBRef,sandstormCross,sandstormCrossBonus,teleOpCargoShipHatchSuccess,teleOpRocketHatchSuccess,sandstormCargoShipCargoFailure,lowRocketSuccessTeleop,teleOpRocketHatchFailure,teleOpRocketCargoFailure,cargoSuccessTeleop,sandstormCargoShipHatchSuccess,teleOpCargoShipCargoSuccess,functional,fillChoice,sandstormCargoShipCargoSuccess,strongMedium,teleOpCargoShipCargoFailure,sandstormRocketHatchFailure,sandstormCargoShipHatchFailure,fillChoiceTeleop,contrubution,HABClimb,hiRocketSuccessTeleop,match,endingHab,startingHatch
|
||||
,,,,,"{'notes': '', 'contribution': 'Equal', 'fillChoice': '', 'strategy': '', 'strongMedium': 'Ball', 'cargoSuccessTeleop': 'Mid', 'teamDBRef': 'team-2016', 'speed': 'Fast', 'hiRocketSuccessTeleop': 'N/A', 'size': 'Medium', 'match': 'match-12', 'fillChoiceTeleop': 'Cargo', 'strongMediumTeleop': 'Neither', 'endingHab': 'Hab 2', 'functional': 'Sorta', 'lowRocketSuccessTeleop': 'N/A', 'startingHatch': 'Hab I'}",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
,,Ball,,,,Large,,Fast,Tried unsuccessfully to fill cargo ship then rammed defensively,team-2016,L2,L2,,,,N/A,,,Low,,,No,None,,Hatch,,,,Cargo,Weak,,N/A,match-27,L2,Hab II
|
||||
,,Ball,,,,Small,,Medium,Pure cargo,team-2016,L2,L2,,,,N/A,,,High,,,Yes,None,,Neither,,,,Cargo,Weak,,Low,match-38,L1,Hab II
|
||||
0,0,,0,0,,,0,slow,,team-2016,None,,0,0,0,,0,0,,0,0,,,0,,0,0,0,,,None,,match-5,,
|
|
2
data analysis/matches/team-2022.csv
Normal file
@@ -0,0 +1,2 @@
|
||||
jouGPhPF0qME5wNIbd86MzYFsGw2
|
||||
"{'notes': 'it’s us', 'contribution': 'Equal', 'fillChoice': 'Cargo', 'strongMedium': 'Hatch', 'cargoSuccessTeleop': 'Mid', 'teamDBRef': 'team-2022', 'speed': 'Medium', 'hiRocketSuccessTeleop': '', 'size': 'Medium', 'match': 'match-5', 'fillChoiceTeleop': 'Cargo', 'strongMediumTeleop': 'Ball', 'endingHab': 'Hab 1', 'functional': 'Yes', 'lowRocketSuccessTeleop': '', 'startingHatch': 'Hab I'}"
|
|