The PsyBorgs Lab
The PsyBorgs Lab Jekyll v3.7.3 https://psyborgs.github.io/apple-touch-icon-precomposed.png A collaborative digital history initiative in the Department of Psychology at York University 2018-04-23T14:15:18+00:00 https://psyborgs.github.io/ The PsyBorgs Lab https://psyborgs.github.io/ APA Division Memberships Through the Years 2016-08-24T00:00:00+00:00 https://psyborgs.github.io/projects/apa-division-memberships The PsyBorgs Lab https://psyborgs.github.io/ <p>The following visualization displays the sizes (in terms of membership) of the 50+ divisions of the American Psychological Association from 1948, when the APA’s divisional structure was first established, until 2013. It was created by Shane M. Martin using <a href="https://d3js.org/">D3.js</a> and <a href="http://c3js.org/">C3.js</a>. The data were generously supplied by APA’s Divisional Services Office.</p> <div id="chart"></div> <p>Hovering over any point on the graph will highlight the entire curve on which it lies (i.e., the membership of that one division over time). Alternatively, hovering over the name of a division in the list below the graph will highlight that division’s membership curve in the graph. Sweeping two fingers up on your touchpad will zoom in, enabling you to see complex portions of the graph in more detail. This is especially useful near the bottom of the graph, where many divisions have memberships below 1000.</p> <p>The image tells us many things about APA divisional memberships over the years. I will mention only a few highlights here. First, note that not all divisions were launched at the same time. In 1948, there were only 17 divisions (note, there has never been a Division 4 or 11; Division 6 split off from 5 in 1963). The original divisions were dedicated to topics like “General,” “Teaching,” Experimental,” “Statistics,” “Personality &amp; Social,” and “Clinical” and “Consulting.” These last two were the direct result of the merging of the APA with the American Association for Applied Psychology, just after World War II, at the urging of the U.S. government.</p> <p>More than 30 additional divisions have been added over the years since 1948. The “History” Division (26), for instance, was added in 1966. “Women” (35) was added in 1974. “Independent Practice” (42), among the largest divisions today, was added in 1982. The newest division, “Trauma” (56), was added in 2005.</p> <p>Generally speaking, divisional memberships rose steadily (as did membership in the wider APA) until the mid-1990s. Since that time, however, divisional memberships have tended to fall, though some individual divisions have continued to grow (e.g., “Industrial &amp; Organizational” [14]). Older division members tend to maintain their core memberships until retirement, but younger members of the APA have not joined divisions as frequently as earlier generations did. As a result, not only has divisional membership fallen over the past 20 years, but it has become older as well. The reasons for this trend have been a matter of concern in APA circles for some time. My own judgment is that once APA converted their journals to digital editions, there was less incentive to join divisions than there had been in the past. Before digital editions of journals were available, the only way to read many of APA’s (and the associated Educational Publishing Foundation’s) journals was to join the relevant division and have a hardcopy mailed to you. (Most libraries subscribed only to the most popular APA journals, but not many of the more specialized ones.) Once APA started to sell digital “packages” of their journals to university libraries, though, potential readers could access the any journal’s contents without joining the associated division. This undercut a key motivation to join divisions.</p> <p>The “Clinical Psychology” Division (12) has been one of the largest since the very beginning.</p> <p>Both the “Personality &amp; Social” and “Educational” Divisions (8, 15) experienced peaks in the early 1970s, but their memberships have steadily drifted downwards since then.</p> <p>The “General” Division (1) leapt upward quickly in the late 1970s and through the 1980s (possibly associated with centennial of Wundt’s Leipzig laboratory in 1979), but it fell off sharply thereafter.</p> <p>The “Psychotherapy” Division (29), which only began in 1968, rapidly climbed to become the second largest division in 1994, with over 7000 members, but fell off even more quickly afterwards.</p> <p>The “Women” Division (35), experienced a tremendous spike in membership in 1995, suddenly making it APA’s 4th largest division with over 6000 members, but it then fell off rapidly afterwards. The reason for this spike is not entirely clear.</p> <p>The “Independent Practice” Division (42) started in 1982 with a huge initial membership, ranking 4th overall. By 1992, it had become the largest division. In 1995, it attained the largest membership of any division in APA history, with more than 10,000 members. Although its membership fell off quickly during the late 1990s, it remains among APA’s the largest divisions today.</p> <p>One division that has strongly resisted the general downward membership trend is “Clinical Neuropsychology” (40), which began in 1980. It became the largest division in 2009, with more than 4000 members.</p> Replication in Psychology: A Historical Perspective 2016-03-08T00:00:00+00:00 https://psyborgs.github.io/projects/replication-in-psychology The PsyBorgs Lab https://psyborgs.github.io/ <img src="https://psyborgs.github.io/images/screenshots/repl-in-psych-feature.jpg"><br/> <p>The reproducibility of psychological findings has generated much discussion of late. However, the question of replication is not a new one for psychologists.</p> <p>Psychologist have long debated how best to measure their phenomena, how to design their studies, how best to interpret their data, and whether their findings have a broader relevance.</p> <iframe src="//cdn.knightlab.com/libs/timeline3/latest/embed/index.html?source=1VmNbWVPLfN9e7iI7gaLIOI4yb8t9IDQNC1WCsADlXBY&amp;font=Default&amp;lang=en&amp;initial_zoom=2&amp;height=650" width="100%" height="650" frameborder="0"></iframe> <p>This interactive timeline offers the reader a brief guide to this longer history. I define replication fairly broadly, but attempt to not simply offer a history of psychology in its entirety. Instead, I have focused on famous replication controversies from the past alongside the development of psychology’s favored research methods.</p> <p>I am personally quite agnostic as to the value of the current interest in direct replication. My worry is that it distracts (as is often the case in psychology) from questions of external validity. My goal is to provide a richer context for contemporary controversies animating psychology.</p> <p>I welcome corrections, updates, and suggestions of relevant topics. Please contact me at mpettit at yorku.ca</p> Psychology's EloRater — Public release 2015-09-07T00:00:00+00:00 https://psyborgs.github.io/projects/elorater-release The PsyBorgs Lab https://psyborgs.github.io/ <img src="https://psyborgs.github.io/images/screenshots/elorater-feature.png"><br/> <p>This summer, Chris Green and Shane Martin put their heads together and developed a new online history of psychology game, called <a href="http://elo.sha.nemart.in/">Psychology’s EloRater</a>, which we would like to invite you to participate in.</p> <p>The game is simple: You are shown the names of a pair of individuals who were significant in the history of psychology, and you have to select which had the greater impact on the discipline (by clicking on their name). If you are undecided about which person to pick (some of the names may be unfamiliar), there is a short summary of each person’s career highlights below the names, along with a link to the Wikipedia page of each. You may continue playing the game, pair after pair, for as long as you like. There are 400 different names in the pool.</p> <p>The game is actually part of a research project where we are trying to “crowd source” rankings of the most influential psychologists in history (and then we’ll compare our findings with past attempts to “rationally” rank historical psychologists). The individual choices are gathered together in something called an ELO formula which creates a ranked list of names.</p> <p>If you would like your data to “count” in our research project, there are a few demographic questions and a consent form (which requires only a checkmark from you) when you begin.</p> <p>If you encounter any problems, you can let us know via the website (along with the device and operating systems you’re using). If you have any comments or suggestions, please let us know about those as well.</p> <p><a href="http://elo.sha.nemart.in/">LET THE GAMES BEGIN!</a></p> Mapping the Therapeutic in the United States 2013-07-18T00:00:00+00:00 https://psyborgs.github.io/projects/mapping-therapeutic-ethos The PsyBorgs Lab https://psyborgs.github.io/ <img src="https://psyborgs.github.io/images/screenshots/mapping-ethos-feature.png"><br/> <p>The goal of this project is to bring a spatial sensibility to the debate concerning the prevalence of a therapeutic ethos in the 20th century, to illustrate the approach, the map below indicates the location of graduate programs in clinical psychology accredited by the American Psychological Association.</p> <p>View <a href="http://batchgeo.com/map/dfe7167b6df0a7d8d635b5c0161605a0">APA-Accredited Clinical Programs</a> in a full screen map.</p> Documentation for Breiger-Type Duality Networks: Or, What Social Network Can(’t) Tell us about the Early Organization of Psychology 2013-07-10T00:00:00+00:00 https://psyborgs.github.io/tutorials/breiger-type-duality-networks The PsyBorgs Lab https://psyborgs.github.io/ <img src="https://psyborgs.github.io/images/screenshots/breiger-network-feature.jpg"><br/> <p>Breiger, 1974 is a classic in social network analysis. It offers a way of using group membership to show a) how people are connected by their shared affiliations and b) which groups are important to a collection of people.</p> <p>The following notes are intended to offer a step-by-step process for assembling Breiger-type networks.</p> <p>I will demonstrate the applicability of this approach to the history of psychology by illustrating each step using the example of first 10 presidents of the American Psychological Association and their university affiliations.</p> <p><strong>Program Requirements:</strong></p> <ul> <li>Microsoft Excel</li> <li><a href="http://nature.berkeley.edu/~oboyski67/MatrixConverter.htm">Array to edge list converter</a> (free)</li> <li><a href="https://gephi.org/">Gephi</a> (free)</li> </ul> <p>Before you get started, you need to download and install both the converter add-in for Excel and gephi.</p> <h2 id="a-data-entry">A) Data Entry</h2> <p>1. In Excel, set up an array with persons as rows and groups (institutions, events, etc) as the columns</p> <p>2. If an individual participated in a group, enter 1 in the appropriate cell. If not, 0</p> <table> <thead> <tr> <th style="text-align: left"> </th> <th style="text-align: left">Harvard</th> <th style="text-align: left">Hopkins</th> <th style="text-align: left">Yale</th> <th style="text-align: left">Princeton</th> <th style="text-align: left">Leipzig</th> <th style="text-align: left">Columbia</th> <th style="text-align: left">Penn</th> <th style="text-align: left"> </th> </tr> </thead> <tbody> <tr> <td style="text-align: left">Hall</td> <td style="text-align: left">1</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left"> </td> </tr> <tr> <td style="text-align: left">Ladd</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left"> </td> </tr> <tr> <td style="text-align: left">James</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left"> </td> </tr> <tr> <td style="text-align: left">Cattell</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> <td style="text-align: left">1</td> <td style="text-align: left">1</td> <td style="text-align: left"> </td> </tr> <tr> <td style="text-align: left">Fullerton</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> <td style="text-align: left">1</td> <td style="text-align: left"> </td> </tr> <tr> <td style="text-align: left">Baldwin</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left"> </td> </tr> <tr> <td style="text-align: left">MunsterBerg</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left"> </td> </tr> <tr> <td style="text-align: left">Dewey</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left"> </td> </tr> <tr> <td style="text-align: left">Jastrow</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> <td style="text-align: left">1</td> <td style="text-align: left"> </td> </tr> <tr> <td style="text-align: left">Royce</td> <td style="text-align: left">1</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left"> </td> </tr> </tbody> </table> <p>Each row is dedicated to an APA president and each column represents a university. This is a much simplified version of the history. For illustrative purposes, I have only included those institutions where more than one individual studied or taught. For example, Joseph Jastrow spent most of his career at the University of Wisconsin. However, no one else shared this connection. In this case, a shared institution does not necessarily mean a concurrently share institution, although given the time frame this was often the case.</p> <h2 id="b-array-multiplication">B) Array Multiplication</h2> <p>3. Select the entire array (including labels) and copy</p> <p>4. “Paste special” and select “transpose”</p> <table> <thead> <tr> <th style="text-align: left"> </th> <th style="text-align: left">Hall</th> <th style="text-align: left">Ladd</th> <th style="text-align: left">James</th> <th style="text-align: left">Cattell</th> <th style="text-align: left">Fullerton</th> <th style="text-align: left">Baldwin</th> <th style="text-align: left">Munsterberg</th> <th style="text-align: left">Dewey</th> <th style="text-align: left">Jastrow</th> <th style="text-align: left">Royce</th> </tr> </thead> <tbody> <tr> <td style="text-align: left">Harvard</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> </tr> <tr> <td style="text-align: left">Hopkins</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> <td style="text-align: left">1</td> <td style="text-align: left">1</td> </tr> <tr> <td style="text-align: left">Yale</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> </tr> <tr> <td style="text-align: left">Princeton</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> </tr> <tr> <td style="text-align: left">Leipzig</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> </tr> <tr> <td style="text-align: left">Columbia</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> </tr> <tr> <td style="text-align: left">Penn</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> </tr> </tbody> </table> <p>You can see that this table contains the same inform but has simply been inverted.</p> <p>5. Cut and paste the appropriate labels. They should be the same vertically and horizontally. In other words, along the diagonal from the first cell there should be a line where the labels are identical</p> <p>6. Highlight the area within the 2 axes created by the labels</p> <p>7. In the formula bar, enter =MMULT(A2:B2,D1:E2); e.g. the range of the first array, the range of the second array</p> <p>8. Instead of hitting enter, use ctrl+shift+enter</p> <p>N.B.: Working with arrays in Excel is limited by the random access memory. If you get an error make sure the size of your array isn’t greater than what you version of excel can support.</p> <table> <thead> <tr> <th style="text-align: left"> </th> <th style="text-align: left">Hall</th> <th style="text-align: left">Ladd</th> <th style="text-align: left">James</th> <th style="text-align: left">Cattell</th> <th style="text-align: left">Fullerton</th> <th style="text-align: left">Baldwin</th> <th style="text-align: left">Munsterberg</th> <th style="text-align: left">Dewey</th> <th style="text-align: left">Jastrow</th> </tr> </thead> <tbody> <tr> <td style="text-align: left">Hall</td> <td style="text-align: left">3</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> <td style="text-align: left">2</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> <td style="text-align: left">2</td> <td style="text-align: left">1</td> <td style="text-align: left">1</td> </tr> <tr> <td style="text-align: left">Ladd</td> <td style="text-align: left">0</td> <td style="text-align: left">2</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> </tr> <tr> <td style="text-align: left">James</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> </tr> <tr> <td style="text-align: left">Cattell</td> <td style="text-align: left">2</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">4</td> <td style="text-align: left">2</td> <td style="text-align: left">1</td> <td style="text-align: left">1</td> <td style="text-align: left">2</td> <td style="text-align: left">3</td> </tr> <tr> <td style="text-align: left">Fullerton</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">2</td> <td style="text-align: left">3</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> <td style="text-align: left">2</td> </tr> <tr> <td style="text-align: left">Baldwin</td> <td style="text-align: left">1</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">2</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> <td style="text-align: left">1</td> </tr> <tr> <td style="text-align: left">Munsterberg</td> <td style="text-align: left">2</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">2</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> </tr> <tr> <td style="text-align: left">Dewey</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">2</td> <td style="text-align: left">1</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">2</td> <td style="text-align: left">2</td> </tr> <tr> <td style="text-align: left">Jastrow</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">0</td> <td style="text-align: left">3</td> <td style="text-align: left">2</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">2</td> <td style="text-align: left">3</td> </tr> <tr> <td style="text-align: left">Royce</td> <td style="text-align: left">2</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> <td style="text-align: left">1</td> <td style="text-align: left">0</td> <td style="text-align: left">1</td> <td style="text-align: left">1</td> <td style="text-align: left">1</td> <td style="text-align: left">1</td> </tr> </tbody> </table> <p>In this table, people are connected to people with the number of connections (e.g. the number of shared institutions) appearing in the cell. For example Hall and Munsterberg have a connection to both Leipzig and Harvard. If you look at the cell at the intersection of Hall and Munsterberg (or Munsterberg and Hall) you’ll see 2</p> <h2 id="c-converting-an-array-to-an-edge-list">C) Converting an Array to an Edge List</h2> <p>9. Copy the new array (including labels) and open a new Excel document</p> <p>10. Under Edit, “Paste special”: select “values”</p> <p>11. Delete the values in the diagonal line where the same labels are identical</p> <p>12. Under Tools, select matrix converter. In a series of pop up windows, it will ask you a number of questions.</p> <p>13. For header rows: 1</p> <p>14. For column rows: 1</p> <p>15. For Field Name Row 1: Source</p> <p>16. For Field Name Row 2: Target</p> <p>17. Convert!</p> <p>18. Add a column labelled “type” and fill down either “directed” or “undirected” as appropriate</p> <p>19. N.B.: The converter will count both of a tie’s appearances in the array (e.g. Hall’s connection to Munsterberg, and Munsterberg’s connection to Hall). This matters when calculating weighted degree in gephi, but the solution is pretty easy.</p> <p>20. Create a new column labelled “weight.” Its value is the adjacent “data” column divided by 2 (e.g. = C2/2, = C3/2, = C4/2 etc.)</p> <p>Your final table should look something like this:</p> <table> <thead> <tr> <th style="text-align: left">Source</th> <th style="text-align: left">Target</th> <th style="text-align: left">Data</th> <th style="text-align: left">weight</th> <th style="text-align: left">type</th> </tr> </thead> <tbody> <tr> <td style="text-align: left">Hall</td> <td style="text-align: left">James</td> <td style="text-align: left">1</td> <td style="text-align: left">0.5</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Hall</td> <td style="text-align: left">Cattell</td> <td style="text-align: left">2</td> <td style="text-align: left">1</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Hall</td> <td style="text-align: left">Baldwin</td> <td style="text-align: left">1</td> <td style="text-align: left">0.5</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Hall</td> <td style="text-align: left">Munsterberg</td> <td style="text-align: left">2</td> <td style="text-align: left">1</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Hall</td> <td style="text-align: left">Dewey</td> <td style="text-align: left">1</td> <td style="text-align: left">0.5</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Hall</td> <td style="text-align: left">Jastrow</td> <td style="text-align: left">1</td> <td style="text-align: left">0.5</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Hall</td> <td style="text-align: left">Royce</td> <td style="text-align: left">2</td> <td style="text-align: left">1</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Ladd</td> <td style="text-align: left">Fullerton</td> <td style="text-align: left">1</td> <td style="text-align: left">0.5</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Ladd</td> <td style="text-align: left">Baldwin</td> <td style="text-align: left">1</td> <td style="text-align: left">0.5</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">James</td> <td style="text-align: left">Hall</td> <td style="text-align: left">1</td> <td style="text-align: left">0.5</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">James</td> <td style="text-align: left">Munsterberg</td> <td style="text-align: left">1</td> <td style="text-align: left">0.5</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">James</td> <td style="text-align: left">Royce</td> <td style="text-align: left">1</td> <td style="text-align: left">0.5</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Cattell</td> <td style="text-align: left">Hall</td> <td style="text-align: left">2</td> <td style="text-align: left">1</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Cattell</td> <td style="text-align: left">Fullerton</td> <td style="text-align: left">2</td> <td style="text-align: left">1</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Cattell</td> <td style="text-align: left">Baldwin</td> <td style="text-align: left">1</td> <td style="text-align: left">0.5</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Cattell</td> <td style="text-align: left">Munsterberg</td> <td style="text-align: left">1</td> <td style="text-align: left">0.5</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Cattell</td> <td style="text-align: left">Dewey</td> <td style="text-align: left">2</td> <td style="text-align: left">1</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Cattell</td> <td style="text-align: left">Jastrow</td> <td style="text-align: left">3</td> <td style="text-align: left">1.5</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Cattell</td> <td style="text-align: left">Royce</td> <td style="text-align: left">1</td> <td style="text-align: left">0.5</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Fullerton</td> <td style="text-align: left">Ladd</td> <td style="text-align: left">1</td> <td style="text-align: left">0.5</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Fullerton</td> <td style="text-align: left">Cattell</td> <td style="text-align: left">2</td> <td style="text-align: left">1</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Fullerton</td> <td style="text-align: left">Dewey</td> <td style="text-align: left">1</td> <td style="text-align: left">0.5</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Fullerton</td> <td style="text-align: left">Jastrow</td> <td style="text-align: left">2</td> <td style="text-align: left">1</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Baldwin</td> <td style="text-align: left">Hall</td> <td style="text-align: left">1</td> <td style="text-align: left">0.5</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Baldwin</td> <td style="text-align: left">Ladd</td> <td style="text-align: left">1</td> <td style="text-align: left">0.5</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Baldwin</td> <td style="text-align: left">Cattell</td> <td style="text-align: left">1</td> <td style="text-align: left">0.5</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Baldwin</td> <td style="text-align: left">Dewey</td> <td style="text-align: left">1</td> <td style="text-align: left">0.5</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Baldwin</td> <td style="text-align: left">Jastrow</td> <td style="text-align: left">1</td> <td style="text-align: left">0.5</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Baldwin</td> <td style="text-align: left">Royce</td> <td style="text-align: left">1</td> <td style="text-align: left">0.5</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Munsterberg</td> <td style="text-align: left">Hall</td> <td style="text-align: left">2</td> <td style="text-align: left">1</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Munsterberg</td> <td style="text-align: left">James</td> <td style="text-align: left">1</td> <td style="text-align: left">0.5</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Munsterberg</td> <td style="text-align: left">Cattell</td> <td style="text-align: left">1</td> <td style="text-align: left">0.5</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Munsterberg</td> <td style="text-align: left">Royce</td> <td style="text-align: left">1</td> <td style="text-align: left">0.5</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Dewey</td> <td style="text-align: left">Hall</td> <td style="text-align: left">1</td> <td style="text-align: left">0.5</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Dewey</td> <td style="text-align: left">Cattell</td> <td style="text-align: left">2</td> <td style="text-align: left">1</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Dewey</td> <td style="text-align: left">Fullerton</td> <td style="text-align: left">1</td> <td style="text-align: left">0.5</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Dewey</td> <td style="text-align: left">Baldwin</td> <td style="text-align: left">1</td> <td style="text-align: left">0.5</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Dewey</td> <td style="text-align: left">Jastrow</td> <td style="text-align: left">2</td> <td style="text-align: left">1</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Dewey</td> <td style="text-align: left">Royce</td> <td style="text-align: left">1</td> <td style="text-align: left">0.5</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Jastrow</td> <td style="text-align: left">Hall</td> <td style="text-align: left">1</td> <td style="text-align: left">0.5</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Jastrow</td> <td style="text-align: left">Cattell</td> <td style="text-align: left">3</td> <td style="text-align: left">1.5</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Jastrow</td> <td style="text-align: left">Fullerton</td> <td style="text-align: left">2</td> <td style="text-align: left">1</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Jastrow</td> <td style="text-align: left">Baldwin</td> <td style="text-align: left">1</td> <td style="text-align: left">0.5</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Jastrow</td> <td style="text-align: left">Dewey</td> <td style="text-align: left">2</td> <td style="text-align: left">1</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Jastrow</td> <td style="text-align: left">Royce</td> <td style="text-align: left">1</td> <td style="text-align: left">0.5</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Royce</td> <td style="text-align: left">Hall</td> <td style="text-align: left">2</td> <td style="text-align: left">1</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Royce</td> <td style="text-align: left">James</td> <td style="text-align: left">1</td> <td style="text-align: left">0.5</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Royce</td> <td style="text-align: left">Cattell</td> <td style="text-align: left">1</td> <td style="text-align: left">0.5</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Royce</td> <td style="text-align: left">Baldwin</td> <td style="text-align: left">1</td> <td style="text-align: left">0.5</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Royce</td> <td style="text-align: left">Munsterberg</td> <td style="text-align: left">1</td> <td style="text-align: left">0.5</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Royce</td> <td style="text-align: left">Dewey</td> <td style="text-align: left">1</td> <td style="text-align: left">0.5</td> <td style="text-align: left">undirected</td> </tr> <tr> <td style="text-align: left">Royce</td> <td style="text-align: left">Jastrow</td> <td style="text-align: left">1</td> <td style="text-align: left">0.5</td> <td style="text-align: left">undirected</td> </tr> </tbody> </table> <p>21. You have not converted the array into an edge list compatible with gephi</p> <p>22. Save the new excel document as a CSV (comma delineated) file</p> <h2 id="d-gephi">D) Gephi</h2> <p>23. Open a new project in gephi</p> <p>24. Go to the “Data Table” tab</p> <p>25. Import your CSV document as an edge table. Gephi will ask you which columns you want to import. When importing, you should select the columns labelled “Source,” “Target,” “Type,” and “Weight.” You want to ignore the column labelled “data”</p> <p>26. At this stage you can do all sorts of manipulations in Gephi such as getting the various measures of degree, adding labels to the nodes, and scaling them based on various measures.</p> <p><img src="https://psyborgs.github.io/images/screenshots/breiger-network1.jpg" alt="Figure 1: People" /></p> <p><em>Figure 1: People</em></p> <p>This graph tells us some interesting things about the social structure of the early APA. William James seems fairly marginal (because he was only affiliated with Harvard). In some ways, this strikes the historian as wrong. James was the most famous psychologist in the United States and he wrote the field-defining textbook. This graph undoubtedly fails to capture the nature and extent of his considerable influence. However, historians have also long recognized that James’s pluralistic vision for psychology did not necessarily mesh well with the men pushing to organize and institutionalize the discipline. In this regard, the greater weighted degree of James McKeen Cattell followed by G. Stanley Hall and Joseph Jastrow (the epitome of the organization men in science) is unsurprising. See Ross, 1972; Sokal, 1990, 1992.</p> <p><img src="https://psyborgs.github.io/images/screenshots/breiger-network2.jpg" alt="Figure 2: Groups" /></p> <p><em>Figure 2: Groups</em></p> <p>This graph illustrates which institutions loomed largest when it came to becoming an early APA president. What I find most interesting is that Leipzig (Wundt’s institution and the most iconic place in the rhetoric of the “new psychology”) has a high degree of centrality in the network but is not the most important place. Instead, having an affiliation with the short-lived philosophy department at the Johns Hopkins University mattered more when it came to becoming an APA president. For more about the culture of this department see Behrens, 2005; Green, 2007; Pettit,</p> <ol> <li>Furthermore, Columbia University in New York City became an important home for many of organized psychology early leaders.</li> </ol> <h2 id="works-cited">Works Cited</h2> <p>Behrens, P. J. (2005). The Metaphysical Club at the Johns Hopkins University (1879–1885). <em>History of Psychology, 8</em>(4), 331–346.</p> <p>Breiger, R. L. (1974). The Duality of Persons and Groups. <em>Social Forces, 53</em>(2), 181–190. doi:10.1093/sf/53.2.181</p> <p>Green, C. D. (2007). Johns Hopkins’ First Professorship in Philosophy: A Critical Pivot Point in the History of American Psychology. <em>American Journal of Psychology, 120</em>, 303–323.</p> <p>Pettit, M. (2013). <em>The Science of Deception: Psychology and Commerce in America.</em> University of Chicago Press.</p> <p>Ross, D. (1972). <em>G. Stanley Hall: The psychologist as prophet.</em> Chicago: University of Chicago Press.</p> <p>Sokal, M. M. (1990). G. Stanley Hall and the institutional character of psychology at Clark 1889–1920. <em>Journal of the History of the Behavioral Sciences, 26</em>, 114–124.</p> <p>Sokal, M. M. (1992). Origins and early years of the American Psychological Association, 1890–1906. <em>American Psychologist, 47</em>(2), 111–122.</p> Python Programs to Start Digging Into JSTOR’s Early Journals 2013-07-09T00:00:00+00:00 https://psyborgs.github.io/tutorials/digging-into-jstors-early-journals The PsyBorgs Lab https://psyborgs.github.io/ <img src="https://psyborgs.github.io/images/screenshots/digging-into-jstor-feature.png"><br/> <p><strong>Note: The Python scripts mentioned in this tutorial are <a href="https://gist.github.com/shamrt/668807b46f6964d8b1db7a690a3e70fa">available as Github gists</a>.</strong></p> <p>JSTOR has recently made freely available an “Early Journal Content Data Bundle,” which contains every article from every journal in JSTOR’s massive database that was published prior to 1923 (for US publications; prior to 1870 for other publications). This amounts to more than 450,000 articles from more than 200 journals. Some of the journals in this data bundle that would most interest historians of psychology include <em>American Journal of Psychology</em>, <em>Philosophical Review</em>, and <em>Journal of Philosophy, Psychology, and Scientific Methods</em>.<sup id="fnref:JSTOR_Mind"><a href="#fn:JSTOR_Mind" class="footnote">1</a></sup> There are a number of other prominent social science journals in the bundle that might be mined. These include <em>American Anthropologist</em>, <em>American Journal of Sociology</em>, and <em>American Journal of Philology</em>.</p> <p>(Note, the examples below were done on a Mac. PC users will go through the same process, but the screen will look somewhat different.)</p> <p>Go to the <a href="http://dfr.jstor.org/??view=text&amp;&amp;helpview=about_ejc">Data For Research beta website</a> in order to get the JSTOR data bundle. Fill in the brief registration form if you do not already have a JSTOR “Data for Research” account. Then return to this past and download the file called ejc.tar.bz2 from the “here” link, about four lines from the bottom of the page:</p> <p><img src="https://psyborgs.github.io/images/screenshots/digging-into-jstor-1.jpg" alt="Capture 1" /></p> <p>(You can also download it from <a href="https://archive.org/details/jstor_ejc_data_bundle">Archive.org</a>.)</p> <p>Note: This file is large (1.7GB), but when you expand it, it will become even larger: 450,000+ different files totaling about 7.5GB of disk space. So, make sure you place the file in a folder where you want all of these many thousands of files to reside <strong><em>before</em></strong> you expand it. Moving them afterward would take a great deal of time.</p> <p>To expand a compressed file of this kind, most computer systems have a resident file-archiving program that allows you to do it just by double-clicking on the file name once you have placed in the folder where the articles will be housed. My own version of this program was a little too old to handle this file, so I had to download a program called “<a href="http://wakaba.c3.cx/s/apps/unarchiver">The Unarchiver</a>” from the web). It is free, and did the job easily. Because the JSTOR data bundle is so large, it will probably take a long time to expand on your computer. Be patient.</p> <p>Once the file has expanded, go into the folder called “bundle” and have a look at the file names. As you can see below, the names that JSTOR has chosen unfortunately look like this: <code class="highlighter-rouge">10.2307_4572210</code>. They are completely useless for figuring out where the journal articles you are interested in are located. Not exactly user-friendly! </p> <p><img src="https://psyborgs.github.io/images/screenshots/digging-into-jstor-2.jpg" alt="Screenshot #2" /></p> <p>In order to find out which of the numerically-named files correspond to which journals, you are going to need a program that searches through each file for you, finds the journal title, and then outputs a list of the journals, along with the numbered file names that correspond to each journal.<sup id="fnref:parsing"><a href="#fn:parsing" class="footnote">2</a></sup></p> <p>This process is precisely what is done by the first program here, <code class="highlighter-rouge">journal_list.py</code>. If you look at the program (just using a basic text editor like Apple’s “Text Edit” or Windows’ “Notepad” to open it) we can begin to see how it works:</p> <p><img src="https://psyborgs.github.io/images/screenshots/digging-into-jstor-3.jpg" alt="Screenshot #3" /></p> <p>The first several lines all have the <code class="highlighter-rouge">#</code> character in front of them. Any line that begins with this character is a “comment” for the reader; it is not processed by the program as a computer command. At the start of this program these early comment lines give you a bit of general information about the program: its name, a brief description of its function, who wrote it, and when. After the line that reads <code class="highlighter-rouge">#START PROGRAM</code>, however, the comments tell you instead what each line of the program does.<sup id="fnref:comments"><a href="#fn:comments" class="footnote">3</a></sup></p> <p>You can read through the program and its comments on your own, if you would like. After that, you should be able to run the program yourself, but first you need to install the programming language Python on your computer. You can download it from <a href="http://python.org/download/">Python.org</a>. Scroll down the page to the section titled “Download” and click on the version that is compatible with your operating system (OS X, Windows, Linux, etc.).<sup id="fnref:osx_users"><a href="#fn:osx_users" class="footnote">4</a></sup> </p> <p><img src="https://psyborgs.github.io/images/screenshots/digging-into-jstor-4.jpg" alt="Screenshot #4" /></p> <p>If you are having difficulties with this, there is a short video that guides you through the process in the online course called “<a href="https://www.coursera.org/course/programming1">Learn to Program: The Fundamentals</a>.”<sup id="fnref:courser_register"><a href="#fn:courser_register" class="footnote">5</a></sup> The video you want is the second one in Week 1 of the course, “Getting Started: Installing Python.” If you are interested in learning more about Python programming, this is a good place to start. The front page looks like this:</p> <p><img src="https://psyborgs.github.io/images/screenshots/digging-into-jstor-5.jpg" alt="Screenshot #5" /></p> <p>Once you have downloaded and opened Python, and have it in a window on your computer’s desktop, click on the IDLE icon and a Python programming window will appear (see below). IDLE is a programming environment for Python that has program debugger and other features.</p> <p><img src="https://psyborgs.github.io/images/screenshots/digging-into-jstor-6.jpg" alt="Screenshot #6" /></p> <p>(I have shown icons for my files here. Your computer may be set to simply display a list of files.)</p> <p>The window will be mostly blank but for a couple of lines at the top that start with “Python 3.X.X…” We call this window the <strong>Python Shell</strong> (remember this term, it comes up again later): </p> <p><img src="https://psyborgs.github.io/images/screenshots/digging-into-jstor-7.jpg" alt="Screenshot #7" /></p> <p>(You may need to click on your or key a couple of times in order to get the Python prompt, which looks like this: <code class="highlighter-rouge">&gt;&gt;&gt;</code>).</p> <p>Now you are ready to go. You could just start writing Python commands here. Try entering <code class="highlighter-rouge">2+2</code>, and then hitting the <code class="highlighter-rouge">Enter</code> key. Did you get <code class="highlighter-rouge">4</code>? Now try entering: <code class="highlighter-rouge">turkey=’gobble’</code>. When you you should get nothing but the Python prompt: <code class="highlighter-rouge">&gt;&gt;&gt;</code>. Now enter the word: <code class="highlighter-rouge">turkey</code>. When you you should get: <code class="highlighter-rouge">‘gobble’</code>. You just created a variable called turkey and gave it as content the character string <code class="highlighter-rouge">‘gobble’</code>. Then, when you called the variable name <code class="highlighter-rouge">turkey</code>, the program gave you back its content: <code class="highlighter-rouge">‘gobble’</code>. This can be fun, but normally we write programs in advance in a different window, and then run them so that their output appears in the Python shell. That is what we will do here.</p> <p>Before you can run the Python programs I have written to handle the JSTOR Early Journal Data Bundle, you will need to create a new folder for the programs on your computer. Then copy the two programs <code class="highlighter-rouge">journal_list.py</code> and <code class="highlighter-rouge">move_psychphil.py</code> from this webpage into that folder. Then, click back to the IDLE window.</p> <p>Once you are there, click on the menu bar at the top: <code class="highlighter-rouge">File &gt; Open</code> and find the file <code class="highlighter-rouge">journal_list.py</code> from the folder where you stored it. Double click on it. This will open a new widow that contains the program, next to (or sometimes on top of) the Python Shell window. You will notice that the text of the programs now appears in a variety of colors (see below): The red words are the comments that tell you what the program is doing each stage along the way. The orange and purple words are reserved programming terms (e.g., for, in if, and, else, print, open). The green words are mostly the contents that we are putting into string variables (such as <code class="highlighter-rouge">‘gobble’</code> was for the variable <code class="highlighter-rouge">turkey</code>, above). The black words are various other things.</p> <p><img src="https://psyborgs.github.io/images/screenshots/digging-into-jstor-8.jpg" alt="Screenshot #8" /> </p> <p>Let’s run the program! You should have two windows on your screen: the one you just opened that contains the Python program <code class="highlighter-rouge">journal_list.py</code>, and the mostly blank Python Shell in which we played with <code class="highlighter-rouge">2+2</code> and <code class="highlighter-rouge">turkey</code> above. The first thing you have to do is change the <code class="highlighter-rouge">dirname</code> (directory name) that appears in line 18 of the program. (Note: when you are in the program window, the line that the cursor is currently on is given at the lower right-hand corner of the window.) The line now reads:  <code class="highlighter-rouge">dirname=’/Users/chriso/Desktop/JSTOR-journals/bundle/’</code>.  You need to change it so the portion between the single quotation marks reflects the <strong>full directory path</strong> to the folder in which you expanded the JSTOR Early Journal Content Data Bundle on <strong>your</strong> computer. Change it now. Make sure you leave the single quotation marks intact around your pathname, and that you leave dirname= just as it was. Then go to the menu bar at the top of the screen and click <code class="highlighter-rouge">File &gt; Save</code>.</p> <p>Now we are ready to run the program. Click on the window containing the program. Go to the menu bar at the top of the screen, and click on <code class="highlighter-rouge">Run &gt; Run Module</code>. (If you didn’t save the program before, you will be prompted to save the file before you can run it. If this happens, just click OK.)  Now look at the other window – the Python Shell. First you will see a line appear in the Shell window that says: <code class="highlighter-rouge">===== RESTART =====</code>. Then there may be a long wait while the program imports the 450,000+ files in the JSTOR data bundle. Then it will start to list the names of journals it finds in those files, like this:</p> <p><img src="https://psyborgs.github.io/images/screenshots/digging-into-jstor-9.jpg" alt="Screenshot #9" /></p> <p>Some of the journal names will have three asterisks in front of them and be separated by blank lines above and below. These are journals the titles of which contain “PSYCH,” PHILOS”, or are the journals <em>Science</em> or <em>Scientific Monthly</em>. These are the journals I was most interested in (though some, like the <em>Philosophical Transactions</em> (of the Royal Society of London), are not related to our current work).</p> <p>After each journal title is a number. This number corresponds to the last several digits in the JSTOR filename where the run of that particular journal’s articles begins. For instance, the articles from <em>Annals of the American Academy of Political and Social Science</em> start at the file that JSTOR named <code class="highlighter-rouge">10.2307_1008595</code> (where the portion after the underscore is the part that appears after the journal’s name in the program output). Articles from that journal continue on from that point until you reach the next journal title in the output (though be careful to note that there are large gaps in JSTOR’s file-numbering scheme).</p> <p>How does the program find the journals titles? If you look in any of the article files (using “Text “Edit” or “Notepad”) you will find that, near the end of the file, there is a markup tag that reads: . The words immediately after that tag are the title of the journal. Immediately after the title is a second markup tag that reads: . The program just looks for those two tags and prints to the Python Shell whatever happens to be between them. Without those markup tags, it would be impossible for the program to tell the difference between the journal title and any other text in the file.</p> <p>The program will run for some time. It will appear to stop periodically, but it is just reading through the thousands of files that are not relevant to our search. It is not finished executing until you see the Python prompt: <code class="highlighter-rouge">&gt;&gt;&gt;</code>  (or, sometimes, until you get a red error message because the program ran longer than the number of files that were available). As the program runs, you will see why I decided to highlight the Psych, Philos, and Science journals with the stars: there are so many journals in the bundle that the ones we want are quite hard to spot by eye. (You can change line 40 in the program if you would like the program to highlight other journals instead.)</p> <p>After the program has finished running, the list of journals will be in your Python Shell window only. (That is, it has not been saved to a file on your computer.) If you would like to keep the list so that you can peruse it later, simply select it and copy it, just like you would from any text document. Then use your favorite word processing program to open a new document and paste the list there. Then you can save it, alter it, search it, etc. in whatever way you would like.</p> <p>The second program, called <code class="highlighter-rouge">move_psychphil.py</code>, is longer and more complicated. First, if you didn’t before, copy it now into the same directory where you stored that last program, <code class="highlighter-rouge">journals_list.py</code>. Then, from the IDLE window, use <code class="highlighter-rouge">File &gt; Open</code> to display the program in its own window. It looks like this:</p> <p><img src="https://psyborgs.github.io/images/screenshots/digging-into-jstor-10.jpg" alt="Screenshot #10" /></p> <p>(You may want to close the <code class="highlighter-rouge">journals_list.py</code> window at this point to prevent confusion between the two.)</p> <p>The new program, <code class="highlighter-rouge">move_psychphil.py</code>, does a number of different things. First, it copies all of the article files from <em>The Monist</em>, <em>Philosophical Review</em>, and <em>Journal of Philosophy, Psychology and Scientific Methods</em> to a new folder. It also renames these files so that you can tell where they came from just by looking at their file names. Second, it creates a list of every article in each of these three journals and saves it to a <code class="highlighter-rouge">.csv</code> file that can be easily imported into a spreadsheet program like Excel.<sup id="fnref:csv"><a href="#fn:csv" class="footnote">6</a></sup></p> <p>The list includes the authors’ names, the article titles, and the citation information for each article. Also, the author’s name has been manipulated so that the last name is first, and the first name and middle initial(s) come after, with no spaces (to make alphabetization easier). One problem with this program is that, when it goes looking for the author’s last name, it occasionally picks up a “Jr.” instead. You will either have to alter the program to fix this, or just search through the list after it has been created, looking for and correcting names with “Jr.” in them. Also, you may find that non-English characters (e.g., anything with a diacritical mark, like an accent or an umlaut) are not rendered properly.</p> <p>If you look at lines 35-37 of the program, you will find the place where you can input the titles of journals other than the three listed above, if you would like. There are a few suggestions in the comment lines 38-39. If you try to alter these lines, be sure not to disrupt the square brackets. First, there is a list of the full titles of the journals, followed by a list of the journal title abbreviations that I wanted to use in the names of the corresponding article files. (You will also have to adjust the code in lines 121-132, if you want .csv summary lists of the journals you have added.)</p> <p>As above, before you run the program, you will have to change the directory name to suit your computer’s directory tree. But this time there are two of them, in lines 19 and 20. The variable <code class="highlighter-rouge">fromdirname</code> contains the path to the JSTOR article files (you used this in the last program, where it was called just <code class="highlighter-rouge">dirname</code>). The variable <code class="highlighter-rouge">todirname</code> contains the path to the folder where you want the newly re-named article files to be stored, along with the <code class="highlighter-rouge">.csv</code> list for each journal. Note: you will have to create the folder in the right place ahead of time. If the program cannot find the folder you have named in the <code class="highlighter-rouge">todirname</code> line, it will crash.</p> <p>To start the program, as before, go to the menu bar and click <code class="highlighter-rouge">Run &gt; Run</code> Module. There will be a long wait while the program gathers up all the hundreds of thousands of articles and starts to work through them, looking for ones that correspond to the journals listed in lines 35-37. Once it finds them, it will start to print to the Python Shell the journal title, article title, and author name for each relevant file it finds (see below). This will assure you that the program is running correctly.</p> <p><img src="https://psyborgs.github.io/images/screenshots/digging-into-jstor-11.jpg" alt="Screenshot #11" /></p> <p>However, this process of printing to the screen slows down considerably what is already a long-running program. After you have assured yourself that the program is running correctly, you may wish to shut off this printing to the screen by placing a <code class="highlighter-rouge">#</code> at the start of each of four lines: 57, 76, 108, 114. This turns them into “comments” so that the computer does not execute them as commands. Then save the program and run it again. If you ever want the printing back, simply remove the three <code class="highlighter-rouge">#</code>s again, save the program, and run it.<sup id="fnref:close_examination"><a href="#fn:close_examination" class="footnote">7</a></sup></p> <p>If you look at the folder of your <code class="highlighter-rouge">todirname</code> while the program is running, at various points in time you will see files being added rapidly. They will have names like <code class="highlighter-rouge">JPPSM.11.393.txt</code> (the article published in <em>Journal of Philosophy, Psychology and Scientific Methods</em>, volume 11, starting on p. 393). There will also be three <code class="highlighter-rouge">.csv</code> files created, each containing the summary of one of the three journals. They look like this:</p> <p><img src="https://psyborgs.github.io/images/screenshots/digging-into-jstor-12.jpg" alt="Screenshot #12" /></p> <p>That should give you a start into how to parse and gather the relevant parts of the massive JSTOR Early Journal Content Data Bundle. Once you have the articles you want gathered together in one place, named so that you can easily retrieve them, you can process them in any of a wide variety of ways.</p> <div class="footnotes"> <ol> <li id="fn:JSTOR_Mind"> <p>JSTOR holds <em>Mind</em> as well, but because it was published in the UK only after 1870, it is not included in the bundle. Also, journals now owned by the American Psychological Association, such as <em>Psychological Review</em> and <em>Psychological Bulletin</em> are not included in JSTOR’s database. <a href="#fnref:JSTOR_Mind" class="reversefootnote">&#8617;</a></p> </li> <li id="fn:parsing"> <p>The process of picking out desired parts of files is often called “parsing,” like parsing a sentence to find the nouns, verbs, etc. <a href="#fnref:parsing" class="reversefootnote">&#8617;</a></p> </li> <li id="fn:comments"> <p>Some comments are placed above the line they comment on; some are placed immediately to the right of the line they comment on. You may have to stretch your window horizontally so that the longer lines don’t wrap around, which can confuse matters somewhat. <a href="#fnref:comments" class="reversefootnote">&#8617;</a></p> </li> <li id="fn:osx_users"> <p>If you use a Mac, you will also need to install an extra program called Tcl/Tk, which is linked from footnote 2 at the bottom of the page. Install the version corresponding you your version of the Mac operating system, OS X <a href="#fnref:osx_users" class="reversefootnote">&#8617;</a></p> </li> <li id="fn:courser_register"> <p>You will have to “register” for the Coursera course to get access to video lectures. It takes just a minute and doesn’t seem to have any ramifications beyond your being able to watch the course’s videos. <a href="#fnref:courser_register" class="reversefootnote">&#8617;</a></p> </li> <li id="fn:csv"> <p><code class="highlighter-rouge">.csv</code> stands for “comma separated variables.” It is just an ordinary text file, but it contains data points (e.g., author names, article titles, volume and page numbers) that have commas between them. This is a common format for storing data. <a href="#fnref:csv" class="reversefootnote">&#8617;</a></p> </li> <li id="fn:close_examination"> <p>If you examine the programming code closely, you will find other places where I have “commented out” lines of code that I used while debugging the program, but that I did not want to include in the final version. <a href="#fnref:close_examination" class="reversefootnote">&#8617;</a></p> </li> </ol> </div>