3.25日学习记录

1.导入odin包

老是出现这个问题,是要搞死我吗?

首先尝试一下将老的卸载,然后重新安装。

https://odin0.readthedocs.io/en/latest/setup.html 按照这个再重新安装一下pip就ok了,但是又遇到了TensorFlow版本的问题,真烦。

要安装2.1.1版本的tf。我明白了,因为我安装的是GPU版本的,所以需要这样去更新:pip install --upgrade tensorflow-gpu。ok了。

2020-4-1周三更新————————

我将tfp包将为了https://github.com/tensorflow/probability/releases 0.8,它能够适应2.0版本的tf。

2.OS.ENVIRON()详解

https://blog.csdn.net/junweifan/article/details/7615591

这个讲的还蛮好的,就是可以根据名称获得系统的路径,windows和linux是不同的。

3.PBMC的数据组成

我不明白的是pbmc它不是一共12039个cell吗?没错的,然后分为full和ly和my,但是这两者的和并不是12039啊。。。就很尴尬。

行吧纠结了一阵,还是用它直接可以下载的数据吧,因为如果用它的实验数据,我也不知道怎么预处理,会很复杂会很占用时间。

4.导入tf工具时遇到了这个问题

原来这些都是warning,我吐了!!!!!!!!记住这个错误啊,https://blog.csdn.net/toopoo/article/details/104506143

又是关于这个libnvinfer.so.6的问题。

操,原来是tf不能导入了,我哭了。

https://github.com/tensorflow/tensorflow/issues/36201 这里是问这个问题的,感觉还是没有解决,有点绝望,我目前是有点怀疑tf2.1.0它的版本对应到哪个cuda版本的问题。

 我现在使用的cuda版本是10.0:

https://www.tensorflow.org/install/gpu 看这个是说需要升级到10.1版本?

又遇到了问题: Install of driver component failed.原来是因为我的GPU在被占用!

https://forums.developer.nvidia.com/t/info-finished-with-code-256-error-install-of-driver-component-failed/107661 这个讲的非常好,在安装cuda的时候它有两个日志文件,是不同的!

 还是有问题,难道我后台运行的jupyter也要关掉吗?

https://codeyarns.com/2017/09/04/nvidia-module-already-loaded-in-kernel/

这里面要重启机器,真的这么恶心吗?我记得以前安装不需要这么麻烦的啊,真的好烦!

操tmd,不会是这个弱智问题吧?原来它默认是选着这个driver的???操。https://blog.csdn.net/iefyy/article/details/102740388 直到这个说我才反应过来,其他配图的我都没注意,我真是瞎啊。

取消了之后就可以安装成功了。

5.对pickle文件读取

https://blog.csdn.net/lishangyin88/article/details/79614174 太难记住了。

利用pickle 存储和读取文件
1.存储文件:
#引入所需包,将列表元素存入data2的文件里面
import pickle
mylist2=['a','b',['你好','证明'],1,3,5,7]
df2=open('E:\data2.txt','wb')# 注意一定要写明是wb 而不是w.
#最关键的是这步,将内容装入打开的文件之中(内容,目标文件)
pickle.dump(mylist2,df2)
df2.close()
2.读取文件:
#读取文件中的内容。注意和通常读取数据的区别之处
df=open('E:\data2.txt','rb')#注意此处是rb
#此处使用的是load(目标文件)
data3=pickle.load(df)
df.close() 

6.odin包画图的导不进来

 真是恶心jb死我了。去了对应的

lib/python3.7/site-packages/odin/visual/__init__.py)

路径下面,整个visual都没有看到from这句话啊。

我知道了,不应该取找odin,应该找sisua啊。。。

是因为它用的这个odin包里的函数已经被修改了,而且参数也不一样,

2020-4-1周三更新————————

尝试将所有使用plot_scatter_heatmap的地方注释掉,

#上面问题的解决办法是,我进入了安装包的路径,然后看了一下它的导入方式应该都加上一个_下划线,就ok了,就能找到包的所在。

说这不是一个包,emm那就再安装吧?然后pip install anndata。。

找遍了odin的visual模块,真的没有plot_scatter_heatmap这个函数!

我就尝试着运行,然后把所有关于上面这个函数的部分注释掉,然后又出现了以下问题:

 然后我就把那句错的注释掉了。

 不能从tfp中导入这个,我猜是版本的问题,难道我真的要升级tfp版本,然后升级cuda吗,我哭。

 看来是不行了,要升级版本了。

https://bluesmilery.github.io/blogs/a687003b/ 根据这个设置了一下cuda的变量,写了一个sh文件,但是我觉得好像不怎么管用啊,我挺怕的。

现在将tf-gpu升级至2.1版本,又将tfp升级到了0.9版本。升级之后果然又出现了这些warning,不过我不在意了。

 不行啊,我升级所有的版本之后就还是报同样的错误,我不懂了。

