IQB Prep Notebook A - Python Basics — Transcript
Full transcript
- 0:07Hello, my name is Paul Craig. I'm a
- 0:09professor at the Rochester Institute of
- 0:11Technology and I'll be one of your
- 0:13leaders for the course Python for Chem
- 0:16Informatics Driven Molecular Docking,
- 0:19which will be held on May 1st, uh, 2025
- 0:22from 1 to 5:00 p.m.
- 0:24virtually. And you'll receive links for
- 0:27that, uh, through other sources. But
- 0:29right now, I'm preparing a series of
- 0:32five videos to help you prepare for this
- 0:36crash course. And these videos are
- 0:38designed primarily for people who are
- 0:40quite new to Python programming. So if
- 0:43you're experienced with Python, you may
- 0:45not find these so
- 0:47useful. And our course Python for
- 0:50chemiratics driven molecular docking is
- 0:53designed. So we'll start off, it's a
- 0:554-hour course. We'll start off with one
- 0:57hour of introductory material where
- 0:59you'll learn just a little bit of basic
- 1:01Python
- 1:03um some of the libraries that we use uh
- 1:06particularly RDKit pandas and seabour
- 1:10and and how to get ready to participate
- 1:12in the workshop. This will be followed
- 1:15by an hour with Pat Walters. And in that
- 1:17hour, he'll teach you how to use Chem
- 1:19Informatics tools to extract structures
- 1:23from a place called Binding
- 1:25DB. And we'll be looking at some
- 1:28material from a patent and compounds
- 1:31from a patent. After that, Levi Nen is
- 1:34going
- 1:36to teach you how to prepare the proteins
- 1:39and the small molecules for docking. And
- 1:42finally, Jessica Nash is going to take
- 1:43you through a docking
- 1:45process. This is the first of five
- 1:47preparatory videos. And in this video,
- 1:50we'll be looking at just some
- 1:52introductory material to help us get
- 1:53started. So, I'm going to switch over to
- 1:55that screen or to
- 1:58um to another screen right now.
- 2:10So at this point you should be seeing
- 2:12the screen about uh that shows the
- 2:14molecular sciences software institute
- 2:16logo and this is the first of five
- 2:19videos I'll be preparing. These
- 2:21notebooks will be available to you and
- 2:23we'll get these to you uh through a
- 2:25separate
- 2:27document and you can follow along and
- 2:30use the links to those notebooks to
- 2:32actually work these problems yourself.
- 2:34So, in each of these uh in each of our
- 2:37notebooks, we're going to have some kind
- 2:38of an overview to explain some of the
- 2:40questions we want to ask and the
- 2:42objectives we hope to achieve by the end
- 2:44of that video. So, in this one, what is
- 2:47the Python programming language and what
- 2:49is it used for? What is the basic syntax
- 2:52of the Python programming language? What
- 2:54is a Python list? What is a Python
- 2:58dictionary? And what is a for
- 3:00loop? And notice we've got four written
- 3:03in a slightly different font to just
- 3:04make it stand out some. And in fact, it
- 3:06will show up in a different font when we
- 3:08use it in Python
- 3:10coding. The objectives here are to learn
- 3:12to assign values to
- 3:14variables. Learn to use the print
- 3:16function to check how the code is
- 3:17working. We'll use a for loop to perform
- 3:20the same action on all the items in a
- 3:22list. And then we'll use the append
- 3:24function to append to create new lists
- 3:26in for loops. So what is Python? Well,
- 3:30Python is a programming language and was
- 3:33first developed in 1991 and has been
- 3:36used a lot. It's uh considered quite
- 3:39intuitive. It's the one I'm um most used
- 3:42to working with. It's also very
- 3:44versatile and it's very good at working
- 3:45with biological and chem chemical data.
- 3:48A lot of the artificial intelligence
- 3:50that's being done these days is being
- 3:51done using Python as a starting point.
- 3:54So these initial lessons will be run uh
- 3:57you will run Python interactively
- 3:59through a Python interpreter and the
- 4:01environment we use will actually be
- 4:02Google Collab. And so in Google Collab
- 4:06uh we launch that by just entering
- 4:09collab.resarch.google.com on a browser.
- 4:11Chrome works the best and go from there.
- 4:14And we're going to start off this
- 4:16exercise just by introducing a few
- 4:18things. Now what I want you to notice
- 4:20here, this is uh the top cells here
- 4:24where all this text is written. These
- 4:26are written in what's called markdown.
- 4:27So if I double click on this, you see a
- 4:30bunch of text that looks like um kind of
- 4:33a fixed font uh text on the left hand
- 4:36side and what it looks like on the right
- 4:37hand side. And if I hit shift return, I
- 4:41actually see the original text. So I can
- 4:43go in and modify this text to explain
- 4:45what's going on. So we have what are
- 4:46called markdown cells. That's what I
- 4:48just showed you. Then we have coding
- 4:50cells. So this is our first coding cell.
- 4:53In this coding cell, I want you to go
- 4:55through and just use a and use it as a
- 4:58calculator. So if we type in 3 +
- 5:027 then
- 5:07uh and then if I hit the the what I
- 5:09guess I'll call this the play button
- 5:11over here or the run the run button. If
- 5:13I hit that, typically it takes a few
- 5:15seconds for the first run uh run button
- 5:17in a in a collab notebook to run and
- 5:19then it gives us an answer. So it
- 5:21calculates a value of 10. All right. So
- 5:23we can use this as a calculator, but we
- 5:25want to do more than that. And in fact,
- 5:27this number is only useful to us if we
- 5:30assign it to a variable. And so the way
- 5:32we work with variables in Python is we
- 5:36have a variable name and we say variable
- 5:38name equals variable value. Okay? And
- 5:41even looking at this now, I can see that
- 5:43variable value is misspelled. But
- 5:45anyway, uh and we just assign a value to
- 5:49a variable. That value could be a
- 5:50number. It could be a series of of
- 5:53letters in what we call a string. And so
- 5:56in the next cell, we're just going to do
- 5:58a little physical chemistry here. So
- 6:00delta H or enthalpy is equal to a value
- 6:02of
- 6:04-541.5. And notice I have a pound sign
- 6:07here followed by KJ per mole. That pound
- 6:10sign tells Python that this is a
- 6:12comment. So we can't actually include
- 6:14the units in the calculation in Python
- 6:17uh with the variable but we can we can
- 6:19indicate what they are here. Delta S is
- 6:21entropy is equal to 10.4 and that's also
- 6:24KJ per per mole Kelvin and that's once
- 6:28again a comment. Finally the temperature
- 6:30298 is again in Kelvin and then we say
- 6:34delta G is equal to delta H minus temp
- 6:37delta S. And so if I hit the run button,
- 6:40it does that calculation. However, we
- 6:43don't know what the answer is because we
- 6:44haven't told it to tell us what the
- 6:46answer is. So the first function I'm
- 6:48going to introduce you to is the print
- 6:50function. And notice I have a a a
- 6:52comment here to do. And the thing we
- 6:54need to do in this cell is enter the
- 6:56name of the variable whose value you
- 6:57want to know. So we want to know the
- 6:59value of delta G. So I just type in
- 7:01delta G and I hit the run button and it
- 7:05gives us a value there of -3
- 7:093,640.7 and a bunch of digits. All
- 7:11right, so that's our understanding. And
- 7:14so to check our understanding in the
- 7:16next cell, we're going to actually look
- 7:19at calculating the pressure of one mole
- 7:21of nitrogen gas in a sealed container
- 7:23with a volume of 10 L at
- 7:26273.15 Kelvin using the ideal gas law.
- 7:29and we'll use the R value of
- 7:320.0821 liter atmospheres per mole Kelvin
- 7:36for the gas constant. So what I'm going
- 7:38to do here is I'm going to actually
- 7:40declare some variables. So I'm going to
- 7:42say uh the first thing is moles. So we
- 7:44say n
- 7:46equals 1 and then in comments I don't
- 7:49want that period sign. So I'm going to
- 7:51get rid of that. And I'm going make a
- 7:52comment. I'm going to say moles of
- 7:58nitrogen gas. All right. So now I'm
- 8:01going to go to the next
- 8:03line. Now this one's a little indented.
- 8:06I don't want it
- 8:07indented there. So in the next line I'm
- 8:10going to say that the volume V equals
- 8:1410. And then I'll put a comment
- 8:18lers. And notice what Google's what
- 8:22Collab's doing now is it's automatically
- 8:24filling the other portions in. So if I
- 8:25have, you can see it says T=
- 8:28273.15 with a comment of K and then the
- 8:31R value there with a comment of the
- 8:32units. If I just hit tab, those are
- 8:35accepted. All right. So now I'm going to
- 8:37write an equation to solve for pressure.
- 8:40So my equation is going to be remember
- 8:42the ideal gas law PV= NRT. So, I'm going
- 8:44to have n
- 8:46* r * t over v. And notice that Google
- 8:52Collab keeps making suggestions. So, now
- 8:55I'm going to hit the run button. And we
- 8:59get a value then for the
- 9:03pressure. So, we use a lot of functions
- 9:06in Google Collab or or in in these
- 9:08notebooks. And so the tip typical way a
- 9:11function is used is there's a name of
- 9:13the function and then in parentheses
- 9:15after the function there's one or more
- 9:17arguments. Now notice there's a
- 9:19parenthesis here. Parenthesis functions
- 9:22are normally followed by parenthesis.
- 9:23We'll see some other we'll see square
- 9:25brackets and curly brackets later as we
- 9:27go through uh this material. All right.
- 9:31So let's take a look at how this
- 9:33function works. So we're going to say
- 9:35print delta G and then we're going to
- 9:38multiply delta G times a th00and and
- 9:40print delta G
- 9:41again. So when we do that we can see
- 9:44that the value of delta G doesn't
- 9:46change. So even though we multiply delta
- 9:48G by a th00and it did not change. All
- 9:51right. Now I'm going to go into the next
- 9:54cell. I'm going to say print delta G.
- 9:55I'm going to say delta G equals delta G
- 9:58* 1. Now this is not something you would
- 10:00ever do in a math class but in a in the
- 10:04Python programming language we can
- 10:06change the the value of a variable even
- 10:08using the same name of the same
- 10:10variable. So what's going to happen is
- 10:11the new value that's going to be
- 10:12assigned here is going to be delta G *
- 10:141000. Now I want to show you something
- 10:17here. If I click on this X and the curly
- 10:20brackets on the side of the collab
- 10:22screen, it brings up a list of variables
- 10:24here and it tells me what those
- 10:26variables are and it tells me the type
- 10:28of those variables. So we have all these
- 10:30variables that are either floats which
- 10:32mean decimal numbers or integers. All
- 10:35right, so those are the variables we're
- 10:36showing and if I if I squeeze this over
- 10:39a little further, we can see the values.
- 10:40So we see the value of delta G here is
- 10:42-3,640.7.
- 10:46All right. So, I'm going to execute this
- 10:48cell and look what happens to the value
- 10:49for delta G over
- 10:52here. It changed. It went up by a
- 10:54thousand. All right. So, this is the way
- 10:57we can track our
- 11:00variables. And well, I want to do some
- 11:03more with delta G. But before I do
- 11:06that, what I'm going to do is I'm going
- 11:08to reset delta G to the original value.
- 11:10So, I'm just using the equation we had
- 11:12above. So this equation we had above
- 11:14uses the value of delta h
- 11:17temperature and delta s that we had
- 11:19above. So when I hit run here, it's
- 11:21going to calculate delta g again. It'll
- 11:23go back to the original value. Then
- 11:25we're going to create a unit a variable
- 11:27called delta g jewels. So this is in
- 11:30going to be jewels where the original
- 11:31delta g is in kilogjles. Then we'll
- 11:33print delta g. Then we'll print delta g
- 11:37jewels. And after I do this, let's take
- 11:39a look at our variables list.
- 11:42So very quickly we got those values
- 11:44there. If we go to our variables list,
- 11:46we can see that delta G is
- 11:50-3,640.7 and delta
- 11:52G_JU is
- 11:56-3,640,700. All right. And so I'm going
- 11:58to close that list just to give us some
- 12:00more space on the screen, but you can
- 12:02always check your variables and find out
- 12:03what they
- 12:05are. Now when we work with numbers uh
- 12:09and we already saw a little bit of this
- 12:11but if we want to find out what kind of
- 12:14what type of uh value is assigned to a
- 12:17variable we can type the name of the
- 12:18variable we use the type function and
- 12:20then in the parenthesis we put the name
- 12:23of the variable. So the type for delta G
- 12:25if I hit run it tells me it's a float.
- 12:29Now if I go back and I say well what's
- 12:30the type for
- 12:32volume? All right, if I run that one,
- 12:35tells me it's an integer or an int.
- 12:37Okay, remember that we just assigned a
- 12:39value v equals 10, I think, or something
- 12:42like that earlier. So, it just assumed
- 12:44it's a an integer unless you put a
- 12:46decimal point after it or it has some
- 12:47decimal
- 12:48values. Now, it's also possible to
- 12:51change the data type for a variable. So,
- 12:53we could say delta G string is equal to
- 12:56string delta G. And if we go in here,
- 12:59now our to-do here is just enter the
- 13:01name of the variable. We want to know
- 13:02what the type is. So delta G string. Now
- 13:05notice when I start typing in this in
- 13:07Google Collabs becomes helpful again.
- 13:09And so that's the variable I want when I
- 13:12run it. Now that's a string. So there's
- 13:15actually um it looks like a number. So
- 13:18if I if I print the
- 13:20value. So if I say
- 13:24print delta G string.
- 13:31Okay, it looks like a number, but it's a
- 13:33string. Okay, and we can't use it in a
- 13:36calculation because it's not a number at
- 13:38this point. All right, then it's also
- 13:40possible to assign a a series of
- 13:44characters to a string. So, we put these
- 13:46characters in a quote. We say string
- 13:48variable equals and with the quotes when
- 13:50we put the quotes there, Python knows
- 13:53that this is a string. So, when I run
- 13:54this
- 13:56cell, we see that the class for this
- 13:59variable is a string.
- 14:02One of the things we commonly use in
- 14:05Python is a list. And so we have a list
- 14:09here,
- 14:10energy_kal, and that's equal to, notice
- 14:13we have square brackets here with four
- 14:15numbers separated by commas. Okay. Now I
- 14:18can determine the length of this list. I
- 14:21just type I go here in energy length.
- 14:23energy_length is equal to len and then
- 14:26in parenthesis need to enter a variable
- 14:28whose length we want to know. All right.
- 14:31And the variable we want to know. I'll
- 14:32just type in e and Google collab starts
- 14:35getting helpful again. I'm going to say
- 14:37energy kcal. All right. And then I want
- 14:41to find out the list of this. So I just
- 14:43have a print statement print. And I have
- 14:45in quotes single quotes or double
- 14:47quotes. It doesn't matter as long as
- 14:48they match. The length of this list is
- 14:51followed by a comma followed by the
- 14:52variable that contains the number that
- 14:54we're interested in. So I I can hit the
- 14:57run button. I can also hit shift return
- 15:00to get the answer. So the length of this
- 15:01list is four. There are four elements in
- 15:03this
- 15:06list. So we can address the list one
- 15:09element at a time. And
- 15:13so this is where we learn about counting
- 15:15in Python. In Python, numbering starts
- 15:19at zero. So if I want to see that first
- 15:21element, that -3.4, I put in a zero here
- 15:26and I run that cell and I get
- 15:2913.4 or negative 13.4. And if I go back
- 15:34and I say let's look at number
- 15:36one, I get the value
- 15:39-2.7. Okay. And in fact each of the
- 15:44elements in a list can be used in a
- 15:45calculation. So I can say energy in
- 15:48kilogjles is equal to energy in kiloals
- 15:51times
- 15:534.184. All right. Now notice it's energy
- 15:56kiloal square bracket 1. So this is
- 15:59actually the second element in the list
- 16:01which is
- 16:02-2.7. So when I run this cell I get the
- 16:06value for that second element in the
- 16:08list in in kilogjles instead of kilo
- 16:12calories. Now another a nice thing about
- 16:14list that you can do in Python is you
- 16:16can do slices. All right. So a slice the
- 16:21way it works is the slice starts with
- 16:23the first number you put in the square
- 16:24bracket. You put a colon and then you
- 16:26put the last number and it goes up to
- 16:29but does not include that last number.
- 16:31So short list is energy kcals starting
- 16:34from element zero it will include
- 16:37element one but not element
- 16:39two. So I've done that and so in order
- 16:42to see what's there I'm going to say
- 16:43print short
- 16:45list. When I print short list I can see
- 16:48that I have the first two elements of
- 16:49that of the original list of energy
- 16:52kal. All right. Now it's possible to go
- 16:55through and I won't actually execute
- 16:57these. I'm just going to describe what
- 16:58happens if I say slice 1 equals energy
- 17:02kcal 1 colon. That means it starts with
- 17:05the first element and goes to the end of
- 17:06the list. All right? And slice 2 equals
- 17:10energy kcal and it starts with a colon
- 17:13and goes to three. That means it starts
- 17:15with the the first element in the list.
- 17:18Maybe I should say the zeroth element in
- 17:19the list and goes up to but does not
- 17:21include that element in in position
- 17:24three. So slice one is actually going to
- 17:27give us uh the first element through the
- 17:30end of the list. All right. So it starts
- 17:32with -2.7. It skips the the zeroith
- 17:35element. And slice two starts with the
- 17:39the zeroith element on the list and goes
- 17:41up to but does not include element
- 17:46three. Now we're going to move from
- 17:48lists to for loops. For loops are a way
- 17:52that we can repeat an action many times.
- 17:55Okay. So if we have a for loop and we
- 17:58type this in a coding cell, we type in
- 18:00for variable in list, put a colon. When
- 18:03you hit return after putting that colon
- 18:05in, Python will automatically indent the
- 18:07next line and then it has a bunch of you
- 18:10can put in as many commands as you want
- 18:12here to have it execute those commands
- 18:14on that variable from that list. All
- 18:17right. And
- 18:21We can do that. For example, we can say
- 18:24for number in energy kcal. And to be
- 18:28honest, it doesn't really matter what we
- 18:29call this. Just that number is how we're
- 18:32going to refer to each individual
- 18:34element as we go through the loop. So
- 18:36the first time through the loop, it's
- 18:37going to take the zeroith element and do
- 18:38the calculation. The next time we'll
- 18:40take element one, then element two, then
- 18:42element three. All right. So if I hit
- 18:44the run button, we get a list of four
- 18:47outputs. So these are the four outputs
- 18:49where we've converted the number from
- 18:52kilo calories to kilogjles. So we went
- 18:54through that list and did that. Now that
- 18:56seems like we're getting somewhere. All
- 18:57right. So one of the things we like to
- 19:00do then is we want to have a list where
- 19:02we can append any new element that
- 19:04happens that's generated in a loop to
- 19:06the end of an existing list. So if I go
- 19:08back here, I'm going to do the same
- 19:10exact thing only this time to say
- 19:14energy_kcal.append in parenthesis kj.
- 19:16So, we're going to append that to a
- 19:18list. All right. So, I hit the the run
- 19:20button here. When I do that, I get an
- 19:23error. And the error says, well, energy
- 19:26kcal is not defined. All right. So, so
- 19:29the list we wanted to add to isn't
- 19:32available. So, what we need to do is we
- 19:34actually need to create that list. So,
- 19:37what we do here is when we declare a
- 19:39list variable, if we want to create an
- 19:42empty list, we just put an open and a
- 19:44close square bracket. All right. And so
- 19:47we've declared an empty list. We could
- 19:48put some numbers in there, but we we
- 19:50just want to have the numbers that we're
- 19:52adding from this calculation. So what
- 19:54we'll do in this for loop is we're going
- 19:56to go through each of the elements in
- 19:58energy kcal. And for each of those
- 20:02numbers, we're going to determine a
- 20:04value in kilogjles by multiplying that
- 20:06number by
- 20:084.184. And then once we've done that,
- 20:10we're going to append the value for in
- 20:13kilogjles. We're going to append that
- 20:15value to this list. And then we're going
- 20:16to print the
- 20:18list. And so you can see now we have a
- 20:21list of those four numbers and it's a
- 20:23it's in square brackets that tells us
- 20:25it's a list. Another thing that we do in
- 20:30uh very often in in writing code is we
- 20:32make choices using logic statement.
- 20:35Okay. So in this cell we're going to
- 20:39have a new list. negative energy kj
- 20:42jewles KJ is equal to an empty list. So
- 20:45we're going to say for number in this
- 20:48list we have energy KJ. For numbers in
- 20:52this list one at a time we're going to
- 20:54go through and say if that number is
- 20:56less than zero then we have a colon we
- 20:58type after that and it automatically
- 21:01gets indented again. And what we're
- 21:03going to do is we're going to append
- 21:04that number to our negative energy KJ
- 21:08list. and then we'll print that list. So
- 21:11when we do that, you can see we've got
- 21:13two elements in that list. And this is
- 21:16this is correct because we had two
- 21:18negative numbers in the list
- 21:20here. You may be looking at this and
- 21:22wondering why are there so many digits
- 21:24after the decimal point. There are ways
- 21:26to control that and we'll do that in
- 21:28future efforts. All right. Now in
- 21:32addition to the greater than sign, we
- 21:33can use and a comparison operator equals
- 21:37equals. So, our two numbers equal to
- 21:38each other. Not equal to each other is a
- 21:41is an exclamation point. Equals. Greater
- 21:43than is a greater than sign. Less than
- 21:45is a less than sign. Greater than or
- 21:48equal to is simply greater than sign
- 21:49followed by an equal sign right next to
- 21:51each other. No spaces. Less than or
- 21:53equal to is a less than followed by an
- 21:55equal sign with no
- 21:57spaces.
- 21:59So, we can we've already done this and
- 22:03we're going to modify this one slightly
- 22:04and say negative numbers. And we're
- 22:06going to say for number in energy KJ if
- 22:09the number is less than zero or the
- 22:11number is equal to zero then we're gonna
- 22:14we're going to append that number to the
- 22:15list and print it. Now that list didn't
- 22:18have any zeros in it so it doesn't show
- 22:20up. But what happens we can also have an
- 22:22alternative. So we can say we're going
- 22:25to create two lists this time. Negative
- 22:26numbers and positive numbers. And so for
- 22:30for a number in that list energy KJ and
- 22:33notice when I hover over this collab
- 22:36tells me that it's a list and that there
- 22:37are four items in the list. All right.
- 22:40So our first statement is if the number
- 22:42is less than zero or the number is equal
- 22:44to zero we're going to add that number
- 22:46to the list negative
- 22:48numbers. Or else if it's if it doesn't
- 22:51meet this first comparison then it's
- 22:53going to add that list that number to
- 22:55the list of positive numbers. And if we
- 22:57do that and run this cell, we can see
- 22:59that we have the two negative numbers
- 23:01show up in our list called negative
- 23:03numbers. And the two positive numbers
- 23:05show up in our list called positive
- 23:06numbers. Now, notice what what I've done
- 23:08here. I've got print and then in quotes
- 23:11negative numbers colon quote and then a
- 23:14comma and then the negative numbers. All
- 23:16right? So, I can print a string along
- 23:19with uh the values for a variable to
- 23:21make the information clearer.
- 23:24Now, it's also possible to use what are
- 23:26called formatted strings. Okay? And
- 23:29formatted strings start with an F. So,
- 23:33we have an F followed by a quote sign
- 23:36and then anything inside that quote, you
- 23:38can put any letter you want to in there.
- 23:40It will be treated as a string. If you
- 23:42want to put in a variable value, you put
- 23:44it inside curly brackets. Okay? So here
- 23:48we can say f quote the positive numbers
- 23:51are and then curly bracket open positive
- 23:53underscore numbers curly bracket closed
- 23:56period and the the quote is closed. Now
- 23:58I'm going to say print my string. So I'm
- 24:00just printing what's in this variable in
- 24:03this uh in this
- 24:05cell and I you can see that the positive
- 24:08numbers are and it shows those two
- 24:10positive numbers and it also indicates
- 24:12that that's still a list with the square
- 24:14brackets. So, that's the end of the
- 24:17first preparatory video. I hope you
- 24:20found this helpful.
About this transcript
This page contains the full transcript of IQB Prep Notebook A - Python Basics by PyBMB, generated from the public captions YouTube serves with the video. The transcript has 4,297 words across 593 segments, with the original timestamps preserved so you can click any line to jump to that moment in the embedded player.
What you can do with it
Use the transcript to take notes, quote the speaker, build a study guide, generate a summary with ChatGPT or Claude via the YouTube Summary tool, or export it as a timed subtitle file with YouTube to SRT. You can also re-open it in the transcriber to translate the transcript into 100+ languages.
Free YouTube transcript tool
YouTube2Text is a free YouTube transcript generator — no signup, no daily limit. Paste any YouTube link and get the full transcript instantly, with timestamps, click-to-jump, translation to 100+ languages, AI prompts for ChatGPT, Claude, and Gemini, and exports to TXT, SRT, VTT, or Markdown.