Adaptive Difficulty Setting for Exercises

At Karuna Labs we have created a virtual reality software to treat chronic pain through cortical reorganization (aka neuroplasticity).

This entails slowly training our patient’s brain and body to recover the full extent of their movements through physiotheraputic exercises and visual inputs to reprogram the patient’s representations of their pain.

For example, if a patient has suffered a shoulder injury. In their sessions they will put on the VR headset and perform a daily task, such as picking up a can from a shelf. We will then slowly increase the difficulty level of the exercise (i.e. height of the shelf in this case) in subsequent sessions such that the patient does not notice this increase. In doing so the patient is able to progressively, but imperceptibly, regain their mobility.

The machine learning problem: How can we prepare a specialized training regime for a new patient using our database of patients who have successfully completed the sessions. Our database contains movement data captured through our sensors and the patients’ medical history.

That is, how do we decide the difficulty level of the exercises based on their health and current range of mobility.

We implement various supervised learning algorithms for regression in Scikit-learn.

General steps in creating a regression model

  1. Data Exploration

  2. Data Preparation – data cleaning, handling missing values, data transformations, normalizing.

  3. Handling Outliers

  4. Dimensionality Reduction – PCA, feature selection

  5. Choosing appropriate models based on given data and desired outcomes.

  6. Training models

  7. Parameter Tuning

  8. Measuring Performance on test/unseen data

In this tutorial we will primarily focus on training various regression models in Scikit-learn and measuring their performance.

1. Data Preparation

1.1. Read input data

# import librariesimport pandas as pdimport numpy as npfrom sklearn.metrics import mean_squared_error, r2_score# read in the datadata = pd.read_excel(“synthetic_final.xlsx”)# preview of the datadata.head(10)

# all column names

list(data.columns.values)['patient_id',  'promis29_score', 'age', 'sex', 'heart_health', 'diabetes', 'asthma', 'back_pain', 'arthritis', 'high_blood_pressure', 'height_inches', 'weight_pounds', 'difficulty_1', 'pain_1', 'rom_1', 'success_rate_1',  'difficulty_2', 'pain_2', 'rom_2', 'success_rate_2', 'difficulty_3', 'pain_3',  'rom_3', 'success_rate_3', 'difficulty_4', 'pain_4', 'rom_4', 'success_rate_4', 'difficulty_5', 'pain_5', 'rom_5', 'success_rate_5', 'difficulty_6', 'pain_6', 'rom_6', 'success_rate_6', 'difficulty_7', 'pain_7', 'rom_7', 'success_rate_7', 'difficulty_8', 'pain_8', 'rom_8', 'success_rate_8']

1.2. Data Dictionary

# patient_id - masked patient ID# promis29_score - a patient reported score based on a questionnaire on their health# age - age of the patient at the time of the first session# sex - sex of the patient# heart_health - 0 = healthy heart, 1 = unhealthy heart# diabetes - 0 = does not suffer from diabetes, 1 = suffers from diabetes# asthma - 0 = does not suffer from asthma, 1 = suffers from asthma# back_pain - 0 = no back pain, 1 = has back pain# arthritis - 0 = does not suffer from arthritis, 1 = suffers from arthritis# high_blood_pressure - 0 = normal BP, 1 = high BP# height_inches - height in inches# weight_pounds - wieght in pounds# difficulty_* - difficulty setting for the particlaur session.# pain_*' - pain reported by patient during session# rom_* - range of movement of the patient.# success_rate_* - success rate in completing the exercise.data.describe()

1.3. Splitting data into train and test sets

# split data into training and test

train = data.iloc[:80,:]test = data.iloc[80:,:]

# Predicting difficulty level for 8th session

# Preparing data by dropping unnecessary columns

