Spaces:
Running
Running
<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> |