🔥 Device tests completed (Failed) on iOS on [Azure DevOps](https://dev.azure.com/devdiv/DevDiv/_build/index?buildId=3326106)(iOS): [Html Report](http://xamarin-storage/jenkins/xamarin-macios/device-tests-yaml/9f5bb95fa320655f07f1fdd83ec484daf8e24550/3326106/device-tests/jenkins-results/tests/index.html) 🔥

# Test results

<details>
<summary>113 tests failed, 0 tests passed.</summary>

## Failed tests

 * monotouch-test/iOS Unified 64-bits - device/Debug: Failed
 * framework-test/iOS Unified 64-bits - device/Debug: Failed
 * interdependent-binding-projects/iOS Unified 64-bits - device/Debug: Failed
 * fsharp/iOS Unified 64-bits - device/Debug: Failed
 * dont link/iOS Unified 64-bits - device/Debug: Failed
 * link all/iOS Unified 64-bits - device/Debug: Failed
 * link sdk/iOS Unified 64-bits - device/Debug: Failed
 * mono-native-compat/iOS Unified 64-bits - device/Debug: Failed
 * mono-native-unified/iOS Unified 64-bits - device/Debug: Failed
 * [NUnit] Mono BCL tests group 1/iOS Unified 64-bits - device/Debug: Failed
 * [NUnit] Mono BCL tests group 2/iOS Unified 64-bits - device/Debug: Failed
 * [xUnit] Mono BCL tests group 3/iOS Unified 64-bits - device/Debug: Failed
 * [xUnit] Mono BCL tests group 4/iOS Unified 64-bits - device/Debug: Failed
 * mscorlib/iOS Unified 64-bits - device/Debug: Failed
 * [xUnit] Mono BCL tests group 6/iOS Unified 64-bits - device/Debug: Failed
 * monotouch-test/iOS Unified 64-bits - device/AssemblyBuildTarget: dylib (debug): Failed
 * monotouch-test/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (debug): Failed
 * monotouch-test/iOS Unified 64-bits - device/AssemblyBuildTarget: dylib (debug, profiling): Failed
 * monotouch-test/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (debug, profiling): Failed
 * monotouch-test/iOS Unified 64-bits - device/Release: Failed
 * monotouch-test/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (release): Failed
 * monotouch-test/iOS Unified 64-bits - device/Debug (dynamic registrar): Failed
 * monotouch-test/iOS Unified 64-bits - device/Release (all optimizations): Failed
 * monotouch-test/iOS Unified 64-bits - device/Debug (all optimizations): Failed
 * monotouch-test/iOS Unified 64-bits - device/Debug: SGenConc: Failed
 * monotouch-test/iOS Unified 64-bits - device/Debug (interpreter): Failed
 * monotouch-test/iOS Unified 64-bits - device/Debug (interpreter -mscorlib): Failed
 * monotouch-test/iOS Unified 64-bits - device/Release (interpreter -mscorlib): Failed
 * framework-test/iOS Unified 64-bits - device/AssemblyBuildTarget: dylib (debug): Failed
 * framework-test/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (debug): Failed
 * framework-test/iOS Unified 64-bits - device/AssemblyBuildTarget: dylib (debug, profiling): Failed
 * framework-test/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (debug, profiling): Failed
 * framework-test/iOS Unified 64-bits - device/Release: Failed
 * framework-test/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (release): Failed
 * interdependent-binding-projects/iOS Unified 64-bits - device/AssemblyBuildTarget: dylib (debug): Failed
 * interdependent-binding-projects/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (debug): Failed
 * interdependent-binding-projects/iOS Unified 64-bits - device/AssemblyBuildTarget: dylib (debug, profiling): Failed
 * interdependent-binding-projects/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (debug, profiling): Failed
 * interdependent-binding-projects/iOS Unified 64-bits - device/Release: Failed
 * interdependent-binding-projects/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (release): Failed
 * fsharp/iOS Unified 64-bits - device/AssemblyBuildTarget: dylib (debug): Failed
 * fsharp/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (debug): Failed
 * fsharp/iOS Unified 64-bits - device/AssemblyBuildTarget: dylib (debug, profiling): Failed
 * fsharp/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (debug, profiling): Failed
 * fsharp/iOS Unified 64-bits - device/Release: Failed
 * fsharp/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (release): Failed
 * dont link/iOS Unified 64-bits - device/AssemblyBuildTarget: dylib (debug): Failed
 * dont link/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (debug): Failed
 * dont link/iOS Unified 64-bits - device/AssemblyBuildTarget: dylib (debug, profiling): Failed
 * dont link/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (debug, profiling): Failed
 * dont link/iOS Unified 64-bits - device/Release: Failed
 * dont link/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (release): Failed
 * link all/iOS Unified 64-bits - device/AssemblyBuildTarget: dylib (debug): Failed
 * link all/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (debug): Failed
 * link all/iOS Unified 64-bits - device/AssemblyBuildTarget: dylib (debug, profiling): Failed
 * link all/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (debug, profiling): Failed
 * link all/iOS Unified 64-bits - device/Release: TimedOut
 * link all/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (release): TimedOut
 * link sdk/iOS Unified 64-bits - device/AssemblyBuildTarget: dylib (debug): TimedOut
 * link sdk/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (debug): Failed
 * link sdk/iOS Unified 64-bits - device/AssemblyBuildTarget: dylib (debug, profiling): Failed
 * link sdk/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (debug, profiling): Failed
 * link sdk/iOS Unified 64-bits - device/Release: Failed
 * link sdk/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (release): Failed
 * mono-native-compat/iOS Unified 64-bits - device/AssemblyBuildTarget: dylib (debug): Failed
 * mono-native-compat/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (debug): Failed
 * mono-native-compat/iOS Unified 64-bits - device/AssemblyBuildTarget: dylib (debug, profiling): Failed
 * mono-native-compat/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (debug, profiling): Failed
 * mono-native-compat/iOS Unified 64-bits - device/Release: Failed
 * mono-native-compat/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (release): Failed
 * mono-native-unified/iOS Unified 64-bits - device/AssemblyBuildTarget: dylib (debug): Failed
 * mono-native-unified/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (debug): Failed
 * mono-native-unified/iOS Unified 64-bits - device/AssemblyBuildTarget: dylib (debug, profiling): Failed
 * mono-native-unified/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (debug, profiling): Failed
 * mono-native-unified/iOS Unified 64-bits - device/Release: Failed
 * mono-native-unified/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (release): Failed
 * [NUnit] Mono BCL tests group 1/iOS Unified 64-bits - device/AssemblyBuildTarget: dylib (debug): Failed
 * [NUnit] Mono BCL tests group 1/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (debug): Failed
 * [NUnit] Mono BCL tests group 1/iOS Unified 64-bits - device/AssemblyBuildTarget: dylib (debug, profiling): Failed
 * [NUnit] Mono BCL tests group 1/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (debug, profiling): Failed
 * [NUnit] Mono BCL tests group 1/iOS Unified 64-bits - device/Release: Failed
 * [NUnit] Mono BCL tests group 1/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (release): Failed
 * [NUnit] Mono BCL tests group 2/iOS Unified 64-bits - device/AssemblyBuildTarget: dylib (debug): Failed
 * [NUnit] Mono BCL tests group 2/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (debug): Failed
 * [NUnit] Mono BCL tests group 2/iOS Unified 64-bits - device/AssemblyBuildTarget: dylib (debug, profiling): Failed
 * [NUnit] Mono BCL tests group 2/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (debug, profiling): Failed
 * [NUnit] Mono BCL tests group 2/iOS Unified 64-bits - device/Release: TimedOut
 * [NUnit] Mono BCL tests group 2/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (release): TimedOut
 * [xUnit] Mono BCL tests group 3/iOS Unified 64-bits - device/AssemblyBuildTarget: dylib (debug): TimedOut
 * [xUnit] Mono BCL tests group 3/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (debug): Failed
 * [xUnit] Mono BCL tests group 3/iOS Unified 64-bits - device/AssemblyBuildTarget: dylib (debug, profiling): Failed
 * [xUnit] Mono BCL tests group 3/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (debug, profiling): Failed
 * [xUnit] Mono BCL tests group 3/iOS Unified 64-bits - device/Release: Failed
 * [xUnit] Mono BCL tests group 3/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (release): Failed
 * [xUnit] Mono BCL tests group 4/iOS Unified 64-bits - device/AssemblyBuildTarget: dylib (debug): Failed
 * [xUnit] Mono BCL tests group 4/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (debug): Failed
 * [xUnit] Mono BCL tests group 4/iOS Unified 64-bits - device/AssemblyBuildTarget: dylib (debug, profiling): Failed
 * [xUnit] Mono BCL tests group 4/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (debug, profiling): Failed
 * [xUnit] Mono BCL tests group 4/iOS Unified 64-bits - device/Release: Failed
 * [xUnit] Mono BCL tests group 4/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (release): Failed
 * mscorlib/iOS Unified 64-bits - device/AssemblyBuildTarget: dylib (debug): Failed
 * mscorlib/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (debug): Failed
 * mscorlib/iOS Unified 64-bits - device/AssemblyBuildTarget: dylib (debug, profiling): Failed
 * mscorlib/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (debug, profiling): Failed
 * mscorlib/iOS Unified 64-bits - device/Release: Failed
 * mscorlib/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (release): Failed
 * mscorlib/iOS Unified 64-bits - device/Debug: SGenConc: Failed
 * [xUnit] Mono BCL tests group 6/iOS Unified 64-bits - device/AssemblyBuildTarget: dylib (debug): Failed
 * [xUnit] Mono BCL tests group 6/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (debug): Failed
 * [xUnit] Mono BCL tests group 6/iOS Unified 64-bits - device/AssemblyBuildTarget: dylib (debug, profiling): Failed
 * [xUnit] Mono BCL tests group 6/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (debug, profiling): Failed
 * [xUnit] Mono BCL tests group 6/iOS Unified 64-bits - device/Release: Failed
 * [xUnit] Mono BCL tests group 6/iOS Unified 64-bits - device/AssemblyBuildTarget: SDK framework (release): Failed
</details>


Successfully deployed to following URLs:

* https://website-8r4ju0pud.now.sh
* https://website-lilac-nu.now.sh
* https://jajaperson.now.sh
* https://website.jajaperson.now.sh
* https://website-git-master.jajaperson.now.sh


`sorted` est un mot réservé python, il ne faut pas l'utiliser en nom de variable


@oxmopocus attention la notion de graph en programmation se réfère à des noeuds reliés entre eux (par exemple algos de recherche, réseaux neuronaux etc...). Le terme que tu veux employer serait plutôt `chart`


Необходимо исправить:
- В файле readme.md отсутстувует ссылка на страницу проекта. (по которой можно увидеть форму и ввести значения в поля)
- В репозитории отсутствует ветка develop.
- В репозитории отсутствует ветка gh-pages.

Замечания по регулярным выражениям:
Общие ошибки:
- каждое регулярное выражение должно начинаться со знака `^` и заканчиваться знаком `$`, чтобы предотвратить частичное совпадение вводимого значения и пропускать ввод только при полном совпадении с регулярным выражением.
Данные замечания предназначены для регулярных выражений, которым уже проставили в начале квантификатор ^, а в конце $

1. Имя пользователя:
- *Анна-мария* - Имена в двойном имени должны начинаться с заглавной буквы.
- *Иван-* - Имя не может заканчиваться знаком дефис.
- *Ив---ан* - Имя не может включать в себя несколько знаков дефис подряд.

2. Почтовый ящик:
- *mymail@site.moscow* - Длина имени домена первого уровня `.moscow` может быть больше допустимой регулярным выражением.

3. Номер телефона:
- *+7925900-90-90, +792590090-90, +7925900909-0, +7 (925) 900-90-90, +7 (925) 9009090, +7(925) 9009090, +7 (925)9009090, +7(925)9009090, +7 925 900-90-90* - Данные форматы номеров телефонов проходят валидацию, хотя с точки зрения постановки задачи они являются невалидными.

4. Сайт:
- *http://mysite.com:8008, http://10.10.10.10:8080* - Необходимо позволить пользователю вводить порт в адресе сайта.
- *http://www.10.10.10.10* - Необходимо позволить пользователю использовать www в адресе сайта.
- *http://b.ru* - адрес сайта не может состоять из одного символа.

Можно лучше:
- Проекту не хватает файла `.gitignore` для предотвращения добавления лишних файлов в репозиторий.
- `(http|https)` эквивалентна `https?`
- `[ ]?` эквивалентна ` ?`

Хорошо:
- Все регулярные выражения не имеют грубых ошибок, которые делают их невалидными
- Соблюдена версионность в проекте.


idem pour `sorted`


set your git email XD


@HiramHe What is the issue here? Is it an R version thing?


@ngumichel tu peux faire plusieurs imports sur la même ligne


Successfully deployed to following URLs:

* https://proposal-summary-2cp9afmn1.now.sh
* https://proposal-summary.cyyuen.now.sh
* https://proposal-summary-git-master.cyyuen.now.sh


@ngumichel retirer totalement le terme `golden_master` puisqu'il s'agit d'une méthode de test. C'est comme si tu nommais une fonction `fonction` ou une variable `ma_variable`, ce n'est pas une bonne pratique


You mean @bsvensson. :-)


