I keep looking around this house and seeing great photo opportunities. One corner of our kitchen is set up for hot drinks – a tea tray with a jar of Greek coffee, boxes of tea, a little dish of silver teaspoons, a sugar bowl. It makes me happy every time I look at it, having all that hot beverage potential in one place, efficiently set up for quick distribution.
Sé keeps asking me why I stopped blogging, and I kept answering "Because I'm not doing anything interesting!", but that's a total cop out answer, and one that makes me internally uneasy – like when I hear myself saying I'm bored. They're trigger phrases that let me know there's something I'm not addressing.
So I thought I'd write a little bit about what I've been doing – we launched the Illustration Friday blog, and it's hopping! We're working on a new project that will be revealed soon, one that I'm totally excited about and whose idea was so obvious that we had the fundamentals built in two days. There's so much in progress – I'm cramming my time with standard work-for-hire development projects and toys I'm building with RSS and AJAX to try and meet the Utopian.net goal of making the web easier for artists. By artists I usually mean "me" because every single idea I have for Utopian.net comes directly from a need I am addressing as a website owner or a question I find myself answering often for our friends and clients.
We don't sleep much, and we carry on fifteen conversations at once – Josh fills me in on the trail of campaign destruction Karl Rove has been wreaking since he was a fresh-faced lad of 20, then tells me how to figure the cross-weight on a race car. I send him links to pictures of cats.
Our garden seedlings are doing weird things but are nearly ready for the ground, and an explosion of purple vinca and yellow daffodils in our domain has heralded today's equinox. Even the rose at the deserted sandy edge of the driveway is thriving. Our maple tree is red with blossoms and I can hear the bees buzzing around it even with the windows shut. Buzz is a good keyword to describe the last month of my life.
We punctuate the days with moments in the sun out on the deck – the scrub jays and Stellar's jays have pilfered through a kilo of peanuts in just a few short days. Fiends. My aunt Tammie leaves tomorrow for Malawi to work at a hospital there for three weeks (she's the nurse manager of the oncology department of her hospital, and I'm so freaking excited that she's doing this – it just fits her). I went and saw a movie today, 300, and it was just as full of naked abdomens and Gerard Butler's Scottish accent as I was promised. These are all the things I have been doing, and as for exploring my feelings – well, I'm buzzed. Spring is humming, Utopian.net is blossoming, I've redesigned Brianna.org and am ready to launch it shortly, and I get to spend every single one of these golden days with Josh right with me.
all that AND brownie muffin things?


April 24, 2019 • A NASA probe called InSight is on Mars listening for marsquakes and it seems it has detected the first sounds of a quake, probably.
April 24, 2019 • Are players just pretending to be so certain the ball is out on their opponent? Or could there be a difference in how they experience the event that has them pointing a finger at the other player?
April 21, 2019 • NPR's Lulu Garcia-Navarro talks to former astronaut Ed Lu, who co-founded a planetary defense nonprofit, about a meteor that exploded with the energy of 10 atomic bombs over the Bering Sea.


text:
Q: How to convert floating point algorithm to fixed point? After reading quite a bit about fixed-point arithmetic I think I can say I've understood the basics, unfortunately I don't know yet how to convert routines that use sin/cos/sqrt or any other fp function.
Consider this simple mcve:
#include <math.h>
#include <stdio.h>
#include <ctime>
#include <fstream>
#include <iostream>

typedef char S8;
typedef short S16;
typedef int S32;
typedef unsigned char U8;
typedef unsigned short U16;
typedef unsigned int U32;
typedef float F32;
typedef double F64;

// -------- Fixed point helpers QM.N(32bits) --------
typedef S32 FP32;

#define LUT_SIZE_BITS 9  // 0xffffffff>>(32-9)=511; 32-23=9; 2^9=512
#define LUT_SIZE 512

#define FRACT_BITS 28        // Number fractional bits
#define M (1 << FRACT_BITS)  // Scaling factor

inline F32 Q2F(FP32 X) { return ((F32)X / (F32)(M)); }
inline FP32 F2Q(F32 X) { return (FP32)(X * (M)); }

const F32 PI = 3.141592653589793f;
const F32 pi = 3.141592653589793f;
const U32 WIDTH = 256;
const U32 HEIGHT = 256;

FP32 cos_table[LUT_SIZE];
FP32 sin_table[LUT_SIZE];

void init_luts() {
    const F32 deg_to_rad = PI / 180.f;
    const F32 sample_to_deg = 1 / LUT_SIZE * 360.f;
    for (S32 i = 0; i < LUT_SIZE; i++) {
        F32 rad = ((F32)i * sample_to_deg) * deg_to_rad;
        F32 c = cos(rad);
        F32 s = sin(rad);
        cos_table[i] = F2Q(c);
        sin_table[i] = F2Q(s);
    }
}

// -------- Image processing --------
U8 clamp(F32 valor) { return valor > 255 ? 255 : (valor < 0 ? 0 : (U8)valor); }

struct Pbits {
    U32 width;
    U32 height;
    U8 *data;

    Pbits(U32 width, U32 height, U8 *data) {
        this->width = width;
        this->height = height;
        this->data = data;
    }

    Pbits(Pbits *src) {
        this->width = src->width;
        this->height = src->height;
        this->data = new U8[src->width * src->height * 3];
        memcpy(this->data, src->data, width * height * 3);
    }

    ~Pbits() { delete this->data; }

    void to_bgr() {
        U8 r, g, b;
        for (S32 y = 0; y < height; y++) {
            for (S32 x = 0; x < width; x++) {
                get_pixel(y, x, r, g, b);
                set_pixel(y, x, b, g, r);
            }
        }
    }

    void get_pixel(U32 y, U32 x, U8 &r, U8 &g, U8 &b) {
        U32 offset = (y * height * 3) + (x * 3);
        r = this->data[offset + 0];
        g = this->data[offset + 1];
        b = this->data[offset + 2];
    }

    void set_pixel(U32 y, U32 x, U8 c1, U8 c2, U8 c3) {
        U32 offset = (y * height * 3) + (x * 3);

        data[offset] = c1;
        data[offset + 1] = c2;
        data[offset + 2] = c3;
    }
};

void fx1_plasma(Pbits *dst, F32 t, F32 k1, F32 k2, F32 k3, F32 k4, F32 k5, F32 k6) {
    U32 height = dst->height;
    U32 width = dst->width;

    for (U32 y = 0; y < height; y++) {
        F32 uv_y = (F32)y / height;
        for (U32 x = 0; x < width; x++) {
            F32 uv_x = (F32)x / width;

            F32 v1 = sin(uv_x * k1 + t);
            F32 v2 = sin(k1 * (uv_x * sin(t) + uv_y * cos(t / k2)) + t);
            F32 cx = uv_x + sin(t / k1) * k1;
            F32 cy = uv_y + sin(t / k2) * k1;
            F32 v3 = sin(sqrt(k3 * (cx * cx + cy * cy)) + t);
            F32 vf = v1 + v2 + v3;

            U8 r = (U8)clamp(255 * cos(vf * pi));
            U8 g = (U8)clamp(255 * sin(vf * pi + k4 * pi / k2));
            U8 b = (U8)clamp(255 * cos(vf * pi + k5 * pi / k2));

            dst->set_pixel(y, x, r, g, b);
        }
    }
}

// -------- Image helpers --------
inline void _write_s32(U8 *dst, S32 offset, S32 v) {
    dst[offset] = (U8)(v);
    dst[offset + 1] = (U8)(v >> 8);
    dst[offset + 2] = (U8)(v >> 16);
    dst[offset + 3] = (U8)(v >> 24);
}

void write_bmp(Pbits *src, S8 *filename) {
    Pbits *dst = new Pbits(src);
    dst->to_bgr();

    S32 w = dst->width;
    S32 h = dst->height;
    U8 *img = dst->data;

    S32 filesize = 54 + 3 * w * h;

    U8 bmpfileheader[14] = {'B', 'M', 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0};
    U8 bmpinfoheader[40] = {40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24, 0};
    U8 bmppad[3] = {0, 0, 0};

    _write_s32(bmpfileheader, 2, filesize);
    _write_s32(bmpinfoheader, 4, w);
    _write_s32(bmpinfoheader, 8, h);

    FILE *f = fopen(filename, "wb");
    fwrite(bmpfileheader, 1, 14, f);
    fwrite(bmpinfoheader, 1, 40, f);
    for (S32 i = 0; i < h; i++) {
        fwrite(img + (w * (h - i - 1) * 3), 3, w, f);
        fwrite(bmppad, 1, (4 - (w * 3) % 4) % 4, f);
    }

    delete dst;
}

void write_ppm(Pbits *dst, S8 *filename) {
    std::ofstream file(filename, std::ofstream::trunc);
    if (!file.is_open()) {
        std::cout << "yep! file is not open" << std::endl;
    }
    file << "P3\n" << dst->width << " " << dst->height << "\n255\n";

    U8 r, g, b, a;
    for (U32 y = 0; y < dst->height; y++) {
        for (U32 x = 0; x < dst->width; x++) {
            dst->get_pixel(y, x, r, g, b);
            file << (S32)r << " " << (S32)g << " " << (S32)b << "\n";
        }
    }
}

S32 main() {
    Pbits *dst = new Pbits(WIDTH, HEIGHT, new U8[WIDTH * HEIGHT * 3]);

    init_luts();

    clock_t begin = clock();
    fx1_plasma(dst, 0, 8, 36, 54, 51, 48, 4);
    clock_t end = clock();
    double elapsed_secs = double(end - begin) / CLOCKS_PER_SEC;

    std::cout << "Generated plasma in " << elapsed_secs << "s" << std::endl;

    write_ppm(dst, "plasma.ppm");
    write_bmp(dst, "plasma.bmp");

    delete dst;
}

This code will generate this image:

QUESTION: How would you convert this floating point algorithm into a fast fixed-point one? Right now the basics of the floating point arithmetic is +/- clear to me, as in:
fa,fb=floating point values; a,b=fixed_point ones; M=scaling factor
fa = a*M
fb = b*M
fa+fb = (a+b)*M
fa-fb = (a-b)*M
fa*fb = (a*b)*M^2
fa/fb = (a/b)

but how to use sin/cos/sqrt et al in fixed-point is still eluding me. I've found this related thread but I still don't understand how to use the trigonometric luts with random fp values.

