在 Lua 中查看文件目录

如何解决在 Lua 中查看文件目录

我正在尝试为研究项目改编一些代码,但以前从未用 Lua 编写过代码。因此,我不确定路径和加载是如何工作的。我有这些包含蛋白质信息的 CSV 文件,计划是将它们转换为神经网络的图像。但是我不确定将这些 CSV 文件放入哪些属性和文件目录。有没有人有任何见解?

local M={}

require 'paths';
torch.manualSeed(123)

local function LoadCSV(proteinName)
    local file = io.open(proteinName,'r')
    local header = file:read()
    local dat = {}
    for l in file:lines() do
        local row = l:split(',')
        table.insert(dat,row)
    end
    return torch.Tensor(dat)
end

function M.Maper(cancerType)
    local pros = paths.dir('Data/' .. cancerType)
    os.execute("mkdir " .. "Data/" .. cancerType .. "_Map")
    table.remove(pros,1)
    table.remove(pros,1)
    table.sort(pros)
    local n = #pros
    
    for i=1,n,3 do
        local tens = {}
        print(pros[i])
        for j=1,3 do
            local map = torch.zeros(16,200,200)
            gene = LoadCSV('Data/' .. cancerType .. '/' .. pros[i+j-1])
            atoms = gene:size(1)
            for a=1,atoms do
                --print(gene[a][17],gene[a][18])
                map[{ {},{math.min(gene[a][17]+1,200)},{math.min(gene[a][18]+1,200)} }] = gene[{ {a},{1,16} }]
            end
            tens[j] = map:clone()
        end
        torch.save('Data/' .. cancerType .. '_Map/' .. pros[i]:sub(1,4) .. '.dat',tens)
    end
end

local function Shuffle(...)
    local args = {...}
    local n = #args[1]
    local count = 0
    count=(torch.type(n)=='number' and n or n[1]) 
    for t=1,count do
        local k = math.random(count)
        for i,v in ipairs{...} do
            v[t],v[k] = v[k],v[t]
        end
    end
    return {...}
end

function M.DataCollect(positive,negative,neutral)
    local posProtein = paths.dir('Data/' .. positive)
    table.remove(posProtein,1)
    table.remove(posProtein,1)
    local negProtein = paths.dir('Data/' .. negative)
    table.remove(negProtein,1)
    table.remove(negProtein,1)
    --local nutProtein = paths.dir('Data/' .. neutral)
    --table.remove(nutProtein,1)
    --table.remove(nutProtein,1)
    local label = torch.zeros(#posProtein+#negProtein)
    local allProtein = {}
    local index=1
    for i=1,#posProtein do
        table.insert(allProtein,'Data/' .. positive .. '/' .. posProtein[i])
        label[index]=1
        index=index+1
    end

    for i=1,#negProtein do
        table.insert(allProtein,'Data/' .. negative .. '/' .. negProtein[i])
    end

    --for i=1,#nutProtein do
    --  table.insert(allProtein,'Data/' .. neutral .. '/' .. nutProtein[i])
    --end

    _ = Shuffle(allProtein,label)

    return allProtein,label
end

function M.Slice(tbl,first,last,step)
  local sliced = {}

  for i = first or 1,last or #tbl,step or 1 do
    sliced[#sliced+1] = tbl[i]
  end

  return sliced
end

function M.Fetch(names,h,w)
  local pros = torch.Tensor(3,#names,16,w)
  local threads = require 'threads'
  local pool = threads.Threads(4)
  for i=1,#names do
    pool:addjob(function()
      local temp = torch.load(names[i])
      return i,temp
    end,function(id,pr)
    --print(pr,pros:size())
      pros[{ {1},{id},{},{} }] = pr[1]:clone()
      pros[{ {2},{} }] = pr[2]:clone()
      pros[{ {3},{} }] = pr[3]:clone()
    end
    )
  end
  pool:synchronize()
  pool:terminate()
  return pros
end

function M.Dataset(proteins,labels,meani,stdvi)
    local dataset = {}
    dataset.data = proteins
    dataset.label = labels
    setmetatable(dataset,{__index = function(t,i) 
                    return {
                        t.data[i],t.label[i]
                    } 
                end}
    );
    
    function dataset:size() 
        return self.data:size(1) 
    end
    
    local mean = torch.zeros(16)
    local stdv  = torch.zeros(16)

     if meani~=nil then
       for i=1,16 do
       dataset.data:select(3,i):add(-meani[i])
       dataset.data:select(3,i):div(stdvi[i])
       end
     else   
         for i=1,16 do
         mean[i] = dataset.data:select(3,i):mean() 
         dataset.data:select(3,i):add(-mean[i])
         stdv[i] = dataset.data:select(3,i):std()
         dataset.data:select(3,i):div(stdv[i])
         end
     end

    return dataset,mean,stdv
end

return M
local M={}

require 'paths';
torch.manualSeed(123)

local function LoadCSV(proteinName)
    local file = io.open(proteinName,stdv
end

return M

解决方法

乍一看,这似乎是一个需要在 Lua 脚本中或在解释器中交互使用的库。无论哪种情况,解释器都应该从包含 Lua 项目的目录启动。该目录还应包含一个 Data/ 子目录。 Data/ 目录应包含以包含 CSV 文件的癌症类型命名的其他目录。 例如:

path/to/lua/project/
└── Data
    ├── cancer1
    │   ├── protein1.csv
    │   └── protein2.csv
    └── cancer2
        ├── protein1.csv
        ├── protein2.csv
        └── protein3.csv

例如,您可以尝试:

cd path/to/lua/project
lua your_script.lua

除此之外,我对你的项目实在无话可说。

我可以澄清一些看起来很奇怪的线条——你说你不确定“路径”是如何工作的。在您显示的库代码中,require "paths" 在显示的库的全局范围内运行名为 paths.lua 的文件中的代码。该文件可能与您的其余代码位于同一目录中,但可以位于 package.path 中列出的目录中的任何位置。

这个 (paths) 不是标准的 Lua 库,但它看起来很简单。似乎 paths.dir 是一个函数,它返回一个包含目录内容作为字符串的表。连续两次调用 table.remove 的奇数行几乎肯定会获取这些目录内容并删除隐藏的 ... 文件(尽管可能值得注意的是它的执行效率非常低) ).

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 <select id="xxx"> SELECT di.id, di.name, di.work_type, di.updated... <where> <if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 <property name="dynamic.classpath" value="tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-