Thanks a lot.


I am trying to create a GUI showing Image difference using your code. How can I proceed with it using the following script:

import glob
import os
import tkinter as tk
from tkinter import filedialog
from tkinter import messagebox
import cv2
import numpy as np
from PIL import Image
from PIL import ImageTk
from skimage.metrics import structural_similarity
from pathlib import Path

#global file_name, Sample_file_name
#global image, Sample_image
class Button:

    def __init__(self, root, frame3):
        self.root = root
        self.frame3 = frame3
        self.radio_var = tk.IntVar()
        self.path_selected = 'none'
        self.paths = []
        self.radio_handle = []
        self.check_value = []

    def on_click_select_button(self, fname_label):
        print('select button clicked')
        fileType = [('jpg/png file', ('*.jpg', '*.png'))]
        self.path_selected = filedialog.askopenfilename(filetypes=fileType)
        fname_label['text'] = os.path.basename(self.path_selected)

    def on_click_upload_button(self, path='None', image='None'):
        print('upload button clicked')

        if path == 'None':
            path = self.path_selected
        else:
            cv2.imwrite(path, image)

        if path in self.paths:
            messagebox.showerror('Upload Error', '"'
                                 + path
                                 + '"' + ' is already uploaded.')
        else:
            self.paths.append(path)
            self.create_radio_button(path)

    def on_click_show_button(self, method):
        global file_name
        print('showButton clicked')
        image = cv2.imread(self.paths[self.radio_var.get()])
        image = self.image_processing(image, method)

        file_name = os.path.basename(self.paths[self.radio_var.get()])
        name, ext = os.path.splitext(file_name)
        path = 'images/' + name + '_' + method + ext

        # cv2.imwrite(path, image)
        self.open_image_window(path, image)

    def image_processing(self, image, method):
        if method == 'gray':
            image = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)

        elif method == 'binary':
            ret2, image = cv2.threshold(image[:, :, 0], 0, 255, cv2.THRESH_OTSU)

        elif method == 'gblur':
            image = cv2.GaussianBlur(image, (9, 9), 0)

        elif method == 'canny':
            image = cv2.Canny(image, 100, 400)

        #elif method == 'Send_to_Directory':
            #image = os.mkdir("Differece_images")

        else:
            print('method is wrong')

        return image

    def create_radio_button(self, path):

        image = cv2.imread(path)
        # image = cv2.resize(image,(120,120))
        image = self.scale_to_height(image, 120)
        image_tk = self.to_tk_image(image)

        radio_button = tk.Radiobutton(self.frame3, image=image_tk,
                                      value=len(self.radio_handle),
                                      variable=self.radio_var)
        self.radio_var.set(0)
        self.radio_handle.append(radio_button)
        self.check_value.append(self.radio_var)

        radio_button.grid(row=(len(self.radio_handle) - 1) // 3,
                          column=(len(self.radio_handle) - 1) % 3)
        self.root.mainloop()

    def open_image_window(self, path, image):

        if image.shape[0] > 300:
            image = self.scale_to_height(image, 300)

        img_win = tk.Toplevel(self.root)
        fname = os.path.basename(path)
        img_win.title(fname)
        img_canvas = tk.Canvas(img_win, width=image.shape[1],
                               height=image.shape[0])
        img_canvas.pack()
        image_tk = self.to_tk_image(image)
        img_canvas.create_image(0, 0, image=image_tk, anchor='nw')

        uploadButton2 = tk.Button(img_win, text='upload',
                                  command=lambda: self.on_click_upload_button(path, image))
        uploadButton2.pack()

        self.root.mainloop()

    def to_tk_image(self, image_bgr):
        image_rgb = cv2.cvtColor(image_bgr, cv2.COLOR_BGR2RGB)
        image_pil = Image.fromarray(image_rgb)
        image_tk = ImageTk.PhotoImage(image_pil)

        return image_tk

    def scale_to_height(self, img, height):
        scale = height / img.shape[0]
        return cv2.resize(img, dsize=None, fx=scale, fy=scale)

