Protein Function Prediction using Deep Learning
- Frontend deployed on Cloudflare Pages: https://ann.hanl.in/
- Backend deployed on Google Compute Engine.
- Deep Learning Model deployed on Google Cloud Run.
The complete system consists of three main components:
- Frontend UI (annotate-ui): A Single Page Application (SPA) built with Vue 3
- Backend API (annotate-api): A Feathers.js NodeJS RESTful API service
- Deep Learning Model (annotate-model): Tensorflow GPU-accelerated inference for protein function prediction models
The frontend is built as a Single Page Application (SPA) using the Quasar Framework (Vue 3), focusing on performance and responsive design. The application is structured following Vue's component architecture with the following key elements:
- Framework: Quasar Framework v2.18+ (Vue 3.5+)
- Language: TypeScript for type safety and improved developer experience
- State Management: Pinia v3.0+ for reactive state management
- Real-time Communication: Socket.io client for WebSocket connections to the Feathers backend
- HTTP Requests: Axios for REST API calls
- Data Visualization: Apache ECharts for rendering protein data visualizations
- CSS Framework: TailwindCSS v4.0+ for utility-first styling approach
- Form Validation: Vuelidate for form input validation
- /src/pages/: Main application views including:
IndexPage.vue
: Landing page with search functionalityPfamDetail.vue
: Detailed protein family information with predictionsDocumentationPage.vue
: Application documentationAboutPage.vue
: Information about the projectContactPage.vue
: Contact information
- /src/components/: Reusable UI components such as:
SearchInput.vue
: Complex protein search componentEssentialLink.vue
: Navigation link component
- /src/layouts/: Page layout containers
MainLayout.vue
: Primary application layout with navigation and content areas
- /src/stores/: Pinia state management stores
pfamStore.ts
: Store for protein family datareferencesStore.ts
: Store for scientific reference datalocalSettingsStore.js
: User preferences and local settingssystemStore.js
: Application system state
- /src/router/: Vue Router configuration
routes.ts
: Route definitions mapping URLs to page componentsindex.ts
: Router configuration and initialization
- /src/boot/: Application initialization files
feathers.ts
: Feathers client setup for backend communicationi18n.ts
: Internationalization configurationpinia-colada.ts
: Pinia caching integrationlogger.js
: Application logging setup
- User Interface Layer: Vue components in pages/ and components/ directories
- State Management Layer: Pinia stores in stores/ directory
- API Communication Layer: Feathers client configured in boot/ directory
- Service Layer: pfam service and references service accessible through the Feathers client
- Local API response caching using browser's localStorage
- Pinia-plugin-persistedstate for preserving state between sessions
- @pinia/colada for optimized API request caching
- Vite-based build system through Quasar CLI
- TypeScript for static type checking
- ESLint for code quality
- Prettier for code formatting
- PostCSS with Autoprefixer for CSS compatibility
This architecture provides a maintainable, scalable frontend that efficiently communicates with the backend services while providing a responsive and intuitive user interface for protein function prediction analysis.
The backend API is built with Feathers.js providing:
- RESTful API endpoints for data access
- Real-time communication using Socket.io
- Authentication and authorization services
- Integration with the TensorFlow Serving API for model inference
The machine learning models are served using TensorFlow Serving:
- Multiple GPU-accelerated model instances for high-throughput prediction
- Model versioning and configuration management
- RESTful API for model inference requests
- Containerized using Docker for easy deployment and scaling
- Client makes requests to the Quasar UI
- UI communicates with the Feathers API for data processing
- For predictions, Feathers API communicates with TensorFlow Serving
- Prediction results are returned to the UI for visualization and analysis
This architecture provides scalability, performance, and maintainability for the protein function prediction system.