Code Monkey home page Code Monkey logo

emtable's Introduction

emtable

Emtable is a STAR file parser originally developed to simplify and speed up metadata conversion between Scipion and Relion. It is available as a small self-contained Python module (https://pypi.org/project/emtable/) and can be used to manipulate STAR files independently from Scipion.

How to cite

Please cite the code repository DOI: 10.5281/zenodo.4303966

Authors

  • Jose Miguel de la Rosa-Trevín, Department of Biochemistry and Biophysics, Science for Life Laboratory, Stockholm University, Stockholm, Sweden
  • Grigory Sharov, MRC Laboratory of Molecular Biology, Cambridge Biomedical Campus, England

Testing

python3 -m unittest discover emtable/tests

Examples

Each table in STAR file usually has a data_ prefix. You don't need to specify it, only the remaining table name is required. You can use either method below:

  • option 1: Table(fileName=modelStar, tableName='perframe_bfactors')
  • option 2: Table("perframe_bfactors@" + modelStar)

Be aware that from Relion 3.1 particles table name has been changed from "data_Particles" to "data_particles".

To start using the package, simply do:

from emtable import Table

Reading

For example, we want to read the whole rlnMovieFrameNumber column from modelStar file, table data_perframe_bfactors.

The code below will return a list of column values from all rows:

table = Table(fileName=modelStar, tableName='perframe_bfactors')
frame = table.getColumnValues('rlnMovieFrameNumber')

We can also iterate over rows from "data_particles" Table:

table = Table(fileName=dataStar, tableName='particles')
    for row in table:
        print(row.rlnRandomSubset, row.rlnClassNumber)

Alternatively, you can use iterRows method which also supports sorting by a column:

mdIter = Table.iterRows('particles@' + fnStar, key='rlnImageId')

If for some reason you need to clear all rows and keep just the Table structure, use clearRows() method on any table.

Writing

If we want to create a new table with 3 pre-defined columns, add rows to it and save as a new file:

tableShifts = Table(columns=['rlnCoordinateX',
                             'rlnCoordinateY',
                             'rlnAutopickFigureOfMerit',
                             'rlnClassNumber'])
tableShifts.addRow(1024.54, 2944.54, 0.234, 3)
tableShifts.addRow(445.45, 2345.54, 0.266, 3)

tableShifts.write(f, tableName="test", singleRow=False)

singleRow is False by default. If singleRow is True, we don't write a loop_, just label-value pairs. This is used for "one-column" tables, such as below:

data_general

_rlnImageSizeX                                     3710
_rlnImageSizeY                                     3838
_rlnImageSizeZ                                       24
_rlnMicrographMovieName                    Movies/20170629_00026_frameImage.tiff
_rlnMicrographGainName                     Movies/gain.mrc
_rlnMicrographBinning                          1.000000
_rlnMicrographOriginalPixelSize                0.885000
_rlnMicrographDoseRate                         1.277000
_rlnMicrographPreExposure                      0.000000
_rlnVoltage                                  200.000000
_rlnMicrographStartFrame                              1
_rlnMotionModelVersion                                1

emtable's People

Contributors

azazellochg avatar delarosatrevin avatar pconesa avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.