{"id":492,"date":"2019-02-19T23:38:29","date_gmt":"2019-02-19T23:38:29","guid":{"rendered":"http:\/\/miriamposner.com\/classes\/dh201w23\/?page_id=492"},"modified":"2019-02-19T23:38:30","modified_gmt":"2019-02-19T23:38:30","slug":"get-a-unimodal-network-from-a-bimodal-network","status":"publish","type":"page","link":"https:\/\/miriamposner.com\/classes\/dh201w23\/tutorials-guides\/network-analysis\/get-a-unimodal-network-from-a-bimodal-network\/","title":{"rendered":"Get a unimodal network from a bimodal network"},"content":{"rendered":"\n<p>As we saw in the\u00a0<a href=\"http:\/\/miriamposner.com\/classes\/dh201w23\/tutorials-guides\/network-analysis\/cytoscape-working-with-selections\/\">last tutorial<\/a>,\u00a0<a href=\"http:\/\/www.worldcat.org\/oclc\/881681427\">bimodal networks<\/a>\u00a0(e.g., film-actor) can be illuminating, but trying to map relationships between two different entities on the same graph can also lead to confusion. That&#8217;s why you&#8217;ll sometimes want to graph unimodal networks instead (e.g., film-film or actor-actor). This tutorial will show you how to get from a bimodal network to a unimodal network.<\/p>\n\n\n\n<p>Take a deep breath and turn on some soothing music, because we&#8217;re going to do a small amount of programming. I&#8217;ll take you through each step, though, so you shouldn&#8217;t ever get lost.<\/p>\n\n\n\n<p>In order to get started with this tutorial, you&#8217;ll need the following software installed:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/cran.cnr.berkeley.edu\/\">The R programming language<\/a>. (Select the type of computer you have, then select the latest version of R, and then download and install the package as you would any software package.)<\/li><li><a href=\"https:\/\/www.rstudio.com\/\">RStudio<\/a><a href=\"https:\/\/www.rstudio.com\/products\/rstudio\/#Desktop\">&nbsp;Deskstop<\/a>. (Choose the free version.) This is what&#8217;s called an &#8220;integrated development environment&#8221; (IDE) for R. RStudio allows you to run your program line by line, and save your work as you go.<\/li><\/ul>\n\n\n\n<p>You&#8217;ll also need an edge list. Your edge list can contain as many columns as you want, but the first two columns of the edge list should contain your source and target nodes. If you need help constructing an edge list, or if you don&#8217;t understand what an edge list is, see&nbsp;<a href=\"https:\/\/github.com\/miriamposner\/cytoscape_tutorials\/blob\/master\/preparing-data-1-making-an-edge-list.md\">this tutorial<\/a>.<\/p>\n\n\n\n<p>If you&#8217;d like to practice with a sample two-mode edge list, you can use&nbsp;<a href=\"https:\/\/github.com\/miriamposner\/cytoscape_tutorials\/blob\/master\/data\/edgelist.csv\">this one<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/github.com\/miriamposner\/cytoscape_tutorials\/blob\/master\/get-a-unimodal-network.md#1-open-rstudio\"><\/a>1. Open RStudio<\/h2>\n\n\n\n<p>Open RStudio. You should see a workspace that looks something like the image below. I&#8217;m going to spare you much detail about R, the programming language we&#8217;re using, except to say that it&#8217;s a language designed for statistical analysis and in wide use among digital humanists. If you&#8217;d like to learn more about R, you might look at Matt Jockers&#8217;s&nbsp;<a href=\"http:\/\/www.worldcat.org\/oclc\/881681427\"><em>Text Analysis with R for Students of Literature<\/em><\/a>.<\/p>\n\n\n\n<p>For now, I&#8217;ll mention just a few things about RStudio, the integrated development environment (IDE) we&#8217;re using to write our code.<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>The&nbsp;<strong>Console<\/strong>, on the left-hand side of your workspace, shows the commands you&#8217;ve entered, along with their results.<\/li><li>The pane on the upper right-hand side of your workspace shows either the data you&#8217;ve entered into RStudio or the history of your actions (depending on the tab you&#8217;ve clicked).<\/li><li>The lower right-hand pane will show you the files on your computer, the visualizations you&#8217;ve created with R, Help documents, or a&nbsp;<strong>Viewer<\/strong>&nbsp;pane that allows you to see web content (depending on which tab you&#8217;ve selected).<\/li><\/ol>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/github.com\/miriamposner\/cytoscape_tutorials\/blob\/master\/images\/get-a-unimodal-network\/open-rstudio.png\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" src=\"https:\/\/github.com\/miriamposner\/cytoscape_tutorials\/raw\/master\/images\/get-a-unimodal-network\/open-rstudio.png\" alt=\"\"\/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/github.com\/miriamposner\/cytoscape_tutorials\/blob\/master\/get-a-unimodal-network.md#2-open-a-new-r-script-file\"><\/a>2. Open a new R Script file<\/h2>\n\n\n\n<p>We&#8217;ll open a new, blank file where we can write and save our program. From RStudio&#8217;s menu, select&nbsp;<strong>File<\/strong>, then&nbsp;<strong>New File<\/strong>, and then&nbsp;<strong>R Script<\/strong>. You should now see a blank document in your workspace, above your console.<\/p>\n\n\n\n<p>Go ahead and click on&nbsp;<strong>File<\/strong>,&nbsp;<strong>Save<\/strong>, and give your new document a name, so that you can save your changes.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/github.com\/miriamposner\/cytoscape_tutorials\/blob\/master\/images\/get-a-unimodal-network\/open-a-new-r-script-file.png\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" src=\"https:\/\/github.com\/miriamposner\/cytoscape_tutorials\/raw\/master\/images\/get-a-unimodal-network\/open-a-new-r-script-file.png\" alt=\"\"\/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/github.com\/miriamposner\/cytoscape_tutorials\/blob\/master\/get-a-unimodal-network.md#3-practice-entering-a-command\"><\/a>3. Practice entering a command<\/h2>\n\n\n\n<p>To run commands in RStudio, you will enter them in the file you just opened, separating each command by pressing&nbsp;<strong>return<\/strong>.<\/p>\n\n\n\n<p>Let&#8217;s try running our first command. Type the following into the file you just created:<\/p>\n\n\n\n<p><code>print(\"Hello world\")<\/code><\/p>\n\n\n\n<p>Now, with your cursor anywhere on the line you just typed, hold down the&nbsp;<strong>Command<\/strong>&nbsp;key and press&nbsp;<strong>Return<\/strong>. (On a Windows computer, hold down the&nbsp;<strong>Ctrl<\/strong>&nbsp;key and press&nbsp;<strong>Enter<\/strong>.)<\/p>\n\n\n\n<p>Now look down at the console, which is just below your file. You should see both the command you just entered (in blue) and the result of the command:<\/p>\n\n\n\n<p><code>\"Hello world\"<\/code><\/p>\n\n\n\n<p>This is how we&#8217;ll be working in RStudio for this tutorial. We&#8217;ll enter one command at a time, run it, and then look down at the console to see the result (and any error messages).<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/github.com\/miriamposner\/cytoscape_tutorials\/blob\/master\/images\/get-a-unimodal-network\/practice-entering-a-command.png\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" src=\"https:\/\/github.com\/miriamposner\/cytoscape_tutorials\/raw\/master\/images\/get-a-unimodal-network\/practice-entering-a-command.png\" alt=\"\"\/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/github.com\/miriamposner\/cytoscape_tutorials\/blob\/master\/get-a-unimodal-network.md#4-install-devtools\"><\/a>4. Install devtools<\/h2>\n\n\n\n<p>Now we&#8217;ll use RStudio to install devtools, a&nbsp;<strong>package<\/strong>&nbsp;(add-on) for R that developers use to build and distribute packages that add functionality to R.<\/p>\n\n\n\n<p>To install devtools, type<\/p>\n\n\n\n<p><code>install.packages(\"devtools\")<\/code><\/p>\n\n\n\n<p>Then place your cursor anywhere on that line and type&nbsp;<strong>command<\/strong>&nbsp;and then&nbsp;<strong>return<\/strong>&nbsp;(<strong>control<\/strong>&nbsp;and&nbsp;<strong>enter<\/strong>&nbsp;on a PC), just as you did in the previous step. Your console should look something like mine in the image below.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/github.com\/miriamposner\/cytoscape_tutorials\/blob\/master\/images\/get-a-unimodal-network\/install-devtools.png\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" src=\"https:\/\/github.com\/miriamposner\/cytoscape_tutorials\/raw\/master\/images\/get-a-unimodal-network\/install-devtools.png\" alt=\"\"\/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/github.com\/miriamposner\/cytoscape_tutorials\/blob\/master\/get-a-unimodal-network.md#5-install-projector\"><\/a>5. Install projectoR<\/h2>\n\n\n\n<p>Now that we&#8217;ve installed devtools, we&#8217;ll use it to install a package written especially for us by the great&nbsp;<a href=\"http:\/\/matthewlincoln.net\/\">Matthew Lincoln<\/a>! It&#8217;s called&nbsp;<a href=\"https:\/\/github.com\/mdlincoln\/projectoR\">projectoR<\/a>, and Matt wrote it in response to my request for an R program that could simplify the process of projecting a bimodal graph to a unimodal graph. Thanks, Matt!<\/p>\n\n\n\n<p>To install ProjectoR, type<\/p>\n\n\n\n<p><code>devtools::install_github(\"mdlincoln\/projectoR\")<\/code><\/p>\n\n\n\n<p>Now run this command the same way you ran the previous commands.<\/p>\n\n\n\n<p>(Your console won&#8217;t look exactly like mine because I already had projectoR installed when I ran the command.)<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/github.com\/miriamposner\/cytoscape_tutorials\/blob\/master\/images\/get-a-unimodal-network\/install-projector.png\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" src=\"https:\/\/github.com\/miriamposner\/cytoscape_tutorials\/raw\/master\/images\/get-a-unimodal-network\/install-projector.png\" alt=\"\"\/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/github.com\/miriamposner\/cytoscape_tutorials\/blob\/master\/get-a-unimodal-network.md#6-load-projector\"><\/a>6. Load projectoR<\/h2>\n\n\n\n<p>Even though we&#8217;ve installed projectoR, we haven&#8217;t loaded it into our current RStudio session. (RStudio only imports packages as you need them, in order to save memory.) Let&#8217;s tell RStudio that we&#8217;ll be using projectoR by typing<\/p>\n\n\n\n<p><code>library(projectoR)<\/code><\/p>\n\n\n\n<p>And, of course, run that line just as you did the previous lines.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/github.com\/miriamposner\/cytoscape_tutorials\/blob\/master\/images\/get-a-unimodal-network\/require-projector.png\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" src=\"https:\/\/github.com\/miriamposner\/cytoscape_tutorials\/raw\/master\/images\/get-a-unimodal-network\/require-projector.png\" alt=\"\"\/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/github.com\/miriamposner\/cytoscape_tutorials\/blob\/master\/get-a-unimodal-network.md#7-import-our-data-1\"><\/a>7. Import our data (1)<\/h2>\n\n\n\n<p>OK, now we&#8217;re going to start getting serious. Let&#8217;s load in our data. We can do that by typing<\/p>\n\n\n\n<p><code>bipartite_list &lt;- data.frame(read.csv(file.choose()))<\/code><\/p>\n\n\n\n<p>Before we run that command, though, let&#8217;s look at what it means.<\/p>\n\n\n\n<p>We&#8217;re creating our very first&nbsp;<a href=\"http:\/\/www.programiz.com\/r-programming\/variable-constant\"><strong>variable<\/strong><\/a>&nbsp;in R. That variable, called&nbsp;<strong>bipartite_list<\/strong>, is built by creating a data frame out of a CSV of your choosing. You can tell we&#8217;re assigning a variable because of that left-pointing arrow. We could&#8217;ve called the variable anything, but I&#8217;m calling it bipartite_list because that&#8217;s what Matt calls it in his documentation.<\/p>\n\n\n\n<p>A&nbsp;<a href=\"http:\/\/www.r-tutor.com\/r-introduction\/data-frame\"><strong>data frame<\/strong><\/a>&nbsp;is a particular arrangement of data. Technically, it&#8217;s&nbsp;<a href=\"http:\/\/www.r-tutor.com\/r-introduction\/data-frame\">&#8220;a list of vectors of equal length.&#8221;<\/a>&nbsp;What&#8217;s a&nbsp;<strong>vector<\/strong>? It&#8217;s&nbsp;<a href=\"http:\/\/www.r-tutor.com\/r-introduction\/vector\">&#8220;a sequence of data elements of the same basic type.&#8221;<\/a>&nbsp;So all of the elements in a vector have to be the same kind of thing: numbers, character strings, or logical values.<\/p>\n\n\n\n<p>Happily, both of the columns in our edge list meet this definition of a&nbsp;<strong>vector<\/strong>, since they&#8217;re both composed entirely of character strings. Even better, our edge list is, of necessity, composed of two vectors of the same length &#8212; so it also fits the definition of a data frame.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/github.com\/miriamposner\/cytoscape_tutorials\/blob\/master\/images\/get-a-unimodal-network\/import-our-data--1-.png\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" src=\"https:\/\/github.com\/miriamposner\/cytoscape_tutorials\/raw\/master\/images\/get-a-unimodal-network\/import-our-data--1-.png\" alt=\"\"\/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/github.com\/miriamposner\/cytoscape_tutorials\/blob\/master\/get-a-unimodal-network.md#8-import-our-data-2\"><\/a>8. Import our data (2)<\/h2>\n\n\n\n<p>Now that we&#8217;ve explained what it means, go ahead and run that line of code in the customary way. Mac should launch the file chooser, and you&#8217;ll be able to navigate to the edge list that you&#8217;ll be transforming.<\/p>\n\n\n\n<p>(Remember, the first two columns of your edge list should contain your source and target nodes.)<\/p>\n\n\n\n<p>Take a look at the&nbsp;<strong>Environment<\/strong>&nbsp;pane at the top right of your RStudio workspace. You&#8217;ll see that it now contains a variable! Every time you create a variable, it&#8217;ll be listed in that pane. Note that you can click on the variable&#8217;s name, and even open it up as a table. Handy!<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/github.com\/miriamposner\/cytoscape_tutorials\/blob\/master\/images\/get-a-unimodal-network\/import-our-data--2-.png\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" src=\"https:\/\/github.com\/miriamposner\/cytoscape_tutorials\/raw\/master\/images\/get-a-unimodal-network\/import-our-data--2-.png\" alt=\"\"\/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/github.com\/miriamposner\/cytoscape_tutorials\/blob\/master\/get-a-unimodal-network.md#9-convert-our-two-mode-edge-list-to-a-one-mode-edge-list-1\"><\/a>9. Convert our two-mode edge list to a one-mode edge list (1)<\/h2>\n\n\n\n<p>Time to do what we came to do! We&#8217;ll accomplish that with one line of code:<\/p>\n\n\n\n<p><code>onemode &lt;- project_table(bipartite_list, joining_col = \"films\")<\/code><\/p>\n\n\n\n<p>Before we run this line, though, let&#8217;s talk about what we&#8217;re doing here.<\/p>\n\n\n\n<p>When Matt wrote the projectoR package, he&nbsp;<a href=\"https:\/\/github.com\/mdlincoln\/projectoR\/blob\/master\/R\/project_table.R\">specified a particular function called&nbsp;<\/a><a href=\"https:\/\/github.com\/mdlincoln\/projectoR\/blob\/master\/R\/project_table.R\"><strong>project_table<\/strong><\/a>. As Matt explains, the project_table function takes two&nbsp;<strong>arguments<\/strong>&nbsp;(that is, it asks for two pieces of information). The first argument is the name of the data frame that contains the two-mode edge list we want to convert. The second argument is what Matt calls the&nbsp;<strong>joining column<\/strong>. That is, it&#8217;s the column that forms the basis of the relationships in the one-mode list you&#8217;ll create.<\/p>\n\n\n\n<p>To make that more concrete, my two-mode edge list contains two columns:&nbsp;<strong>films<\/strong>&nbsp;and&nbsp;<strong>actors<\/strong>. Since I want to make a one-mode edge list that shows how actors are connected to each other, I&#8217;ll specify that I want to use the other column &#8212; the&nbsp;<strong>films<\/strong>&nbsp;column &#8212; as the basis of these relationships.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/github.com\/miriamposner\/cytoscape_tutorials\/blob\/master\/images\/get-a-unimodal-network\/convert-our-two-mode-edge-list-to-a-one-mode-edge-list--1-.png\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" src=\"https:\/\/github.com\/miriamposner\/cytoscape_tutorials\/raw\/master\/images\/get-a-unimodal-network\/convert-our-two-mode-edge-list-to-a-one-mode-edge-list--1-.png\" alt=\"\"\/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/github.com\/miriamposner\/cytoscape_tutorials\/blob\/master\/get-a-unimodal-network.md#10-convert-our-two-mode-edge-list-to-a-one-mode-edge-list-2\"><\/a>10. Convert our two-mode edge list to a one-mode edge list (2)<\/h2>\n\n\n\n<p>Go ahead and run that command in the customary way. Once you&#8217;ve done that, you should have a new variable, called&nbsp;<strong>onemode<\/strong>, in the environment pane. If you click on the tiny grid to the right of the variable&#8217;s name, you&#8217;ll see that you can even open up our new table in RStudio.<\/p>\n\n\n\n<p>When you open up the onemode table, you&#8217;ll notice that you have three columns:&nbsp;<strong>from<\/strong>,&nbsp;<strong>to<\/strong>, and&nbsp;<strong>weight<\/strong>.&nbsp;<strong>From<\/strong>&nbsp;and&nbsp;<strong>to<\/strong>&nbsp;are pretty straightforward. But what about&nbsp;<strong>weight<\/strong>?<\/p>\n\n\n\n<p>Weight is an&nbsp;<strong>edge attribute<\/strong>&nbsp;that describes the strength of the actors&#8217; connection, in terms of how many films they&#8217;ve appeared in together. Two actors who appear in one film together will have an edge weight of one, two actors who appear in two films together will have an edge weight of two, and so on.<\/p>\n\n\n\n<p>When you load your new edge list into Cytoscape, you can use the weight to control the visual appearance of your edges.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/github.com\/miriamposner\/cytoscape_tutorials\/blob\/master\/images\/get-a-unimodal-network\/convert-our-two-mode-edge-list-to-a-one-mode-edge-list--2-.png\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" src=\"https:\/\/github.com\/miriamposner\/cytoscape_tutorials\/raw\/master\/images\/get-a-unimodal-network\/convert-our-two-mode-edge-list-to-a-one-mode-edge-list--2-.png\" alt=\"\"\/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/github.com\/miriamposner\/cytoscape_tutorials\/blob\/master\/get-a-unimodal-network.md#11-save-your-new-edge-list-to-your-computer\"><\/a>11. Save your new edge list to your computer<\/h2>\n\n\n\n<p>Now that we&#8217;ve created a data frame called&nbsp;<strong>onemode<\/strong>&nbsp;that contains the edge list we set out to create, we need to save it to our computer.<\/p>\n\n\n\n<p>Type the following command:<\/p>\n\n\n\n<p><code>write.csv(onemode, file = \"onemode.csv\")<\/code><\/p>\n\n\n\n<p>With this command, we&#8217;re passing the <strong>function<\/strong> called <a href=\"https:\/\/stat.ethz.ch\/R-manual\/R-devel\/library\/utils\/html\/write.table.html\">write.csv<\/a> two arguments: the first, <strong>onemode<\/strong>, is the name of the file we want to save to our computer; the second, <strong>file = &#8220;onemode.csv&#8221;<\/strong>, is the name we want to give to the file we&#8217;re saving.<\/p>\n\n\n\n<p>To figure out where RStudio, by default, saves files, click on the\u00a0<strong>Session<\/strong>\u00a0menu (in RStudio&#8217;s main menu), then\u00a0<strong>Set Working Directory<\/strong>, and then\u00a0<strong>Choose Directory<\/strong>. You don&#8217;t actually have to choose a directory (unless you want to); just take note of where RStudio&#8217;s &#8220;working directory&#8221; &#8212; that is, the first place it goes to look for and save files. Then press\u00a0<strong>cancel<\/strong>.<\/p>\n\n\n\n<p>Now, minimize RStudio and look in your computer&#8217;s working directory to find your new one-mode edge list, called&nbsp;<strong>onemode.csv<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/github.com\/miriamposner\/cytoscape_tutorials\/blob\/master\/images\/get-a-unimodal-network\/save-your-new-edge-list-to-your-computer.png\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" src=\"https:\/\/github.com\/miriamposner\/cytoscape_tutorials\/raw\/master\/images\/get-a-unimodal-network\/save-your-new-edge-list-to-your-computer.png\" alt=\"\"\/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/github.com\/miriamposner\/cytoscape_tutorials\/blob\/master\/get-a-unimodal-network.md#12-admire-your-work\"><\/a>12. Admire your work<\/h2>\n\n\n\n<p>You now have a one-mode edge list that shows you which actors are connected, through a shared appearance in one or more films. Now you can import this edge list into Cytoscape and&nbsp;<a href=\"https:\/\/github.com\/miriamposner\/cytoscape_tutorials\/blob\/master\/readme.md\">build a network diagram<\/a>, just as you did with the previous list.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/github.com\/miriamposner\/cytoscape_tutorials\/blob\/master\/images\/get-a-unimodal-network\/admire-your-work.png\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" src=\"https:\/\/github.com\/miriamposner\/cytoscape_tutorials\/raw\/master\/images\/get-a-unimodal-network\/admire-your-work.png\" alt=\"\"\/><\/a><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>As we saw in the\u00a0last tutorial,\u00a0bimodal networks\u00a0(e.g., film-actor) can be illuminating, but trying to map relationships between two different entities on the same graph can also lead to confusion. That&#8217;s&hellip; <a class=\"more-link\" href=\"https:\/\/miriamposner.com\/classes\/dh201w23\/tutorials-guides\/network-analysis\/get-a-unimodal-network-from-a-bimodal-network\/\">Continue reading <span class=\"screen-reader-text\">Get a unimodal network from a bimodal network<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":482,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_eb_attr":"","footnotes":""},"class_list":["post-492","page","type-page","status-publish","hentry","entry"],"_links":{"self":[{"href":"https:\/\/miriamposner.com\/classes\/dh201w23\/wp-json\/wp\/v2\/pages\/492","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/miriamposner.com\/classes\/dh201w23\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/miriamposner.com\/classes\/dh201w23\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/miriamposner.com\/classes\/dh201w23\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/miriamposner.com\/classes\/dh201w23\/wp-json\/wp\/v2\/comments?post=492"}],"version-history":[{"count":0,"href":"https:\/\/miriamposner.com\/classes\/dh201w23\/wp-json\/wp\/v2\/pages\/492\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/miriamposner.com\/classes\/dh201w23\/wp-json\/wp\/v2\/pages\/482"}],"wp:attachment":[{"href":"https:\/\/miriamposner.com\/classes\/dh201w23\/wp-json\/wp\/v2\/media?parent=492"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}