Fang's Blog


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

测序数据损坏简单修复

发表于 2024-03-19 | 分类于 生信

简介

  如果服务器硬盘坏了,数据恢复的可能性存在,但并不是百分之百。
  首先需要知道的是,数据恢复的难度与硬盘故障的类型和程度密切相关。如果是物理损坏,比如电路板故障或者盘片划伤等,恢复的难度会非常大,而且通常无法保证能够完全恢复所有数据。如果是逻辑损坏,比如文件系统错误或者病毒攻击等,恢复的难度相对较小,但也需要根据具体情况而定。
  针对服务器数据恢复,以下是一些可能的步骤:

  • 备份数据:
    • 在服务器硬盘损坏后,首先要做的是备份所有数据。这可以通过使用专业的数据恢复设备或者硬盘拷贝机来实现。要确保备份的数据完整性和准确性,需要在备份过程中仔细操作并检查。
  • 修复硬盘:
    • 对于物理损坏的硬盘,需要进行修复。这通常包括更换电路板、修复盘片或者更换整个硬盘等。在这个过程中,需要非常小心,以免对硬盘造成更大的损坏。
  • 数据恢复:
    • 在备份完数据并修复好硬盘后,可以开始进行数据恢复。这通常包括在专业的数据恢复设备上对硬盘进行镜像备份、分析raid信息、尝试恢复丢失的数据等。这个过程需要专业的技能和经验,不能随意操作。

  需要注意的是,在数据恢复过程中,任何操作都可能对原始数据造成破坏,因此最好避免在原盘上进行数据分析、重组等操作。同时,如果发现有无法恢复的数据,不要继续尝试,以免对数据造成更大的破坏。

以上是常规磁盘数据恢复过程,由专业的服务器运维工程师操作。

当样本下机fastq.gz文件通过以上专业方式依然无法恢复时,我们可以通过生信方式尽量多的从损坏文件中获取有用信息,尽可能降低损失。

阅读全文 »

03.Rust学习-解构Option

发表于 2024-01-24 | 分类于 Rust

1. 简介

Option 是 Rust 语言中的一个枚举类型,它表示一个值可能存在,也可能不存在的情况。在Rust中没有空值null关键字,而改为使用Option枚举来处理。通过这种方式,可以解决很多问题,比如判断一个值是否为空,避免空指针引用等。

Option 枚举包含两个成员,一个成员表示含有值:Some(T), 另一个表示没有值:None,定义如下:

1
2
3
4
enum Option<T> {
Some(T),
None,
}

由于Option 枚举被包含在prelude ( prelude属于 Rust 标准库,Rust 会将最常用的类型、函数等提前引入其中自动导入)中,在使用时不用提前导入,直接使用即可。

2. 解构 Option

想获取 Option 当中的T,可以有以下几种方式:

阅读全文 »

02.Rust学习-传参1

发表于 2024-01-17 | 分类于 Rust

简介

Rust 是一种 静态编译的、快速的语言,具有出色的工具支持和迅速增长的生态系统,这使它非常适合编写命令行应用程序。在平时的生信分析中,大部分工具也是命令行形式。因此,从这个角度来说,Rust是非常适合应用于生信领域。作为一个命令行应用程序(CLI),最基本的要求是能够与外界进行参数传递。

获取参数

一种方式是通过Rust标准库提供的std::env::args() 方法,提供了运行时给定参数的迭代器。
另一种是当前最受欢迎的解析命令行参数的库clap。

args用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
fn main() {
let pattern = std::env::args().nth(1).expect("no pattern given");
let path = std::env::args().nth(2).expect("no path given");
// 直接返回迭代器中相应位置的元素;
println!("{},{}",pattern,path);

let args:Vec<String> = std::env::args().collect();
// 将迭代器转换为一个集合
dbg!(args);

/*
$ cargo run -- test tmp.txt
test,tmp.txt
[src\main.rs:12] args = [
"target\\debug\\learn_env.exe",
"test",
"tmp.txt",
]
*/

}
阅读全文 »

01.Rust学习-文件读取

发表于 2024-01-16 | 分类于 Rust

简介

学习使用Rust进行简单的文件读取操作。

一次性读入

优点:

  • 处理包含字符串内容的文件;
  • 可以一次整体处理;

缺点:

  • 过大的文件可能会对性能产生严重影响;
  • 文件越大,程序内存消耗就越大;
  • 某些文件不能处理,如二进制内容的文件不能以这种方式处理;
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    use std::env;
    use std::fs;

    fn main() {
    let args:Vec<String>= env::args().collect();

    let fpath = &args[1];

    let contents:String = fs::read_to_string(fpath)
    .expect("读取文件失败");

    for line in contents.lines() {
    println!("{}",line);
    }
    }
