Skip to content

Instantly share code, notes, and snippets.

@puripant
Last active September 5, 2017 17:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save puripant/1c5a091e7026e6d8f8510248a65cf6b8 to your computer and use it in GitHub Desktop.
Save puripant/1c5a091e7026e6d8f8510248a65cf6b8 to your computer and use it in GitHub Desktop.
MossViz

Visualizing Moss (Measure Of Software Similarity) result in a node-link diagram

How to Use

Just open up index.html to see the visualization. It will open an example data file Moss Results.html which can be saved directly from the website.

Visualization

It is a standard node-link diagram implemented with D3 (v3 for now). Each node is a submission path, truncated by the common prefix. An edge shows that two submissions are more similar than the average of the submission set (measured by the number of common lines and visualized as edge thickness).

Cliques of plagiarism should be easily detectable. Nodes can also be dragged around and fixed for manual layout. A simple bounded force layout is applied.

More to be Done

It will be nice if the tool can directly fetch the result from an URL (without CORS errors). Advanced layout algorithms are welcome.

<html>
<head>
<title>Moss Viz</title>
<link rel="stylesheet" href="mossViz.css">
</head>
<body>
<svg width="960" height="500"></svg>
<script src="https://d3js.org/d3.v3.min.js"></script>
<script src="mossViz.js"></script>
</body>
<HTML>
<HEAD>
<TITLE>Moss Results</TITLE>
</HEAD>
<BODY>
Moss Results<p>
Thu Sep 1 06:19:56 PDT 2016
<p>
Options -l java -d -m 10
<HR>
[ <A HREF="http://moss.stanford.edu/general/format.html" TARGET="_top"> How to Read the Results</A> | <A HREF="http://moss.stanford.edu/general/tips.html" TARGET="_top"> Tips</A> | <A HREF="http://moss.stanford.edu/general/faq.html"> FAQ</A> | <A HREF="mailto:moss-request@cs.stanford.edu">Contact</A> | <A HREF="http://moss.stanford.edu/general/scripts.html">Submission Scripts</A> | <A HREF="http://moss.stanford.edu/general/credits.html" TARGET="_top"> Credits</A> ]
<HR>
<TABLE>
<TR><TH>File 1<TH>File 2<TH>Lines Matched
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match0.html">./lab04/Lab-4.1_5842038/ (92%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match0.html">./lab04/Lab-4.1_5842097/ (92%)</A>
<TD ALIGN=right>82
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match1.html">./lab04/Lab-4.1_5842066/ (63%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match1.html">./lab04/Lab-4.1_5842071/ (61%)</A>
<TD ALIGN=right>58
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match2.html">./lab04/Lab-4.1_5842069/ (60%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match2.html">./lab04/Lab-4.1_5842097/ (61%)</A>
<TD ALIGN=right>57
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match3.html">./lab04/Lab-4.1_5842038/ (61%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match3.html">./lab04/Lab-4.1_5842069/ (60%)</A>
<TD ALIGN=right>60
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match4.html">./lab04/Lab-4.1_5842095/ (48%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match4.html">./lab04/Lab-4.1_5842097/ (48%)</A>
<TD ALIGN=right>43
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match5.html">./lab04/Lab-4.1_5842038/ (48%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match5.html">./lab04/Lab-4.1_5842095/ (48%)</A>
<TD ALIGN=right>43
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match6.html">./lab04/Lab-4.1_5842066/ (48%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match6.html">./lab04/Lab-4.1_5842091/ (48%)</A>
<TD ALIGN=right>25
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match7.html">./lab04/Lab-4.1_5842045/ (37%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match7.html">./lab04/Lab-4.1_5842067/ (36%)</A>
<TD ALIGN=right>21
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match8.html">./lab04/Lab-4.1_5842001/ (49%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match8.html">./lab04/Lab-4.1_5842010/ (47%)</A>
<TD ALIGN=right>17
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match9.html">./lab04/Lab-4.1_5842068/ (37%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match9.html">./lab04/Lab-4.1_5842088/ (38%)</A>
<TD ALIGN=right>29
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match10.html">./lab04/Lab-4.1_5842001/ (40%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match10.html">./lab04/Lab-4.1_5842068/ (37%)</A>
<TD ALIGN=right>46
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match11.html">./lab04/Lab-4.1_5842006/ (32%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match11.html">./lab04/Lab-4.1_5842078/ (26%)</A>
<TD ALIGN=right>35
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match12.html">./lab04/Lab-4.1_5842019/ (31%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match12.html">./lab04/Lab-4.1_5842067/ (27%)</A>
<TD ALIGN=right>31
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match13.html">./lab04/Lab-4.1_5842082/ (35%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match13.html">./lab04/Lab-4.1_5842097/ (28%)</A>
<TD ALIGN=right>39
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match14.html">./lab04/Lab-4.1_5842038/ (28%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match14.html">./lab04/Lab-4.1_5842082/ (35%)</A>
<TD ALIGN=right>39
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match15.html">./lab04/Lab-4.1_5842088/ (33%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match15.html">./lab04/Lab-4.1_5842097/ (26%)</A>
<TD ALIGN=right>24
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match16.html">./lab04/Lab-4.1_5842038/ (26%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match16.html">./lab04/Lab-4.1_5842088/ (33%)</A>
<TD ALIGN=right>24
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match17.html">./lab04/Lab-4.1_5842010/ (33%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match17.html">./lab04/Lab-4.1_5842088/ (32%)</A>
<TD ALIGN=right>33
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match18.html">./lab04/Lab-4.1_5842001/ (34%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match18.html">./lab04/Lab-4.1_5842082/ (33%)</A>
<TD ALIGN=right>35
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match19.html">./lab04/Lab-4.1_5842068/ (31%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match19.html">./lab04/Lab-4.1_5842078/ (24%)</A>
<TD ALIGN=right>44
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match20.html">./lab04/Lab-4.1_5842082/ (32%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match20.html">./lab04/Lab-4.1_5842088/ (31%)</A>
<TD ALIGN=right>32
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match21.html">./lab04/Lab-4.1_5842082/ (31%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match21.html">./lab04/Lab-4.1_5842095/ (24%)</A>
<TD ALIGN=right>26
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match22.html">./lab04/Lab-4.1_5842069/ (24%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match22.html">./lab04/Lab-4.1_5842095/ (24%)</A>
<TD ALIGN=right>27
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match23.html">./lab04/Lab-4.1_5842001/ (29%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match23.html">./lab04/Lab-4.1_5842088/ (27%)</A>
<TD ALIGN=right>31
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match24.html">./lab04/Lab-4.1_5842045/ (19%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match24.html">./lab04/Lab-4.1_5842091/ (20%)</A>
<TD ALIGN=right>14
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match25.html">./lab04/Lab-4.1_5842067/ (19%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match25.html">./lab04/Lab-4.1_5842078/ (18%)</A>
<TD ALIGN=right>15
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match26.html">./lab04/Lab-4.1_5842068/ (23%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match26.html">./lab04/Lab-4.1_5842097/ (19%)</A>
<TD ALIGN=right>19
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match27.html">./lab04/Lab-4.1_5842038/ (19%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match27.html">./lab04/Lab-4.1_5842068/ (23%)</A>
<TD ALIGN=right>19
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match28.html">./lab04/Lab-4.1_5842001/ (25%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match28.html">./lab04/Lab-4.1_5842097/ (19%)</A>
<TD ALIGN=right>29
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match29.html">./lab04/Lab-4.1_5842001/ (25%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match29.html">./lab04/Lab-4.1_5842038/ (19%)</A>
<TD ALIGN=right>29
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match30.html">./lab04/Lab-4.1_5842010/ (23%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match30.html">./lab04/Lab-4.1_5842068/ (22%)</A>
<TD ALIGN=right>16
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match31.html">./lab04/Lab-4.1_5842088/ (22%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match31.html">./lab04/Lab-4.1_5842095/ (18%)</A>
<TD ALIGN=right>19
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match32.html">./lab04/Lab-4.1_5842068/ (22%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match32.html">./lab04/Lab-4.1_5842095/ (18%)</A>
<TD ALIGN=right>19
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match33.html">./lab04/Lab-4.1_5842068/ (22%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match33.html">./lab04/Lab-4.1_5842082/ (23%)</A>
<TD ALIGN=right>22
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match34.html">./lab04/Lab-4.1_5842001/ (24%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match34.html">./lab04/Lab-4.1_5842095/ (18%)</A>
<TD ALIGN=right>28
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match35.html">./lab04/Lab-4.1_5842006/ (20%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match35.html">./lab04/Lab-4.1_5842010/ (22%)</A>
<TD ALIGN=right>30
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match36.html">./lab04/Lab-4.1_5842069/ (17%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match36.html">./lab04/Lab-4.1_5842088/ (22%)</A>
<TD ALIGN=right>19
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match37.html">./lab04/Lab-4.1_5842069/ (17%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match37.html">./lab04/Lab-4.1_5842082/ (22%)</A>
<TD ALIGN=right>27
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match38.html">./lab04/Lab-4.1_5842045/ (16%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match38.html">./lab04/Lab-4.1_5842088/ (21%)</A>
<TD ALIGN=right>30
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match39.html">./lab04/Lab-4.1_5842019/ (18%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match39.html">./lab04/Lab-4.1_5842078/ (15%)</A>
<TD ALIGN=right>14
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match40.html">./lab04/Lab-4.1_5842006/ (18%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match40.html">./lab04/Lab-4.1_5842091/ (16%)</A>
<TD ALIGN=right>15
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match41.html">./lab04/Lab-4.1_5842006/ (18%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match41.html">./lab04/Lab-4.1_5842067/ (15%)</A>
<TD ALIGN=right>17
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match42.html">./lab04/Lab-4.1_5842006/ (18%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match42.html">./lab04/Lab-4.1_5842045/ (16%)</A>
<TD ALIGN=right>15
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match43.html">./lab04/Lab-4.1_5842006/ (18%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match43.html">./lab04/Lab-4.1_5842019/ (18%)</A>
<TD ALIGN=right>14
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match44.html">./lab04/Lab-4.1_5842001/ (21%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match44.html">./lab04/Lab-4.1_5842078/ (15%)</A>
<TD ALIGN=right>33
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match45.html">./lab04/Lab-4.1_5842001/ (20%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match45.html">./lab04/Lab-4.1_5842014/ (17%)</A>
<TD ALIGN=right>17
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match46.html">./lab04/Lab-4.1_5842010/ (19%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match46.html">./lab04/Lab-4.1_5842045/ (14%)</A>
<TD ALIGN=right>21
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match47.html">./lab04/Lab-4.1_5842045/ (14%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match47.html">./lab04/Lab-4.1_5842068/ (17%)</A>
<TD ALIGN=right>21
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match48.html">./lab04/Lab-4.1_5842010/ (18%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match48.html">./lab04/Lab-4.1_5842082/ (18%)</A>
<TD ALIGN=right>15
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match49.html">./lab04/Lab-4.1_5842010/ (17%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match49.html">./lab04/Lab-4.1_5842081/ (15%)</A>
<TD ALIGN=right>20
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match50.html">./lab04/Lab-4.1_5842078/ (11%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match50.html">./lab04/Lab-4.1_5842091/ (13%)</A>
<TD ALIGN=right>9
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match51.html">./lab04/Lab-4.1_5842067/ (12%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match51.html">./lab04/Lab-4.1_5842091/ (13%)</A>
<TD ALIGN=right>6
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match52.html">./lab04/Lab-4.1_5842045/ (12%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match52.html">./lab04/Lab-4.1_5842078/ (11%)</A>
<TD ALIGN=right>9
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match53.html">./lab04/Lab-4.1_5842067/ (11%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match53.html">./lab04/Lab-4.1_5842072/ (30%)</A>
<TD ALIGN=right>14
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match54.html">./lab04/Lab-4.1_5842006/ (12%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match54.html">./lab04/Lab-4.1_5842081/ (13%)</A>
<TD ALIGN=right>20
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match55.html">./lab04/Lab-4.1_5842078/ (9%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match55.html">./lab04/Lab-4.1_5842081/ (12%)</A>
<TD ALIGN=right>14
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match56.html">./lab04/Lab-4.1_5842010/ (13%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match56.html">./lab04/Lab-4.1_5842078/ (9%)</A>
<TD ALIGN=right>14
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match57.html">./lab04/Lab-4.1_5842068/ (11%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match57.html">./lab04/Lab-4.1_5842081/ (11%)</A>
<TD ALIGN=right>13
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match58.html">./lab04/Lab-4.1_5842068/ (11%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match58.html">./lab04/Lab-4.1_5842069/ (9%)</A>
<TD ALIGN=right>10
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match59.html">./lab04/Lab-4.1_5842019/ (10%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match59.html">./lab04/Lab-4.1_5842091/ (9%)</A>
<TD ALIGN=right>4
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match60.html">./lab04/Lab-4.1_5842019/ (10%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match60.html">./lab04/Lab-4.1_5842045/ (9%)</A>
<TD ALIGN=right>4
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match61.html">./lab04/Lab-4.1_5842001/ (12%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match61.html">./lab04/Lab-4.1_5842069/ (9%)</A>
<TD ALIGN=right>20
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match62.html">./lab04/Lab-4.1_5842078/ (8%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match62.html">./lab04/Lab-4.1_5842095/ (9%)</A>
<TD ALIGN=right>14
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match63.html">./lab04/Lab-4.1_5842006/ (10%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match63.html">./lab04/Lab-4.1_5842095/ (9%)</A>
<TD ALIGN=right>14
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match64.html">./lab04/Lab-4.1_5842071/ (8%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match64.html">./lab04/Lab-4.1_5842081/ (9%)</A>
<TD ALIGN=right>17
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match65.html">./lab04/Lab-4.1_5842066/ (8%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match65.html">./lab04/Lab-4.1_5842081/ (9%)</A>
<TD ALIGN=right>18
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match66.html">./lab04/Lab-4.1_5842010/ (10%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match66.html">./lab04/Lab-4.1_5842014/ (9%)</A>
<TD ALIGN=right>4
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match67.html">./lab04/Lab-4.1_5842090/ (13%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match67.html">./lab04/Lab-4.1_5842091/ (8%)</A>
<TD ALIGN=right>7
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match68.html">./lab04/Lab-4.1_5842078/ (7%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match68.html">./lab04/Lab-4.1_5842090/ (13%)</A>
<TD ALIGN=right>8
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match69.html">./lab04/Lab-4.1_5842078/ (7%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match69.html">./lab04/Lab-4.1_5842088/ (10%)</A>
<TD ALIGN=right>17
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match70.html">./lab04/Lab-4.1_5842070/ (8%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match70.html">./lab04/Lab-4.1_5842081/ (9%)</A>
<TD ALIGN=right>19
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match71.html">./lab04/Lab-4.1_5842067/ (7%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match71.html">./lab04/Lab-4.1_5842090/ (13%)</A>
<TD ALIGN=right>7
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match72.html">./lab04/Lab-4.1_5842045/ (7%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match72.html">./lab04/Lab-4.1_5842090/ (13%)</A>
<TD ALIGN=right>7
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match73.html">./lab04/Lab-4.1_5842045/ (7%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match73.html">./lab04/Lab-4.1_5842081/ (9%)</A>
<TD ALIGN=right>11
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match74.html">./lab04/Lab-4.1_5842019/ (8%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match74.html">./lab04/Lab-4.1_5842090/ (13%)</A>
<TD ALIGN=right>7
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match75.html">./lab04/Lab-4.1_5842006/ (9%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match75.html">./lab04/Lab-4.1_5842090/ (13%)</A>
<TD ALIGN=right>7
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match76.html">./lab04/Lab-4.1_5842082/ (9%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match76.html">./lab04/Lab-4.1_5842091/ (7%)</A>
<TD ALIGN=right>10
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match77.html">./lab04/Lab-4.1_5842045/ (7%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match77.html">./lab04/Lab-4.1_5842082/ (9%)</A>
<TD ALIGN=right>10
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match78.html">./lab04/Lab-4.1_5842010/ (9%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match78.html">./lab04/Lab-4.1_5842097/ (7%)</A>
<TD ALIGN=right>4
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match79.html">./lab04/Lab-4.1_5842010/ (9%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match79.html">./lab04/Lab-4.1_5842095/ (7%)</A>
<TD ALIGN=right>4
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match80.html">./lab04/Lab-4.1_5842010/ (9%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match80.html">./lab04/Lab-4.1_5842038/ (7%)</A>
<TD ALIGN=right>4
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match81.html">./lab04/Lab-4.1_5842067/ (6%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match81.html">./lab04/Lab-4.1_5842068/ (8%)</A>
<TD ALIGN=right>6
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match82.html">./lab04/Lab-4.1_5842019/ (8%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match82.html">./lab04/Lab-4.1_5842068/ (8%)</A>
<TD ALIGN=right>6
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match83.html">./lab04/Lab-4.1_5842010/ (9%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match83.html">./lab04/Lab-4.1_5842070/ (7%)</A>
<TD ALIGN=right>12
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match84.html">./lab04/Lab-4.1_5842001/ (9%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match84.html">./lab04/Lab-4.1_5842067/ (6%)</A>
<TD ALIGN=right>6
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match85.html">./lab04/Lab-4.1_5842001/ (9%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match85.html">./lab04/Lab-4.1_5842019/ (8%)</A>
<TD ALIGN=right>6
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match86.html">./lab04/Lab-4.1_5842088/ (8%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match86.html">./lab04/Lab-4.1_5842091/ (7%)</A>
<TD ALIGN=right>14
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match87.html">./lab04/Lab-4.1_5842081/ (8%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match87.html">./lab04/Lab-4.1_5842088/ (8%)</A>
<TD ALIGN=right>9
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match88.html">./lab04/Lab-4.1_5842078/ (6%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match88.html">./lab04/Lab-4.1_5842097/ (7%)</A>
<TD ALIGN=right>14
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match89.html">./lab04/Lab-4.1_5842072/ (17%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match89.html">./lab04/Lab-4.1_5842081/ (8%)</A>
<TD ALIGN=right>13
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match90.html">./lab04/Lab-4.1_5842070/ (7%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match90.html">./lab04/Lab-4.1_5842091/ (7%)</A>
<TD ALIGN=right>2
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match91.html">./lab04/Lab-4.1_5842070/ (7%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match91.html">./lab04/Lab-4.1_5842078/ (6%)</A>
<TD ALIGN=right>2
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match92.html">./lab04/Lab-4.1_5842070/ (7%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match92.html">./lab04/Lab-4.1_5842071/ (6%)</A>
<TD ALIGN=right>19
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match93.html">./lab04/Lab-4.1_5842069/ (6%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match93.html">./lab04/Lab-4.1_5842078/ (6%)</A>
<TD ALIGN=right>14
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match94.html">./lab04/Lab-4.1_5842067/ (6%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match94.html">./lab04/Lab-4.1_5842081/ (8%)</A>
<TD ALIGN=right>13
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match95.html">./lab04/Lab-4.1_5842067/ (6%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match95.html">./lab04/Lab-4.1_5842070/ (7%)</A>
<TD ALIGN=right>2
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match96.html">./lab04/Lab-4.1_5842066/ (7%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match96.html">./lab04/Lab-4.1_5842070/ (7%)</A>
<TD ALIGN=right>19
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match97.html">./lab04/Lab-4.1_5842045/ (6%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match97.html">./lab04/Lab-4.1_5842070/ (7%)</A>
<TD ALIGN=right>2
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match98.html">./lab04/Lab-4.1_5842038/ (7%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match98.html">./lab04/Lab-4.1_5842078/ (6%)</A>
<TD ALIGN=right>14
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match99.html">./lab04/Lab-4.1_5842019/ (7%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match99.html">./lab04/Lab-4.1_5842072/ (17%)</A>
<TD ALIGN=right>10
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match100.html">./lab04/Lab-4.1_5842010/ (8%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match100.html">./lab04/Lab-4.1_5842091/ (7%)</A>
<TD ALIGN=right>11
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match101.html">./lab04/Lab-4.1_5842006/ (7%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match101.html">./lab04/Lab-4.1_5842088/ (8%)</A>
<TD ALIGN=right>14
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match102.html">./lab04/Lab-4.1_5842006/ (7%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match102.html">./lab04/Lab-4.1_5842082/ (8%)</A>
<TD ALIGN=right>10
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match103.html">./lab04/Lab-4.1_5842006/ (7%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match103.html">./lab04/Lab-4.1_5842072/ (17%)</A>
<TD ALIGN=right>10
<TR><TD><A HREF="http://moss.stanford.edu/results/239109717/match104.html">./lab04/Lab-4.1_5842006/ (7%)</A>
<TD><A HREF="http://moss.stanford.edu/results/239109717/match104.html">./lab04/Lab-4.1_5842068/ (8%)</A>
<TD ALIGN=right>13
</TABLE>
<HR>
Any errors encountered during this query are listed below.<p></BODY>
</HTML>
.links line {
stroke: #aaa;
}
.nodes circle {
pointer-events: all;
stroke: none;
stroke-width: 40px;
}
var svg = d3.select("svg");
var width = +svg.attr("width");
var height = +svg.attr("height");
var nodeRadius = 10;
// // Get URL paramters
// const url = window.location.search;
// const queryStringRegEx = function(query) {
// return new RegExp("[?|&]" + query + "=([^&]*)");
// };
// var matches = url.match(queryStringRegEx("id"));
// const id = matches ? matches[1] : undefined;
// var mossUrl = id? ("http://moss.stanford.edu/results/" + id) : "Moss Results3.html";
var mossUrl = "Moss Results.html";
const unwantedChars = ["/"];
d3.html(mossUrl, function(error, data) {
if (error) throw error;
var rows = data.querySelector("tbody").querySelectorAll("tr");
var nodeSet = new Set();
var pairs = [];
var maxWeight = -1;
var sumWeight = 0;
for(var r = 0; r < rows.length; r++) {
var columns = rows.item(r).querySelectorAll("td");
if(columns.length > 0) {
let pair = [];
for(var c = 0; c < 2; c++) { // two student ids
var text = columns.item(c).querySelector("a").textContent;
var nodeId = text.substring(0, text.lastIndexOf(" "));
unwantedChars.forEach(function(c) {
nodeId = nodeId.replace(new RegExp(c, 'g'), "");
});
//TODO use percentage for link weight (but the percentages of two nodes are not necessary the same).
nodeSet.add(nodeId);
pair.push(nodeId);
}
let weight = +columns.item(2).textContent
maxWeight = Math.max(maxWeight, weight);
sumWeight += weight;
pair.push(weight); // #common lines
pairs.push(pair);
}
}
var nodeArray = [...nodeSet];
var commonPrefixLen = longestCommonPrefixLength(nodeArray);
nodes = [];
nodeArray = nodeArray.map(function(node) {
var shortNode = node.substring(commonPrefixLen);
nodes.push({name: shortNode});
return shortNode;
});
var links = [];
for(let pair of pairs) {
if(pair[2] > sumWeight/pairs.length) {
links.push({
source: nodeArray.indexOf(pair[0].substring(commonPrefixLen)),
target: nodeArray.indexOf(pair[1].substring(commonPrefixLen)),
weight: pair[2]/maxWeight
});
}
}
var force = d3.layout.force()
// .gravity(.05)
.distance(function(d) { return (1-d.weight)*width/nodeRadius; })
.charge(-300)
.size([width, height])
.nodes(nodes)
.links(links)
.on("tick", ticked)
.start();
var link = svg.append("g")
.attr("class", "links")
.selectAll("line")
.data(links)
.enter().append("line")
.style("stroke-width", function(d) { return nodeRadius*d.weight; });
// .style("stroke-opacity", function(d) { return d.weight; });
var node = svg.append("g")
.attr("class", "nodes")
.selectAll("circle")
.data(nodes)
.enter().append("g")
node.append("circle")
.attr("r", nodeRadius)
// .call(force.drag);
.call(d3.behavior.drag()
.on("dragstart", dragstarted)
.on("drag", dragged)
.on("dragend", dragended));
node.append("text")
.attr("dy", "-1em")
.text(function(d) { return d.name; });
function ticked() {
node.attr("transform", function(d) {
return "translate(" + Math.max(2*nodeRadius, Math.min(width - 2*nodeRadius, d.x)) + "," +
Math.max(2*nodeRadius, Math.min(height - 2*nodeRadius, d.y)) + ")";
// return "translate(" + d.x + "," + d.y + ")";
});
link
.attr("x1", function(d) { return d.source.x; })
.attr("y1", function(d) { return d.source.y; })
.attr("x2", function(d) { return d.target.x; })
.attr("y2", function(d) { return d.target.y; });
}
function dragstarted(d) {
force.stop()
}
function dragged(d) {
d.px += d3.event.dx;
d.py += d3.event.dy;
d.x += d3.event.dx;
d.y += d3.event.dy;
ticked();
}
function dragended(d) {
d.fixed = true;
ticked();
force.resume();
}
function longestCommonPrefixLength(texts) {
// // Automatic prefix truncation by finding common starting substring https://stackoverflow.com/questions/1916218/find-the-longest-common-starting-substring-in-a-set-of-strings/1917041#1917041
// nodeArray.sort();
// var i = 0;
// while(i < nodeArray[0].length && nodeArray[0].charAt(i) === nodeArray[nodes.length-1].charAt(i)) {
// i++;
// }
if(texts.length == 0) {
return 0;
}
var maxLen = texts[0].length;
for(var len = 0; len < maxLen; len++) {
var currentChar = texts[0].charAt(len);
for (var j = 1; j < texts.length; j++) {
if(len >= texts[j].length || texts[j].charAt(len) != currentChar) { //mismatch
return len;
}
}
}
return maxLen;
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment