from termcolor import colored
import IPython

class Practice():
  def __init__(self):   
    self.proccess = False   
    self.answ_2 = False
    self.good_experiment = False

  def task_light(self):
    print('                                      *** Уровень LIGHT ***')
    print('--------------------------------------------------------------------------------------------------------')
    print()
    print('Для продукции большого количества белка альбумина ученые решили вывести новый генно-модифицированный сорт')
    print('картошки, который бы накапливал в клубнях человеческий альбумин.')
    print()
    print('Расставьте в нужном порядке блоки, для того чтобы эксперимент был успешным:')
    print('1.  Отбор положительных клонов Agrobacterium tumifaciens по маркеру')
    print('2.  Стимуляция каллуса и получение новых растений')
    print('3.  PCR для наработки последовательности гена для встройки')
    print('4.  Лигирование вставки с вектором')
    print('5.  Сбор клубней, выделение белков')
    print('6.  Отбор образцов каллуса по маркеру и подтверждение успешной трансформации')
    print('7.  Наработка высокого титра агробактерий с рекомбинантным вектором')
    print('8.  Подбор праймеров по последовательности из базы данных для гена ALB, кодирующего альбумин')
    print('9.  Трансформация культуры Agrobacterium tumifaciens полученным рекомбинантным вектором')
    print('10. Заражение клеток каллуса картофеля культурой Agrobacterium tumifaciens')
    print('11. Подбор и рестрикция Ti-плазмидного вектора. Рестрикция PCR вставки')
    print('--------------------------------------------------------------------------------------------------------')
    print()
    print('Введите свой вариант ответа (номера блоков через пробел. Например: 6 3 8 2 1 11 7 4 8 9 5)')
    print()
    answer = input('Ответ: ')
    answer=answer.replace(' ','')
    answer=answer.replace(',','')
    print()
    if answer.replace(' ','') == '8311491710625':
      print(colored('Ура! Эксперимент удачен! Вы получили новый сорт картофеля!!!', color='green', attrs=['bold']))
    else:
      print(colored('Упс!Эксперимент не удачен', color='red', attrs=['bold']))

  def task_hard_1(self):
    print('                                      *** Уровень HARD (1)***')
    print('--------------------------------------------------------------------------------------------------------')
    print()
    print('Введите область генома человека, содержащую кодирующую последовательность гена альбумина')
    print('--------------------------------------------------------------------------------------------------------')
    print()
    print('Введите свой вариант ответа (Например: hg38 chr4:78,563,123-67,422,456)')
    print()
    answer = input('Ответ: ')
    print()
    if answer.replace(' ','') == 'hg38chr4:73,404,328-73,420,298' or answer.replace(' ','') == 'hg38chr4:73,406,730-73,420,298' or answer.replace(' ','') == 'hg38chr4:73,404,328-73,421,121':      
      print(colored('Отлично. Переходим к следующему пункту', color='green', attrs=['bold']))
    else:
      print(colored('Эксперимент не удачен', color='red', attrs=['bold']))

  def task_hard_2(self):
    print('                                      *** Уровень HARD (2)***')
    print('--------------------------------------------------------------------------------------------------------')
    print()
    print('Выберите подходящий промотор для создания химерной конструкции для клонирования:')
    print('1.  Patatin B33 promoter')
    print('2.  CMV promoter')
    print('3.  promoter of the potato chitinase C gene')
    print('4.  ALB gene promoter')
    print('--------------------------------------------------------------------------------------------------------')
    print()
    print('Введите свой вариант ответа (порядковый номер)')
    print()
    answer = input('Ответ: ')
    print()
    if answer in ['1', '3']:
      print(colored('ДА, переходим к следующему пункту', color='green', attrs=['bold']))
    else:
      print(colored('Упс! Нет продукта, эксперимент неудачен', color='red', attrs=['bold']))
    self.answ_2 = answer == '1'

    
  def task_hard_3(self):
    print('                                      *** Уровень HARD (3)***')
    print('--------------------------------------------------------------------------------------------------------')
    print()
    print('Выберите вектор для трансформации:')
    print('1.  pBin 19 Vector')
    print('2.  pGL3 basic IRES')
    print('3.  vector pAquaN1')
    print('4.  Psi-СHECK 2 vector')
    print('--------------------------------------------------------------------------------------------------------')
    print()
    print('Введите свой вариант ответа (порядковый номер)')
    print()
    answer = input('Ответ: ')
    print()
    if answer=='1':
      print(colored('ДА, переходим к следующему пункту', color='green', attrs=['bold']))
    else:
      print(colored('Эксперимент неудачен', color='red', attrs=['bold']))
  def task_hard_4(self):
    print('                                      *** Уровень HARD (4)***')
    print('--------------------------------------------------------------------------------------------------------')
    print()
    print('Напишите порядок клонирования:')
    print('1.  Промотор, Ген ALB')
    print('2.  Ген ALB, Промотор')
    print('--------------------------------------------------------------------------------------------------------')
    print()
    print('Введите свой вариант ответа (порядковый номер)')
    print()
    answer = input('Ответ: ')
    print()
    if answer=='1':
      print(colored('ДА, переходим к следующему пункту', color='green', attrs=['bold']))
    else:
      print(colored('Эксперимент неудачен', color='red', attrs=['bold']))
  def task_hard_5(self):
    print('                                      *** Уровень HARD (5)***')
    print('--------------------------------------------------------------------------------------------------------')
    print()
    print('Расположите в нужном порядке пары рестриктаз для процесса клонирования промотора и вставки:')
    print('1.  HindIII/EcoR1 --- BamH1/Sma1')
    print('2.  Not/HindII – BamH1/Sma1')
    print('3.  BamH1/EcoR1 – HindII/Kpn1')
    print('4.  BamH1/SmaI - -- HindIII/EcoR1')
    print('5.  BamH1/ХmaI - -- HindIII/EcoR1')
    print('--------------------------------------------------------------------------------------------------------')
    print()
    print('Введите свой вариант ответа (порядковый номер)')
    print()
    answer = input('Ответ: ')
    print()
    if answer in ['4','5']:
      print(colored('ДА, переходим к следующему пункту', color='green', attrs=['bold']))
    else:
      print(colored('Эксперимент неудачен', color='red', attrs=['bold']))  
    self.proccess = answer=='5'
    
  def task_hard_6(self):
    print('                                      *** Уровень HARD (6)***')
    print('--------------------------------------------------------------------------------------------------------')
    print()
    print('Ну что, проводим клонирование?')
    print('--------------------------------------------------------------------------------------------------------')
    print()
    print('Введите свой вариант ответа (Да или нет)')
    print()
    answer = input('Ответ: ')    
    print()
    if answer.lower()=='да':
      if (self.proccess):
        print(colored('ДА, переходим к следующему пункту', color='green', attrs=['bold']))
      else:
        print(colored('Итак, очень мало положительных клонов! Повторите еще раз эксперимент №5!', color='red', attrs=['bold']))
    else:
      print(colored('Завершаем эксперименты', color='red', attrs=['bold']))  

  def task_hard_7(self):
    print('                                      *** Уровень HARD (7)***')
    print('--------------------------------------------------------------------------------------------------------')
    print()
    print('Ура мы получили нужный вектор для трансформации! Как будем доставлять его в растения?')
    print('1.  Агробактериальная трансформация')
    print('2.  Кальций-фосфатный метод')
    print('3.  Баллистическая пушка')
    print('4.  Липофекция')    
    print('--------------------------------------------------------------------------------------------------------')
    print()
    print('Введите свой вариант ответа (порядковый номер)')
    print()
    answer = input('Ответ: ')
    print()    
    print(colored('ДА, переходим к следующему пункту', color='green', attrs=['bold']))
    self.good_experiment = answer in ['1', '3']

  def result(self):
    if self.good_experiment:
      print(colored('Ура, все отлично.  Мы имеем положительные клоны!', color='green', attrs=['bold']))
    else:
      print(colored('Упс! У нас нет положительных клонов! Повторите задание 7', color='red', attrs=['bold']))

  def get_belok(self):
    if self.answ_2:
      print(colored('Ура! Мы вывели новый сорт картофеля!', color='green', attrs=['bold']))
    else:
      print(colored('Ой! Синтез альбумина в клубнях не зафиксирован. Повторите задание 2', color='red', attrs=['bold']))