train8X = train.drop(['patient_id', 'success_rate_1', 'success_rate_2', 'success_rate_3', 'success_rate_4', 'success_rate_5', 'success_rate_6', 'success_rate_7', 'difficulty_8', 'pain_8', 'rom_8','success_rate_8'], axis = 1)test8X = test.drop(['patient_id', 'success_rate_1', 'success_rate_2', 'success_rate_3', 'success_rate_4', 'success_rate_5', 'success_rate_6', 'success_rate_7','difficulty_8','pain_8','rom_8','success_rate_8'], axis = 1)train8Y = train.drop(['patient_id', 'promis29_score', 'age', 'sex', 'heart_health', 'diabetes', 'asthma', 'back_pain', 'arthritis', 'high_blood_pressure', 'height_inches', 'weight_pounds','difficulty_1', 'pain_1', 'rom_1', 'success_rate_1','difficulty_2', 'pain_2', 'rom_2', 'success_rate_2', 'difficulty_3', 'pain_3',rom_3','success_rate_3', 'difficulty_4', 'pain_4', 'rom_4', success_rate_4','difficulty_5', 'pain_5', 'rom_5', 'success_rate_5', 'difficulty_6', 'pain_6', 'rom_6', 'success_rate_6', 'difficulty_7', 'pain_7', 'rom_7', 'success_rate_7', 'pain_8', 'rom_8','success_rate_8'], axis = 1)test8Y = test.drop(['patient_id', 'promis29_score', 'age', 'sex', 'heart_health', 'diabetes', 'asthma', 'back_pain', 'arthritis', 'high_blood_pressure', 'height_inches', 'weight_pounds', 'difficulty_1','pain_1','rom_1', 'success_rate_1', 'difficulty_2', 'pain_2', 'rom_2','success_rate_2','difficulty_3','pain_3','rom_3','success_rate_3','difficulty_4','pain_4', 'rom_4', 'success_rate_4','difficulty_5','pain_5','rom_5','success_rate_5','difficulty_6','pain_6','rom_6','success_rate_6','difficulty_7','pain_7','rom_7',success_rate_7', 'pain_8','rom_8','success_rate_8'], axis = 1)

2. Regression Models

The regression models aim to make a prediction about what the difficulty setting should be for the eighth session, i.e. a value between 0 and 100.

2.1. Support Vector Machines

# import library

from

sklearn

import

svm

# train model on the training data

model_svm = svm.SVR()model_svm.fit(train8X, train8Y)

# make predictions on the test data

predicted_values = model_svm.predict(test8X)

# calculate error between the predicted values and the ground truth

print("Mean squared error:

%.5f

"% mean_squared_error(test8Y, predicted_values))print('Variance score:

%.2f

' % r2_score(test8Y, predicted_values))Mean squared error: 1.16618Variance score: -0.02

2.2. Linear Regression

from

sklearn

import

linear_modelreg_model = linear_model.LinearRegression()reg_model.fit(train8X, train8Y)reg_model.coef_predicted_reg = reg_model.predict(test8X)mean_squared_error(test8Y, predicted_reg)print("Mean squared error:

%.5f

"% mean_squared_error(test8Y, predicted_reg))print('Variance score:

%.2f

' % r2_score(test8Y, predicted_reg))Mean squared error: 1.96415Variance score: -0.71

2.3. Ridge Regression

ridge_reg = linear_model.Ridge(alpha = .5)ridge_reg.fit(train8X, train8Y)predicted_ridge = ridge_reg.predict(test8X)mean_squared_error(test8Y, predicted_ridge)print("Mean squared error:

%.5f

" % mean_squared_error(test8Y, predicted_ridge))print('Variance score:

%.2f

' % r2_score(test8Y, predicted_ridge))Mean squared error: 1.78342Variance score: -0.55

2.4. Lasso Regression

lasso_reg = linear_model.Lasso(alpha = 0.1)lasso_reg.fit(train8X, train8Y)predicted_lasso = lasso_reg.predict(test8X)mean_squared_error(test8Y, predicted_lasso)print("Mean squared error:

%.5f

"% mean_squared_error(test8Y, predicted_lasso))print('Variance score:

%.2f

' % r2_score(test8Y, predicted_lasso))Mean squared error: 1.09308Variance score: 0.05

2.5. Bayesian Ridge Regression

bayesian_ridge_reg = linear_model.BayesianRidge()bayesian_ridge_reg.fit(train8X, train8Y)predicted_bayes = bayesian_ridge_reg.predict(test8X)mean_squared_error(test8Y, predicted_bayes)print("Mean squared error:

%.5f

" % mean_squared_error(test8Y, predicted_bayes))print('Variance score:

%.2f

' % r2_score(test8Y, predicted_bayes))Mean squared error: 1.25829Variance score: -0.10

2.6. Regression Tree

#regression tree

from

sklearn

import

treeclf = tree.DecisionTreeRegressor()clf = clf.fit(train8X, train8Y)clf_pred = clf.predict(test8X)print("Mean squared error:

%.5f

" % mean_squared_error(test8Y, clf_pred))print('Variance score:

%.2f

' % r2_score(test8Y, clf_pred))Mean squared error: 2.00000Variance score: -0.74

2.7. Gradient Boosting Regression

from

sklearn.ensemble

import

GradientBoostingRegressorest = GradientBoostingRegressor(n_estimators=10, learning_rate=0.1,max_depth=1, random_state=0, loss='ls').fit(train8X, train8Y)print("Mean squared error:

%.5f

" % mean_squared_error(test8Y, est.predict(test8X)))print('Variance score:

%.2f

' % r2_score(test8Y, est.predict(test8X)))Mean squared error: 0.78961Variance score: 0.31

2.8. Multi Layer Perceptron

# multi layer perceptron

from

sklearn.neural_network

import

MLPRegressormlp_reg = MLPRegressor(solver='lbfgs', alpha=1e-5, hidden_layer_sizes=(15,), random_state=1)mlp_reg.fit(train8X, train8Y)print("Mean squared error:

%.5f

" % mean_squared_error(test8Y, mlp_reg.predict(test8X)))print('Variance score:

%.2f

' % r2_score(test8Y, mlp_reg.predict(test8X)))Mean squared error: 5.40565Variance score: -3.71

3. Conclusion

We see that the model with the least mean squared error in the ensemble method Gradient Boosting Regression. In the linear regression models we can see that Lasso regression performs the best.

C:UsersKaran HoraDesktopkaruna-patient-VRdifficultycode_dataresults.png

.fca_eoi_form p { width: auto; }#fca_eoi_form_96 input{ max-width: 9999px; }div.fca_eoi_form_text_element,input.fca_eoi_form_input_element,input.fca_eoi_form_button_element{display:block;margin:0;padding:0;line-height:normal;font-size:14px;letter-spacing:normal;word-spacing:normal;text-indent:0;text-shadow:none;text-decoration:none;text-transform:none;white-space:normal;width:inherit;height:inherit;background-image:none;border:none;border-radius:0;box-shadow:none;box-sizing:border-box;transition:none;outline:none;-webkit-transition:none;-webkit-appearance:none;-moz-appearance:none;color:#000;font-family:"Open Sans", sans-serif;font-weight:normal;transition:background 350ms linear;}div.fca_eoi_form_text_element{text-align:center;}div.fca_eoi_layout_popup_close{display:block;margin:0;padding:0;line-height:normal;font-size:14px;letter-spacing:normal;word-spacing:normal;text-indent:0;text-shadow:none;text-decoration:none;text-transform:none;white-space:normal;width:inherit;height:inherit;background-image:none;border:none;border-radius:0;box-shadow:none;box-sizing:border-box;transition:none;outline:none;-webkit-transition:none;-webkit-appearance:none;-moz-appearance:none;color:#000;font-family:"Open Sans", sans-serif;font-weight:normal;display:block;position:absolute;z-index:9999992;top:-10px;right:-10px;background:rgba(0, 0, 0, 0.6);border:1px solid #000;color:#fff;font-weight:bold;width:20px;height:20px;line-height:20px;text-align:center;cursor:pointer;}div.fca_eoi_layout_headline_copy_wrapper{font-weight:bold;}div.fca_eoi_layout_1,form.fca_eoi_layout_1{display:inline-block;}div.fca_eoi_layout_1.fca_eoi_layout_widget,form.fca_eoi_layout_1.fca_eoi_layout_widget{max-width:300px;}div.fca_eoi_layout_1.fca_eoi_layout_postbox,form.fca_eoi_layout_1.fca_eoi_layout_postbox{max-width:600px;}div.fca_eoi_layout_1.fca_eoi_layout_popup,form.fca_eoi_layout_1.fca_eoi_layout_popup{max-width:650px;}div.fca_eoi_layout_1.fca_eoi_layout_widget div.fca_eoi_layout_field_wrapper,form.fca_eoi_layout_1.fca_eoi_layout_widget div.fca_eoi_layout_field_wrapper{float:none;width:100%;}div.fca_eoi_layout_1 div.fca_eoi_layout_content_wrapper,form.fca_eoi_layout_1 div.fca_eoi_layout_content_wrapper{margin:20px;}div.fca_eoi_layout_1 div.fca_eoi_layout_field_wrapper,form.fca_eoi_layout_1 div.fca_eoi_layout_field_wrapper{border:solid 1px transparent;width:49%;border-radius:3px;margin-bottom:10px;position:relative;}div.fca_eoi_layout_1 div.fca_eoi_layout_name_field_wrapper,form.fca_eoi_layout_1 div.fca_eoi_layout_name_field_wrapper{float:left;}div.fca_eoi_layout_1 div.fca_eoi_layout_email_field_wrapper,form.fca_eoi_layout_1 div.fca_eoi_layout_email_field_wrapper{float:right;}div.fca_eoi_layout_1 div.fca_eoi_layout_inputs_wrapper_no_name div.fca_eoi_layout_field_wrapper,form.fca_eoi_layout_1 div.fca_eoi_layout_inputs_wrapper_no_name div.fca_eoi_layout_field_wrapper{float:none;width:100%;}div.fca_eoi_layout_1 div.fca_eoi_layout_field_wrapper input,form.fca_eoi_layout_1 div.fca_eoi_layout_field_wrapper input,div.fca_eoi_layout_1 div.fca_eoi_layout_field_wrapper input:focus,form.fca_eoi_layout_1 div.fca_eoi_layout_field_wrapper input:focus{border:none !important;width:100%;height:auto;font-size:16px;line-height:1.2em;padding:7px 0;outline:none;background:none !important;box-shadow:none;}div.fca_eoi_layout_1 div.fca_eoi_layout_submit_button_wrapper,form.fca_eoi_layout_1 div.fca_eoi_layout_submit_button_wrapper{clear:both;transition:background 350ms linear, border-color 350ms linear;}div.fca_eoi_layout_1 div.fca_eoi_layout_fatcatapps_link_wrapper a,form.fca_eoi_layout_1 div.fca_eoi_layout_fatcatapps_link_wrapper a{display:block;margin:10px 0 0;font-size:12px;}@media (min-width:1px) and (max-width:450px),(min-height:1px) and (max-height:450px){div.fca_eoi_layout_1.fca_eoi_layout_popup div.fca_eoi_layout_content_wrapper div.fca_eoi_form_text_element.fca_eoi_layout_headline_copy_wrapper div,form.fca_eoi_layout_1.fca_eoi_layout_popup div.fca_eoi_layout_content_wrapper div.fca_eoi_form_text_element.fca_eoi_layout_headline_copy_wrapper div,div.fca_eoi_layout_1.fca_eoi_layout_widget div.fca_eoi_layout_content_wrapper div.fca_eoi_form_text_element.fca_eoi_layout_headline_copy_wrapper div,form.fca_eoi_layout_1.fca_eoi_layout_widget div.fca_eoi_layout_content_wrapper div.fca_eoi_form_text_element.fca_eoi_layout_headline_copy_wrapper div,div.fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_content_wrapper div.fca_eoi_form_text_element.fca_eoi_layout_headline_copy_wrapper div,form.fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_content_wrapper div.fca_eoi_form_text_element.fca_eoi_layout_headline_copy_wrapper div,div.fca_eoi_layout_1.fca_eoi_layout_popup div.fca_eoi_layout_content_wrapper div.fca_eoi_form_text_element.fca_eoi_layout_description_copy_wrapper div,form.fca_eoi_layout_1.fca_eoi_layout_popup div.fca_eoi_layout_content_wrapper div.fca_eoi_form_text_element.fca_eoi_layout_description_copy_wrapper div,div.fca_eoi_layout_1.fca_eoi_layout_widget div.fca_eoi_layout_content_wrapper div.fca_eoi_form_text_element.fca_eoi_layout_description_copy_wrapper div,form.fca_eoi_layout_1.fca_eoi_layout_widget div.fca_eoi_layout_content_wrapper div.fca_eoi_form_text_element.fca_eoi_layout_description_copy_wrapper div,div.fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_content_wrapper div.fca_eoi_form_text_element.fca_eoi_layout_description_copy_wrapper div,form.fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_content_wrapper div.fca_eoi_form_text_element.fca_eoi_layout_description_copy_wrapper div,div.fca_eoi_layout_1.fca_eoi_layout_popup div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_field_wrapper i.fa:before,form.fca_eoi_layout_1.fca_eoi_layout_popup div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_field_wrapper i.fa:before,div.fca_eoi_layout_1.fca_eoi_layout_widget div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_field_wrapper i.fa:before,form.fca_eoi_layout_1.fca_eoi_layout_widget div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_field_wrapper i.fa:before,div.fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_field_wrapper i.fa:before,form.fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_field_wrapper i.fa:before,div.fca_eoi_layout_1.fca_eoi_layout_popup div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_field_wrapper div.fca_eoi_layout_field_inner input,form.fca_eoi_layout_1.fca_eoi_layout_popup div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_field_wrapper div.fca_eoi_layout_field_inner input,div.fca_eoi_layout_1.fca_eoi_layout_widget div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_field_wrapper div.fca_eoi_layout_field_inner input,form.fca_eoi_layout_1.fca_eoi_layout_widget div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_field_wrapper div.fca_eoi_layout_field_inner input,div.fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_field_wrapper div.fca_eoi_layout_field_inner input,form.fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_field_wrapper div.fca_eoi_layout_field_inner input,div.fca_eoi_layout_1.fca_eoi_layout_popup div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_field_wrapper div.fca_eoi_layout_field_inner input:focus,form.fca_eoi_layout_1.fca_eoi_layout_popup div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_field_wrapper div.fca_eoi_layout_field_inner input:focus,div.fca_eoi_layout_1.fca_eoi_layout_widget div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_field_wrapper div.fca_eoi_layout_field_inner input:focus,form.fca_eoi_layout_1.fca_eoi_layout_widget div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_field_wrapper div.fca_eoi_layout_field_inner input:focus,div.fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_field_wrapper div.fca_eoi_layout_field_inner input:focus,form.fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_field_wrapper div.fca_eoi_layout_field_inner input:focus,div.fca_eoi_layout_1.fca_eoi_layout_popup div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_submit_button_wrapper input,form.fca_eoi_layout_1.fca_eoi_layout_popup div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_submit_button_wrapper input,div.fca_eoi_layout_1.fca_eoi_layout_widget div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_submit_button_wrapper input,form.fca_eoi_layout_1.fca_eoi_layout_widget div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_submit_button_wrapper input,div.fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_submit_button_wrapper input,form.fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_submit_button_wrapper input,div.fca_eoi_layout_1.fca_eoi_layout_popup div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_submit_button_wrapper input:focus,form.fca_eoi_layout_1.fca_eoi_layout_popup div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_submit_button_wrapper input:focus,div.fca_eoi_layout_1.fca_eoi_layout_widget div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_submit_button_wrapper input:focus,form.fca_eoi_layout_1.fca_eoi_layout_widget div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_submit_button_wrapper input:focus,div.fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_submit_button_wrapper input:focus,form.fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_submit_button_wrapper input:focus,div.fca_eoi_layout_1.fca_eoi_layout_popup div.fca_eoi_layout_content_wrapper div.fca_eoi_form_text_element.fca_eoi_layout_privacy_copy_wrapper div,form.fca_eoi_layout_1.fca_eoi_layout_popup div.fca_eoi_layout_content_wrapper div.fca_eoi_form_text_element.fca_eoi_layout_privacy_copy_wrapper div,div.fca_eoi_layout_1.fca_eoi_layout_widget div.fca_eoi_layout_content_wrapper div.fca_eoi_form_text_element.fca_eoi_layout_privacy_copy_wrapper div,form.fca_eoi_layout_1.fca_eoi_layout_widget div.fca_eoi_layout_content_wrapper div.fca_eoi_form_text_element.fca_eoi_layout_privacy_copy_wrapper div,div.fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_content_wrapper div.fca_eoi_form_text_element.fca_eoi_layout_privacy_copy_wrapper div,form.fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_content_wrapper div.fca_eoi_form_text_element.fca_eoi_layout_privacy_copy_wrapper div,div.fca_eoi_layout_1.fca_eoi_layout_popup div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_fatcatapps_link_wrapper a,form.fca_eoi_layout_1.fca_eoi_layout_popup div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_fatcatapps_link_wrapper a,div.fca_eoi_layout_1.fca_eoi_layout_widget div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_fatcatapps_link_wrapper a,form.fca_eoi_layout_1.fca_eoi_layout_widget div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_fatcatapps_link_wrapper a,div.fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_fatcatapps_link_wrapper a,form.fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_fatcatapps_link_wrapper a{font-size:13px !important;}}@media (min-width:1px) and (max-width:320px),(min-height:1px) and (max-height:320px){div.fca_eoi_layout_1.fca_eoi_layout_popup div.fca_eoi_layout_content_wrapper div.fca_eoi_form_text_element.fca_eoi_layout_headline_copy_wrapper div,form.fca_eoi_layout_1.fca_eoi_layout_popup div.fca_eoi_layout_content_wrapper div.fca_eoi_form_text_element.fca_eoi_layout_headline_copy_wrapper div,div.fca_eoi_layout_1.fca_eoi_layout_widget div.fca_eoi_layout_content_wrapper div.fca_eoi_form_text_element.fca_eoi_layout_headline_copy_wrapper div,form.fca_eoi_layout_1.fca_eoi_layout_widget div.fca_eoi_layout_content_wrapper div.fca_eoi_form_text_element.fca_eoi_layout_headline_copy_wrapper div,div.fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_content_wrapper div.fca_eoi_form_text_element.fca_eoi_layout_headline_copy_wrapper div,form.fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_content_wrapper div.fca_eoi_form_text_element.fca_eoi_layout_headline_copy_wrapper div,div.fca_eoi_layout_1.fca_eoi_layout_popup div.fca_eoi_layout_content_wrapper div.fca_eoi_form_text_element.fca_eoi_layout_description_copy_wrapper div,form.fca_eoi_layout_1.fca_eoi_layout_popup div.fca_eoi_layout_content_wrapper div.fca_eoi_form_text_element.fca_eoi_layout_description_copy_wrapper div,div.fca_eoi_layout_1.fca_eoi_layout_widget div.fca_eoi_layout_content_wrapper div.fca_eoi_form_text_element.fca_eoi_layout_description_copy_wrapper div,form.fca_eoi_layout_1.fca_eoi_layout_widget div.fca_eoi_layout_content_wrapper div.fca_eoi_form_text_element.fca_eoi_layout_description_copy_wrapper div,div.fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_content_wrapper div.fca_eoi_form_text_element.fca_eoi_layout_description_copy_wrapper div,form.fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_content_wrapper div.fca_eoi_form_text_element.fca_eoi_layout_description_copy_wrapper div,div.fca_eoi_layout_1.fca_eoi_layout_popup div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_field_wrapper i.fa:before,form.fca_eoi_layout_1.fca_eoi_layout_popup div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_field_wrapper i.fa:before,div.fca_eoi_layout_1.fca_eoi_layout_widget div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_field_wrapper i.fa:before,form.fca_eoi_layout_1.fca_eoi_layout_widget div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_field_wrapper i.fa:before,div.fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_field_wrapper i.fa:before,form.fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_field_wrapper i.fa:before,div.fca_eoi_layout_1.fca_eoi_layout_popup div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_field_wrapper div.fca_eoi_layout_field_inner input,form.fca_eoi_layout_1.fca_eoi_layout_popup div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_field_wrapper div.fca_eoi_layout_field_inner input,div.fca_eoi_layout_1.fca_eoi_layout_widget div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_field_wrapper div.fca_eoi_layout_field_inner input,form.fca_eoi_layout_1.fca_eoi_layout_widget div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_field_wrapper div.fca_eoi_layout_field_inner input,div.fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_field_wrapper div.fca_eoi_layout_field_inner input,form.fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_field_wrapper div.fca_eoi_layout_field_inner input,div.fca_eoi_layout_1.fca_eoi_layout_popup div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_field_wrapper div.fca_eoi_layout_field_inner input:focus,form.fca_eoi_layout_1.fca_eoi_layout_popup div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_field_wrapper div.fca_eoi_layout_field_inner input:focus,div.fca_eoi_layout_1.fca_eoi_layout_widget div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_field_wrapper div.fca_eoi_layout_field_inner input:focus,form.fca_eoi_layout_1.fca_eoi_layout_widget div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_field_wrapper div.fca_eoi_layout_field_inner input:focus,div.fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_field_wrapper div.fca_eoi_layout_field_inner input:focus,form.fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_field_wrapper div.fca_eoi_layout_field_inner input:focus,div.fca_eoi_layout_1.fca_eoi_layout_popup div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_submit_button_wrapper input,form.fca_eoi_layout_1.fca_eoi_layout_popup div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_submit_button_wrapper input,div.fca_eoi_layout_1.fca_eoi_layout_widget div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_submit_button_wrapper input,form.fca_eoi_layout_1.fca_eoi_layout_widget div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_submit_button_wrapper input,div.fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_submit_button_wrapper input,form.fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_submit_button_wrapper input,div.fca_eoi_layout_1.fca_eoi_layout_popup div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_submit_button_wrapper input:focus,form.fca_eoi_layout_1.fca_eoi_layout_popup div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_submit_button_wrapper input:focus,div.fca_eoi_layout_1.fca_eoi_layout_widget div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_submit_button_wrapper input:focus,form.fca_eoi_layout_1.fca_eoi_layout_widget div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_submit_button_wrapper input:focus,div.fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_submit_button_wrapper input:focus,form.fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_submit_button_wrapper input:focus,div.fca_eoi_layout_1.fca_eoi_layout_popup div.fca_eoi_layout_content_wrapper div.fca_eoi_form_text_element.fca_eoi_layout_privacy_copy_wrapper div,form.fca_eoi_layout_1.fca_eoi_layout_popup div.fca_eoi_layout_content_wrapper div.fca_eoi_form_text_element.fca_eoi_layout_privacy_copy_wrapper div,div.fca_eoi_layout_1.fca_eoi_layout_widget div.fca_eoi_layout_content_wrapper div.fca_eoi_form_text_element.fca_eoi_layout_privacy_copy_wrapper div,form.fca_eoi_layout_1.fca_eoi_layout_widget div.fca_eoi_layout_content_wrapper div.fca_eoi_form_text_element.fca_eoi_layout_privacy_copy_wrapper div,div.fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_content_wrapper div.fca_eoi_form_text_element.fca_eoi_layout_privacy_copy_wrapper div,form.fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_content_wrapper div.fca_eoi_form_text_element.fca_eoi_layout_privacy_copy_wrapper div,div.fca_eoi_layout_1.fca_eoi_layout_popup div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_fatcatapps_link_wrapper a,form.fca_eoi_layout_1.fca_eoi_layout_popup div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_fatcatapps_link_wrapper a,div.fca_eoi_layout_1.fca_eoi_layout_widget div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_fatcatapps_link_wrapper a,form.fca_eoi_layout_1.fca_eoi_layout_widget div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_fatcatapps_link_wrapper a,div.fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_fatcatapps_link_wrapper a,form.fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_content_wrapper div.fca_eoi_layout_fatcatapps_link_wrapper a{font-size:12px !important;}}@media (min-width:1px) and (max-width:450px),(min-height:1px) and (max-height:450px){div.fca_eoi_layout_1 div.fca_eoi_layout_content_wrapper,form.fca_eoi_layout_1 div.fca_eoi_layout_content_wrapper{margin:8px 13px;}div.fca_eoi_layout_1 div.fca_eoi_layout_fatcatapps_link_wrapper a,form.fca_eoi_layout_1 div.fca_eoi_layout_fatcatapps_link_wrapper a{margin:0;}div.fca_eoi_layout_1 div.fca_eoi_form_text_element.fca_eoi_layout_headline_copy_wrapper,form.fca_eoi_layout_1 div.fca_eoi_form_text_element.fca_eoi_layout_headline_copy_wrapper{margin-bottom:5px;}}@media (min-width:1px) and (max-width:320px),(min-height:1px) and (max-height:320px){div.fca_eoi_layout_1 div.fca_eoi_layout_popup_close,form.fca_eoi_layout_1 div.fca_eoi_layout_popup_close{top:-1px;right:-1px;}}@media (min-width:1px) and (max-width:768px){div.fca_eoi_layout_1 div.fca_eoi_layout_field_wrapper,form.fca_eoi_layout_1 div.fca_eoi_layout_field_wrapper{float:none;width:100%;}}div.fca_eoi_layout_1 div.fca_eoi_layout_headline_copy_wrapper,form.fca_eoi_layout_1 div.fca_eoi_layout_headline_copy_wrapper{margin-bottom:10px;}div.fca_eoi_layout_1 div.fca_eoi_layout_inputs_wrapper,form.fca_eoi_layout_1 div.fca_eoi_layout_inputs_wrapper{border-top:1px solid #dbdbdb;border-bottom:1px solid #dbdbdb;padding:20px 0;margin:20px 0;}@media (min-width:1px) and (max-width:450px),(min-height:1px) and (max-height:450px){div.fca_eoi_layout_1 div.fca_eoi_layout_inputs_wrapper,form.fca_eoi_layout_1 div.fca_eoi_layout_inputs_wrapper{padding:8px 0;}}@media (min-width:1px) and (max-width:320px),(min-height:1px) and (max-height:320px){div.fca_eoi_layout_1 div.fca_eoi_layout_inputs_wrapper,form.fca_eoi_layout_1 div.fca_eoi_layout_inputs_wrapper{padding:0;border:none;}}@media (min-width:1px) and (max-width:450px),(min-height:1px) and (max-height:450px){div.fca_eoi_layout_1 div.fca_eoi_layout_inputs_wrapper,form.fca_eoi_layout_1 div.fca_eoi_layout_inputs_wrapper{margin:8px 0;}}div.fca_eoi_layout_1 div.fca_eoi_layout_field_inner,form.fca_eoi_layout_1 div.fca_eoi_layout_field_inner{margin:0 15px 0 30px;}div.fca_eoi_layout_1 div.fca_eoi_layout_field_wrapper i.fa,form.fca_eoi_layout_1 div.fca_eoi_layout_field_wrapper i.fa{position:absolute;top:0;left:10px;height:50%;width:auto;transform:translateY(50%);-webkit-transform:translateY(50%);}div.fca_eoi_layout_1 div.fca_eoi_layout_submit_button_wrapper input,form.fca_eoi_layout_1 div.fca_eoi_layout_submit_button_wrapper input,div.fca_eoi_layout_1 div.fca_eoi_layout_submit_button_wrapper input:hover,form.fca_eoi_layout_1 div.fca_eoi_layout_submit_button_wrapper input:hover{border:solid 1px transparent !important;border-radius:3px;box-shadow:0 1px 1px rgba(255, 255, 255, .9) inset;font-weight:bold;margin:0;min-height:36px;width:100%;white-space:normal;background:none;background:-moz-linear-gradient(top, rgba(255, 255, 255, 0.35) 0%, rgba(255, 255, 255, 0.45) 48%, rgba(255, 255, 255, 0) 52%, rgba(255, 255, 255, 0) 100%);background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(255, 255, 255, 0.35)), color-stop(48%, rgba(255, 255, 255, 0.45)), color-stop(52%, rgba(255, 255, 255, 0)), color-stop(100%, rgba(255, 255, 255, 0)));background:-webkit-linear-gradient(top, rgba(255, 255, 255, 0.35) 0%, rgba(255, 255, 255, 0.45) 48%, rgba(255, 255, 255, 0) 52%, rgba(255, 255, 255, 0) 100%);background:-o-linear-gradient(top, rgba(255, 255, 255, 0.35) 0%, rgba(255, 255, 255, 0.45) 48%, rgba(255, 255, 255, 0) 52%, rgba(255, 255, 255, 0) 100%);background:-ms-linear-gradient(top, rgba(255, 255, 255, 0.35) 0%, rgba(255, 255, 255, 0.45) 48%, rgba(255, 255, 255, 0) 52%, rgba(255, 255, 255, 0) 100%);background:linear-gradient(to bottom, rgba(255, 255, 255, 0.35) 0%, rgba(255, 255, 255, 0.45) 48%, rgba(255, 255, 255, 0) 52%, rgba(255, 255, 255, 0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#59ffffff', endColorstr='#00ffffff', GradientType=0);}@media (min-width:1px) and (max-width:450px),(min-height:1px) and (max-height:450px){div.fca_eoi_layout_1 div.fca_eoi_layout_headline_copy_wrapper,form.fca_eoi_layout_1 div.fca_eoi_layout_headline_copy_wrapper{margin-bottom:0;}}}.fca_eoi_form{ margin: auto; }#fca_eoi_form_96 .fca_eoi_layout_1.fca_eoi_layout_postbox{background-color:#ffffff !important;border-color:#d2d2d2 !important;}#fca_eoi_form_96 .fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_headline_copy_wrapper div{font-size:25px !important;color:#2b6b98 !important;}#fca_eoi_form_96 .fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_description_copy_wrapper p, .fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_description_copy_wrapper div{font-size:14px !important;}#fca_eoi_form_96 .fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_name_field_wrapper, .fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_name_field_wrapper input{color:#7f7f7f !important;background-color:#f5f5f5 !important;}#fca_eoi_form_96 .fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_name_field_wrapper{border-color:#cccccc !important;}#fca_eoi_form_96 .fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_email_field_wrapper, .fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_email_field_wrapper input{color:#7f7f7f !important;background-color:#f5f5f5 !important;}#fca_eoi_form_96 .fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_email_field_wrapper{border-color:#cccccc !important;}#fca_eoi_form_96 .fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_submit_button_wrapper input{font-size:14px !important;color:#996633 !important;background-color:#f5d03b !important;border-color:#eec22b !important;}#fca_eoi_form_96 .fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_submit_button_wrapper input:hover{background-color:#e9bd0c !important;}#fca_eoi_form_96 .fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_privacy_copy_wrapper div{font-size:14px !important;color:#8f8f8f !important;}#fca_eoi_form_96 .fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_fatcatapps_link_wrapper a, .fca_eoi_layout_1.fca_eoi_layout_postbox div.fca_eoi_layout_fatcatapps_link_wrapper a:hover{color:#baa34e !important;} jQuery.post( "http://unfetter.com/blog/", {'fca_eoi_track_form_id': 96 } );

Source:

Previous
Previous

Virtual Reality Treatment for CRPS

Next
Next

How To Create A Simple NPC