These exercises are about data types and custom functions from Session 1 session1.

Exercise 1 - NumPy


import numpy as np
arr_2d = np.array([["R1", 1990, True, "Skin"],
  ["R2", 2010, True, "Skin"], 
  ["R3", 2005, False, "Brain"],
  ["R4", 2015, False, "Brain"],
  ["R5", 2012, False, "Brain"]])
arr_2d
## array([['R1', '1990', 'True', 'Skin'],
##        ['R2', '2010', 'True', 'Skin'],
##        ['R3', '2005', 'False', 'Brain'],
##        ['R4', '2015', 'False', 'Brain'],
##        ['R5', '2012', 'False', 'Brain']], dtype='<U21')
arr_2d[:,0:2]
## array([['R1', '1990'],
##        ['R2', '2010'],
##        ['R3', '2005'],
##        ['R4', '2015'],
##        ['R5', '2012']], dtype='<U21')
arr_2d[arr_2d[:,3] =="Brain",:]
## array([['R3', '2005', 'False', 'Brain'],
##        ['R4', '2015', 'False', 'Brain'],
##        ['R5', '2012', 'False', 'Brain']], dtype='<U21')

Exercise 2 - NumPy

# option 1
arr_num = np.array([[1,2,3,4,5,6],
                    [7,8,9,10, 11,12],
                    [13,14,15,16,17,18]])

# option 2 with reshape
arr_num = np.array([range(1,19)])
arr_num = arr_num.reshape(3,6)

arr_num
## array([[ 1,  2,  3,  4,  5,  6],
##        [ 7,  8,  9, 10, 11, 12],
##        [13, 14, 15, 16, 17, 18]])
arr_num.shape
## (3, 6)
arr_num_6x3 = arr_num.reshape(6,3)
small_nums = arr_num_6x3[arr_num_6x3 < 10]
small_nums
## array([1, 2, 3, 4, 5, 6, 7, 8, 9])
big_nums = arr_num_6x3[arr_num_6x3 > 9]
big_nums
## array([10, 11, 12, 13, 14, 15, 16, 17, 18])
small_nums.shape
## (9,)
small_nums.ndim
## 1
big_nums.shape
## (9,)
big_nums.ndim
## 1
small_nums_3x3 = small_nums.reshape(3,3)
small_nums_3x3
## array([[1, 2, 3],
##        [4, 5, 6],
##        [7, 8, 9]])
big_nums_3x3 = big_nums.reshape(3,3)
big_nums_3x3
## array([[10, 11, 12],
##        [13, 14, 15],
##        [16, 17, 18]])
arr_cat = np.concatenate((small_nums_3x3, big_nums_3x3), axis = 1)
arr_cat
## array([[ 1,  2,  3, 10, 11, 12],
##        [ 4,  5,  6, 13, 14, 15],
##        [ 7,  8,  9, 16, 17, 18]])

Exercise 3 - Custom Functions

def squareOfNumber(number):
  squareNumber = number*number
  return squareNumber

squareOfNumber(9)
## 81
def mean_and_minOfNumbers(number1, number2):
  meanNumber = (number1 + number2) /2
  minNumber = min([number1, number2])
  return [meanNumber,minNumber]

mean_and_minOfNumbers(1,3)
## [2.0, 1]
def mean_and_minOfNumbers(number1, number2):
  meanNumber = (number1 + number2) /2
  minNumber = min([number1, number2])
  print("The product is " + str(number1*number2))
  return [meanNumber,minNumber]

mean_and_minOfNumbers(1,3)
## The product is 3
## [2.0, 1]
def mean_and_minOfNumbers(number1=10, number2=40):
  meanNumber = (number1 + number2) /2
  minNumber = min([number1, number2])
  print("The product is " + str(number1*number2))
  return [meanNumber,minNumber]

mean_and_minOfNumbers()
## The product is 400
## [25.0, 10]

Exercise 4 - Custom Functions

** Think about each individual step required to do this**


def SetMaker(list1, list2, list3):
  biglist = list1 + list2 + list3
  my_set = set(biglist)
  print(len(my_set))
  return my_set

Run the function using these inputs

list1 = ["INS","INSR", "VEGFA","VEGFR1","VEGFR2"]
list2 = ["TGFBR1","EGFR","VEGFR1","VEGFR2"]
list3 = ["APOE", "IL6", "TGFB1","TGFBR1","TNF"]

Save the function as a python script. Import the function and run it on this new set of lists

list1 = ["'GO:0030955'","GO:0031403", "GO:0031411"]
list2 = ["GO:0031402","GO:0030955"]
list3 = ["GO:0031402", "GO:0030957", "GO:0030955"]
import myset_script

myset_script.SetMaker(list1, list2, list3)