diff --git a/app.py b/app.py index 969f11a..7555f7f 100644 --- a/app.py +++ b/app.py @@ -238,11 +238,20 @@ class TDC2Homepage(Resource): def get(self): return make_response(render_template("/MyApp.html"), 200, {'Content-Type': 'text/html'}) + +class LegacyHome(Resource): + def get(self): + publications.sort(key=lambda x: (-x["year"], -x["month"])) + args = { + "publications": publications + } + return make_response(render_template("/index.html", **args), 200, {'Content-Type': 'text/html'}) api.add_resource(FctOverview, "/fct_overview") api.add_resource(FeedbackForm, "/feedback") api.add_resource(TDC2Homepage, "/pytdc") +api.add_resource(LegacyHome, "/home") if __name__ == '__main__': diff --git a/backend/metadata/publications.py b/backend/metadata/publications.py index eed5f1d..4e74245 100644 --- a/backend/metadata/publications.py +++ b/backend/metadata/publications.py @@ -7,7 +7,7 @@ 2024, 12, { - "Paper": "https://openreview.net/pdf?id=kL8dlYp6IM", + "Paper": "https://zitniklab.hms.harvard.edu/publications/papers/TDC-neurips21-main.pdf", "Poster": "https://drive.google.com/file/d/1plypydZCaegbgxyCl-xehFxSgwX6e8So/view?usp=sharing" } ), @@ -26,7 +26,7 @@ 2024, 6, { - "Paper": "https://www.biorxiv.org/content/10.1101/2024.06.12.598655v2", + "Paper": "https://zitniklab.hms.harvard.edu/publications/papers/TDC-neurips21-main.pdf", "Conference": "https://portal.ml4dd.com/moml-2024", "Poster and Tweet": "https://x.com/ProjectTDC/status/1803581129376629234" } diff --git a/frontend/tdc/src/App.jsx b/frontend/tdc/src/App.jsx index d8ecc16..1a80a01 100644 --- a/frontend/tdc/src/App.jsx +++ b/frontend/tdc/src/App.jsx @@ -24,7 +24,7 @@ const App = () => { - TDC2: A multimodal ML platform for biomedical foundation models. + PyTDC: A multimodal ML platform for biomedical foundation models. diff --git a/frontend/tdc/src/containers/Home/index.tsx b/frontend/tdc/src/containers/Home/index.tsx index f7f2c96..fd27212 100644 --- a/frontend/tdc/src/containers/Home/index.tsx +++ b/frontend/tdc/src/containers/Home/index.tsx @@ -9,14 +9,14 @@ import SectionDemo from './SectionDemo'; const HomeContainer: React.FC = () => { useEffect(() => { // Update the document title client-side - handelTitle('TDC2: Multimodal ML Platform for Foundation Models in Therapeutics'); + handelTitle('PyTDC: A multimodal machine learning training, evaluation, and inference platform for biomedical foundation models'); }, []); useEffect(() => { // Update body background style client-side if (typeof document !== 'undefined') { const body = document.getElementsByTagName('body')[0]; - if (document.title === 'TDC2: Multimodal ML Platform for Foundation Models in Therapeutics') { + if (document.title === 'PyTDC: A multimodal machine learning training, evaluation, and inference platform for biomedical foundation models') { body.style.backgroundImage = 'linear-gradient(180deg,#240044 0,#0f0240 25%,#400959 40%,#0f0240 65%,#0f0240)'; } else { diff --git a/frontend/tdc/src/data/data-containers/data-HomeDemo1.tsx b/frontend/tdc/src/data/data-containers/data-HomeDemo1.tsx index 2275908..2b625f4 100644 --- a/frontend/tdc/src/data/data-containers/data-HomeDemo1.tsx +++ b/frontend/tdc/src/data/data-containers/data-HomeDemo1.tsx @@ -1,10 +1,4 @@ import { - HomeDemo1Services1, - HomeDemo1Services2, - HomeDemo1Services3, - HomeDemo1Services4, - HomeDemo1Services5, - HomeDemo1Services6, HomeDemo1TokenIcon1, @@ -39,7 +33,7 @@ export const VerticalSocial = [ {nameIco:'fa-brands fa-slack', link:'https://join.slack.com/t/pytdc/shared_invite/zt-x0ujg5v6-zwtQZt83fhRdgrYjXRFz5g'}, {nameIco:'fa-brands fa-youtube', link:'https://www.youtube.com/watch?v=ZuCOhEZtaOw&pp=ygUfeml0bmlrIHRoZXJhcGV1dGljIGRhdGEgY29tbW9ucw%3D%3D'}, {nameIco:'fa-solid fa-face-smile', link:'https://huggingface.co/tdc'}, - {nameIco:'fa-solid fa-file-pdf', link:'https://www.biorxiv.org/content/10.1101/2024.06.12.598655v2'} + {nameIco:'fa-solid fa-file-pdf', link:'https://zitniklab.hms.harvard.edu/publications/papers/TDC-neurips21-main.pdf'} ] export const SingleCoolFact = [ @@ -57,37 +51,31 @@ export const SingleCoolFact = [ export const service_single_content = [ { - img:HomeDemo1Services6, title:'TDC.scDTI', content: 'Single-cell drug-target nomination (identification). The goal is to train a model for predicting the probability that a protein is a candidate therapeutic target in a specific cell type.', link:'https://tdcommons.ai/multi_pred_tasks/scdti' }, { - img:HomeDemo1Services3, title:'TDC.PerturbOutcome', content:'We define a task for predicting responses in gene expression of single cells to chemical and genetic perturbations, aiming to measure model generalization across cell lines and perturbation types.', link:'https://tdcommons.ai/multi_pred_tasks/counterfactual' }, { - img:HomeDemo1Services4, title:'TDC.ProteinPeptide', - content:"Capturing the dynamic nature of protein-peptide interactions requires advanced sampling techniques and computational resources, making the prediction of binding affinities more complex (Antes et al., 2014). TDC-2 provides benchmarks integrating newly discovered peptides to test ML models on their ability to generalize to cutting-edge peptidomimetics.", + content:"Capturing the dynamic nature of protein-peptide interactions requires advanced sampling techniques and computational resources, making the prediction of binding affinities more complex (Antes et al., 2014). We provide benchmarks integrating newly discovered peptides to test ML models on their ability to generalize to cutting-edge peptidomimetics.", link:'https://tdcommons.ai/multi_pred_tasks/proteinpeptide' }, { - img:HomeDemo1Services2, title:'TDC.TCREpitope', content:" T-cells are an integral part of the adaptive immune system, whose survival, proliferation, activation and function are all governed by the interaction of their T-cell receptor (TCR) with immunogenic peptides (epitopes). This new task aims to predict the binding affinity given a pair of TCR sequence and epitope sequence. The models are, at very least, expected to generalize to unseen TCRs. But the main challenge of this dataset is to generalize to samples where both epitope and TCR are unseen.", link: 'https://tdcommons.ai/multi_pred_tasks/tcrepitope' }, { - img:HomeDemo1Services1, title: "TDC.TrialOutcome", content: "Clinical trial outcome prediction is a machine learning task that aims to forecast the outcome of clinical trials, such as the approval rate of a drug or treatment. It utilizes various clinical trial features, including the drug's molecular structure, disease code representing the medical condition, and eligibility criteria that specify participant selection criteria. Machine learning models for clinical trial outcome prediction are expected to demonstrate robust generalization to novel drug molecular structures and rare diseases. The ability to generalize well to diverse and evolving conditions is crucial for the models to be adaptable and effectively contribute to the field of clinical trials.", link: 'https://tdcommons.ai/multi_pred_tasks/trialoutcome' }, { - img:HomeDemo1Services5, title:'TDC.SBDD', content:'Structure-based Drug Design is to generate diverse, novel molecules that have high binding affinity to protein pockets (3D structures) and desirable chemical properties. These properties are measured by oracle functions. A machine learning task first learns the molecular characteristics given specific protein pockets from a large set of protein-ligand pair data. Then, from the learned conditional distribution, we can sample novel candidates.', link:'https://tdcommons.ai/multi_pred_tasks/sbdd' @@ -234,7 +222,7 @@ export const FQAInfo = [ export const DocElementTitle = [ { title:'NeurIPS\'24 AIDrugX Spotlight Paper', - link:'https://openreview.net/pdf?id=kL8dlYp6IM' + link:'https://zitniklab.hms.harvard.edu/publications/papers/TDC-neurips21-main.pdf' }, { title:'NeurIPS\'24 AIDrugX Poster', @@ -248,6 +236,14 @@ export const DocElementTitle = [ title:'MoML\'24 Conference @ Mila Poster', link:'https://drive.google.com/file/d/1LYdITeFY5iX07zyXPGVEjMpYjuHMrneS/view?usp=sharing' }, + { + title:'Nature Chemical Biology 2022', + link:'https://www.nature.com/articles/s41589-022-01131-2' + }, + { + title:'NeurIPS 2021', + link:'https://openreview.net/pdf?id=8nvgnORnoWr' + } ] export const TokenText = [ diff --git a/frontend/tdc/src/index.tsx b/frontend/tdc/src/index.tsx index be731e2..790c126 100644 --- a/frontend/tdc/src/index.tsx +++ b/frontend/tdc/src/index.tsx @@ -16,7 +16,7 @@ const Home: React.FC = () => { <> {/* Head component for metadata */} - + {/* Uncomment and provide a valid image URL if needed */} diff --git a/frontend/tdc/src/layouts/Header/index.tsx b/frontend/tdc/src/layouts/Header/index.tsx index a397c30..cc55711 100644 --- a/frontend/tdc/src/layouts/Header/index.tsx +++ b/frontend/tdc/src/layouts/Header/index.tsx @@ -5,8 +5,6 @@ import {Logo} from '../../data/data-layout/data-Header'; import {Addshrink , addActiveClass , OpenMenu , moveSmooth} from "../../utils/index" -import Preloader from '../../components/Preloader/index' - const Header = () => { useEffect(() => { @@ -23,7 +21,6 @@ const Header = () => { return ( <> -
@@ -47,12 +44,11 @@ const Header = () => { - Homepage + Homepage
diff --git a/frontend/tdc/src/pages/MyApp.tsx b/frontend/tdc/src/pages/MyApp.tsx index ad8dc4f..66bf6ff 100644 --- a/frontend/tdc/src/pages/MyApp.tsx +++ b/frontend/tdc/src/pages/MyApp.tsx @@ -16,7 +16,7 @@ const Home: React.FC = () => { <> {/* Head component for metadata */} - + {/* Uncomment and provide a valid image URL if needed */} diff --git a/frontend/tdc/src/template/HomeDemo1/SecAboutUs/SecWhoWeContant/index.tsx b/frontend/tdc/src/template/HomeDemo1/SecAboutUs/SecWhoWeContant/index.tsx index 05f26b7..7bd8766 100644 --- a/frontend/tdc/src/template/HomeDemo1/SecAboutUs/SecWhoWeContant/index.tsx +++ b/frontend/tdc/src/template/HomeDemo1/SecAboutUs/SecWhoWeContant/index.tsx @@ -14,7 +14,10 @@ const SecWhoWeContant = () => {

TDC API-first Architecture

-

An unprecedented collection of continually updated heterogeneous data sources is unified under the introduced API-first-dataset architecture. This includes a multimodal single-cell RNA data atlas spanning 85M+ cells.

+

A collection of multimodal continually updated heterogeneous data sources is unified under the + introduced "API-first-dataset" architecture. Inspired by API-first design, this microservice architecture is + implemented using the model-view-controller design pattern to enable multimodal data views + under a domain-specific-language.

CELLxGENE notebook diff --git a/frontend/tdc/src/template/HomeDemo1/SecAboutUsClient/SecWhoWeContant/index.tsx b/frontend/tdc/src/template/HomeDemo1/SecAboutUsClient/SecWhoWeContant/index.tsx index 4c51f4f..df37583 100644 --- a/frontend/tdc/src/template/HomeDemo1/SecAboutUsClient/SecWhoWeContant/index.tsx +++ b/frontend/tdc/src/template/HomeDemo1/SecAboutUsClient/SecWhoWeContant/index.tsx @@ -15,8 +15,14 @@ const SecWhoWeContant = () => { -

TDC Model Server

-

TDC-2 has released open source inference serving software that streamlines AI inferencing for single-cell foundation models across modalities. The TDC-2 Model Server enables access to an array of context-aware biological foundation models. A model store retrieval API provides unified access to models and weights stored in the HuggingFace Model Hub, CZ CELLxGENE fine-tuned models, and TDC storage. The model server also provides access to tokenizer functions and inference endpoints supporting PyTorch and HuggingFace Transformers.

+

PyTDC Model Server

+

The PyTDC model server streamlines retrieval, inferencing, and training setup for an array + of context-aware biological foundation models and models spanning multiple modalities. A model store retrieval + API provides unified access to model weights stored in the Hugging Face Model Hub (https://huggingface.co/tdc), + Chan-Zuckerberg CELLxGENE Census fine-tuned models, and TDC storage. The model server also provides access to + model classes, tokenizer functions, and inference endpoints supporting PyTorch + and Hugging Face Transformers. Extracted embeddings, from either model server inference or pre-computed embedding + storage, are ready for downstream use by task-specific benchmarking modules.

HF Model Hub diff --git a/frontend/tdc/src/template/HomeDemo1/SecDemoVideo/SecVideoArea/index.tsx b/frontend/tdc/src/template/HomeDemo1/SecDemoVideo/SecVideoArea/index.tsx index c696d53..9f94cc5 100644 --- a/frontend/tdc/src/template/HomeDemo1/SecDemoVideo/SecVideoArea/index.tsx +++ b/frontend/tdc/src/template/HomeDemo1/SecDemoVideo/SecVideoArea/index.tsx @@ -1,11 +1,7 @@ -import Image from 'next/image'; import React from 'react'; -type SecVideoAreaProps = { - img: string; -}; -const SecVideoArea: React.FC = ({ img }) => { +const SecVideoArea: React.FC = () => { return (
= ({ img }) => { >
- Welcome Thumbnail
); diff --git a/frontend/tdc/src/template/HomeDemo1/SecOurServices/Content/index.tsx b/frontend/tdc/src/template/HomeDemo1/SecOurServices/Content/index.tsx index 88b86af..2df1964 100644 --- a/frontend/tdc/src/template/HomeDemo1/SecOurServices/Content/index.tsx +++ b/frontend/tdc/src/template/HomeDemo1/SecOurServices/Content/index.tsx @@ -1,20 +1,19 @@ -import Image from 'next/image'; import React from 'react'; type ContentProps = { - img: string; title: string; content: string; + link: string; }; -const Content: React.FC = ({ img, title, content }) => { +const Content: React.FC = ({ title, content, link }) => { + const handleClick = () => { + window.open(link); + }; return (
-
- {title} -
-
{title}
+
{title}

{content}

diff --git a/frontend/tdc/src/template/HomeDemo1/SecOurServices/index.tsx b/frontend/tdc/src/template/HomeDemo1/SecOurServices/index.tsx index 2079325..1313ce7 100644 --- a/frontend/tdc/src/template/HomeDemo1/SecOurServices/index.tsx +++ b/frontend/tdc/src/template/HomeDemo1/SecOurServices/index.tsx @@ -3,9 +3,9 @@ import SectionHeading from '../../../components/SectionHeading'; import Content from './Content'; type ServiceData = { - img: string; title: string; content: string; + link: string }; type SecOurServicesProps = { @@ -33,7 +33,7 @@ contexts."
{data && data.map((item, key) => ( - + ))}
diff --git a/frontend/tdc/src/template/HomeDemo1/SecTeam/index.tsx b/frontend/tdc/src/template/HomeDemo1/SecTeam/index.tsx index b9a539b..bad92de 100644 --- a/frontend/tdc/src/template/HomeDemo1/SecTeam/index.tsx +++ b/frontend/tdc/src/template/HomeDemo1/SecTeam/index.tsx @@ -19,7 +19,7 @@ const SecTeam: React.FC = () => {
= ({ img }) => { +const SecWelcomeContent: React.FC = () => { return (
-
-
- - X - - Introducing TDC-2 -
-
-

The Commons (TDC-2)

+

PyTDC: Therapeutics Commons

A multimodal ML platform for biomedical foundation models

COMING SOON

- Learn more about our alpha release below! (TODO: change this) + Learn more about our alpha release of TDC-2 below!

- TDC-2 is fantastic. Absolutely the best. (TODO: change this) + We present PyTDC, a first-of-its-kind machine-learning platform for biomedical foundation models across multiple modalities. + PyTDC is open-source software providing infrastructure to streamline biomedical AI training, benchmarking, and inferencing. It + integrates multimodal biological data, single-cell analysis biomarkers, and a broad range of machine learning tasks in + therapeutics.

diff --git a/frontend/tdc/src/template/HomeDemo1/SecWelcomeArea/index.tsx b/frontend/tdc/src/template/HomeDemo1/SecWelcomeArea/index.tsx index a471fc4..80889d7 100644 --- a/frontend/tdc/src/template/HomeDemo1/SecWelcomeArea/index.tsx +++ b/frontend/tdc/src/template/HomeDemo1/SecWelcomeArea/index.tsx @@ -25,7 +25,7 @@ const SecWelcomeArea: React.FC = () => {
- +
diff --git a/frontend/tdc/src/template/HomeDemo1/index.tsx b/frontend/tdc/src/template/HomeDemo1/index.tsx index 0cc067c..01916db 100644 --- a/frontend/tdc/src/template/HomeDemo1/index.tsx +++ b/frontend/tdc/src/template/HomeDemo1/index.tsx @@ -3,7 +3,6 @@ import { useEffect } from 'react'; import { VerticalSocial, service_single_content, - timelineInfo, TeamMember, PartnersData, SingleCoolFact @@ -16,7 +15,6 @@ import SecAboutUs from './SecAboutUs'; import SecAboutUsClient from './SecAboutUsClient'; import SecAboutUsClientPeople from './SecAboutUsClientPeople'; import SecDemoVideo from './SecDemoVideo'; -import SecOurRoadmap from './SecOurRoadmap'; import SecOurServices from './SecOurServices'; import SecPartners from './SecPartners'; import SecTeam from './SecTeam'; @@ -28,19 +26,18 @@ import { HomeDemo1About1, HomeDemo1Solution, HomeDemo1About1People, - HomeDemo1VideoBg4, } from '@/utils/allImgs'; const HomeDemo1: React.FC = () => { useEffect(() => { - handelTitle('TDC2: Multimodal ML Platform for Foundation Models in Therapeutics'); + handelTitle('PyTDC: A multimodal machine learning training, evaluation, and inference platform for biomedical foundation models'); }, []); useEffect(() => { // Set the body background image client-side if (typeof document !== 'undefined') { const body = document.getElementsByTagName('body')[0]; - if (document.title === 'TDC2: Multimodal ML Platform for Foundation Models in Therapeutics') { + if (document.title === 'PyTDC: A multimodal machine learning training, evaluation, and inference platform for biomedical foundation models') { body.style.backgroundImage = 'linear-gradient(180deg,#240044 0,#0f0240 25%,#400959 40%,#0f0240 65%,#0f0240)'; } else { @@ -61,18 +58,12 @@ const HomeDemo1: React.FC = () => {
- +
- {/* */} - - {/* */} - {/* */} - {/* */}
- {/*
- + diff --git a/templates/index.html b/templates/index.html index 389edf4..9bb6388 100644 --- a/templates/index.html +++ b/templates/index.html @@ -133,7 +133,7 @@ Team - NeurIPS Paper + NeurIPS Paper Nat Chem Bio Paper Docs GitHub @@ -278,7 +278,7 @@ {% for pub in publications %}
  • {{ pub.name }}. {{ pub.venue }} {% for key, url in pub.links.items() %} [{{ key }}] {% endfor %}
  • {% endfor %} -