Skip to content

single data block example

In this example, we will use starfile to read and write a STAR file with a single data block.

particles.star
data_particles

loop_
_rlnCoordinateX #1
_rlnCoordinateY #2
_rlnCoordinateZ #3
_rlnAngleRot #4
_rlnAngleTilt #5
_rlnAnglePsi #6
_rlnMicrographName #7
91.798700   83.622600   203.341030  -51.740000  173.930000  32.971000   01_10.00Apx.mrc
97.635800   80.437000   203.136160  141.500000  171.760000  -134.680000 01_10.00Apx.mrc
92.415200   88.842700   210.663900  -78.750000  173.930000  87.263200   01_10.00Apx.mrc
94.607830   93.135410   205.425960  -85.215000  167.170000  85.632200   01_10.00Apx.mrc
86.187800   80.125400   204.558750  14.910000   163.260000  -16.030000  01_10.00Apx.mrc
91.824240   76.738300   203.794280  39.740000   168.410000  -57.250000  01_10.00Apx.mrc
98.253300   73.530100   203.856030  73.950000   166.380000  -84.640000  01_10.00Apx.mrc
101.303500  80.290800   194.790400  -178.878000 166.090000  73.181000   01_10.00Apx.mrc

Read the file

import starfile

df = starfile.read('particles.star')

Interact with the data

df['rlnCoordinateX'] += 10
df.head()
   rlnCoordinateX  rlnCoordinateY  rlnCoordinateZ  rlnAngleRot  rlnAngleTilt  rlnAnglePsi rlnMicrographName
0       101.79870        83.62260       203.34103      -51.740        173.93      32.9710   01_10.00Apx.mrc
1       107.63580        80.43700       203.13616      141.500        171.76    -134.6800   01_10.00Apx.mrc
2       102.41520        88.84270       210.66390      -78.750        173.93      87.2632   01_10.00Apx.mrc
3       104.60783        93.13541       205.42596      -85.215        167.17      85.6322   01_10.00Apx.mrc
4        96.18780        80.12540       204.55875       14.910        163.26     -16.0300   01_10.00Apx.mrc

Note

Simple data blocks (unlike those using the loop_ notation) will return a python dictionary instead of a dataframe:

Save the (modified) data to file

starfile.write(df, 'modified_particles.star')

For files containing multiple data blocks, please see the multiple data block example.