A computational biologist/bioinformatician

  • Cancer Genomics
  • Machine Learning
  • Genetic Dissection


Postdoctoral Research Fellow, Texas A&M University, 2021-present
Intern, NDSU CCAST (High Performance Computing Center), 2020
Graduate Research Assistant, NDSU, 2015-2020

Education Background

Ph.D., Computer Science, North Dakota State University, 2021

M.S., Applied Statistics, North Dakota State University, 2022

M.S., Plant Science, North Dakota State University, 2020

B.S., Crop and Soil Science, Michigan State University, 2015

B.S., Turfgrass Management, Beijing Forestry University, 2015

Minor, Accounting, Beijing Forestry University, 2013

  • Flask and Djanog use Jinja strategy to embed variables in HTMLs, i.e. { % variable %}.
  • Commenting these lines with will not affect these variables. Thus, careful with that. Determining in advance when using commenting or deleting

Jquery will identify the id only once. Any node with duplicate ids will be ignored after the first one.

  • Flask
    • Light-weight backend framework
    • No Flask-bootstrap or something else
    • Minimize dependency for convenient future updating
  • Make a base.html layout
  • Static files can be accessed without prefixes (application name)
  • No front-end framework is planned
  • APIs must be requested with prefixes (application name)
    • Probably add a prefix variable (base_url) in each js file

Flask vs Django

Django provides more functionalities since it is a macro framework.

However, for bio-databases, the main purpose is to present data. Authentication and data uploading are merely seen. Even though some bio web-portal allows to upload users’ data, this usually won’t be added to databases. Usually, web takes users’ data, processes it, and returns results to users.

Django uses models to construct data structures. Models are too complex if no new future data. The initial data usually are predefined before the web is ready. Using fixtures to initialize the database probably will take a while

Restful API is complicated compared to Flask. Middleware configurations and views are annoying.

Overall, the nature of bio-webs is simply to present data. Instead of spending too much time on backend, efforts should be devoted to advancing visualization techniques.

geom_line will connect one by one by given data frame automatically

geom_line + geom_line will sharply exhaust memory stack

gemo_line(group=pair) is the only solution

Websocket is not like traditional http, which don’t keep a constant connection.

Websocket maintains a connection within a predefined interval.

Network tab in Chrome devtools is static that a running websocket will not be captured. Communications after loading will still be recorded in the original websocket.

Recently, I was moving a couple of web portals (backed by Django) to another server. Because all web portals was developped to be transferable, many unexpected problems were encountered.

  1. Soft links

    cp --remove-destination ./ ./
  2. mixed absolut and relative file path

  3. Implicit required R packages

    Instead of loading packages in the header, some functions were loaded using “::”

  4. Function signature changed

    readr::read_rds(path=) #deprecated

    read::read_rds(file=) #current signature
  5. admin keyword blocked

    My organization blocked any requests containing admin keyword (403 forbidden). Thus, some static files, such as sb-admin.js, could be loaded. These have to be replaced or renamed.