基于Vue实现模块拖拽(简单版)

1.使用directives绑定一个拖拽(drag)事件, 与data 同级

在需要用到指令的元素中添加v-指令名即可(v-drag)

 

 实现效果如下:

 directives: {
        drag: {
            bind: function(el) {
                let oDiv = el; 
                oDiv.onmousedown = (e) => {
                    let disX = e.clientX - oDiv.offsetLeft;
                    let disY = e.clientY - oDiv.offsetTop;
                    document.onmousemove = (e) => {
                       //用鼠标的位置减去鼠标相对元素的位置,得到元素的位置
                        let left = e.clientX - disX;
                        let top = e.clientY - disY;
                        //移动当前元素
                        oDiv.style.left = left + 'px';
                        oDiv.style.top = top + 'px'; 
                    };
                    document.onmouseup = (e) => {
                        document.onmousemove = null;
                        document.onmouseup = null;
                    }
                }
            }
        }
    },

2.全局应用:

 创建拖拽文件,drag.js

let drag = {
  bind: function (el) {
    let odiv = el //获取当前元素
    odiv.onmousedown = (e) => {
      let disX = e.clientX - odiv.offsetLeft
      let disY = e.clientY - odiv.offsetTop
      document.onmousemove = (e) => {
        //用鼠标的位置减去鼠标相对元素的位置,得到元素的位置
        let left = e.clientX - disX
        let top = e.clientY - disY

        //移动当前元素
        odiv.style.left = left + 'px'
        odiv.style.top = top + 'px'
      }
      document.onmouseup = (e) => {
        console.log(e)
        document.onmousemove = null
        document.onmouseup = null
      }
    }
  },
}
export default drag

在main.js找那个引入指令文件 drag.js,并创建全局指令

//创建的drag.js文件
import '/test/drag.js'

 在需要用到指令的元素中添加v-指令名即可(v-drag)

复杂版:

dialog对话框 可移动拖拽变大变小,去掉覆盖层、可操作底层_dialog 可移动-优快云博客

要使用R复现这篇孟德尔随机化(Mendelian Randomization, MR)分析文章中的结果,可以按照以下步骤进行: ### 1. 安装和加载必要的包 首先,你需要安装并加载一些必要的R包,这些包用于处理GWAS数据和执行MR分析。 ```R install.packages("TwoSampleMR") library(TwoSampleMR) ``` ### 2. 下载和准备GWAS数据 你需要从论文中提到的数据源下载GWAS汇总统计数据,并将其准备好用于MR分析。这里以骨密度(BMD)和骨折为例。 #### 2.1 下载GWAS数据 你可以从以下网站下载GWAS数据: - **骨密度(BMD)**:[GEFOS](http://www.gefos.org/) -epidemiology/) - **精神疾病(MDs)**:[GWAS Catalog](https://www.ebi.ac.uk/gwas/downloads/summary-statistics) 假设你已经下载了这些数据并保存为文件。 #### 2.2 准备GWAS数据 将下载的GWAS数据读入R,并进行预处理。 ```R # 读取GWAS数据 bmd_data <- read.table("path/to/bmd_data.txt", header = TRUE) fracture_data <- read.table("path/to/fracture_data.txt", header = TRUE) schizophrenia_data <- read.table("path/to/schizophrenia_data.txt", header = TRUE) # 进行质量控制 bmd_data <- clump_data(bmd_data, p1 = 5e-8, p2 = 5e-8, clump_kb = 10000, clump_r2 = 0.001) fracture_data <- clump_data(fracture_data, p1 = 5e-8, p2 = 5e-8, clump_kb = 10000, clump_r2 = 0.001) schizophrenia_data <- clump_data(schizophrenia_data, p1 = 5e-8, p2 = 5e-8, clump_kb = 10000, clump_r2 = 0.001) ``` ### 3. 执行两样本MR分析 使用`TwoSampleMR`包中的函数来执行MR分析。 ```R # 获取遗传工具变量 exposure_data <- extract_instruments(schizophrenia_data) # 获取结局数据 outcome_bmd <- harmonise_data(exposure_data, bmd_data) outcome_fracture <- harmonise_data(exposure_data, fracture_data) # 执行MR分析 mr_result_bmd <- mr(outcome_bmd, method_list = c("ivw", "mr_egger_regression", "weighted_median")) mr_result_fracture <- mr(outcome_fracture, method_list = c("ivw", "mr_egger_regression", "weighted_median")) # 查看结果 print(mr_result_bmd) print(mr_result_fracture) ``` ### 4. 结果解释 输出的结果会显示不同方法下的MR估计值及其显著性水平。你可以通过查看`mr_result_bmd`和`mr_result_fracture`来解释结果。 ### 5. 敏感性分析 为了验证结果的稳健性,可以进行敏感性分析。 ```R # 检查异质性和多效性 heterogeneity_test <- mr_heterogeneity(outcome_bmd) pleiotropy_test <- mr_pleiotropy Egger(outcome_bmd) # 查看测试结果 print(heterogeneity_test) print(pleiotropy_test) ``` ### 6. 可视化结果 最后,可以使用`forest_plot`函数绘制森林图来可视化结果。 ```R # 绘制森林图 forest_plot(mr_result_bmd, method_list = c("ivw", "mr_egger_regression", "weighted_median")) forest_plot(mr_result_fracture, method_list = c("ivw", "mr_egger_regression", "weighted_median")) ``` ### 总结 以上步骤可以帮助你在R中复现这篇文章中的孟德尔随机化分析。确保你正确地下载和处理了所有所需的GWAS数据,并且在每一步都进行了适当的质量控制和数据校正。如果有任何问题或需要进一步的帮助,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值