|
<!DOCTYPE html> |
|
<html lang="en"> |
|
<head> |
|
<meta charset="UTF-8"> |
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|
<title>Hugging Face Network by Bunka</title> |
|
|
|
<style> |
|
:root { |
|
--primary-color: #4a4a4a; |
|
--secondary-color: #6c757d; |
|
--background-color: #f8f9fa; |
|
--hover-color: #007bff; |
|
} |
|
html, body { |
|
height: 100%; |
|
margin: 0; |
|
padding: 0; |
|
} |
|
body { |
|
font-family: 'Arial', sans-serif; |
|
line-height: 1.6; |
|
color: var(--primary-color); |
|
background-color: var(--background-color); |
|
display: flex; |
|
flex-direction: column; |
|
} |
|
header { |
|
background-color: white; |
|
box-shadow: 0 2px 4px rgba(0,0,0,0.1); |
|
padding: 15px 0; |
|
text-align: center; |
|
display: flex; |
|
justify-content: space-between; |
|
align-items: center; |
|
} |
|
.logo-container { |
|
padding-left: 20px; |
|
} |
|
.logo { |
|
max-width: 100px; |
|
height: auto; |
|
} |
|
.title-container { |
|
flex-grow: 1; |
|
text-align: center; |
|
} |
|
h1 { |
|
color: var(--primary-color); |
|
margin: 0 0 10px 0; |
|
font-size: 1.8em; |
|
} |
|
.subtitle-container { |
|
display: flex; |
|
justify-content: center; |
|
align-items: center; |
|
} |
|
.subtitle { |
|
font-size: 1em; |
|
color: var(--secondary-color); |
|
margin: 0; |
|
} |
|
.help-icon { |
|
margin-left: 10px; |
|
cursor: help; |
|
position: relative; |
|
} |
|
.help-icon:hover::after { |
|
content: attr(data-tooltip); |
|
position: absolute; |
|
top: 100%; |
|
left: 50%; |
|
transform: translateX(-50%); |
|
background-color: #333; |
|
color: white; |
|
padding: 10px; |
|
border-radius: 5px; |
|
width: 300px; |
|
z-index: 1; |
|
font-size: 0.9em; |
|
line-height: 1.4; |
|
text-align: left; |
|
} |
|
.graph-container { |
|
flex-grow: 1; |
|
width: 100%; |
|
display: flex; |
|
} |
|
iframe { |
|
flex-grow: 1; |
|
border: none; |
|
} |
|
footer { |
|
background-color: var(--secondary-color); |
|
color: white; |
|
text-align: center; |
|
padding: 10px 0; |
|
} |
|
.social-links { |
|
display: inline-block; |
|
vertical-align: middle; |
|
} |
|
.social-links a { |
|
opacity: 0.7; |
|
transition: opacity 0.3s ease; |
|
margin: 0 5px; |
|
} |
|
.social-links a:hover { |
|
opacity: 1; |
|
} |
|
.social-links img { |
|
width: 20px; |
|
height: 20px; |
|
} |
|
.pagination { |
|
display: flex; |
|
justify-content: center; |
|
align-items: center; |
|
padding: 15px 0; |
|
background-color: white; |
|
box-shadow: 0 -2px 4px rgba(0,0,0,0.1); |
|
} |
|
.pagination button { |
|
background-color: transparent; |
|
border: none; |
|
color: var(--secondary-color); |
|
font-size: 16px; |
|
padding: 5px 10px; |
|
margin: 0 5px; |
|
cursor: pointer; |
|
transition: color 0.3s ease; |
|
} |
|
.pagination button:hover { |
|
color: var(--hover-color); |
|
} |
|
.pagination button.active { |
|
color: var(--primary-color); |
|
font-weight: bold; |
|
} |
|
.pagination .page-numbers { |
|
display: flex; |
|
align-items: center; |
|
} |
|
.pagination .divider { |
|
width: 1px; |
|
height: 20px; |
|
background-color: var(--secondary-color); |
|
margin: 0 10px; |
|
} |
|
</style> |
|
</head> |
|
<body> |
|
<header> |
|
<div class="logo-container"> |
|
<img src="https://huggingface.co/spaces/bunkalab/README/raw/main/bunka_logo.png" alt="Bunka Logo" class="logo"> |
|
</div> |
|
<div class="title-container"> |
|
<h1 id="main-title">Open Source AI Network - Mapping the top 500 HF users</h1> |
|
<div class="subtitle-container"> |
|
<p id="subtitle" class="subtitle">Two users are closer if they are followed by the same people.</p> |
|
<span class="help-icon" data-tooltip="• We collected and analyzed data about 895,007 models and 204,371 datasets |
|
• We filtered those into 14,620 content providers |
|
• 2,615 organizations (not users) were filtered, associated with 15,611 most relevant users |
|
• We then used the Force Atlas and Leiden algorithm to create this network. |
|
Package by github.com/medialab/ipysigma">ⓘ</span> |
|
</div> |
|
</div> |
|
</header> |
|
|
|
<div class="graph-container"> |
|
<iframe id="graph-frame" src="co_user.html" width="100%" height="100%" frameborder="0"></iframe> |
|
</div> |
|
|
|
<div class="pagination"> |
|
<button id="prev"><</button> |
|
<div class="page-numbers"> |
|
<button id="page1" class="active">1</button> |
|
<div class="divider"></div> |
|
<button id="page2">2</button> |
|
</div> |
|
<button id="next">></button> |
|
</div> |
|
|
|
<footer> |
|
<div class="social-links"> |
|
<a href="https://github.com/charlesdedampierre/BunkaTopics" target="_blank"><img src="https://qtyhiurxoicqmxzpktkd.supabase.co/storage/v1/object/sign/email-content/github-logo.png?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJlbWFpbC1jb250ZW50L2dpdGh1Yi1sb2dvLnBuZyIsImlhdCI6MTcyNDgzOTk3NywiZXhwIjoxNzg3OTExOTc3fQ.qPEnoJOVqTkWdquVPkMWZFYHv29q8pb5mbcVBGFZWTU&t=2024-08-28T10%3A12%3A58.108Z" alt="GitHub"></a> |
|
<a href="https://huggingface.co/bunkalab" target="_blank"><img src="https://qtyhiurxoicqmxzpktkd.supabase.co/storage/v1/object/sign/email-content/hugging%20face.png?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJlbWFpbC1jb250ZW50L2h1Z2dpbmcgZmFjZS5wbmciLCJpYXQiOjE3MjQ4Mzk4NDAsImV4cCI6MTc4NzkxMTg0MH0.6gOtEK2BXc3kSL3PIswY0LJyvp790580Jm6vxztiFhw&t=2024-08-28T10%3A10%3A40.145Z" alt="Hugging Face"></a> |
|
<a href="https://www.linkedin.com/company/85881815" target="_blank"><img src="https://qtyhiurxoicqmxzpktkd.supabase.co/storage/v1/object/sign/email-content/LinkedIn_logo_initials.png?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJlbWFpbC1jb250ZW50L0xpbmtlZEluX2xvZ29faW5pdGlhbHMucG5nIiwiaWF0IjoxNzI0ODQwMDQ1LCJleHAiOjE3ODc5MTIwNDV9.9d6MAK3x9LOmsYyB8KyGk5PPFGkPNoGjsW7wdxiZt3M&t=2024-08-28T10%3A14%3A05.996Z" alt="LinkedIn"></a> |
|
<a href="https://discord.gg/3YRPVqXabQ" target="_blank"><img src="https://qtyhiurxoicqmxzpktkd.supabase.co/storage/v1/object/sign/email-content/discord.png?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJlbWFpbC1jb250ZW50L2Rpc2NvcmQucG5nIiwiaWF0IjoxNzI0ODM5ODc4LCJleHAiOjE3ODc5MTE4Nzh9.w1Ggb_Nh1UnjKeVujp_7ljAW0ZSP3ETNkYJLKuBZ_Zo&t=2024-08-28T10%3A11%3A18.993Z" alt="Discord"></a> |
|
</div> |
|
</footer> |
|
|
|
<script> |
|
const graphFrame = document.getElementById('graph-frame'); |
|
const prev = document.getElementById('prev'); |
|
const next = document.getElementById('next'); |
|
const page1 = document.getElementById('page1'); |
|
const page2 = document.getElementById('page2'); |
|
const mainTitle = document.getElementById('main-title'); |
|
const subtitle = document.getElementById('subtitle'); |
|
|
|
let currentPage = 1; |
|
|
|
function updateGraph() { |
|
if (currentPage === 1) { |
|
graphFrame.src = 'co_user.html'; |
|
page1.classList.add('active'); |
|
page2.classList.remove('active'); |
|
mainTitle.textContent = 'Open Source AI Network - Mapping the top 500 HF users'; |
|
subtitle.textContent = 'Two users are closer if they are followed by the same people.'; |
|
} else { |
|
graphFrame.src = 'co_organization.html'; |
|
page2.classList.add('active'); |
|
page1.classList.remove('active'); |
|
mainTitle.textContent = 'Open Source AI Network - Mapping dataset/model producing organizations'; |
|
subtitle.textContent = 'Two organizations are closer if their members have common followers.'; |
|
} |
|
} |
|
|
|
prev.addEventListener('click', () => { |
|
if (currentPage > 1) { |
|
currentPage--; |
|
updateGraph(); |
|
} |
|
}); |
|
|
|
next.addEventListener('click', () => { |
|
if (currentPage < 2) { |
|
currentPage++; |
|
updateGraph(); |
|
} |
|
}); |
|
|
|
page1.addEventListener('click', () => { |
|
currentPage = 1; |
|
updateGraph(); |
|
}); |
|
|
|
page2.addEventListener('click', () => { |
|
currentPage = 2; |
|
updateGraph(); |
|
}); |
|
</script> |
|
</body> |
|
</html> |