class Sample_Button(Button):

    def __init__(self, root, frame6):
        self.root = root
        self.frame6 = frame6
        self.Sample_radio_var = tk.IntVar()
        self.Sample_path_selected = 'none'
        self.Sample_paths = []
        self.Sample_radio_handle = []
        self.Sample_check_value = []

    def on_click_select_button_Sample(self, Sample_fname_label):
        print('select Sample button clicked')
        Sample_fileType = [('jpg/png file', ('*.jpg', '*.png'))]
        self.Sample_path_selected = filedialog.askopenfilename(filetypes=Sample_fileType)
        Sample_fname_label['text'] = os.path.basename(self.Sample_path_selected)

    def on_click_upload_button_Sample(self, Sample_path='None', Sample_image='None'):
        print('upload Sample button clicked')

        if Sample_path == 'None':
            Sample_path = self.Sample_path_selected
        else:
            cv2.imwrite(Sample_path, Sample_image)

        if Sample_path in self.Sample_paths:
            messagebox.showerror('Upload Error', '"'
                                 + Sample_path
                                 + '"' + ' Sample is already uploaded.')
        else:
            self.Sample_paths.append(Sample_path)
            self.create_Sample_radio_button(Sample_path)

    def on_click_show_button_Sample(self, Sample_method):
        global Sample_file_name

        print('show Sample Button clicked')
        Sample_image = cv2.imread(self.Sample_paths[self.Sample_radio_var.get()])
        Sample_image = self.Sample_image_processing(Sample_image, Sample_method)

        Sample_file_name = os.path.basename(self.Sample_paths[self.Sample_radio_var.get()])
        Sample_name, ext = os.path.splitext(Sample_file_name)
        Sample_path = 'Sample_images/' + Sample_name + '_' + Sample_method + ext

        # cv2.imwrite(path, image)
        self.open_Sample_image_window(Sample_path, Sample_image)

    def Sample_image_processing(self, Sample_image, Sample_method):
        if Sample_method == 'Sample_gray':
            Sample_image = cv2.cvtColor(Sample_image, cv2.COLOR_RGB2GRAY)

        elif Sample_method == 'Sample_binary':
            Sample_ret2, Sample_image = cv2.threshold(Sample_image[:, :, 0], 0, 255, cv2.THRESH_OTSU)

        elif Sample_method == 'Sample_gblur':
            Sample_image = cv2.GaussianBlur(Sample_image, (9, 9), 0)

        elif Sample_method == 'Sample_canny':
            Sample_image = cv2.Canny(Sample_image, 100, 400)

        #elif Sample_method == 'Send_to_Directory':
            #Sample_image = os.mkdir("data/Sample_Differece_images")

        else:
            print('Sample method is wrong')

        return Sample_image

    def create_Sample_radio_button(self, Sample_path):

        Sample_image = cv2.imread(Sample_path)

        # image = cv2.resize(image,(120,120))
        Sample_image = self.scale_to_height_Sample(Sample_image, 120)
        Sample_image_tk = self.Sample_to_tk_image(Sample_image)

        Sample_radio_button = tk.Radiobutton(self.frame6, image=Sample_image_tk,
                                      value=len(self.Sample_radio_handle),
                                      variable=self.Sample_radio_var)
        self.Sample_radio_var.set(0)
        self.Sample_radio_handle.append(Sample_radio_button)
        self.Sample_check_value.append(self.Sample_radio_var)

        Sample_radio_button.grid(row=(len(self.Sample_radio_handle) - 1) // 3,
                          column=(len(self.Sample_radio_handle) - 1) % 3)
        self.root.mainloop()

    def open_Sample_image_window(self, Sample_path, Sample_image):

        if Sample_image.shape[0] > 300:
            Sample_image = self.scale_to_height_Sample(Sample_image, 300)

        Sample_img_win = tk.Toplevel(self.root)
        Sample_fname = os.path.basename(Sample_path)
        Sample_img_win.title(Sample_fname)
        Sample_img_canvas = tk.Canvas(Sample_img_win, width=Sample_image.shape[1],
                               height=Sample_image.shape[0])
        Sample_img_canvas.pack()
        Sample_image_tk = self.Sample_to_tk_image(Sample_image)
        Sample_img_canvas.create_image(0, 0, image=Sample_image_tk, anchor='nw')

        uploadSampleButton2 = tk.Button(Sample_img_win, text='Upload Sample',
                                  command=lambda: self.on_click_upload_button_Sample(Sample_path, Sample_image))
        uploadSampleButton2.pack()

        self.root.mainloop()

    def Sample_to_tk_image(self, Sample_image_bgr):
        Sample_image_rgb = cv2.cvtColor(Sample_image_bgr, cv2.COLOR_BGR2RGB)
        Sample_image_pil = Image.fromarray(Sample_image_rgb)
        Sample_image_tk = ImageTk.PhotoImage(Sample_image_pil)

        return Sample_image_tk

    def scale_to_height_Sample(self, Sample_img, height):
        scale = height / Sample_img.shape[0]
        return cv2.resize(Sample_img, dsize=None, fx=scale, fy=scale)

class Difference_Button(Sample_Button, Button):

    def on_click_diff_per_button(self, diff_per):

        self.radio_var = tk.IntVar()
        global Filename
        Filename = self.radio_var.get()

        #self.Sample_radio_var = tk.IntVar()
        #self.radio_var = tk.IntVar()
        self.file_name = os.path.basename(self.paths[Filename])
        self.Sample_file_name = glob.glob(os.path.basename(self.Sample_paths[self.Sample_radio_var.get()]))
        #global images
        #global Sample_images
        for f1 in self.file_name:
            image = cv2.imread(f1)
            cv2.waitKey(0)
            im_grayRef = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
            cv2.waitKey(0)
            (thresholdRef, im_bwRef) = cv2.threshold(im_grayRef, 128, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
            thresholdRef = 127
            im_bwRef = cv2.threshold(im_grayRef, thresholdRef, 255, cv2.THRESH_BINARY)[1]

        for f2 in self.Sample_file_name:
            Sample_image = cv2.imread(f2)
            cv2.waitKey(0)
            im_graySam = cv2.cvtColor(Sample_image, cv2.COLOR_BGR2GRAY)
            cv2.waitKey(0)
            (thresholdSam, im_bwSam) = cv2.threshold(im_graySam, 128, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
            thresholdSam = 127
            im_bwSam = cv2.threshold(im_graySam, thresholdSam, 255, cv2.THRESH_BINARY)[1]
            cv2.waitKey(0)

        #path = glob.glob("/images/*.jpg")
        #if len(path) > 0:
            #image = cv2.imread(path)
            #im_grayRef = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
           # cv2.waitKey(0)

        #Sample_path = glob.glob("/Sample_images/*.jpg")
        #if len(Sample_path) > 0:
            #Sample_image = cv2.imread(Sample_path)
            #im_graySam = cv2.cvtColor(Sample_image, cv2.COLOR_BGR2GRAY)
            #cv2.waitKey(0)

            #Sample_path.append(Sample_images)
        #def load_images_from_folder(folder):

            # print(path_in_str)

        #file1 = "images/*.jpg"
        #file2 = "Sample_images/*.jpg"
        #for f1 in file1:
            #image = cv2.imread(f1)
            #
            #
            #cv2.waitKey(0)
        #for f2 in file2:
            #Sample_image = cv2.imread(f2)
            #cv2.waitKey(0)
            #im_graySam = cv2.cvtColor(Sample_image, cv2.COLOR_BGR2GRAY)
            #cv2.waitKey(0)

        (score, diff) = structural_similarity(im_bwRef, im_bwSam, full=True)
        diff = (diff * 255).astype("uint8")
        cv2.waitKey(0)
        diff_per = print("Image similarity %ge =", score * 100)

        #difference = cv2.subtract(image, image2)

        result = not np.any(diff_per)  # if difference is all zeros it will return False

        if result is True:
            print("The images are the same")
        else:
            cv2.imwrite("result.jpg", diff_per)
            print("the images are different")

if __name__ == '__main__':

    root = tk.Tk()
    root.title('Image GUI')
    root.geometry('1280x960')

    #######################################Reference#########################################################

    os.makedirs('images', exist_ok=True)
    pw_left = tk.Frame(root, relief='ridge', borderwidth=4)
    pw_left.pack(side='left', anchor='nw')
    pw_right = tk.Frame(root, relief='ridge', borderwidth=4)
    pw_right.pack(side='left', anchor='nw')
    frame1 = tk.Frame(pw_left, bd=2, relief="ridge")
    frame1.pack()
    frame2 = tk.LabelFrame(pw_left, bd=2, relief="ridge", text='options')
    frame2.pack()
    frame3 = tk.LabelFrame(pw_right, bd=2, text='Uploaded images')
    frame3.pack(side='left')
    button = Button(root, frame3)
    label = tk.Label(frame1, text='File:')
    label.pack(side='left', padx=5, pady=5)
    file_name_label = tk.Label(frame1, text='-----not selected-----', width=20, bg='white')
    file_name_label.pack(side='left', padx=5, pady=5)
    select_button = tk.Button(frame1, text='select', command=lambda: button.on_click_select_button(file_name_label))
    select_button.pack(side='left', padx=5, pady=5)
    uploadButton = tk.Button(frame1, text='Upload',
                             command=lambda: button.on_click_upload_button())
    uploadButton.pack(side='left', padx=5, pady=5)

    # gray button
    grayscale_label = tk.Label(frame2, text='gray scale')
    grayscale_label.grid(row=0, column=0)
    gray_show = tk.Button(frame2, text='show',
                          command=lambda: button.on_click_show_button('gray'))
    gray_show.grid(row=0, column=1)

    # binary
    binary_label = tk.Label(frame2, text='binary')
    binary_label.grid(row=1, column=0)
    binary_show = tk.Button(frame2, text='show',
                            command=lambda: button.on_click_show_button('binary'))
    binary_show.grid(row=1, column=1)

    # gaussian blur
    gblur_label = tk.Label(frame2, text='Gaussian blur')
    gblur_label.grid(row=2, column=0)
    gblur_show = tk.Button(frame2, text='show',
                           command=lambda: button.on_click_show_button('gblur'))
    gblur_show.grid(row=2, column=1)

    # canny edge
    canny_label = tk.Label(frame2, text='canny edge')
    canny_label.grid(row=3, column=0)
    canny_show = tk.Button(frame2, text='show',
                           command=lambda: button.on_click_show_button('canny'))
    canny_show.grid(row=3, column=1)

    ##### save in image directory
    #Directory_label = tk.Label(frame2, text='Send to Directory')
    #Directory_label.grid(row=4, column=0)
    #Directory_show = tk.Button(frame2, text='Send',
                           #command=lambda: button.on_click_show_button('Send_to_Directory'))
   # Directory_show.grid(row=4, column=1)

######################################################Sample####################################################3333333#
    os.makedirs('Sample_images', exist_ok=True)

    pw_left = tk.Frame(root, relief='ridge', borderwidth=4)
    pw_left.pack(side='left', anchor='nw')
    pw_right = tk.Frame(root, relief='ridge', borderwidth=4)
    pw_right.pack(side='left', anchor='nw')
    frame4 = tk.Frame(pw_left, bd=2, relief="ridge")
    frame4.pack()
    frame5 = tk.LabelFrame(pw_left, bd=2, relief="ridge", text='options')
    frame5.pack()
    frame6 = tk.LabelFrame(pw_right, bd=2, text='Uploaded Sample images')
    frame6.pack(side='right')

    Sample_button = Sample_Button(root, frame6)
    Sample_label = tk.Label(frame4, text='Sample File:')
    Sample_label.pack(side='left', padx=5, pady=5)
    Sample_file_name_label = tk.Label(frame4, text='-----not selected-----', width=20, bg='white')
    Sample_file_name_label.pack(side='left', padx=5, pady=5)
    Sample_select_button = tk.Button(frame4, text='select',
                                     command=lambda: Sample_button.on_click_select_button_Sample(
                                         Sample_file_name_label))
    Sample_select_button.pack(side='left', padx=5, pady=5)
    Sample_uploadButton = tk.Button(frame4, text='Upload',
                                    command=lambda: Sample_button.on_click_upload_button_Sample())
    Sample_uploadButton.pack(side='left', padx=5, pady=5)

    Sample_grayscale_label = tk.Label(frame5, text='gray scale')
    Sample_grayscale_label.grid(row=0, column=0)
    Sample_gray_show = tk.Button(frame5, text='show',
                          command=lambda: Sample_button.on_click_show_button_Sample('Sample_gray'))
    Sample_gray_show.grid(row=0, column=1)

    # binary
    Sample_binary_label = tk.Label(frame5, text='binary')
    Sample_binary_label.grid(row=1, column=0)
    Sample_binary_show = tk.Button(frame5, text='show',
                            command=lambda: Sample_button.on_click_show_button_Sample('Sample_binary'))
    Sample_binary_show.grid(row=1, column=1)

    # gaussian blur
    Sample_gblur_label = tk.Label(frame5, text='Gaussian blur')
    Sample_gblur_label.grid(row=2, column=0)
    Sample_gblur_show = tk.Button(frame5, text='show',
                           command=lambda: Sample_button.on_click_show_button_Sample('Sample_gblur'))
    Sample_gblur_show.grid(row=2, column=1)

    # canny edge
    Sample_canny_label = tk.Label(frame5, text='canny edge')
    Sample_canny_label.grid(row=3, column=0)
    Sample_canny_show = tk.Button(frame5, text='show',
                           command=lambda: Sample_button.on_click_show_button_Sample('Sample_canny'))
    Sample_canny_show.grid(row=3, column=1)

    #Sample_Directory_label = tk.Label(frame5, text='Send to Directory')
    #Sample_Directory_label.grid(row=4, column=0)
    #Sample_Directory_show = tk.Button(frame5, text='Send',
                           #command=lambda: button.on_click_show_button('Send_to_Directory'))
    #Sample_Directory_show.grid(row=4, column=1)

#############################################merged########################################################
    os.makedirs('Differece_images', exist_ok=True)
    pw_left = tk.Frame(root, relief='ridge', borderwidth=4)
    pw_left.pack(side='left',anchor='nw')
    pw_left = tk.Frame(root, relief='ridge', borderwidth=4)
    pw_left.pack(side='left', anchor='nw')
    frame7 = tk.Frame(pw_left, bd=2, relief="ridge")
    frame7.pack()
    difference_button = Difference_Button(root, frame7)
    Difference_per_label = tk.Label(frame7, text='Difference percent', width=20, bg='white')
    Difference_per_label.pack(side='bottom', padx=5, pady=5)
    Difference_button = tk.Button(frame7, text='Difference', command=lambda: difference_button.on_click_diff_per_button(Difference_per_label))
    Difference_button.pack(side='bottom', padx=5, pady=5)
    root.mainloop()


gute Arbeit, weiter so


dude, you had 1.0.2 released...


[R/create_test_simulation_output.R:4:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/create_test_simulation_output.R#L4) *style:* **Lines should not be more than 80 characters.**
```r
#' @param island_ontogeny Boolean indicating if an ontogeny or no ontogeny scenario
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/create_test_simulation_output.R:14:20:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/create_test_simulation_output.R#L14) *warning:* **no visible global function definition for ‘is_island_ontogeny_input’**
```r
    testit::assert(is_island_ontogeny_input(island_ontogeny))
                   ^~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_area_params.R:16:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_area_params.R#L16) *style:* **functions should have cyclomatic complexity of less than 15, this has 23.**
```r
are_area_params <- function(area_params) {
^
```
[R/DAISIE_area_params.R:34:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_area_params.R#L34) *style:* **Lines should not be more than 80 characters.**
```r
#' @param proportional_peak_t value from 0 to 1 indicating where in the island's history the
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_area_params.R:39:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_area_params.R#L39) *style:* **Lines should not be more than 80 characters.**
```r
#' @return list of numerical values containing area parameters for island ontogeny
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_check_format.R:6:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_check_format.R#L6) *style:* **functions should have cyclomatic complexity of less than 15, this has 35.**
```r
are_rates <- function(x) {
^
```
[R/DAISIE_check_format.R:33:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_check_format.R#L33) *style:* **Lines should not be more than 80 characters.**
```r
  if (island_ontogeny != "const" && island_ontogeny != "linear" && island_ontogeny != "beta") return(FALSE)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_check_format.R:46:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_check_format.R#L46) *style:* **Lines should not be more than 80 characters.**
```r
  if (island_ontogeny != 0 && island_ontogeny != 1 && island_ontogeny != 2) return(FALSE)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_check_format.R:68:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_check_format.R#L68) *style:* **Lines should not be more than 80 characters.**
```r
    if (!"island_age" %in% names(simulation_outputs[[n_replicate]][[1]])) return(FALSE)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_check_format.R:70:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_check_format.R#L70) *style:* **Lines should not be more than 80 characters.**
```r
        !"not_present_type1" %in% names(simulation_outputs[[n_replicate]][[1]]))) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_check_format.R:73:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_check_format.R#L73) *style:* **Lines should not be more than 80 characters.**
```r
    if (!"stt_all" %in% names(simulation_outputs[[n_replicate]][[1]])) return(FALSE)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_check_format.R:75:7:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_check_format.R#L75) *style:* **Commented code should be removed.**
```r
    # if (!"branching_times" %in% names(simulation_outputs)) return(FALSE)
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_check_format.R:76:7:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_check_format.R#L76) *style:* **Commented code should be removed.**
```r
    # if (!"stac" %in% names(simulation_outputs)) return(FALSE)
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_check_format.R:77:7:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_check_format.R#L77) *style:* **Commented code should be removed.**
```r
    # if (!"missing_species" %in% names(simulation_outputs)) return(FALSE)
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_create_island.R:5:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_create_island.R#L5) *style:* **Lines should not be more than 80 characters.**
```r
#' @param island_spec matrix with species on island (state of system at each time point)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_create_island.R:7:75:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_create_island.R#L7) *style:* **Trailing whitespace is superfluous.**
```r
#' @param keep_final_state logical indicating if final state of simulation
                                                                          ^
```
[R/DAISIE_create_island.R:10:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_create_island.R#L10) *style:* **Lines should not be more than 80 characters.**
```r
#' @return list with the island information, composed stt table, branching times of extant
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_create_island.R:12:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_create_island.R#L12) *style:* **Variable and function name style should be snake_case.**
```r
DAISIE_create_island <- function(stt_table,
^~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_create_island.R:12:44:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_create_island.R#L12) *style:* **Trailing whitespace is superfluous.**
```r
DAISIE_create_island <- function(stt_table,
                                           ^
```
[R/DAISIE_create_island.R:13:44:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_create_island.R#L13) *style:* **Trailing whitespace is superfluous.**
```r
                                 totaltime,
                                           ^
```
[R/DAISIE_create_island.R:14:46:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_create_island.R#L14) *style:* **Trailing whitespace is superfluous.**
```r
                                 island_spec,
                                             ^
```
[R/DAISIE_create_island.R:17:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_create_island.R#L17) *style:* **Trailing whitespace is superfluous.**
```r

^~
```
[R/DAISIE_create_island.R:18:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_create_island.R#L18) *style:* **Lines should not be more than 80 characters.**
```r
  ### if there are no species on the island branching_times = island_age, stac = 0, missing_species = 0
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_create_island.R:18:104:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_create_island.R#L18) *style:* **Trailing whitespace is superfluous.**
```r
  ### if there are no species on the island branching_times = island_age, stac = 0, missing_species = 0
                                                                                ^
```
[R/DAISIE_create_island.R:19:27:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_create_island.R#L19) *style:* **Commas should always have a space after.**
```r
  if (length(island_spec[,1]) == 0) {
                          ^
```
[R/DAISIE_create_island.R:20:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_create_island.R#L20) *style:* **Trailing whitespace is superfluous.**
```r

^~
```
[R/DAISIE_create_island.R:21:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_create_island.R#L21) *style:* **Trailing whitespace is superfluous.**
```r

^~~~
```
[R/DAISIE_create_island.R:41:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_create_island.R#L41) *style:* **Trailing whitespace is superfluous.**
```r

^~~~
```
[R/DAISIE_create_island.R:43:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_create_island.R#L43) *style:* **Trailing whitespace is superfluous.**
```r

^~~~
```
[R/DAISIE_create_island.R:45:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_create_island.R#L45) *style:* **Lines should not be more than 80 characters.**
```r
    island_spec[, "branching time (BP)"] <- totaltime - as.numeric(island_spec[, "branching time (BP)"])
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_create_island.R:46:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_create_island.R#L46) *style:* **Lines should not be more than 80 characters.**
```r
    island_spec[, "Colonisation time (BP)"] <- totaltime - as.numeric(island_spec[, "Colonisation time (BP)"])
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_create_island.R:47:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_create_island.R#L47) *style:* **Trailing whitespace is superfluous.**
```r

^~~~
```
[R/DAISIE_create_island.R:54:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_create_island.R#L54) *style:* **Trailing whitespace is superfluous.**
```r

^~~~~~
```
[R/DAISIE_create_island.R:56:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_create_island.R#L56) *style:* **Lines should not be more than 80 characters.**
```r
      colonists_present <- sort(as.numeric(unique(island_spec[, 'Mainland Ancestor'])))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_create_island.R:56:65:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_create_island.R#L56) *style:* **Only use double-quotes.**
```r
      colonists_present <- sort(as.numeric(unique(island_spec[, 'Mainland Ancestor'])))
                                                                ^~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_create_island.R:57:60:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_create_island.R#L57) *style:* **Trailing whitespace is superfluous.**
```r
      number_colonists_present <- length(colonists_present)
                                                           ^
```
[R/DAISIE_create_island.R:58:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_create_island.R#L58) *style:* **Trailing whitespace is superfluous.**
```r

^~~~~~
```
[R/DAISIE_create_island.R:59:35:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_create_island.R#L59) *style:* **Trailing whitespace is superfluous.**
```r
      island_clades_info <- list()
                                  ^~
```
[R/DAISIE_create_island.R:61:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_create_island.R#L61) *style:* **Lines should not be more than 80 characters.**
```r
        subset_island <- island_spec[which(island_spec[, 'Mainland Ancestor'] == colonists_present[i]),]
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_create_island.R:61:58:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_create_island.R#L61) *style:* **Only use double-quotes.**
```r
        subset_island <- island_spec[which(island_spec[, 'Mainland Ancestor'] == colonists_present[i]),]
                                                         ^~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_create_island.R:61:104:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_create_island.R#L61) *style:* **Commas should always have a space after.**
```r
        subset_island <- island_spec[which(island_spec[, 'Mainland Ancestor'] == colonists_present[i]),]
                                                                                ^
```
[R/DAISIE_create_island.R:61:105:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_create_island.R#L61) *style:* **Trailing whitespace is superfluous.**
```r
        subset_island <- island_spec[which(island_spec[, 'Mainland Ancestor'] == colonists_present[i]),]
                                                                                ^
```
[R/DAISIE_create_island.R:62:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_create_island.R#L62) *style:* **Trailing whitespace is superfluous.**
```r

^~~~~~~~
```
[R/DAISIE_create_island.R:63:37:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_create_island.R#L63) *style:* **Only use double-quotes.**
```r
        if (class(subset_island) != 'matrix') {
                                    ^~~~~~~~
```
[R/DAISIE_create_island.R:67:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_create_island.R#L67) *style:* **Trailing whitespace is superfluous.**
```r

^~~~~~~~
```
[R/DAISIE_create_island.R:69:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_create_island.R#L69) *style:* **Lines should not be more than 80 characters.**
```r
                                                      island_spec = subset_island,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_create_island.R:71:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_create_island.R#L71) *style:* **Lines should not be more than 80 characters.**
```r
                                                      keep_final_state = keep_final_state)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_create_island.R:77:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_create_island.R#L77) *style:* **Trailing whitespace is superfluous.**
```r

^~~~~~~~
```
[R/DAISIE_create_island.R:80:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_create_island.R#L80) *style:* **Lines should not be more than 80 characters.**
```r
                       taxon_list = island_clades_info, island_spec = island_spec)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_create_island.R:84:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_create_island.R#L84) *style:* **Trailing whitespace is superfluous.**
```r

^~
```
[R/DAISIE_data.R:2:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_data.R#L2) *style:* **Lines should not be more than 80 characters.**
```r
#' @title Colonization and branching times of 8 terrestrial avifaunal clades in list
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_data.R:7:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_data.R#L7) *style:* **Lines should not be more than 80 characters.**
```r
#' #' @description A list containing the colonization and branching times of the terrestrial
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_data.R:12:34:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_data.R#L12) *style:* **Trailing whitespace is superfluous.**
```r
#' the following elements.\cr \cr
                                 ^
```
[R/DAISIE_data.R:47:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_data.R#L47) *style:* **Lines should not be more than 80 characters.**
```r
#' @title Colonization and branching times of 8 terrestrial avifaunal clades in list
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_data.R:52:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_data.R#L52) *style:* **Lines should not be more than 80 characters.**
```r
#' @description A list containing the colonization and branching times of the terrestrial
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_data.R:92:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_data.R#L92) *style:* **Lines should not be more than 80 characters.**
```r
#' @title Colonization and branching times of 8 terrestrial avifaunal clades in table
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_data.R:96:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_data.R#L96) *style:* **Lines should not be more than 80 characters.**
```r
#' @description A table containing the colonization and branching times of the terrestrial
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_data.R:103:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_data.R#L103) *style:* **Lines should not be more than 80 characters.**
```r
#' * Non_endemic: for cases where both island and non-island populations of the species have been sampled) \cr
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_data.R:104:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_data.R#L104) *style:* **Lines should not be more than 80 characters.**
```r
#' * Non_endemic_MaxAge: for cases where island population of the species has not
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_data.R:124:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_data.R#L124) *style:* **Lines should not be more than 80 characters.**
```r
#' @title 1000 islands in RAW format simulated with the ML parameters of the CR model
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_data.R:125:27:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_data.R#L125) *style:* **Trailing whitespace is superfluous.**
```r
#' for the Galapagos data.
                          ^
```
[R/DAISIE_data.R:127:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_data.R#L127) *style:* **Lines should not be more than 80 characters.**
```r
#' @description Each simulated dataset is an element of the list, which can be called using
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_data.R:158:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_data.R#L158) *style:* **Lines should not be more than 80 characters.**
```r
#' @title 1000 islands in DAISIE format simulated with the ML parameters of the CR
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_data.R:161:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_data.R#L161) *style:* **Lines should not be more than 80 characters.**
```r
#' @description Each simulated dataset is an element of the list, which can be called using
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_data.R:165:42:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_data.R#L165) *style:* **Trailing whitespace is superfluous.**
```r
#' \code{$island_age} - the island age\cr
                                         ^
```
[R/DAISIE_data.R:197:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_data.R#L197) *style:* **Lines should not be more than 80 characters.**
```r
#' @description Each simulated dataset is an element of the list, which can be called using
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_data.R:247:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_data.R#L247) *style:* **Lines should not be more than 80 characters.**
```r
#' @description A list containing the colonization and branching times of the terrestrial
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_data.R:256:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_data.R#L256) *style:* **Lines should not be more than 80 characters.**
```r
#' The following elements of the list each contains information on a single colonist lineage
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_data.R:270:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_data.R#L270) *style:* **Lines should not be more than 80 characters.**
```r
#' #' \code{$missing_species} - number of island species that were not sampled for
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_data.R:286:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_data.R#L286) *style:* **Lines should not be more than 80 characters.**
```r
#' format, accepted by DAISIE_ML, DAISIE_SR_ML, DAISIE_loglik_all and DAISIE_SR_loglik_all
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_data.R:290:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_data.R#L290) *style:* **Lines should not be more than 80 characters.**
```r
#' #' @description A list containing the colonization and branching times of the
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_data.R:290:81:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_data.R#L290) *style:* **Trailing whitespace is superfluous.**
```r
#' #' @description A list containing the colonization and branching times of the
                                                                                ^
```
[R/DAISIE_data.R:295:34:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_data.R#L295) *style:* **Trailing whitespace is superfluous.**
```r
#' the following elements.\cr \cr
                                 ^
```
[R/DAISIE_data.R:321:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_data.R#L321) *style:* **Lines should not be more than 80 characters.**
```r
#' @seealso \code{\link{DAISIE_dataprep}}, \code{\link{DAISIE_ML}}, \code{\link{DAISIE_SR_ML}}
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_data.R:322:77:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_data.R#L322) *style:* **Trailing whitespace is superfluous.**
```r
#' @source Hauffe, T., D. Delicado, R.S. Etienne and L. Valente (submitted).
                                                                            ^
```
[R/DAISIE_dataprep.R:2:3:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L2) *style:* **Trailing whitespace is superfluous.**
```r
#'
  ^
```
[R/DAISIE_dataprep.R:7:3:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L7) *style:* **Trailing whitespace is superfluous.**
```r
#'
  ^
```
[R/DAISIE_dataprep.R:10:3:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L10) *style:* **Trailing whitespace is superfluous.**
```r
#'
  ^
```
[R/DAISIE_dataprep.R:86:3:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L86) *style:* **Trailing whitespace is superfluous.**
```r
#'
  ^~
```
[R/DAISIE_dataprep.R:87:3:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L87) *style:* **Trailing whitespace is superfluous.**
```r
#'
  ^
```
[R/DAISIE_dataprep.R:88:3:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L88) *style:* **Trailing whitespace is superfluous.**
```r
#'
  ^
```
[R/DAISIE_dataprep.R:89:3:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L89) *style:* **Trailing whitespace is superfluous.**
```r
#'
  ^
```
[R/DAISIE_dataprep.R:90:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L90) *style:* **Lines should not be more than 80 characters.**
```r
#' ### Create Galapagos data object where all taxa have the same macroevolutionary process
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_dataprep.R:91:3:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L91) *style:* **Trailing whitespace is superfluous.**
```r
#'
  ^
```
[R/DAISIE_dataprep.R:98:3:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L98) *style:* **Trailing whitespace is superfluous.**
```r
#'
  ^
```
[R/DAISIE_dataprep.R:100:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L100) *style:* **Lines should not be more than 80 characters.**
```r
#' # for the Darwin's finches. One process applies to type 1 species (all species
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_dataprep.R:100:82:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L100) *style:* **Trailing whitespace is superfluous.**
```r
#' # for the Darwin's finches. One process applies to type 1 species (all species
                                                                                ^
```
[R/DAISIE_dataprep.R:101:79:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L101) *style:* **Trailing whitespace is superfluous.**
```r
#' # except for Darwin's finches) and the other applies only to type 2 species
                                                                              ^
```
[R/DAISIE_dataprep.R:104:3:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L104) *style:* **Trailing whitespace is superfluous.**
```r
#'
  ^
```
[R/DAISIE_dataprep.R:113:3:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L113) *style:* **Trailing whitespace is superfluous.**
```r
#'
  ^
```
[R/DAISIE_dataprep.R:114:80:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L114) *style:* **Trailing whitespace is superfluous.**
```r
#' ### Create Galapagos data object with a distinct macroevolutionary processes
                                                                               ^
```
[R/DAISIE_dataprep.R:115:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L115) *style:* **Lines should not be more than 80 characters.**
```r
#' # for the Darwin's finches. One process applies to type 1 species (all species
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_dataprep.R:116:79:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L116) *style:* **Trailing whitespace is superfluous.**
```r
#' # except for Darwin's finches) and the other applies only to type 2 species
                                                                              ^
```
[R/DAISIE_dataprep.R:117:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L117) *style:* **Lines should not be more than 80 characters.**
```r
#' # (Darwin's finches). Set fraction of potential colonists of type 2 to be 0.163.
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_dataprep.R:118:3:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L118) *style:* **Trailing whitespace is superfluous.**
```r
#'
  ^
```
[R/DAISIE_dataprep.R:128:3:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L128) *style:* **Trailing whitespace is superfluous.**
```r
#'
  ^
```
[R/DAISIE_dataprep.R:130:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L130) *style:* **functions should have cyclomatic complexity of less than 15, this has 22.**
```r
DAISIE_dataprep = function(datatable,island_age,M,number_clade_types = 1,list_type2_clades = NA, prop_type2_pool = "proportional",epss = 1E-5)
^
```
[R/DAISIE_dataprep.R:130:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L130) *style:* **Lines should not be more than 80 characters.**
```r
DAISIE_dataprep = function(datatable,island_age,M,number_clade_types = 1,list_type2_clades = NA, prop_type2_pool = "proportional",epss = 1E-5)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_dataprep.R:130:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L130) *style:* **Variable and function name style should be snake_case.**
```r
DAISIE_dataprep = function(datatable,island_age,M,number_clade_types = 1,list_type2_clades = NA, prop_type2_pool = "proportional",epss = 1E-5)
^~~~~~~~~~~~~~~
```
[R/DAISIE_dataprep.R:130:17:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L130) *style:* **Use <-, not =, for assignment.**
```r
DAISIE_dataprep = function(datatable,island_age,M,number_clade_types = 1,list_type2_clades = NA, prop_type2_pool = "proportional",epss = 1E-5)
                ^
```
[R/DAISIE_dataprep.R:130:38:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L130) *style:* **Commas should always have a space after.**
```r
DAISIE_dataprep = function(datatable,island_age,M,number_clade_types = 1,list_type2_clades = NA, prop_type2_pool = "proportional",epss = 1E-5)
                                     ^
```
[R/DAISIE_dataprep.R:130:49:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L130) *style:* **Commas should always have a space after.**
```r
DAISIE_dataprep = function(datatable,island_age,M,number_clade_types = 1,list_type2_clades = NA, prop_type2_pool = "proportional",epss = 1E-5)
                                                ^
```
[R/DAISIE_dataprep.R:130:49:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L130) *style:* **Variable and function name style should be snake_case.**
```r
DAISIE_dataprep = function(datatable,island_age,M,number_clade_types = 1,list_type2_clades = NA, prop_type2_pool = "proportional",epss = 1E-5)
                                                ^
```
[R/DAISIE_dataprep.R:130:51:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L130) *style:* **Commas should always have a space after.**
```r
DAISIE_dataprep = function(datatable,island_age,M,number_clade_types = 1,list_type2_clades = NA, prop_type2_pool = "proportional",epss = 1E-5)
                                                  ^
```
[R/DAISIE_dataprep.R:130:74:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L130) *style:* **Commas should always have a space after.**
```r
DAISIE_dataprep = function(datatable,island_age,M,number_clade_types = 1,list_type2_clades = NA, prop_type2_pool = "proportional",epss = 1E-5)
                                                                         ^
```
[R/DAISIE_dataprep.R:130:131:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L130) *style:* **Commas should always have a space after.**
```r
DAISIE_dataprep = function(datatable,island_age,M,number_clade_types = 1,list_type2_clades = NA, prop_type2_pool = "proportional",epss = 1E-5)
                                                                                ^
```
[R/DAISIE_dataprep.R:131:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L131) *style:* **Opening curly braces should never go on their own line and should always be followed by a new line.**
```r
{
^
```
[R/DAISIE_dataprep.R:132:24:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L132) *style:* **Use <-, not =, for assignment.**
```r
  number_colonisations = nrow(datatable)
                       ^
```
[R/DAISIE_dataprep.R:133:12:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L133) *style:* **Use <-, not =, for assignment.**
```r
  datalist = list()
           ^
```
[R/DAISIE_dataprep.R:134:13:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L134) *style:* **Variable and function name style should be snake_case.**
```r
  datatable$Missing_species<-as.numeric(as.character(datatable$Missing_species))
            ^~~~~~~~~~~~~~~
```
[R/DAISIE_dataprep.R:134:28:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L134) *style:* **Put spaces around all infix operators.**
```r
  datatable$Missing_species<-as.numeric(as.character(datatable$Missing_species))
                          ~^~~
```
[R/DAISIE_dataprep.R:135:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L135) *style:* **Trailing whitespace is superfluous.**
```r

^~
```
[R/DAISIE_dataprep.R:136:5:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L136) *style:* **Place a space before left parenthesis, except in a function call.**
```r
  if(number_clade_types == 1)
    ^
```
[R/DAISIE_dataprep.R:137:3:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L137) *style:* **Opening curly braces should never go on their own line and should always be followed by a new line.**
```r
  {
  ^
```
[R/DAISIE_dataprep.R:138:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L138) *style:* **Lines should not be more than 80 characters.**
```r
    datalist[[1]] = list(island_age=island_age,not_present=(M - number_colonisations))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_dataprep.R:138:19:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L138) *style:* **Use <-, not =, for assignment.**
```r
    datalist[[1]] = list(island_age=island_age,not_present=(M - number_colonisations))
                  ^
```
[R/DAISIE_dataprep.R:138:36:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L138) *style:* **Put spaces around all infix operators.**
```r
    datalist[[1]] = list(island_age=island_age,not_present=(M - number_colonisations))
                                  ~^~
```
[R/DAISIE_dataprep.R:138:48:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L138) *style:* **Commas should always have a space after.**
```r
    datalist[[1]] = list(island_age=island_age,not_present=(M - number_colonisations))
                                               ^
```
[R/DAISIE_dataprep.R:138:59:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L138) *style:* **Put spaces around all infix operators.**
```r
    datalist[[1]] = list(island_age=island_age,not_present=(M - number_colonisations))
                                                         ~^~
```
[R/DAISIE_dataprep.R:138:60:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L138) *style:* **Place a space before left parenthesis, except in a function call.**
```r
    datalist[[1]] = list(island_age=island_age,not_present=(M - number_colonisations))
                                                           ^
```
[R/DAISIE_dataprep.R:140:5:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L140) *style:* **Place a space before left parenthesis, except in a function call.**
```r
  if(number_clade_types == 2)
    ^
```
[R/DAISIE_dataprep.R:141:3:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L141) *style:* **Opening curly braces should never go on their own line and should always be followed by a new line.**
```r
  {
  ^
```
[R/DAISIE_dataprep.R:142:32:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L142) *style:* **Use <-, not =, for assignment.**
```r
    number_type2_colonisations = length(list_type2_clades)
                               ^
```
[R/DAISIE_dataprep.R:143:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L143) *style:* **Lines should not be more than 80 characters.**
```r
    number_type1_colonisations = number_colonisations - number_type2_colonisations
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_dataprep.R:143:32:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L143) *style:* **Use <-, not =, for assignment.**
```r
    number_type1_colonisations = number_colonisations - number_type2_colonisations
                               ^
```
[R/DAISIE_dataprep.R:145:5:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L145) *style:* **Opening curly braces should never go on their own line and should always be followed by a new line.**
```r
    {
    ^
```
[R/DAISIE_dataprep.R:146:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L146) *style:* **Lines should not be more than 80 characters.**
```r
      not_present_type1 = DDD::roundn((M/number_colonisations) * number_type1_colonisations) - number_type1_colonisations
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_dataprep.R:146:25:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L146) *style:* **Use <-, not =, for assignment.**
```r
      not_present_type1 = DDD::roundn((M/number_colonisations) * number_type1_colonisations) - number_type1_colonisations
                        ^
```
[R/DAISIE_dataprep.R:146:41:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L146) *style:* **Put spaces around all infix operators.**
```r
      not_present_type1 = DDD::roundn((M/number_colonisations) * number_type1_colonisations) - number_type1_colonisations
                                       ~^~
```
[R/DAISIE_dataprep.R:147:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L147) *style:* **Lines should not be more than 80 characters.**
```r
      not_present_type2 = DDD::roundn((M/number_colonisations) * number_type2_colonisations) - number_type2_colonisations
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_dataprep.R:147:25:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L147) *style:* **Use <-, not =, for assignment.**
```r
      not_present_type2 = DDD::roundn((M/number_colonisations) * number_type2_colonisations) - number_type2_colonisations
                        ^
```
[R/DAISIE_dataprep.R:147:41:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L147) *style:* **Put spaces around all infix operators.**
```r
      not_present_type2 = DDD::roundn((M/number_colonisations) * number_type2_colonisations) - number_type2_colonisations
                                       ~^~
```
[R/DAISIE_dataprep.R:149:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L149) *style:* **Lines should not be more than 80 characters.**
```r
      not_present_type1 = DDD::roundn(M * (1 - prop_type2_pool)) - number_type1_colonisations
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_dataprep.R:149:25:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L149) *style:* **Use <-, not =, for assignment.**
```r
      not_present_type1 = DDD::roundn(M * (1 - prop_type2_pool)) - number_type1_colonisations
                        ^
```
[R/DAISIE_dataprep.R:150:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L150) *style:* **Lines should not be more than 80 characters.**
```r
      not_present_type2 = DDD::roundn(M * prop_type2_pool) - number_type2_colonisations
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_dataprep.R:150:25:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L150) *style:* **Use <-, not =, for assignment.**
```r
      not_present_type2 = DDD::roundn(M * prop_type2_pool) - number_type2_colonisations
                        ^
```
[R/DAISIE_dataprep.R:152:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L152) *style:* **Lines should not be more than 80 characters.**
```r
    datalist[[1]] = list(island_age = island_age, not_present_type1 = not_present_type1, not_present_type2 = not_present_type2)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_dataprep.R:152:19:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L152) *style:* **Use <-, not =, for assignment.**
```r
    datalist[[1]] = list(island_age = island_age, not_present_type1 = not_present_type1, not_present_type2 = not_present_type2)
                  ^
```
[R/DAISIE_dataprep.R:154:13:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L154) *warning:* **Avoid 1:nrow(...) expressions, use seq_len.**
```r
  for (i in 1:nrow(datatable))
            ^
```
[R/DAISIE_dataprep.R:155:3:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L155) *style:* **Opening curly braces should never go on their own line and should always be followed by a new line.**
```r
  {
  ^
```
[R/DAISIE_dataprep.R:156:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L156) *style:* **Lines should not be more than 80 characters.**
```r
    datalist[[i + 1]] = list(colonist_name = as.character(datatable[i,"Clade_name"]),branching_times = NA,stac = NA,missing_species = datatable[i,"Missing_species"], type1or2 = 1)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_dataprep.R:156:23:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L156) *style:* **Use <-, not =, for assignment.**
```r
    datalist[[i + 1]] = list(colonist_name = as.character(datatable[i,"Clade_name"]),branching_times = NA,stac = NA,missing_species = datatable[i,"Missing_species"], type1or2 = 1)
                      ^
```
[R/DAISIE_dataprep.R:156:71:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L156) *style:* **Commas should always have a space after.**
```r
    datalist[[i + 1]] = list(colonist_name = as.character(datatable[i,"Clade_name"]),branching_times = NA,stac = NA,missing_species = datatable[i,"Missing_species"], type1or2 = 1)
                                                                      ^
```
[R/DAISIE_dataprep.R:156:86:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L156) *style:* **Commas should always have a space after.**
```r
    datalist[[i + 1]] = list(colonist_name = as.character(datatable[i,"Clade_name"]),branching_times = NA,stac = NA,missing_species = datatable[i,"Missing_species"], type1or2 = 1)
                                                                                ^
```
[R/DAISIE_dataprep.R:156:107:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L156) *style:* **Commas should always have a space after.**
```r
    datalist[[i + 1]] = list(colonist_name = as.character(datatable[i,"Clade_name"]),branching_times = NA,stac = NA,missing_species = datatable[i,"Missing_species"], type1or2 = 1)
                                                                                ^
```
[R/DAISIE_dataprep.R:156:117:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L156) *style:* **Commas should always have a space after.**
```r
    datalist[[i + 1]] = list(colonist_name = as.character(datatable[i,"Clade_name"]),branching_times = NA,stac = NA,missing_species = datatable[i,"Missing_species"], type1or2 = 1)
                                                                                ^
```
[R/DAISIE_dataprep.R:156:147:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L156) *style:* **Commas should always have a space after.**
```r
    datalist[[i + 1]] = list(colonist_name = as.character(datatable[i,"Clade_name"]),branching_times = NA,stac = NA,missing_species = datatable[i,"Missing_species"], type1or2 = 1)
                                                                                ^
```
[R/DAISIE_dataprep.R:157:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L157) *style:* **Lines should not be more than 80 characters.**
```r
    the_brts = rev(sort(as.numeric(unlist(strsplit(as.character(datatable[i,"Branching_times"]),split = ",")))))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_dataprep.R:157:14:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L157) *style:* **Use <-, not =, for assignment.**
```r
    the_brts = rev(sort(as.numeric(unlist(strsplit(as.character(datatable[i,"Branching_times"]),split = ",")))))
             ^
```
[R/DAISIE_dataprep.R:157:77:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L157) *style:* **Commas should always have a space after.**
```r
    the_brts = rev(sort(as.numeric(unlist(strsplit(as.character(datatable[i,"Branching_times"]),split = ",")))))
                                                                            ^
```
[R/DAISIE_dataprep.R:157:97:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L157) *style:* **Commas should always have a space after.**
```r
    the_brts = rev(sort(as.numeric(unlist(strsplit(as.character(datatable[i,"Branching_times"]),split = ",")))))
                                                                                ^
```
[R/DAISIE_dataprep.R:158:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L158) *style:* **Trailing whitespace is superfluous.**
```r

^~~~
```
[R/DAISIE_dataprep.R:159:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L159) *style:* **Lines should not be more than 80 characters.**
```r
    if(max(the_brts)>island_age){print(paste('Colonisation time of ',max(the_brts),' for ',as.character(datatable[i,"Clade_name"]),' is older than island age',sep=''))}
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_dataprep.R:159:7:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L159) *style:* **Place a space before left parenthesis, except in a function call.**
```r
    if(max(the_brts)>island_age){print(paste('Colonisation time of ',max(the_brts),' for ',as.character(datatable[i,"Clade_name"]),' is older than island age',sep=''))}
      ^
```
[R/DAISIE_dataprep.R:159:21:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L159) *style:* **Put spaces around all infix operators.**
```r
    if(max(the_brts)>island_age){print(paste('Colonisation time of ',max(the_brts),' for ',as.character(datatable[i,"Clade_name"]),' is older than island age',sep=''))}
                   ~^~
```
[R/DAISIE_dataprep.R:159:32:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L159) *style:* **There should be a space between right parenthesis and an opening curly brace.**
```r
    if(max(the_brts)>island_age){print(paste('Colonisation time of ',max(the_brts),' for ',as.character(datatable[i,"Clade_name"]),' is older than island age',sep=''))}
                               ^~
```
[R/DAISIE_dataprep.R:159:33:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L159) *style:* **Opening curly braces should never go on their own line and should always be followed by a new line.**
```r
    if(max(the_brts)>island_age){print(paste('Colonisation time of ',max(the_brts),' for ',as.character(datatable[i,"Clade_name"]),' is older than island age',sep=''))}
                                ^
```
[R/DAISIE_dataprep.R:159:46:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L159) *style:* **Only use double-quotes.**
```r
    if(max(the_brts)>island_age){print(paste('Colonisation time of ',max(the_brts),' for ',as.character(datatable[i,"Clade_name"]),' is older than island age',sep=''))}
                                             ^~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_dataprep.R:159:70:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L159) *style:* **Commas should always have a space after.**
```r
    if(max(the_brts)>island_age){print(paste('Colonisation time of ',max(the_brts),' for ',as.character(datatable[i,"Clade_name"]),' is older than island age',sep=''))}
                                                                     ^
```
[R/DAISIE_dataprep.R:159:84:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L159) *style:* **Commas should always have a space after.**
```r
    if(max(the_brts)>island_age){print(paste('Colonisation time of ',max(the_brts),' for ',as.character(datatable[i,"Clade_name"]),' is older than island age',sep=''))}
                                                                                ^
```
[R/DAISIE_dataprep.R:159:84:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L159) *style:* **Only use double-quotes.**
```r
    if(max(the_brts)>island_age){print(paste('Colonisation time of ',max(the_brts),' for ',as.character(datatable[i,"Clade_name"]),' is older than island age',sep=''))}
                                                                                ^~~~~~~
```
[R/DAISIE_dataprep.R:159:92:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L159) *style:* **Commas should always have a space after.**
```r
    if(max(the_brts)>island_age){print(paste('Colonisation time of ',max(the_brts),' for ',as.character(datatable[i,"Clade_name"]),' is older than island age',sep=''))}
                                                                                ^
```
[R/DAISIE_dataprep.R:159:117:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L159) *style:* **Commas should always have a space after.**
```r
    if(max(the_brts)>island_age){print(paste('Colonisation time of ',max(the_brts),' for ',as.character(datatable[i,"Clade_name"]),' is older than island age',sep=''))}
                                                                                ^
```
[R/DAISIE_dataprep.R:159:132:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L159) *style:* **Commas should always have a space after.**
```r
    if(max(the_brts)>island_age){print(paste('Colonisation time of ',max(the_brts),' for ',as.character(datatable[i,"Clade_name"]),' is older than island age',sep=''))}
                                                                                ^
```
[R/DAISIE_dataprep.R:159:132:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L159) *style:* **Only use double-quotes.**
```r
    if(max(the_brts)>island_age){print(paste('Colonisation time of ',max(the_brts),' for ',as.character(datatable[i,"Clade_name"]),' is older than island age',sep=''))}
                                                                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_dataprep.R:159:160:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L159) *style:* **Commas should always have a space after.**
```r
    if(max(the_brts)>island_age){print(paste('Colonisation time of ',max(the_brts),' for ',as.character(datatable[i,"Clade_name"]),' is older than island age',sep=''))}
                                                                                ^
```
[R/DAISIE_dataprep.R:159:163:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L159) *style:* **Put spaces around all infix operators.**
```r
    if(max(the_brts)>island_age){print(paste('Colonisation time of ',max(the_brts),' for ',as.character(datatable[i,"Clade_name"]),' is older than island age',sep=''))}
                                                                                ~^~
```
[R/DAISIE_dataprep.R:159:164:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L159) *style:* **Only use double-quotes.**
```r
    if(max(the_brts)>island_age){print(paste('Colonisation time of ',max(the_brts),' for ',as.character(datatable[i,"Clade_name"]),' is older than island age',sep=''))}
                                                                                ^~
```
[R/DAISIE_dataprep.R:159:168:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L159) *style:* **Closing curly-braces should always be on their own line, unless it's followed by an else.**
```r
    if(max(the_brts)>island_age){print(paste('Colonisation time of ',max(the_brts),' for ',as.character(datatable[i,"Clade_name"]),' is older than island age',sep=''))}
                                                                                ^
```
[R/DAISIE_dataprep.R:160:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L160) *style:* **Trailing whitespace is superfluous.**
```r

^~~~
```
[R/DAISIE_dataprep.R:161:7:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L161) *style:* **Place a space before left parenthesis, except in a function call.**
```r
    if(length(the_brts) == 1)
      ^
```
[R/DAISIE_dataprep.R:161:30:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L161) *style:* **Trailing whitespace is superfluous.**
```r
    if(length(the_brts) == 1)
                             ^
```
[R/DAISIE_dataprep.R:162:5:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L162) *style:* **Opening curly braces should never go on their own line and should always be followed by a new line.**
```r
    {
    ^
```
[R/DAISIE_dataprep.R:163:1:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L163) *style:* **Lines should not be more than 80 characters.**
```r
      datalist[[i + 1]]$branching_times = c(island_age,min(the_brts,island_age - epss))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/DAISIE_dataprep.R:163:41:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L163) *style:* **Use <-, not =, for assignment.**
```r
      datalist[[i + 1]]$branching_times = c(island_age,min(the_brts,island_age - epss))
                                        ^
```
[R/DAISIE_dataprep.R:163:56:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L163) *style:* **Commas should always have a space after.**
```r
      datalist[[i + 1]]$branching_times = c(island_age,min(the_brts,island_age - epss))
                                                       ^
```
[R/DAISIE_dataprep.R:163:69:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L163) *style:* **Commas should always have a space after.**
```r
      datalist[[i + 1]]$branching_times = c(island_age,min(the_brts,island_age - epss))
                                                                    ^
```
[R/DAISIE_dataprep.R:165:7:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L165) *style:* **Place a space before left parenthesis, except in a function call.**
```r
    if(length(the_brts) > 1)
      ^
```
[R/DAISIE_dataprep.R:165:29:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L165) *style:* **Trailing whitespace is superfluous.**
```r
    if(length(the_brts) > 1)
                            ^~
```
[R/DAISIE_dataprep.R:166:5:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L166) *style:* **Opening curly braces should never go on their own line and should always be followed by a new line.**
```r
    {
    ^
```
[R/DAISIE_dataprep.R:167:41:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L167) *style:* **Use <-, not =, for assignment.**
```r
      datalist[[i + 1]]$branching_times = c(island_age,the_brts)
                                        ^
```
[R/DAISIE_dataprep.R:167:56:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L167) *style:* **Commas should always have a space after.**
```r
      datalist[[i + 1]]$branching_times = c(island_age,the_brts)
                                                       ^
```
[R/DAISIE_dataprep.R:169:7:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L169) *style:* **Place a space before left parenthesis, except in a function call.**
```r
    if(datatable[i,"Status"] == "Non_endemic_MaxAge")
      ^
```
[R/DAISIE_dataprep.R:169:20:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L169) *style:* **Commas should always have a space after.**
```r
    if(datatable[i,"Status"] == "Non_endemic_MaxAge")
                   ^
```
[R/DAISIE_dataprep.R:170:5:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L170) *style:* **Opening curly braces should never go on their own line and should always be followed by a new line.**
```r
    {
    ^
```
[R/DAISIE_dataprep.R:171:30:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L171) *style:* **Use <-, not =, for assignment.**
```r
      datalist[[i + 1]]$stac = 1
                             ^
```
[R/DAISIE_dataprep.R:173:7:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L173) *style:* **Place a space before left parenthesis, except in a function call.**
```r
    if(datatable[i,"Status"] == "Endemic")
      ^
```
[R/DAISIE_dataprep.R:173:20:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L173) *style:* **Commas should always have a space after.**
```r
    if(datatable[i,"Status"] == "Endemic")
                   ^
```
[R/DAISIE_dataprep.R:174:5:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L174) *style:* **Opening curly braces should never go on their own line and should always be followed by a new line.**
```r
    {
    ^
```
[R/DAISIE_dataprep.R:175:30:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L175) *style:* **Use <-, not =, for assignment.**
```r
      datalist[[i + 1]]$stac = 2
                             ^
```
[R/DAISIE_dataprep.R:176:9:](https://github.com/rsetienne/DAISIE/blob/32be5ae7c237acc0f77127967446243d10ee89cd/R/DAISIE_dataprep.R#L176) *style:* **Place a space before left parenthesis, except in a function call.**
```r
      if(max(the_brts)>island_age){
        ^
```


![](https://github.trello.services/images/mini-trello-icon.png) [Fix bug: loading cube doesn't show up on mobile.](https://trello.com/c/qMrwe2Hg/9-fix-bug-loading-cube-doesnt-show-up-on-mobile)


Changed config to working with CNC Shield v4 (Arduino Nano)


[STUDY KING](https://studyking.co.in/) IS THE BEST INSTITUTE EVER


@JuliaRegistrator register()


Error while trying to register: "Tag with name `0.3.1` already exists and points to a different commit"


Thanks Jeffrey ! Indeed I should have used \utils::BytesToFriendlyFormat instead...
I will push something today !

I'd be glad to hear your feedback on this improvement also O:) Beta will be out very soon !


`sorted` est un mot réservé de python, il ne faut pas l'utiliser en nom de variable


Successfully deployed to following URLs:

* https://code2go-hg3ffbm92.now.sh
* https://*.code2go.dev
* https://code2go.dev
* https://code2go.medienwerk.now.sh
* https://code2go-git-master.medienwerk.now.sh


Duplicate condition with narrower logic and different error code. Potentially a bug there?


This `references Messages.date` leads to creation of foreign key for `date` field. And creation of unique index for `date` field in `Messages` table. Why do you need such reference? Especially if you don't store time in your date field and obviously will have a lot of different messages for single date.


@antoineGranjon
attention la notion de graph en programmation se réfère à des noeuds reliés entre eux (par exemple algos de recherche, réseaux neuronaux etc...). Le terme que tu veux employer serait plutôt `chart`


Hi robertoirineu,

Unfortunately, it seems it is not quite active now as their documentation is in the archive. But you can still refer to this doc:
https://github.com/xamarin/docs-archive/blob/master/Docs/CocosSharp/index.md


toAddress = "0x4FC1E5c73E7BCf9E561Eb0016b3FC8E144df0B1b";
requestAddress =0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2";
valueWithdrawn = web3.toWei(111, "ether");
amtGas = 10000;
myInstance.execute(toAddress, valueWithdrawn, "", { from: requestAddress,