Strings

In de bio-informatica maken we erg veel gebruik van (tekst)zoekopdrachten. Deze zoekopdrachten zijn gericht op teksten in wetenschappelijke artikelen, of op patronen in DNA/RNA en eiwitten.

Textmining

Er is een heel vakgebied wat zich bezig houdt met zoekopdrachten in tekst Dit vakgebied – textmining – onderzoekt bijvoorbeeld of het mogelijk is nieuwe verbanden te vinden door teksten te analyseren

String functies

Er zijn veel verschillende string functies die we kunnen gebruiken:

  • str.find(substr) Zoeken naar een substring
  • str.replace(old, new) Vervanging van een substring
  • str.split(delim) Splitsen op basis van een teken
  • str.join(seq) Plakken van strings
  • str.strip( ) Verwijderen van enters/nieuwe regels
  • str.rstrip( ) Verwijderen van spaties rechts
  • str.upper( ) Omzetten naar hoofdletters
  • str.isupper( ) Toetsen of een string uit hoofdletters bestaat
  • str.isdigit( ) Toetsen of een string uit cijfers bestaat
  • str.isalpha() Toetsen of een string cijfers bevat

Regular expressions

Regular Expressions geven je de mogelijkheid om complexe tekstpatronen te zoeken

Regular Expressions zijn complexe zoekpatronen waarmee je complexe tekstpatronen kan zoeken (bijvoorbeeld zoeken naar substrings in strings).

De basis van een regular expression is het interpreteren van speciale karakters.

Vaak wordt “regular expression” afgekort tot “regexp”, “regex”, of “re”

Karakters in regular expressions:

KarakterBetekenis
.
(punt)
Precies een willekeurig teken
** * **
(asterisk)
0, 1 of meer van het ingegeven teken
+
(plus)
1 of meer van het voorgaande teken
?
(vraagteken)
Exact 0 of 1 van het voorgaande teken
^
(dakje)
Geeft aan dat het er mee moet beginnen
$
(dollar)
Geeft aan dat het er mee moet eindigen
[ ]gegeven tekens aanwezig zijn

Een ^ aan het begin van [^ ] geeft de inverse (dat dit NIET mag voorkomen)
( )Een groep
** \ **Escape
{m,n}Minimaal m en maximaal n van het voorgaande teken

Speciale escapes

Speciaal karakterAlternatief
Decimal\d[0-9]
Spatie\s
Woord\w

Voorbeelden van regular expressions

Regular ExpressionVoorbeeld hitsGeen hit op
H[ea]lloHello en HalloHollo
TATA[AT][AT]TATAAT, TATATT,
TATAAA
TATAGC
…huis (vier puntjes)Woonhuis, koophuis,
leeghuis
Ziekenhuis
.*huisZiekenhuisZiekenhuisje
.****huis*.huismus, Verhuis-
service
Huizen
.+huisThuishuis

(33 en 34)

Overzicht re functies

FunctieFunctionaliteit
searchZoeken naar een overeenkomst
door de hele string heen
matchZoeken naar een overeenkomst
vanaf het begin
splitSplitsen op reguliere expressie
subVervangen van een patroon

re.search(pattern, string) Pattern is het te zoeken patroon: de reguliere expressie String is de tekst waarin je het patroon wilt vinden

re.sub(pattern, repl, string, max=0) Repl is waar het gevonden patroon door vervangen moet worden Max is het maximale aantal vervangingen. Indien weggelaten of ingesteld op 0, is er geen limiet aan het aantal splitsingen.

re.split(pattern, string, maxsplit=0,flags=0) Maxsplit is het maximale aantal splitsingen. Indien weggelaten of ingesteld op 0, is er geen limiet aan het aantal splitsingen. Flags is om het gedrag van de reguliere expressie te wijzigen, zoals re.IGNORECASE voor hoofdletterongevoelige matching. Indien weggelaten of ingesteld op 0, is er geen wijziging aan het gedrag van de reguliere expressie.

import re
line = "AGGGGCCACATTAATGATGGAGTATAGGAGTA" 
matchObj = re.search( r'ATG', line) 
print (matchObj)

Hiermee zien we of er een hit is of niet Bij geen hit None Bij wel een hit object referentie <re.Match object; span=(13, 16), match=‘ATG’>

Door de r voor de string blijft \n een \n en wordt het geen next line Vergelijk print (r”\t\n”) en print (“\t\n”)