BIO 599: Lecture 6 (NAU Spring 2014)

BIO 599: Lecture 6 (NAU Spring 2014)


Greg Caporaso

February 18, 2014


  1. 3.

    Goals:  introductory  python   programming   •  Familiarize  you  with

     the  techniques  necessary   to  write  computer  programs   •  Develop  basic  python  programming  skills:  you   should  be  able  to  write  small  programs  by  the   .me  you’re  done  with  course   •  Provide  a  jumping  off  point  to  students  who   want  to  con.nue  developing  these  skills  
  2. 4.

    Compiled  v  interpreted  programs   •  Compiled  languages  (e.g.,  C,

     C++)  are  translated   from  human  readable/writeable  source  code  to   machine  code  (computer  understandable   instruc.ons).   –  Advantages:  generally  faster  to  run   •  Interpreted  languages  (or  languages,   e.g.,  bash,  R,  python,  perl)  are  executed  by  a   compiled  program.   –  Advantages:  generally  faster  to  develop,  more   portable  
  3. 5.

    Variables   •  Name  :  defined  by  the  programmer  

    •  Type  :  describes  the  kind  of  informa.on  that  is   stored   •  Value  :  that  actual  informa.on  that  the   variable  holds   •  Scope  :  where  the  variable  is  accessible  –   don’t  worry  about  this  for  now  
  4. 6.

    Common  types   •  Integer  :  a  number  without  a

     decimal  place   (  or   •  Float  :  a  number  with  a  decimal  place  (   or;  a  real  number)   •  String  :  sequence  of  text  characters   •  Boolean:  True  or  False  
  5. 7.

    Common  types   •  Arrays  (also  called  a  list)  :

     a  collec.on  of   values  (including  other  lists)   – Arrays  are  ordered,  and  you  look  items  up  by   posi.on   •  Dic.onary  (also  called  a  hash  map  or  an  array)  :  a  collec.on  of  key,  value   pairs   – Dic.onaries  are  unordered,  and  you  look  items  up   by  key  
  6. 8.

    Operators:  doing  things  to  variables   •  operators  (+,

     -­‐,  /,  *,  **,  //,  %)   •  Logical  operators  (and,  or,  not,  in)   •  operators  (==,  !=,  >,  <,  >=,  <=)   •  Func.ons  :  reusable  blocks  of  code  to  define   common  opera.ons  
  7. 9.

    Types  will  define  what  ac.ons  can  be   performed  

    •  Adding  strings  has  a  different  result  than   adding  integers   •  Dividing  integers  has  a  different  result  than   dividing  floats   •  Try  it  out…    
  8. 10.

    Flow  control   •  Define  the  steps  that  a  program

     will  take,   oeen  based  on  the  value  of  some  variable  or   the  result  of  some  opera.on  
  9. 13.  with  users  to  get  input  and   generate  output

      •  Oeen  will  take  input  from  users  as  a  series  of   command  line  op.ons   •  Output  can  be  wrifen  to  file   •  User  can  then  read  the  file,  or  pass  it  to  some   downstream  program  in  a  workflow.  That   downstream  program  would  parse  the  file   (i.e.,  read  it  into  memory).    
  10. 14.

    You  don’t  have  to  re-­‐invent  the  wheel:   languages  have

     pre-­‐  tools   •  Python  standard  library   – random,  os,  optparse   •  Third-­‐party  libraries   – Qiime,  PyCogent,  numpy,  matplotlib,  ipython,  …  
  11. 15.

    Comments   •  Blocks  of  text  that  are  not  executed

      – Useful  to  keep  notes  for  yourself  or  other   developers   •  Can  comment  out  blocks  of  code  if  you  don’t   want  them  to  run  –  useful  for  development   and  debugging  
  12. 16.

    Objects:  new  (user-­‐definable)  types   •  A  variable  that  can

     contain  other  variables  and   define  methods  (i.e.,  func.ons  that  operate  on   the  object)   •  Examples:  DNA  Sequence,  DNA  Alignment,   OTU  x  sample  count  table,  …  
  13. 17.

    This  work  is  licensed  under  the  Commons  Afribu.on  3.0

     United  States  License.  To  view  a   copy  of  this  license,  visit   hfp://  or  send  a  lefer  to  Commons,  171   Second  Street,  Suite  300,  San  Francisco,  California,  94105,  USA.     Feel  free  to  use  or  modify  these  slides,  but  please  credit  me  by  placing  the  following  afribu.on   informa.on  where  you  feel  that  it  makes  sense:  Greg  Caporaso,