阅读全文 »

kaks计算

发表于 2020-04-02 | 分类于 生信

简介

简单多线程快速计算同源基因对kaks

依赖工具

  • ParaAT2.0
  • KaKs_Calculator2.0

ParaAT 使用说明

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
export PATH=/storage_wut/user/software/ParaAT2.0:$PATH

cd /storage_wut/user/software/ParaAT2.0

ParaAT.pl -h test.homologs -n test.cds -a test.pep -p proc -o output -f axt
--------------------------------
-h, 指定同源基因列表文件
-n, 指定核酸序列文件
-a, 指定蛋白序列文件
-p, 指定多线程文件 ## 文件中给定线程数,默认为6
-m, 指定比对工具 ## muscle
-g, 去除比对有gap的密码子
-k, 用KaKs_Calculator ## 计算kaks值
-o, 输出结果的目录
-f, 输出比对文件的格式

计算 kaks

阅读全文 »

GO分类条形图

发表于 2020-04-02 | 分类于 生信

R 绘图脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
rm(list = ls())
library(ggplot2)
windowsFonts(myFont = windowsFont("Times New Roman"))
setwd("D:\\data\\kegg_go_class")
data <- read.table("test.DESeq2.goClass.xls.counts",sep='\t',header = T)
pdf(file="test.DESeq2.goClass.pdf",width=10,height=10)
dorder = factor(as.integer(rownames(data)),labels=data$GO_term) #对数据按GO_term排序
ggplot(data,aes(x=GO_term,y=Number_of_Genes,fill=GO_category)) + #定义X轴,Y轴的数据和颜色填充
geom_bar(stat="identity",position=position_dodge(0.7),width=0.8,aes(x=dorder)) + #定义柱形图的宽度和间距
coord_flip() + #转换横纵坐标
ylim(0,600) +
scale_fill_discrete(name="GO category") + #修改legend的tittle
theme_bw() +
theme(panel.grid =element_blank(),axis.text=element_text(size = 10,face = "bold")) +
geom_text(mapping = aes(label = Number_of_Genes),size = 4,hjust = -0.5) +
ylab("Number of genes") +#修改X轴标签
xlab("")
dev.off()

绘图结果

image.png

阅读全文 »

效率工具集(不定期更新。。。)

发表于 2019-12-19 | 分类于 工具

Chrome 插件

  • Saladict 沙拉查词
  • 划词翻译
  • Adblock Plus
  • Chrono
  • infinity
  • SimpleUndoClose
  • Scholarscope
    阅读全文 »

python赋值、浅拷贝和深拷贝

发表于 2019-04-14 | 分类于 技术

简介

  python中关于对象复制有三种类型:直接赋值、浅拷贝和深拷贝,他们既有联系又有区别。在python中,“类型”属于“对象”,“变量”是没有“类型”的。所有的变量都可以理解是内存中一个对象的“引用”。所以,我们需要把“变量”和真正的“内存对象”分开。

直接赋值

  在python中赋值语句是建立对象的引用值,而不是复制对象。因此,python变量更像是指针,而不是数据存储区域。因此,直接赋值其实就是其实就是对象的引用(别名)。

阅读全文 »

Xmind快捷键详解(思维导图版)

发表于 2018-11-15 | 分类于 工具

说明

  • 软件版本:XMind 8 Update 7
  • 操作系统: Windows 10
  • 剪切画: 部分剪切画从外部导入

快捷键

阅读全文 »

Xshell完美连接win10 Linux子系统

发表于 2018-11-08 | 分类于 技术

需求简介

自从微软向全世界发布Windows 10下的 Linux子系统Windows Subsystem for Linux(WSL),WSL为Windows用户提供了巨大的便利,它的诞生可以让开发者们在 Windows 10 下通过 Bash shell 运行原生态的Ubuntu 系统。当然,目前有很多方式在Windows系统下体验和学习Linux系统,主要包括以下几种方式:

  • 虚拟机
    通过在Windows系统下安装虚拟机Virtual Machine运行Linux系统,是目前比较流行的方式。但是运行虚拟机也有诸多不便,比如:消耗内存大(土豪随意);划分的硬盘主机无法访问;与主机传输文件容易中断等。
    阅读全文 »
12
Fangj

Fangj

11 日志
4 分类
8 标签
RSS
GitHub E-Mail 微博 简书
0%
© 2024 Fangj
由 Hexo 强力驱动
|
主题 — NexT.Gemini v5.1.4
总访问量次 | 总访客人 |
博客全站共8.9k字