A: The basic idea for a lookup table is simple -- you use the fixed point value as an index into an array to look up the value.  The problem is if your fixed point values are large, your tables become huge.  For a full table with a 32-bit FP type you need 4*232 bytes (16GB) which is impractically large.  So what you generally do is use a smaller table (smaller by a factor of N) and the linearly interpolate between two values in the table to do the lookup.
In your case, you appear to want to use a 223 reduction so you need a table with just 513 elements.  To do the lookup, you then use the upper 9 bits as an index into the table and use the lower 23 bits to interpolate.  eg:
FP32 cos_table[513] = { 268435456, ...
FP32 cosFP32(FP32 x) {
    int i = x >> 23;  // upper 9 bits to index the table
    int fract = x & 0x7fffff;  // lower 23 bits to interpolate
    return ((int64_t)cos_table[i] * ((1 << 23) - fract) + (int64_t)cos_table[i+1] * fract + (1 << 22)) >> 23;
}

Note that we have to do the multiplies in 64 bits to avoid overflows, same as any other multiplies of FP32 values.
Since cos is symmetric, you could use that symmetry to reduce the table size by another factor of 4, and use the same table for sin, but that is more work.

If your're using C++, you can define a class with overloading to encapsulate your fixed point type:
class fixed4_28 {
    int32_t  val;
    static const int64_t fract_val = 1 << 28;
 public:
    fixed4_28 operator+(fixed4_28 a) const { a.val = val + a.val; return a; }
    fixed4_28 operator-(fixed4_28 a) const { a.val = val - a.val; return a; }
    fixed4_28 operator*(fixed4_28 a) const { a.val = ((int64_t)val * a.val) >> 28; return a; }
    fixed4_28 operator/(fixed4_28 a) const { a.val = ((int64_t)val << 28) / a.val; return a; }

    fixed4_28(double v) : val(v * fract_val + 0.5) {}
    operator double() { return (double)val / fract_val; }

    friend fixed4_28 cos(fixed_4_28);
};

inline fixed4_28 cos(fixed4_28 x) {
    int i = x.val >> 23;  // upper 9 bits to index the table
    int fract = x.val & 0x7fffff;  // lower 23 bits to interpolate
    x.val = ((int64_t)cos_table[i] * ((1 << 23) - fract) + (int64_t)cos_table[i+1] * fract + (1 << 22)) >> 23;
    return x;
}

and then your code can use this type directly and you can write equations just as if you were using float or double

A: For sin() and cos() the first step is range reduction, which looks like "angle = angle % degrees_in_a_circle". Sadly, these functions typically use radians, and radians are nasty because that range reduction becomes "angle = angle % (2 * PI)", which means that precision depends on the modulo of an irrational number (which is guaranteed to be "not fun").
With this in mind; you want to throw radians in the trash and invent a new "binary degrees" such that a circle is split into "powers of 2" pieces. This means that the range reduction becomes "angle = angle & MASK;" with no precision loss (and no expensive modulo). The rest of sin() and cos() (if you're using a table driven approach) is adequately described by existing answers so I won't repeat it in this answer.
The next step is to realize that "globally fixed point" is awful. Far better is what I'll call "moving point". To understand this, consider multiplication. For "globally fixed point" you might do "result_16_16 = (x_16_16 * y_16_16) >> 16" and throw away 16 bits of precision and have to worry about overflows. For "moving point" you might do "result_32_32 = x_16_16 * y_16_16" (where the decimal point is moved) and know that there is no precision loss, know that there can't be overflow, and make it faster by avoiding a shift.
For "moving point", you'd start with the actual requirements of inputs (e.g. for a number from 0.0 to 100.0 you might start with "7.4 fixed point" with 5 bits of a uint16_t unused) and explicitly manage precision and range throughput a calculation to arrive at a result that is guaranteed to be unaffected by overflow and has the best possible compromise between "number of bits" and precision at every step.
For example:
 uint16_t inputValue_7_4 = 50 << 4;                   // inputValue is actually 50.0
 uint16_t multiplier_1_1 = 3;                         // multiplier is actually 1.5
 uint16_t k_0_5 = 28;                                 // k is actually 0.875
 uint16_t divisor_2_5 = 123;                          // divisor is actually 3.84375

 uint16_t x_8_5 = inputValue_7_4 * multiplier_1_1;    // Guaranteed no overflow and no precision loss
 uint16_t y_9_5 = x_8_5 + k+0_5;                      // Guaranteed no overflow and no precision loss
 uint32_t result_9_23 = (y_9_5 << 23) / divisor_2_5;  // Guaranteed no overflow, max. possible precision kept

I'd like to do it as "mechanically" as possible

There is no reason why "moving point" can't be done purely mechanically, if you specify the characteristics of the inputs and provide a few other annotations (the desired precision of divisions, plus either any intentional precision losses or the total bits of results); given that the rules that determine the size of the result of any operation and where the point will be in that result are easily determined. However; I don't know of an existing tool that will do this mechanical conversion, so you'd have to invent your own language for "annotated expressions" and write your own tool that converts it into another language (e.g. C). It's likely to cost less developer time to just do the conversion by hand instead.

A: /*
very very fast
float sqrt2(float);

(-1) ^ s* (1 + n * 2 ^ -23)* (2 ^ (x - 127)) float
sxxxxxxxxnnnnnnnnnnnnnnnnnnnnnnn  float f
000000000000sxxxxxxxxnnnnnnnnnnn  int indis  20 bit
*/

#define LUT_SIZE2 0x000fffff   //1Mb  20 bit
float sqrt_tab[LUT_SIZE2];
#define sqrt2(f)     sqrt_tab[*(int*)&f>>12]  //float to int

int main()
{
    //init_luts();
    for (int i = 0; i < LUT_SIZE2; i++)
    {
        int ii = i << 12;        //i to float
        sqrt_tab[i] = sqrt(*(float*)& ii);
    }

    float f=1234.5678;
    printf("test\n");
    printf(" sqrt(1234.5678)=%12.6f\n", sqrt(f));
    printf("sqrt2(1234.5678)=%12.6f\n", sqrt2(f));

    printf("\n\ntest mili second\n");
    int begin;
    int free;

    begin = clock();
    for (float f = 0; f < 10000000.f; f++)
        ;
    free = clock() - begin;
    printf("free        %4d\n", free);

    begin = clock();
    for (float f = 0; f < 10000000.f; f++)
        sqrt(f);
    printf("sqrt()      %4d\n", clock() - begin - free);

    begin = clock();
    for (float f = 0; f < 10000000.f; f++)
        sqrt2(f);
    printf("sqrt2()     %4d\n", clock() - begin - free);

    return 0;

}

/*
 sgrt(1234.5678)   35.136416
sgrt2(1234.5678)  35.135452

test mili second
free       73
sqrt()    146
sqrt2()    7
*/

A: #ifdef _MSC_VER
#pragma comment(lib,"opengl32.lib")
#pragma comment(lib,"glu32.lib")
#pragma warning(disable : 4996)
#pragma warning(disable : 26495)  //varsayılan değer atamıyorum
#pragma warning(disable :6031)//dönüş değeri yok sayıldı
#endif

#include <Windows.h>
#include <gl/gl.h>      //-lopengl32
//#include <gl/glu.h>   //-lglu32

#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>

typedef unsigned char   U8;
typedef unsigned int    U32;

#define LUT_SIZE 1024           //1Kb  10 bit sin cos
#define LUT_SIZE2 0x000fffff    //1Mb  20 bit sqrt

float cos_tab[LUT_SIZE];
float sin_tab[LUT_SIZE];
U8    clamp_cos_tab[LUT_SIZE];
U8    clamp_sin_tab[LUT_SIZE];
float sqrt_tab[LUT_SIZE2];

const float pi = 3.141592;
const float pi_k = LUT_SIZE / (2 * pi);

const U32 WIDTH = 640;  //256
const U32 HEIGHT = 480; //256

struct Pbits;
Pbits* pdst;

U8 clamp(float f) { return f > 255 ? 255 : (f < 0 ? 0 : (U8)f); }

#define sin2(f)      sin_tab        [ (int)(pi_k * (f)) & 0x000003ff]//LUT_SIZE-1
#define cos2(f)      cos_tab        [ (int)(pi_k * (f)) & 0x000003ff]
#define clamp_sin(f) clamp_sin_tab  [ (int)(pi_k * (f)) & 0x000003ff]
#define clamp_cos(f) clamp_cos_tab  [ (int)(pi_k * (f)) & 0x000003ff]
#define sqrt2(f)     sqrt_tab       [*(int*)&(f)>>12]   //32-20 bit

void init_luts()
{
    for (int i = 0; i < LUT_SIZE; i++)
    {
        cos_tab[i] = cos(i / pi_k);
        sin_tab[i] = sin(i / pi_k);

        clamp_cos_tab[i] = clamp(255 * cos(i / pi_k));
        clamp_sin_tab[i] = clamp(255 * sin(i / pi_k));
    }

    for (int i = 0; i < LUT_SIZE2; i++)//init_luts
    {
        int ii=i<<12;       //32-20 bit
        float f = *(float *)ⅈ    //i to float
        sqrt_tab[i] = sqrt(f);
    }

}

float sqrt3(float x)
{
    //https ://www.codeproject.com/Articles/69941/Best-Square-Root-Method-Algorithm-Function-Precisi
    unsigned int i = *(unsigned int*)& x;

    i += (127 << 23);
    i >>= 1;
    return *(float*)&i;
}
float sqrt4(float x)
{
    //https: //stackoverflow.com/questions/1349542/john-carmacks-unusual-fast-inverse-square-root-quake-iii
    float xhalf = 0.5f * x;
    int i = *(int*)&x;              // get bits for floating value
    i = 0x5f375a86 - (i >> 1);      // gives initial guess y0
    x = *(float*)&i;                // convert bits back to float
    x = x * (1.5f - xhalf * x * x); // Newton step, repeating increases accuracy
    return x;
}

struct Pbits
{
    int width;
    int height;
    U8* data;

    Pbits(int _width, int _height, U8* _data = 0)
    {
        width = _width;
        height = _height;
        if (!_data)
            _data = (U8*)calloc(width * height * 3, 1);
        data = _data;
    }

    ~Pbits() { free(data); }
    void set_pixel(int y, int x, U8 c1, U8 c2, U8 c3)
    {
        int offset = (y * width * 3) + (x * 3);

        data[offset] = c1;
        data[offset + 1] = c2;
        data[offset + 2] = c3;
    }
    void save(const char* filename)
    {

        U8 pp[54] = { 'B', 'M', 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0 ,
                         40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24, 0 };
        *(int*)(pp + 2) = 54 + 3 * width * height;
        *(int*)(pp + 18) = width;
        *(int*)(pp + 22) = height;

        int size = height * width * 3;
        U8* p = data;
        for (int i = 0; i < size; i += 3)//to_bgr()
        {
            U8 tmp = p[i];
            p[i] = p[i + 2];
            p[i + 2] = tmp;
        }

        FILE* f = fopen(filename, "wb");
        fwrite(pp, 1, 54, f);
        fwrite(data, size, 1, f);
        fclose(f);

        for (int i = 0; i < size; i += 3)//to_rgb()
        {
            U8 tmp = p[i];
            p[i] = p[i + 2];
            p[i + 2] = tmp;
        }

    }

};

void fn_plasma_slow(Pbits& dst, float t,
    float k1, float k2, float k3, float k4, float k5, float k6)
{
    int height = dst.height;
    int width = dst.width;

    for (int y = 0; y < height; y++)
    {
        float uv_y = (float)y / height;
        for (int x = 0; x < width; x++)
        {
            float uv_x = (float)x / width;

            float v1 = sin(uv_x * k1 + t);
            float v2 = sin(k1 * (uv_x * sin(t) + uv_y * cos(t / k2)) + t);
            float cx = uv_x + sin(t / k1) * k1;
            float cy = uv_y + sin(t / k2) * k1;
            float v3 = sin(sqrt(k3 * (cx * cx + cy * cy)) + t);
            float vf = v1 + v2 + v3;

            U8 r = (U8)clamp(255 * cos(vf * pi));
            U8 g = (U8)clamp(255 * sin(vf * pi + k4 * pi / k2));
            U8 b = (U8)clamp(255 * cos(vf * pi + k5 * pi / k2));

            dst.set_pixel(y, x, r, g, b);
        }
    }
}

void fn_plasma_fast(Pbits& dst, float t,
    float k1, float k2, float k3,
    float k4, float k5, float k6)
{

    U8* p = dst.data;

    float
        height = dst.height,
        width = dst.width,

        _k42 = pi * k4 / k2,
        _k52 = pi * k5 / k2,
        _cx = sin2(t / k1) * k1,
        _cy = sin2(t / k2) * k1,
        _x = sin2(t),
        _y = cos2(t / k2);

    for (float j = 0; j < height; j++)
        for (float i = 0; i < width; i++)
        {
            float
                x = i / width,
                y = j / height,

                v1 = sin2(k1 * x + t),
                v2 = sin2(k1 * (x * _x + y * _y) + t),

                cx = x + _cx,
                cy = y + _cy,
                aa1 = k3 * (cx * cx + cy * cy),

                v3 = sin2(sqrt2(aa1) + t),
                vf = pi * (v1 + v2 + v3);

            *p++ = clamp_cos(vf);           //red
            *p++ = clamp_sin(vf + _k42);    //green
            *p++ = clamp_cos(vf + _k52);    //blue

        }
}

void fn_plasma_fast2(Pbits& dst, float t,
    float k1, float k2, float k3,
    float k4, float k5, float k6)
{

    U8* p = dst.data;

    static float data_v1[1024];
    static float data_cx[1024];
    static float data_cy[1024];
    static float data_xx3[1024];
    static float data_yy3[1024];

    float
        height = dst.height,
        width = dst.width,

        _k42 = pi * k4 / k2,
        _k52 = pi * k5 / k2,
        _cx = sin2(t / k1) * k1,
        _cy = sin2(t / k2) * k1,
        _x = sin2(t)/width*k1 ,
        _y = cos2(t/k2)/height*k1;

    for (int x = 0; x < width; x++)
    {
        data_v1[x] = sin2(k1 * x /width+ t);

        float f = x / width + _cx;
        data_cx[x] =k3* f*f;
        data_xx3[x] = x * _x;
    }
    for (int y = 0; y < height; y++)
    {
        float f = y / height + _cy;
        data_cy[y] = k3*f * f;
        data_yy3[y] = y*_y ;
    };

    for (int y = 0; y < height; y++)
    for (int x = 0; x < width; x++)
    {

        //float v1 = data_v1[x];
        //float v2 = sin2(data_xx3[x] + data_yy3[y]);

        float aa1 = data_cx[x] + data_cy[y];

        //float     v3 = sin2(sqrt2(aa1) + t);
        //float     vf = pi * (v1 + v2 + v3);
        float vf = pi * (data_v1[x]+ sin2(data_xx3[x] + data_yy3[y])+ sin2(sqrt2(aa1) + t));

        *p++ = clamp_cos(vf);           //red
        *p++ = clamp_sin(vf + _k42);    //green
        *p++ = clamp_cos(vf + _k52);    //blue

    }
}

struct window
{
    int  x, y, width, height;       //iç x y +en boy

    HINSTANCE   hist;       //  program kaydı
    HWND        hwnd;       //  window
    HDC         hdc;        //  device context
    HGLRC       hrc;        //  opengl context
    //WNDPROC       fn_pencere; //  pencere fonksiyonu
    WNDCLASS    wc;         //  pencere sınıfı
    PIXELFORMATDESCRIPTOR pfd;

    window(int _width = 256, int _height = 256)
    {
        memset(this, 0, sizeof(*this));
        x = 100;
        y = 100;
        width = _width;
        height = _height;

        //HINSTANCE
        hist = GetModuleHandle(NULL);

        //WNDCLASS
        wc.lpfnWndProc = (WNDPROC)fn_window;
        wc.hInstance = hist;
        wc.hIcon = LoadIcon(0, IDI_WINLOGO);
        wc.hCursor = LoadCursor(0, IDC_ARROW);
        wc.lpszClassName = "opengl";
        RegisterClass(&wc);

        //HWND
        hwnd = CreateWindow("opengl", "test",
            WS_OVERLAPPEDWINDOW,
            x, y, width + 16, height + 39,
            NULL, NULL, hist, NULL);
        //HDC
        hdc = GetDC(hwnd);

        //PFD
        pfd.nSize = sizeof(pfd);
        pfd.nVersion = 1;
        pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
        pfd.iPixelType = PFD_TYPE_RGBA;
        pfd.cColorBits = 32;

        int  pf = ChoosePixelFormat(hdc, &pfd);
        SetPixelFormat(hdc, pf, &pfd);
        DescribePixelFormat(hdc, pf, sizeof(PIXELFORMATDESCRIPTOR), &pfd);

        //HRC
        hrc = wglCreateContext(hdc);
        wglMakeCurrent(hdc, hrc);

        ShowWindow(hwnd, SW_SHOW);
        SetFocus(hwnd);

    }
    ~window()
    {
        if (hrc)
            wglMakeCurrent(NULL, NULL),
            wglDeleteContext(hrc);
        if (hdc)    ReleaseDC(hwnd, hdc);
        if (hwnd)   DestroyWindow(hwnd);
        if (hist)   UnregisterClass("opengl", hist);
    }

    void run()
    {
        MSG         msg;
        BOOL dongu = true;

        while (dongu)
        {
            if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
            {
                if (msg.message == WM_QUIT) dongu = 0;
                else
                {
                    TranslateMessage(&msg);
                    DispatchMessage(&msg);
                }
            }
            else
            {
                render();
                SwapBuffers(hdc);
            }
        }
    }

    static int __stdcall fn_window(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
    {
        switch (msg)
        {
            //case WM_CREATE:   {}  break;
            //case WM_COMMAND:  {}  break;
            //case WM_PAINT:    {}  break;
        case WM_CLOSE: {    DestroyWindow(hwnd); }break;
        case WM_DESTROY: {PostQuitMessage(0); }break;
        }
        return DefWindowProc(hwnd, msg, wParam, lParam);
    }
    static void render()
    {
        //OPENGL 1.0
        //glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        //glMatrixMode(GL_PROJECTION);  glLoadIdentity();
        //glMatrixMode(GL_MODELVIEW);   glLoadIdentity();

        static float t; t += 0.02;
        fn_plasma_fast2(*pdst, t, 8, 36, 54, 51, 48, 4);//FAST

        glRasterPos3f(-1, -1, 0);
        glDrawPixels(WIDTH, HEIGHT, GL_RGB, GL_UNSIGNED_BYTE, pdst->data);

    }
};

int main()
{

    Pbits dst(WIDTH, HEIGHT);
    pdst = &dst;
    init_luts();

    int begin;

    begin = clock();
    fn_plasma_slow(dst, 0, 8, 36, 54, 51, 48, 4);
    printf("fn_plasma_slow:  %4d\n", clock() - begin );
    dst.save("plasma_slow.bmp");

    begin = clock();
    fn_plasma_fast(dst, 0, 8, 36, 54, 51, 48, 4);
    printf("fn_plasma_fast: %4d\n", clock() - begin);
    dst.save("plasma_fast.bmp");

    begin = clock();
    fn_plasma_fast2(dst, 0, 8, 36, 54, 51, 48, 4);
    printf("fn_plasma_fast2: %4d\n", clock() - begin );
    dst.save("plasma_fast2.bmp");

    window win(WIDTH, HEIGHT);
    win.run();

    return 0;
}

redpajama_set_name: RedPajamaStackExchange


text:
Salvatore Salomone
University of Catania, Italy
Patrizia Ferretti
Claure Nain Lunardi
University of Brasilia, Brazil
Front. Pharmacol., 18 December 2018
Sec. Experimental Pharmacology and Drug Discovery
Volume 9 - 2018 | https://doi.org/10.3389/fphar.2018.01457
Psoralen Induces Developmental Toxicity in Zebrafish Embryos/Larvae Through Oxidative Stress, Apoptosis, and Energy Metabolism Disorder
Qing Xia1, Lingying Wei1, Yun Zhang1, Haotian Kong1, Yongping Shi1,2, Xue Wang1, Xiqiang Chen1, Liwen Han1* and Kechun Liu1*
1Biology Institute, Qilu University of Technology (Shandong Academy of Sciences), Jinan, China
2School of Pharmacy, Shanxi Medical University, Taiyuan, China
Psoralen toxicity is an issue of wide concern. However, an assay for psoralen-induced developmental toxicity has not been reported to date. Moreover, the underlying mechanism of psoralen-induced developmental toxicity is unclear. Therefore, this study attempted to develop a psoralen-induced developmental toxicity assay in zebrafish embryos/larvae. Psoralen treatment caused a decrease in the hatching rate and body length and a significant increase in the malformation rate of zebrafish. Yolk retention, pericardial edema, swim-bladder deficiency, and curved body shape were also observed after psoralen treatment. Yolk retention might have been caused by an abnormality in lipid metabolism. Further experiments indicated that psoralen exerted toxic effects on the developing heart, liver, phagocytes, and nervous system. Increased generation of reactive oxygen species, inhibition of total superoxide dismutase activity, and increased malondialdehyde concentrations indicated inhibition of antioxidant capacity and the presence of oxidative stress. A greater number of apoptotic cells were observed after psoralen exposure, relative to the control. Furthermore, the results of gene-expression analysis showed that psoralen induced developmental toxicity by means of oxidative stress, apoptosis, and energy metabolism abnormalities. These findings will be helpful in understanding psoralen-induced toxicity.
Psoralen an active compound of Chinese herbs such as Psoralea corylifolia L., which is widely used in traditional medicine for treatment of psoriasis, vitiligo, osteoporosis, osteosarcoma, bone fracture, and osteomalacia (Liu et al., 2004; Adişen et al., 2010; Lu et al., 2014; Doppalapudi et al., 2017). Previous studies have demonstrated that psoralen possesses extensive pharmacological properties, including anti-cancer (Yi et al., 2011; Wu et al., 2013; Wang et al., 2016), anti-osteoporosis (Yuan et al., 2016; Chen et al., 2017; Li F. et al., 2017; Zheng et al., 2017), anti-inflammatory (Li et al., 2018; Xiao-Tian et al., 2018), anti-fungal (Yu et al., 2017), anti-depressant (Xu et al., 2008), and antibacterial (Shim et al., 2009) properties. Psoralen polymer-lipid hybrid nanoparticles cause reversal of multidrug resistance in MCF-7/ADR cells (Huang Q. et al., 2018). The toxicity of psoralen has recently come under the microscope, and hepatotoxicity of psoralen has recently been observed in vitro and in vivo (Diawara et al., 2000; Hai et al., 2017; Li Z.J. et al., 2017). As recorded in Bencao Haili and Deipei Bencao, two Chinese medical classic books, pregnant women should be caution with psoralen. However, there are currently no reports on the developmental toxicity of psoralen.
Pleiotropic deleterious effects of oxidative stress are implicated in a variety of chemical-induced toxicities. The presence of high levels of reactive oxygen species (ROS) can destroy the defense system of an organism, with consequences including damage of critical cellular components such as DNA, lipid, and protein macromolecules. Subsequent mitochondrial dysfunction and impairment of energy production can induce cytochrome c release, p53 accumulation, caspase activation, and, ultimately, cell death (Deavall et al., 2012; Pereira et al., 2012; Kupsco and Schlenk, 2015). Cellular energy is also crucial for cell growth, division, and differentiation in the course of early embryo development (Don, 1992; Gardner et al., 2000; van Dartel et al., 2014).
Numerous advantages of zebrafish, such as their high fecundity, short generation time, and transparent body, make them an accredited model for conducting developmental toxicity assays. Zebrafish share genetic, physiological, and anatomical homology with humans. Furthermore, chemical-induced malformations in zebrafish can be observed directly under a stereomicroscope (Sarvaiya et al., 2014; Nishimura et al., 2016; Huang M. et al., 2018; Qian et al., 2018).
In the present study, zebrafish embryos/larvae at 4 h post-fertilization (hpf) were used to assess psoralen-induced developmental toxicity until 96 hpf. The antioxidant capacity, oxidative stress status, and apoptosis levels of the larvae were analyzed. Moreover, the effects of psoralen on expression of genes related to oxidative stress, apoptosis, and energy metabolism were investigated. This study provides a better understanding of psoralen-induced developmental toxicity and the underlying molecular mechanisms.
Psoralen was purchased from the National Institutes for Food and Drug Control (110739-201617) (Beijing, China). Stock solutions were prepared in dimethyl sulfoxide, and serial dilutions were prepared in embryo water (5 mM NaCl, 0.17 mM KCl, 0.4 mM CaCl2, and 0.16 mM MgSO4) before the experiments. All other chemicals and reagents used in this study were of analytical grade.
Zebrafish Husbandry and Embryo Collection
The zebrafish were obtained from Zebrafish Drug Screening Platform of Shandong Academy of Sciences. The adult zebrafish AB strain and the Tg(cmlc2:EGFP), Tg(L-FABP:EGFP), Tg(Lyz:EGFP), Tg(Vmat:GFP) transgenic zebrafish lines used in this study were maintained at 28 ± 0.5°C with a 14:10-h light-dark cycle in an automatic zebrafish housing system (ESEN, Beijing, China). The fish were fed live brine shrimp twice a day. Two male and one female zebrafish were separated in a spawning box on the night before spawning. In the morning, fertilized eggs were collected, washed three times with fish water, and then maintained in a light incubator at 28°C until 4 hpf.
Lethal and Teratogenic Assay
Normal developing embryos were selected under a stereomicroscope (SZX16, Olympus, Tokyo, Japan) at 4 hpf and randomly placed into 24-well plates at a density of 15 per well. Serial concentrations of psoralen were added into each well to a final volume of 2 mL. The exposure solutions were replaced every 24 h until 96 hpf. Meanwhile, dead embryos were removed, and the mortality in each well was recorded. Thereafter, lethal curves at 24, 48, 72, and 96 hpf were established, and the values of 10% lethal concentration (LC10) and 1% lethal concentration (LC1) were calculated. In subsequent experiments, psoralen was used at concentrations of 1/10 LC1, 1/3 LC1, LC1, and LC10.
As described above, normal developing embryos were exposed to psoralen at concentrations of 1/10 LC1, 1/3 LC1, LC1, and LC10. These embryos were observed for phenotypic changes and photographed at 24, 48, 72, and 96 hpf. Hatching rates at 48 and 72 hpf were recorded, and the malformation rate at 96 hpf was calculated. Finally, all larvae were photographed for assessment of body length.
Assessment of the Effect of Psoralen on the Developing Heart
The effect of psoralen on the morphology and function of the developing heart was assessed in the Tg(cmlc2:EGFP) expression line (Huang et al., 2003). The morphology and cardiac function of the zebrafish heart were almost fully developed at 72 hpf. Therefore, the heart rate, area of pericardial edema, and distance between the cardiac sinus venosus and bulbus arteriosus (SV–BA) were measured at 72 hpf. We recorded the heart beating for 20 s under a microscope. The number of heart beats in a 20 s period was multiplied by 3 to calculate heart rate. Each larva was pictured under a fluorescence stereomicroscope (AXIO Zoom.V16, ZEISS, Oberkochen, Germany). Area of pericardial edema and SV-BA distance were measured using Image-Pro Plus software (Media Cybernetics, Bethesda, United States).
Assessment of the Effect of Psoralen on the Developing Liver
Zebrafish of the Tg(L-FABP:EGFP) transgenic line express the enhanced green fluorescent protein (EGFP) in the liver (Her et al., 2003). At 96 hpf, lateral photographs of each larva in the control and treatment groups were acquired using a fluorescence stereomicroscope. Then, the area and fluorescence intensity of the liver were determined using the Image-Pro Plus software.
Assessment of the Effect of Psoralen on Phagocytes
Phagocytes are an important component of the immune system, and phagocyte number is closely related to immune responses, inflammation, and foreign-body responses. Zebrafish of the Tg(Lyz:EGFP) transgenic line express EGFP in macrophages and neutrophils, which makes it easy to quantitate the macrophage and neutrophil number in zebrafish larvae (Hall et al., 2007). In this experiment, control and psoralen-treated transgenic zebrafish were photographed until 72 hpf, and the total number of macrophages and neutrophils was counted manually.
Assessment of the Effect of Psoralen on the Developing Nervous System
The vesicular monoamine transporter of the Tg(Vmat:GFP) line of zebrafish was labeled by the green fluorescent protein during embryonic development (Wu et al., 2016). At 96 hpf, photographs of larvae in the control and treatment groups were taken from the top view, and the length of dopamine ganglia was measured using the Image-Pro Plus software. Furthermore, the total swimming distance, swimming velocity and motion track of each control and psoralen-treated larva was analyzed until 7 days post-fertilization using Zebralab (Viewpoint, Lyon, France).
Measurement of Reactive Oxygen Species Generation
Generation of reactive oxygen species (ROS) in control and psoralen-treated zebrafish was detected at 96 hpf using an ROS assay kit (Nanjing Jiancheng Bioengineering Institute, Nanjing, China) based on detection of the fluorescent probe dichloro-dihydro-fluorescein diacetate (DCFH-DA). After psoralen treatment, the larvae were incubated with 30 μM DCFH-DA for 40 min in the dark at 28 ± 0.5°C. They were then washed with phosphate-buffered saline solution (PBS) three times and anesthetized with 0.16% tricaine. A lateral image of each larva was acquired using a fluorescence microscope, and the fluorescence intensity was quantified using the Image-Pro Plus software.
Detection of Apoptotic Cells
Apoptotic cells from larvae in each group were detected by staining with acridine orange. In brief, after psoralen treatment (at 96 hpf), the larvae were incubated with 10 μg/mL acridine orange staining solution in the dark for 30 min. They were then washed with PBS three times and anesthetized with 0.16% tricaine. A lateral image of each larva was acquired within 20 min using a fluorescence microscope.
Assessment of Antioxidative Enzyme and Lipid Peroxidation Activities
In this study, 50 larvae in each group were pooled together in cold saline and homogenized on ice at 96 hpf. The supernatants were collected for analysis of antioxidative enzyme and lipid peroxidation activities after centrifugation at 3,500 rpm for 15 min at 4°C. Total superoxide dismutase (T-SOD) activity and malondialdehyde (MDA) levels were assessed using commercial kits (Nanjing Jiancheng Biotechnology Institute, China) in accordance with the manufacturer's protocols.
Real-Time Quantitative PCR Assay
After psoralen-treatment (at 96 hpf), total RNA was extracted from 30 larvae using the TRIzol reagent (Invitrogen, Waltham, United Status). The quality of extracted RNA was evaluated on the basis of OD260/OD280 ratio. Then, cDNA was synthesized using the HiScript II Q RT SuperMix (Vazyme, Nanjing, China), and quantitative real-time polymerase chain reaction (RT-PCR) was performed with an RT-PCR system (Biorad, CA, United Status) using the SYBR Green mix (Takara, Dalian, China). The primer sequences of the genes that were detected are shown in Table 1.
Table 1. The sequences of primer pairs used in real-time quantitative PCR assay.
The results were expressed as mean ± standard deviation and processed by one-way analysis of variance. Comparison between the groups was performed using Student–Newman–Keuls (SNK) method. Differences from controls were considered significant when p was less than 0.05 or 0.01.
Lethal and Teratogenic Effects of Psoralen
Figure 1A shows the lethal effects of psoralen at 24, 48, 72, and 96 hpf. Mortality rates in the treatment group exhibited a dose- and time-dependent increase. The values of LC50, LC10, and LC1 at 96 hpf were determined to be 18.24, 13.54, and 10.61 μM. The hatching rate in the 13.54-μM psoralen group (70%) was much lower than that in the control group (94%; Figure 1B). Malformation rates exhibited a significant increase in a dose-dependent manner (Figure 1C). All of the larvae in the 13.54-μM psoralen group exhibited teratogenic effects. The body length of larvae in the 10.61- and 13.54-μM psoralen-treatment groups was notably shorter than that in the control group (Figure 1D).
Figure 1. Developmental toxicity of psoralen in zebrafish larvae. (A) Mortality curves until 24, 48, 72, and 96 hpf. (B) Hatching rates at 72 hpf. (C) Malformation rates at 96 hpf. (D) Body length at 96 hpf. The values are expressed as mean ± SD (n = 3). ∗Represents p-value less than 0.05 and ∗∗represents p-value less than 0.01.
A variety of morphological abnormalities were observed in the psoralen-treatment groups from 24 to 96 hpf, including yolk retention, swim-bladder deficiency, pericardial edema, and curved body shape (Figure 2). Yolk retention and pericardial edema were the most pronounced morphological alterations. Yolk retention was first observed in the 10.61- and 13.54-μM psoralen-treatment groups at 48 hpf; at 72 and 96 hpf, yolk retention was also observed in the 3.54-μM psoralen-treatment group. Pericardial edema was first observed in the 13.54-μM psoralen-treatment group at 72 hpf. At 96 hpf, pericardial edema was found to be prevalent in the 3.54, 10.61, and 13.54 μM psoralen-treatment groups.
Figure 2. The phenotypic changes of embryos at 24, 48, 72, and 96 hpf. SBD, swim bladder deficiency; YR, yolk retention; PE, pericardial edema; CBS, curved body shape.
Effects of Psoralen on the Developing Heart
The phenotypes of larvae of the Tg(cmlc2:EGFP) transgenic line are shown in Figure 3A. The heart rates of larvae in the psoralen-treatment groups were significantly decreased relative to those in the control group (Figure 3B). In the 13.54-μM psoralen-treatment group, especially, the heart rate had reduced to 89 ± 12 bpm, which was significantly lower compared to that in the control group (180 ± 5 bpm). The pericardial area had increased in extent in a dose-dependent manner after psoralen treatment (Figure 3C). The SV–BA distances in the 10.61 and 13.54 μM psoralen-treatment groups had increased significantly relative to that the control group (Figure 3D).
Figure 3. Effects of psoralen on developing heart. (A) Phenotypes of larvae of Tg(cmlc2:EGFP) lines. SV–BA distance is indicated by red row. (B) Heart rates at 72 hpf. (C) Pericardial area at 72 hpf. (D) SV–BA distance at 72 hpf. The values are expressed as mean ± SD (n = 3). ∗Represents p-value less than 0.05 and ∗∗represents p-value less than 0.01.
Effects of Psoralen on the Developing Liver
The effects of psoralen on the developing liver were assessed using the larvae of the Tg(L-FABP:EGFP) transgenic line. As shown in Figure 4A, psoralen was toxic to the developing liver. The liver area and fluorescence intensity had both decreased in a dose-dependent manner after psoralen treatment. The liver area in the 13.54-μM psoralen-treatment group had decreased to 59.16 ± 11.78% of that of the control group (Figure 4B). As shown in Figure 4C, the liver fluorescence intensity in the 13.54 μM psoralen-treatment group had decreased to 54.27 ± 16.37% of that of the control group.
Figure 4. Effects of psoralen on developing liver. (A) Phenotypes of larvae of Tg(L-FABP:EGFP) lines. (B) Liver area at 96 hpf. (C) Liver intensity at 96 hpf. The values are expressed as mean ± SD (n = 3). ∗Represents p-value less than 0.05 and ∗∗represents p-value less than 0.01.
Effects of Psoralen on Total Number of Macrophage and Neutrophil
As shown in Figure 5, the total number of macrophages and neutrophils in the larvae had decreased significantly in a dose-dependent manner after psoralen treatment. At 96 hpf, the total number of macrophages and neutrophils in the control group had reached 47 ± 4; in contrast, in the 1.06 μM psoralen-treatment group, the total number of macrophages and neutrophils had only reached 32 ± 3. Only 5 ± 1 macrophages and neutrophils were detected when the concentration of psoralen was increased to 13.54 μM.
Figure 5. Effects of psoralen on the macrophage and neutrophil. (A) Phenotypes of larvae of Tg(Lyz:EGFP) lines. The total number of macrophage and neutrophil was counted in red box regions. (B) Total number of macrophage and neutrophil in larva at 72 hpf. The values are expressed as mean ± SD (n = 3). ∗Represents p-value less than 0.05 and ∗∗represents p-value less than 0.01.
Effects of Psoralen on the Developing Nervous System
As shown in Figure 6A, the psoralen-treatment groups exhibited an obvious decrease in the fluorescence intensity of Vmat–GFP relative to the control group. They also exhibited a significant decrease in the length of dopamine ganglia relative to the control group (Figure 6B). Furthermore, the total swimming distance and velocity in the treatment groups had significantly decreased in a dose-dependent manner (Figures 6C–E).
Figure 6. Effects of psoralen on the developing nervous system. (A) Dopamine ganglion at 96 hpf. (B) The length of dopamine ganglion. (C) Motion track of larva at 7 dpf, red lines indicate high speed, green lines indicate middle speed, black lines indicate slow speed. (D) Total swimming distance. (E) Swimming velocity. The values are expressed as mean ± SD (n = 3). ∗Represents p-value less than 0.05 and ∗∗represents p-value less than 0.01.
Effects of Psoralen on ROS Generation
As shown in Figure 7A, the larvae in the treatment groups exhibited markedly higher fluorescence intensities than those in the control group, which suggested that ROS were generated after psoralen exposure. A significant increase in ROS generation was observed in the 13.54 μM psoralen-treatment group (Figure 7B).
Figure 7. Effects of psoralen on the ROS generation and apoptosis. (A) Fluorescence micrographs of ROS generation in zebrafish larvae at 96 hpf. (B) Quantitative analysis of ROS generation. (C) Fluorescence micrographs of apoptotic cells in zebrafish larvae at 96 hpf (White arrows indicate apoptotic cells in nervous system). (D) Quantitative analysis of apoptotic cells. The values are expressed as mean ± SD (n = 3). ∗Represents p-value less than 0.05 and ∗∗ represents p-value less than 0.01.
Effects of Psoralen on Apoptosis
The number of apoptotic cells in the larvae of the 10.61 and 13.54 μM psoralen-treatment groups were significantly increased relative to that in the control larvae (Figures 7C,D). In the 10.61 μM psoralen-treatment group, the apoptotic cells were mainly distributed in the neurocoel. In the 13.54 μM psoralen treatment group, the apoptotic cells were distributed almost throughout the entire body, especially in the neurocoel and brain areas.
Effects of Psoralen on T-SOD Activity and MDA Levels
As shown in Figure 8A, larvae treated with 1.06, 3.54, 10.61, and 13.54 μM psoralen exhibited a significant decrease in T-SOD activity in a dose-dependent manner, which indicated that the antioxidant capacity of the larvae had decreased. Moreover, the MDA levels of larvae in the 13.54 μM psoralen treatment group were significantly increased relative to those in the control group, which indicated that lipid peroxidation had occurred (Figure 8B).
Figure 8. Effects of psoralen on activity of T-SOD and MDA Content in zebrafish larvae at 96 hpf. (A) T-SOD activities. (B) MDA content. The values are expressed as mean ± SD (n = 3, which means 3 pools of 50 larvae). ∗Represents p-value less than 0.05 and ∗∗represents p-value less than 0.01.
Effects of Psoralen on Gene Expression
In order to investigate the mechanisms of psoralen-induced developmental toxicity, the mRNA expression levels of genes related to antioxidant activities, apoptosis, and energy metabolism were measured. In the 10.61 μM psoralen treatment group, the expression level of the gene encoding the Kelch-like ECH-associated protein 1 (Keap1) was significantly increased relative to that in the control (Figure 9A). In the psoralen treatment groups, the expression levels of genes encoding nuclear factor erythroid-derived 2-like 2 (Nrf2; Figure 9B) and manganese superoxide dismutase (Mn-Sod; Figure 9C) were decreased relative to the control; however, no obvious change was detected in the expression level of the gene encoding copper/zinc superoxide dismutase (Cu/Zn-Sod; Figure 9D). Psoralen treatment caused no significant change in the expression level of the gene encoding Bcl-2 associated X protein (Bax) (Figure 9G). In the 10.61 μM psoralen-treatment group, the expression levels of genes encoding p53 protein (p53; Figure 9E), p53 upregulated modulator of apoptosis (puma; Figure 9F), B-cell lymphoma-2 (bcl-2; Figure 9H), apoptotic protease activating factor 1 (apaf-1; Figure 9I), cysteinyl aspartate specific proteinase 9 (caspase-9; Figure 9J), and cysteinyl aspartate specific proteinase 3 (caspase-3; Figure 9K) were significantly increased relative to the control. In contrast, the expression levels of genes encoding hydroxymethyl glutaryl coenzyme A reductase a (hmgcra; Figure 9L), peroxisome proliferator-activated receptor alpha 1 (pparα1; Figure 9M), and fatty acid synthase (fas; Figure 9N) were downregulated in the 10.61-μM psoralen-treatment group.
Figure 9. Effects of psoralen on gene expression in zebrafish larvae at 96 hpf. The mRNA levels of keap1 (A), nrf2 (B), Mn-sod (C), Cu/Zn-sod (D), p53 (E), puma (F), bax (G), bcl-2 (H), apaf-1 (I), caspase-9 (J), caspase-3 (K), hmgcra (L), pparα1 (M), fas (N). The values are expressed as mean ± SD (n = 3, which means 3 pools of 30 larvae). ∗Represents p-value less than 0.05 and ∗∗represents p-value less than 0.01.
Psoralen is a well-known active compound present in psoraleae fructus (Bu Gu Zhi), a traditional Chinese medicine comprising the dried ripe fruit of Psoralea corylifolia L. (Lu et al., 2014; Zheng et al., 2017). Previous studies have demonstrated that psoralen induces hepatotoxicity in mice (Hai et al., 2017). In the present study, we assessed the developmental toxicity of psoralen in zebrafish embryos/larvae. The zebrafish is an ideal alternative model for assessment of developmental toxicity. The development process of zebrafish is highly conserved across vertebrates, and it is easy to record this development process in vitro (Nishimura et al., 2016). In our study, psoralen treatment induced a dose- and time-dependent increase in the mortality of zebrafish embryos/larvae from 4 to 96 hpf. Psoralen also inhibited hatching and growth (in terms of body length) and caused an apparent and dose-dependent increase in the malformation rate of zebrafish embryos/larvae. Upon psoralen treatment, yolk retention was observed first, followed by pericardial edema, swim-bladder deficiency, and curved body shape. These results indicated that psoralen exposure induced developmental toxicity in these zebrafish. Further, we investigated the toxic effects of psoralen on the developing heart, liver, phagocytes, and nervous system. The reduced heart rate in the psoralen-treatment groups denoted cardiac dysfunction, while the increased pericardial area and SV–BA distance indicated psoralen-induced structural abnormalities of the heart. The decreased liver area and fluorescence intensity in the psoralen-treatment groups indicated hepatocyte damage. Macrophages play a key role in host defense in innate and adaptive immunity (Varin and Gordon, 2009). Neutrophils inform and shape immune responses, contribute to the repair of tissue as well as its breakdown (Nathan, 2006). The remarkable reduction of the total number of macrophages and neutrophils in psoralen-treated zebrafish in the present study indicated that their immune system was severely compromised. The inhibition of dopamine ganglia and swimming ability in psoralen-treated zebrafish indicated the toxic effect of psoralen on the developing nervous system.
Oxidative stress is regarded as a mechanism of chemical-induced toxicity. Cell survival is maintained through the balance of ROS levels and cellular antioxidant capacity (Lee et al., 2017). In the present study, the psoralen-treatment groups exhibited an increased generation of ROS; however, the activity of T-SOD in these groups was reduced, and the MDA levels were significantly increased. These results indicated that psoralen treatment induced oxidative stress in the zebrafish embryos/larvae during development. Because oxidative stress can result in apoptosis, we investigated the presence of apoptotic cells by acridine orange staining (Corcoran et al., 1994; Kupsco and Schlenk, 2015). Despite the fact that apoptosis can occur naturally during embryogenesis, we observed an obvious increase in apoptotic cells in psoralen-treated larvae. These apoptotic cells were densely distributed in the neurocoel and brain area. These results demonstrated that nerve cells might be highly sensitive to psoralen.
Oxidative stress, apoptosis, and energy metabolism abnormalities during embryogenesis can result in malformation (van Dartel et al., 2014; Kupsco and Schlenk, 2015). The yolk is the only resource of energy for zebrafish embryos/larvae during the period of development. In this study, yolk retention was first observed at 48 hpf. This retention might have been caused by abnormalities in energy metabolism. Energy deficiency might induce organ developmental abnormality. The roles of energy deficiency on psoralen-induced organ developmental toxicity should be discussed in future assay. In order to investigate the underlying mechanism of psoralen-induced developmental toxicity, we determined the expression levels of genes related to oxidative stress, apoptosis, and energy metabolism. The Nrf2–Keap1 system acts as a defender against oxidative stress (Suzuki and Yamamoto, 2017; Bellezza et al., 2018). Keap1, an endogenous inhibitor of Nrf2, regulates the activity of Nrf2 and acts as a sensor for oxidative stresses (Toyama et al., 2007; Copple et al., 2008). In the present study, psoralen-treated zebrafish larvae exhibited upregulation of Keap1 expression and downregulation of Nrf2 expression; furthermore, Mn-Sod expression levels were significantly decreased in the psoralen-treatment groups. These data suggested that the antioxidant capacity of the larvae subjected to psoralen treatment was reduced. In addition, the increased expression levels of genes encoding pro-apoptotic proteins (p53, puma, apaf-1, caspase-9, and caspase-3) and the decreased expression level of Bcl-2 demonstrated that psoralen had induced apoptosis in zebrafish larvae through a mitochondria-dependent pathway. Moreover, the decreased expression levels of hmgcra, pparα1, and fas in this study indicated psoralen-induced abnormalities in lipid metabolism. Therefore, the embryos/larvae might have faced energy shortage during the course of development.
The present study is the first report on psoralen-induced developmental toxicity in zebrafish embryos/larvae. The present results demonstrated that psoralen exerted toxic effects on the development of the heart, liver, phagocytes, and nervous system. Psoralen-treated zebrafish larvae/embryos exhibited yolk retention, pericardial edema, swim-bladder deficiency, curved body shape, inhibition of hatching, and short body length. The results also indicated that psoralen induced developmental toxicity through oxidative stress, apoptosis, and energy metabolism abnormalities (Figure 10). These conclusions should be further verified in other animal models. The detailed mechanism involved should be investigated in future studies. In this study, gene expression levels were only analyzed at 96 hpf. More detailed analysis during embryonic developmental should also be the focus of future work. Nevertheless, this study provided a better understanding of psoralen-induced developmental toxicity and the underlying molecular mechanisms.
Figure 10. The schematic mechanism of developmental toxicity induced by psoralen.
All experiments were carried out in compliance with standard ethical guidelines and under the control of the faculty Ethical Committee of the Biology Institute of the Shandong Academy of Sciences.
QX and KL conceived and designed the project. QX and LW analyzed the data. QX, LH, and XC wrote the manuscript. QX, YZ, HK, YS, and XW performed the experiments.
This work was financially supported by the National Natural Science Foundation of China (81602982), Natural Science Foundation of Shandong Province (ZR2016YL009), and Key Research & Development Plan of Shandong Province (2017YYSP032).
We thank International Science Editing (http://www.international scienceediting.com) for editing this manuscript.
Adişen, E., Karaca, F., Öztaş, M., and Gürer, M. A. (2010). Efficacy of local psoralen ultraviolet a treatments in psoriasis, vitiligo and eczema. Clin. Exp. Dermatol. 33, 344–345. doi: 10.1111/j.1365-2230.2007.02627.x
Bellezza, I., Giambanco, I., Minelli, A., and Donato, R. (2018). Nrf2-Keap1 signaling in oxidative and reductive stress. Biochim. Biophys. Acta 1865, 721–733. doi: 10.1016/j.bbamcr.2018.02.010
Chen, S., Wang, Y., Yang, Y., Xiang, T., Liu, J., Zhou, H., et al. (2017). Psoralen inhibited apoptosis of osteoporotic osteoblasts by modulating IRE1-ASK1-JNK pathway. Biomed. Res. Int. 2017, 1–9. doi: 10.1155/2017/3524307
Copple, I. M., Goldring, C. E., Kitteringham, N. R., and Park, B. K. (2008). The Nrf2-Keap1 defence pathway: role in protection against drug-induced toxicity. Toxicology 246, 24–33. doi: 10.1016/j.tox.2007.10.029
Corcoran, G. B., Fix, L., Jones, D. P., Moslen, M. T., Nicotera, P., Oberhammer, F. A., et al. (1994). Apoptosis: molecular control point in toxicity. Toxicol. Appl. Pharmacol. 128, 169–181. doi: 10.1006/taap.1994.1195
Deavall, D. G., Martin, E. A., Horner, J. M., and Roberts, R. (2012). Drug-induced oxidative stress and toxicity. J. Toxicol. 2012:645460. doi: 10.1155/2012/645460
Diawara, M. M., Williams, D. E., Oganesian, A., and Spitsbergen, J. (2000). Dietary psoralens induce hepatotoxicity in C57 mice. J. Nat. Toxins 9, 179–195.
Don, R. (1992). Relationships between energy metabolism and development of early mammalian embryos. Theriogenology 37, 75–93. doi: 10.1016/j.freeradbiomed.2017.09.009
Doppalapudi, S., Mahira, S., and Khan, W. (2017). Development and in vitro assessment of psoralen and resveratrol co-loaded ultradeformable liposomes for the treatment of vitiligo. J. Photochem. Photobiol. B 174, 44–57. doi: 10.1016/j.jphotobiol.2017.07.007
Gardner, D. K., Pool, T. B., and Lane, M. (2000). Embryo nutrition and energy metabolism and its relationship to embryo growth, differentiation, and viability. Semin. Reprod. Med. 18, 205–218. doi: 10.1055/s-2000-12559
Hai, Y., Feng, S., Wang, L., Ma, Y., Zhai, Y., Wu, Z., et al. (2017). Coordination mechanism and bio-evidence: reactive γ-Ketoenal intermediated hepatotoxicity of psoralen and isopsoralen based on computer approach and bioassay. Molecules 22:1451. doi: 10.3390/molecules22091451
Hall, C., Flores, M. V., Storm, T., Crosier, K., and Crosier, P. (2007). The zebrafish lysozyme C promoter drives myeloid-specific expression in transgenic fish. BMC Dev. Biol. 7:42. doi: 10.1186/1471-213X-7-42
Her, G. M., Chiang, C. C., Chen, W. Y., and Wu, J. L. (2003). In vivo studies of livertype fatty acid binding protein (L-FABP) gene expression in liver of transgenic zebrafish (Danio rerio). FEBS Lett. 538, 125–133. doi: 10.1016/S0014-5793(03)00157-1
Huang, C. J., Tu, C. T., Hsiao, C. D., Hsieh, F. J., and Tsai, H. J. (2003). Germ-line transmission of a myocardium-specific GFP transgene reveals critical regulatory elements in the cardiac myosin light chain 2 promoter of zebrafish. Dev. Dyn. 228, 30–40. doi: 10.1002/dvdy.10356
Huang, M., Jiao, J., Wang, J., Xia, Z., and Zhang, Y. (2018). Characterization of acrylamide-induced oxidative stress and cardiovascular toxicity in zebrafish embryos. J. Hazard. Mater. 347, 451–460. doi: 10.1016/j.jhazmat.2018.01.016
Huang, Q., Cai, T., Li, Q., Huang, Y., Liu, Q., Wang, B., et al. (2018). Preparation of psoralen polymer-lipid hybrid nanoparticles and their reversal of multidrug resistance in MCF-7/ADR cells. Drug Deliv. 25, 1056–1066. doi: 10.1080/10717544.2018.1464084
Kupsco, A., and Schlenk, D. (2015). Oxidative stress, unfolded protein response, and apoptosis in developmental toxicity. Int. Rev. Cell Mol. Biol. 317, 1–66. doi: 10.1016/bs.ircmb.2015.02.002
Lee, M. T., Lin, W. C., Yu, B., and Lee, T. T. (2017). Antioxidant capacity of phytochemicals and their potential effects on oxidative status in animals — a review. Asian Australas. J. Anim. Sci. 30, 299–308. doi: 10.5713/ajas.16.0438
Li, F., Li, Q., Huang, X., Wang, Y., Ge, C., Qi, Y., et al. (2017). Psoralen stimulates osteoblast proliferation through the activation of nuclear factor-κB -mitogen-activated protein kinase signaling. Exp. Ther. Med. 14, 2385–2391. doi: 10.3892/etm.2017.4771
Li, X., Yu, C., Hu, Y., Xia, X., Liao, Y., Zhang, J., et al. (2018). New application of psoralen and angelicin on periodontitis with anti-bacterial, anti-inflammatory, and osteogenesis effects. Front. Cell Infect. Microbiol. 8:178. doi: 10.3389/fcimb.2018.00178
Li, Z. J., Abulizi, A., Zhao, G. L., Wang, T., Zhou, F., Jiang, Z. Z., et al. (2017). Bakuchiol contributes to the hepatotoxicity of Psoralea corylifolia in rats. Phytother. Res. 31, 1265–1272. doi: 10.1002/ptr.5851
Liu, R., Li, A., Sun, A., and Kong, L. (2004). Preparative isolation and purification of psoralen and isopsoralen from Psoralea corylifolia by high-speed counter-current chromatography. J. Chromatogr. A 1057, 225–228. doi: 10.1016/j.chroma.2004.09.049
Lu, H., Zhang, L., Liu, D., Tang, P., and Song, F. (2014). Isolation and purification of psoralen and isopsoralen and their efficacy and safety in the treatment of osteosarcoma in nude rats. Afr. Health Sci. 14, 641–647. doi: 10.4314/ahs.v14i3.20
Nathan, C. (2006). Neutrophils and immunity: challenges and opportunities. Nat. Rev. Immunol. 6, 173–182. doi: 10.1038/nri1785
Nishimura, Y., Inoue, A., Sasagawa, S., Koiwa, J., Kawaguchi, K., Kawase, R., et al. (2016). Using zebrafish in systems toxicology for developmental toxicity testing. Congenit. Anom. 56, 18–27. doi: 10.1111/cga.12142
Pereira, C. V., Nadanaciva, S., Oliveira, P. J., and Will, Y. (2012). The contribution of oxidative stress to drug-induced organ toxicity and its detection in vitro and in vivo. Expert Opin. Drug Metab. Toxicol. 8:219. doi: 10.1517/17425255.2012.645536
Qian, L., Cui, F., Yang, Y., Liu, Y., Qi, S., and Wang, C. (2018). Mechanisms of developmental toxicity in zebrafish embryos (Danio rerio) induced by boscalid. Sci. Total Environ. 634, 478–487. doi: 10.1016/j.scitotenv.2018.04.012
Sarvaiya, V., Sadariya, K., Rana, M. P., and Thaker, A. M. (2014). Zebrafish as model organism for drug discovery and toxicity testing: a review. Vet. Clin. Sci. 3, 31–38.
Shim, S. H., Kim, J. C., Jang, K. S., and Choi, G. J. (2009). Anti-oomycete activity of furanocoumarins from seeds of Psoralea corylifolia against Phytophthora infestans. Plant Pathol. J. 25, 103–107. doi: 10.5423/PPJ.2009.25.1.103
Suzuki, T., and Yamamoto, M. (2017). Stress-sensing mechanisms and the physiological roles of the Keap1-Nrf2 system during cellular stress. J. Biol. Chem. 292, 16817–16824. doi: 10.1074/jbc.R117.800169
Toyama, T., Sumi, D., Shinkai, Y., Yasutake, A., Taguchi, K., Tong, K. I., et al. (2007). Cytoprotective role of Nrf2/Keap1 system in methylmercury toxicity. Biochem. Biophys. Res. Commun. 363, 645–650. doi: 10.1016/j.bbrc.2007.09.017
van Dartel, D. A., Schulpen, S. H., Theunissen, P. T., Bunschoten, A., Piersma, A. H., and Keijer, J. (2014). Dynamic changes in energy metabolism upon embryonic stem cell differentiation support developmental toxicant identification. Toxicology 324, 76–87. doi: 10.1016/j.tox.2014.07.009
Varin, A., and Gordon, S. (2009). Alternative activation of macrophages: immune function and cellular biology. Immunobiology 214, 630–641. doi: 10.1016/j.imbio.2008.11.009
Wang, X., Cheng, K., Han, Y., Zhang, G., Dong, J., Cui, Y., et al. (2016). Effects of psoralen as an anti-tumor agent in human breast cancer MCF-7/ADR cells. Biol. Pharm. Bull. 39, 815–822. doi: 10.1248/bpb.b15-00957
Wu, C., Sun, Z., Ye, Y., Han, X., Song, X., and Liu, S. (2013). Psoralen inhibits bone metastasis of breast cancer in mice. Fitoterapia 91, 205–210. doi: 10.1016/j.fitote.2013.09.005
Wu, Y., Yang, Q., Li, S., and Su, B. (2016). Impact of high concentration of glucose on development of zebrafish embryos and dopaminergic neurons. J. Third Mil. Med. Univ. 38, 1750–1754. doi: 10.16016/j.1000-5404.201603045
CrossRef Full Text
Xiao-Tian, L. I., Zhou, W., Song, Z. C., and Periodontology, D. O. (2018). Anti-inflammation effects of psoralen and angelicin on human periodontal ligament cells in vitro. J. Shanghai Jiaotong Univ. 38:128.
Xu, Q., Pan, Y., Yi, L. T., Li, Y. C., Mo, S. F., Jiang, F. X., et al. (2008). Antidepressant-like effects of psoralen isolated from the seeds of Psoralea corylifolia in the mouse forced swimming test. Biol. Pharm. Bull. 31, 1109–1114. doi: 10.1248/bpb.31.1109
Yi, W., Hong, C., Zhou, C., Xu, D., and Qu, H. B. (2011). Screening antitumor compounds psoralen and isopsoralen from Psoralea corylifolia L. seeds. Evid. Based Complement. Alternat. Med. 2011:363052. doi: 10.1093/ecam/nen087
Yu, X., Wen, Y., Liang, C. G., Liu, J., Ding, Y. B., and Zhang, W. H. (2017). Design, synthesis and antifungal activity of psoralen derivatives. Molecules 22:1672. doi: 10.3390/molecules22101672
Yuan, X., Bi, Y., Yan, Z., Pu, W., Li, Y., and Zhou, K. (2016). Psoralen and isopsoralen ameliorate sex hormone deficiency-induced osteoporosis in female and male mice. Biomed. Res. Int. 2016, 1–8. doi: 10.1155/2016/6869452
Zheng, W., Lin, P., Ma, Y., Shao, X., Chen, H., Chen, D., et al. (2017). Psoralen promotes the expression of cyclin D1 in chondrocytes via the Wnt/β-catenin signaling pathway. Int. J. Mol. Med. 40, 1377–1384. doi: 10.3892/ijmm.2017.3148
Keywords: psoralen, zebrafish, developmental toxicity, oxidative stress, apoptosis, energy metabolism disorder
Citation: Xia Q, Wei L, Zhang Y, Kong H, Shi Y, Wang X, Chen X, Han L and Liu K (2018) Psoralen Induces Developmental Toxicity in Zebrafish Embryos/Larvae Through Oxidative Stress, Apoptosis, and Energy Metabolism Disorder. Front. Pharmacol. 9:1457. doi: 10.3389/fphar.2018.01457
Received: 13 September 2018; Accepted: 29 November 2018;
Published: 18 December 2018.
Salvatore Salomone, Università degli Studi di Catania, Italy
Claure Nain Lunardi, Universidade de Brasília, Brazil
Patrizia Ferretti, University College London, United Kingdom
Copyright © 2018 Xia, Wei, Zhang, Kong, Shi, Wang, Chen, Han and Liu. This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.
*Correspondence: Liwen Han, hanliwen08@126.com Kechun Liu, hliukch@sdas.org

redpajama_set_name: RedPajamaCommonCrawl


Shauna Chabot, Chief Advancement Officer, Hospice of the Chesapeake (second from left) with Kegs & Corks event organizers, from left, Becky Groff, Sharon Finecey and Ashlee Kastendike.
The Second Annual Kegs & Corks Craft Beer and Maryland Wine Festival held at the Anne Arundel County Fairgrounds raised $5,000 for Hospice of the Chesapeake. In addition to local wines and craft beers, this year's festival held in August featured craft beers from around the world and was moved to a bigger venue due to its popularity in 2012.


Summer has us dreaming of beaches, cocktails and bright, beautiful colours. Which is why it makes perfect sense that Emma Pake's High Summer 17 collection was inspired by the neon colours and geometric shapes of 80s disco. The bold prints are about being confident and having fun in your swimwear all summer long. So when it came to shooting the collection, Emma knew a tropical disco was the only way to go.
Emma wanted to create a palm tree paradise in the London studio, filling it with lush green plants to compliment the graphic lines and neon colours of the designs. She travelled to a magical seven acre greenhouse, that's also provided foliage for the likes of Jurassic Park and Game of Thrones. Searching among the thousands of plants, Emma handpicked green butterfly palms and tropical flowers to bring the studio to life. Once the plants were set up in their new home, the photoshoot began - to a soundtrack of pure disco, of course!
The tropical background, neon lighting and glamorous 80s makeup perfectly bring to life the High Summer 17 collection. We had such fun in our very own Club Tropicana, and we hope you enjoy the final imagery as much as we enjoyed taking them.


text:
Webinars & Updates
Community Leisure UK
Home > Latest News > Community Leisure UK is looking for new colleagues
Community Leisure UK is looking for new colleagues
Published on: September 25th 2020
We are delighted to announce that we will be recruiting for two Project and Research Officers.
This role will provide a good view of all aspects of the work of a small national 'trade' association representing a significant group of charities, societies and social enterprises which make a major contribution to several public policy objectives. The post-holder will need to be able to work quickly, independently and flexibly. The post-holder must be able to learn and gain knowledge quickly.
The Project & Research Officer will make a substantial contribution – in leading and supporting the work of the Special Interest Groups, which are thematic groups within our membership, focusing on specific topics (HR, Finance, Health, Culture, Data, Safeguarding), event administration, coordination, communication and management for members and on various topics, and in supporting the Chief Executive and Policy and Engagement Manager.
For more information on the available positions, please see the full job descriptions below.
Project and Research Officer position for England and Wales
Project and Research Officer position for Scotland
© Community Leisure UK 2021
CAN Mezzanine
49-51 East Road
London. N1 6AH
5 Rose Street
Edinburgh. EH2 2PR
Thank you, we will be in touch shortly!
Sorry, there seems to have been an error
Fair Tax Statement
Community Leisure UK is the trading name of Sporta – The Sports and Recreation Trusts Association. Registered Office: Middlegate House, The Royal Arsenal, London SE18 6SX. Registered in England & Wales. Company Registration No: 05932294


In high school I didn't thrive in math. My parents and teachers said I had great potential but I honestly had no clue what they were talking about. Maybe they were getting me mixed up with another kid? I sat in class and tried to understand - in fact I even tried to want to understand but my questions always came down to a single line. How does this math stuff apply to my life after I leave high school and get into "real life?"
Looking back, I'm sure this question was met with irritation from my teachers but I kept asking (more irritating, I'm sure) because I knew sincerely that if I could find out the real purpose of math, I'd be motivated to open my teenage mind to learn trigonometry and calculus. I actually never got a good answer and I'm still not very good at thinking mathematically. I wish I'd sought the answer more passionately - and asked the question in a setting where the teacher really had time to talk to me in depth.
Math has magic and a connection to all aspects of "real life." But I don't have that connection. Instead, I have a reoccurring dream - sort of a nightmare- that I'm going to be tested in math class but I'm not prepared, I don't even know where the classroom is, and never bought the text book. When I look back at my lessons in math, I really wish a teacher had heard my question and helped me find the answer.
I feel as a teacher of yoga the concept of meditation for a beginner may have that same pitfall. Why meditate? How is it important for real life? How is it different from a good phone call with a friend or an afternoon nap? What if I just turn up my favorite rock n' roll song, or take a long bike ride? What is so special about meditation?
I'm approaching this paper from my math teacher's seat - one in particular, Mr. Delaney - he loved math and just believed that if I could learn the rules and delve into the advanced stuff I'd be a believer. He couldn't fully explain it but he trusted something special was on the other side of my learning curve...I feel the same way about meditation.
Meditation is profoundly healing. Sometimes for its silence and sometimes for the multi-faceted journeying it takes the person who meditates on. Often times it's healing in ways subtle and not easily describe. So why is meditation important? Probably a good answer is: because it is an active time to surrender the left brain activity and realize our life is more that a string of created thought patterns. Meditation is also important because it puts our whole being into a listening mode.
From her book titled Eat, Pray, Love - Elisabeth Gilbert wrote, "I've heard it said that prayer is the act of talking to God and meditation is the act of listening." Yoga practice provides beautiful non-religious ways to open our consciousness to a higher awareness. I may change the quote for yoga class to say, "I've heard it said that prayer is the act of asking or requesting from a higher consciousness and meditation is the act of listening for the response." The key words in both quotes aren't "talking" "asking," "listening" or even "God" but the careful addition of the word "act." Meditation is an action that will not occur passively. Intention, focus and motivation bring a person to meditation.
The biggest false obstacle to a successful meditation practice is the belief that it needs to be "practiced" or that it even needs to be successful. Often the results of meditation may not even reach the analytical mind. Moreover, I've noticed my monkey mind spend lots of time translating what the meditation experience is while meditating! I used to try to harness that thinking pattern (what's happening? what am I experiencing now? and now? etc) as part of improving my mediations but eventually I learned to just let it float or circle my left brain to keep it occupied until I shift to another level of meditation.
It might be accurate to say that meditation is important because it puts you in a sacred receiving mode. Different from everyday receiving stimulation from driving, radio, conversations, entertainment and tasking around, meditation is a gift you can give to your brain and your heart. That's a nice motivator, isn't it? When the brain is overworked, the body and mind get out of balance. The heart is always, always working to restore that balance so the body can return to its best healthy state. The stimulus we passively receive feeds a ping pong match between a thought and the body's response.
Meditation is a time to actively put down the ping-pong paddles, offer in Pranayama with breath-work, and honor our whole self by surrendering. There are many reasons to meditation and many methods as well.
For a beginner, it's probably a good idea to offer the brain as reason for meditation time. Some better answer than "my yoga teacher says it's important" would be helpful. The brain will really appreciate this and even be more likely to play along. A reason I meditate is to remove myself from my limited thought patterns and seek a higher consciousness. I offer my brain a seat in the audience and let my breath carry me into a field of beautiful, loving information.
So, for the beginner, a good reason to take time and effort to meditate might be to gracefully enter into a flow of receiving. It is an act of self-love, which is always healing. And if that sounds too selfish to a beginner, then it's helpful to be reminded that when each of us chooses self-love we are supporting the love of humanity and nature too. It can be that simple.
The next question is how to meditate. What's the difference between sitting in lotus pose with palms facing upward and making a grocery list in your mind or actually meditating? From the outside, there is no difference. And maybe, that grocery list is the Pratyahara of the day. One item, then another, and then another. I do think it's interesting what the brain does right after it's been instructed to quiet and stop thinking. Like a zealous messenger I can observe my brain like the character named Radar from the classic M.A.S.H. TV. series. Radar is the medic/ dispatcher/gofer...."oh, oh, just one more thing sir, before I go, remember you need to eat tonight and there aren't any tomatoes left for that sauce you were going to make, oh and get onions too, and oatmeal, you'll need that for tomorrow...gee, you seem so quiet, can I keep listing a few more things because I've been meaning to remind you to get garlic, you never have garlic when you need it....so glad you're finally sitting still"
I like Radar, he's a loyal friend, great soldier, and wonderful character -- and he sure deserves a vacation. Meditation is a vacation for the brain.
In terms of methods to meditate, I have to admit I love a moving meditation. Walking - one foot in front of the other. Folding laundry - lift, fold, place, repeat. Running to chanting melodies - Ra Ma Da Sa.
I also love healing meditations -- giving the brain one affirmation to roll along with. For instance "The Earth heals, The Earth heals, The Earth heals." An affirmation gives the brain one extremely positive task and often that has powerful results. Coupled with Pranayama, an affirmation can be the gateway into a beautiful and expansive meditation.
Anytime, the brain/mind bows to the guidance of the body/spirit, meditation is possible.
Another wonderful way to meditate is the single point of focus method. Last night, I crawled into bed and read a book called Metatron, Invoking the Angel of God's Presence by Rose Eynden. On page 30, as I was almost ready to sleep, the author invites the reader to gaze at an image called Metatron's Cube - based on sacred geometry (hey, Mr. Delaney -tell me about this one!) Eynden writes earlier that "meditation is the gateway to the other side, to worlds that would amaze people if they would just learn the process." On this page she suggests to meditate on this image.
It's said this holds the structures that are the building blocks of the universe and as we recognize this from deep in our being - deep knowing and peace is unlocked.
This is a really fun item to focus on - it shifts and reveals its inner working like a moving picture. It was a beautiful way to fall asleep last night. I woke early and refreshed.
One of the best things about going to a yoga class is the time designated after asana practice to meditate. Meditation resets the day and allows the body, mind and spirit to come into balance. Probably the most amazing aspect of meditation is that it is so simple but doesn't come naturally - you can't just trip over it. It's an intention and activity that requires some time commitment and results in unlimited rewards.
For the beginner, I think the most important thing to know about meditation is that there is actually no wrong way or false way. The act of trying to meditate is, in fact, meditation.
I'm sure this can be argued, but if meditation is truly to benefit the human collective then it needs to become acknowledged as accessible. I find the term "moving meditation" to be incredibly freeing. If gardening or washing dishes brings the mind to a single point of action, then that's a meditation.
Meditation is a practice that can be cultivated like a seed - plant it and care for it. There will be times that there is no way of knowing how meditation is rooting and other times where the full bloom is apparent.
When opening to a meditation practice, be creative, have a sincere intention, practice Pranayama to carry the energy flow, and allow the brain to retreat. Allow a point of focus to open the gates and then simply let go.


text:
A young woman, traumatized by a tragic event in her past, seeks out vengeance against those who cross her path.
Genres: Comedy, Crime, Drama, Thriller
Actor: Carey Mulligan, Bo Burnham, Alison Brie, Clancy Brown
Director: Emerald Fennell
title directed by female
title produced by female
gender in title
promising young woman putlocker
promising young woman 9movies
promising young woman yesmovies
promising young woman 123movies
promising young woman solarmovie
promising young woman fmovies
promising young woman movie4k
promising young woman watch32
promising young woman watchseries
promising young woman movie25
promising young woman xmovies8
promising young woman gomovies
The Angels--Natalie, Dylan, and Alex are back again but this time they're preparing for a strike without even warning as they go undercover to retrieve ...
Genre: Action, Adventure, Comedy, Crime
Actor: Cameron Diaz, Drew Barrymore, Lucy Liu, Bernie Mac, Crispin Glover, Justin Theroux, Robert Patrick, Demi Moore, Rodrigo Santoro, Shia LaBeouf, Matt LeBlanc, Luke Wilson, John Cleese, Ja'net DuBois, Cheung-Yan Yuen
Jon Martello objectifies everything in his life: his apartment, his car, his family, his church, and, of course, women. His buddies even call him Don ...
Actor: Joseph Gordon-Levitt, Scarlett Johansson, Julianne Moore, Tony Danza, Glenne Headly, Brie Larson, Rob Brown, Jeremy Luke, Paul Ben-Victor, Italia Ricci, Lindsey Broad, Amanda Perez, Sarah Dumont, Sloane Avery, Loanne Bishop
The year is 1984 and the mayoress has removed set personal criteria form the requirements to join the police force. No longer is sex, weight, ...
Actor: Steve Guttenberg, Kim Cattrall, G.W. Bailey, Bubba Smith, Donovan Scott, George Gaynes, Andrew Rubin, David Graf, Leslie Easterbrook, Michael Winslow, Debralee Scott, Bruce Mahler, Ted Ross, Scott Thomson, Brant von Hoffman
Linda Sinclair (Julianne Moore) is a forty-year-old unmarried high school English teacher in the small town of Kingston, Pennsylvania. She shares a small apartment with ...
Actor: Julianne Moore, Michael Angarano, Greg Kinnear, Lily Collins, Nathan Lane, Norbert Leo Butz, Jessica Hecht, Charlie Saxton, Nikki Blonsky, Fiona Shaw, Sophie Lane Curtis, Brynn Casey, Katie Meinholt, Anthony Ippolito, John Hodgman
Twelve year old Marcus Brewer lives with his chronically depressed single mother, Fiona Brewer. Both Fiona and Marcus beat to their own respective drummers. Marcus ...
Country: Germany, UK, France, USA
Actor: Hugh Grant, Nicholas Hoult, Sharon Small, Madison Cook, Jordan Cook, Nicholas Hutchison, Ryan Speechley, Joseph Speechley, Toni Collette, Natalia Tena, Laura Kennington, Tanika Swaby, Peter McNicholl, Christopher Webster, Ben Ridgeway
Alex Hesse and Larry Arbogast are working on a new drug which will reduce the chances of a woman's body rejecting an embryo and thus ...
Genre: Sci-Fi, Romance, Comedy
Actor: Arnold Schwarzenegger, Danny DeVito, Emma Thompson, Frank Langella, Pamela Reed, Aida Turturro, James Eckhouse, Megan Cavanagh, Welker White, Kathleen Chalfant, Merle Kennedy, Judy Collins, Mindy Seeger, Christopher Meloni, Antoinette Peragine
Analyze This
Ben Sobol, Psychiatrist, has a few problems: His son spies on his patients when they open up their heart, his parents don't want to attend ...
Actor: Robert De Niro, Billy Crystal, Lisa Kudrow, Chazz Palminteri, Kresh Novakovic, Bart Tangredi, Michael Straka, Joseph Rigano, Joe Viterelli, Richard C. Castellano, Molly Shannon, Max Casella, Frank Pietrangolare, Kyle Sabihy, Bill Macy
Holden and Skylar are in love with each other. Skylar lives with a large and extended family on Manhattan. Her parents, Bob and Steffi have ...
Genre: Musical, Romance, Comedy
Actor: Edward Norton, Drew Barrymore, Diva Gray, Ami Almendral, Madeline Balmaceda, Vivian Cherry, Tommie Baxter, Jeff DeRocker, Cherylyn Jones, Tina Paul, Vikki Schnurr, Natasha Lyonne, Kevin Hagan, Alan Alda, Gaby Hoffmann
It's the Christmas season. Wealthy Chicago ad executive Drew Latham has long avoided the family traditions of Christmas, but has dreaded being alone on the ...
Actor: Ben Affleck, James Gandolfini, Christina Applegate, Catherine O'Hara, Josh Zuckerman, Bill Macy, Jennifer Morrison, Udo Kier, David Selby, Stephanie Faracy, Stephen Root, Sy Richardson, Tangie Ambrose, John 'B.J.' Bryant, Peter Jason
It's the story about a lazy, irreverent slacker panda, named Po, who is the biggest fan of Kung Fu around...which doesn't exactly come in handy ...
Genre: Action, Adventure, Comedy, Animation, Family
Actor: Jack Black, Dustin Hoffman, Angelina Jolie, Ian McShane, Jackie Chan, Seth Rogen, Lucy Liu, David Cross, Randall Duk Kim, James Hong, Dan Fogler, Michael Clarke Duncan, Wayne Knight, Kyle Gass, JR Reed
Always Woodstock
When Neurotic, struggling songwriter, Catherine Brown's life in New York City falls apart, she is forced to confront her past when she spends the summer ...
Actor: Allison Miller, James Wolk, Rumer Willis, Jason Ritter, Brittany Snow, Katey Sagal, Anna Schafer, Ryan Guzman, Richard Alan Reid, Alexie Gilmore, Spencer Falls, Richard Riehle, Finesse Mitchell, Sean McNabb, Kate Lacey-Kiley
Harold & Kumar Go to White Castle
Harold Lee and Kumar Patel are two stoners who end up getting the munchies. What they crave the most after seeing a TV advertisement, is ...
Genre: Adventure, Comedy
Actor: John Cho, Ethan Embry, Rob Tinkler, Fred Willard, Kal Penn, Steve Braun, Dan Bochart, Paula Garcés, Mike Sheer, Christopher Thompson, David Krumholtz, Eddie Kaye Thomas, Angelo Tsarouchas, Anthony Anderson, Siu Ta
Trailer: Promising Young Woman
Report: Promising Young Woman
Download subtitles Promising Young Woman