https://github.com/tensorflow/tensorflow/issues/27547 ,看这个上面说要安装,tfp-nightly,好吧安。而且这里面说tfp是完全基于tf的,和tf-fpu没有关系。

 我要吐了,安装了之后,出现了上面更多的问题,在运行import tensorflow_probability as tfp时,吐了不整了,我们无缘。吐了!不整了!

2020-4-2周四——————

我又锲而不舍地回来了。

https://www.tensorflow.org/api_docs/python/tf/math/xlog1py 根据这个我尝试安装了pip install tf-nightly-gpu,因为里面说这个core好像只有在nightly版本中有。

上面的问题解决了,但是又出现了下面的问题啊。

 搜索之后发现是https://github.com/tensorflow/addons/issues/753,在import tensorflow_addons as tfa时出现的bug,

我尝试升级一下它pip install --upgrade tensorflow-addons,但是立马给出了bug。。。

 不管了,先试试吧。现在导入tfs就不会报上面的错误了,应该是在新版里就修复了。因为https://github.com/tensorflow/addons/issues/574 提到说是什么tf和tfa版本mismatch的问题,所以就尝试了一下。嗯,然后又遇到了这个问题:

我去对应路径下看了文件,发现根本没有self_vae.py这样的文件,当然本地路径也没有,所以我就将这一句注释掉了。

又出现了问题,在意料之中。我查看了odin的layer路径将import语句路径改了一下,odin.bay.layers,就找到了,解决bug。

发现也是路径的问题,就将它改了一下,改成和上面一样的路径就ok了。又出现了问题:

同理,我将这个注释掉,并且注释掉了那个Statistic.DIST参数,,不会有啥问题吧。 

又遇到了很多相似的问题,都用相同的思路来解决。

 这个什么高级模型,在odin里是真的没有找到啊。这可咋整?我换了之后它又出现问题了,下面:

 原来还不赖我改的,是下面有导入,这又是啥包啊????天哪。

那么使用pip install hyperopt安装,是https://pypi.org/project/hyperopt/它是一种通过贝叶斯优化来调整参数的工具,该方法较快的速度,并有较好的效果。

安装后和本地的omic不一样,没了const文件不一样,我打算把本地的omic那个class赋值进去。

//感觉越来越恶心。去si吧。

2020-3-26————————————————————————

1.python的local()函数

https://www.cnblogs.com/blackmatrix/p/5604160.html 这个讲的这么好,居然没有人赞?

def func():
    arg_a, arg_b = 'a', 'b'

    def func_a():
        pass

    def func_b():
        pass

    def print_value():
        print(arg_a, arg_b)

    return locals()


if __name__ == '__main__':

    args = func()
    print(type(args))
    print(args)

#输出:
<class 'dict'>
{'print_value': <function func.<locals>.print_value at 0x00000247B01F30D0>, 

'func_b': <function func.<locals>.func_b at 0x00000247B01F3048>,

'func_a': <function func.<locals>.func_a at 0x00000247B01F0F28>, 'arg_b': 'b', 'arg_a': 'a'}

可以看到它是返回当前命名空间中的局部值,不仅包括局部变量还包括局部的函数。

果然,当用在类中的时候也会返回类的参数。

class NewProps(object):

    def __init__(self,units,xdist):
        self._age = 40
        self.kw=dict(locals())

    def getkw(self):
        return self.kw

if __name__ == '__main__':
    x = NewProps(1.2,3.4)
    print(x.getkw())

#输出:
{'xdist': 3.4, 'units': 1.2, 'self': <__main__.NewProps object at 0x00000205957BD080>}

2.y蛋白质数据是用bigarray存储的

怪不得我用pickle读取就会报错,说不是pickle类型的。。。

暂时没读出来

3.二值化

https://blog.csdn.net/weixin_44953364/article/details/99541530

原来二值化就是设置一个阈值啊,让高于它的为,低于它的为0.

import numpy as np
from sklearn import preprocessing

data = np.array([[3, -1.5, 2, -5.4],
                 [0, 4, -0.3, 2.1],
                 [1, 3.3, -1.9, -4.3]])
data_binarized=preprocessing.Binarizer(threshold=1.4).transform(data)#设定阈值
print("原始:
",data)
print("二值化:
",data_binarized)

#输出:
原始:
 [[ 3.  -1.5  2.  -5.4]
 [ 0.   4.  -0.3  2.1]
 [ 1.   3.3 -1.9 -4.3]]
二值化:
 [[1. 0. 1. 0.]
 [0. 1. 0. 1.]
 [0. 1. 0. 0.]]
原文地址:https://www.cnblogs.com/BlueBlueSea/p/12577035.html